Commit dfe4cbb6 authored by hiyonx's avatar hiyonx

销售订单

parent 15f9f23b
......@@ -4,7 +4,7 @@
<el-row class="form-wrap" :gutter="gutter">
<div>
<template v-for="(sapProperties, key) in sapPropertyMap">
<div class="separator">{{ getViewTypeName(key) }}</div>
<el-col v-if="showSubTitle" :span="24" class="separator">{{ getViewTypeName(key) }}</el-col>
<template v-for="item in sapProperties">
<el-col :span="span" :key="item.id">
<el-form-item :label="item.name" :prop="key + '.' + item.sapField"
......@@ -34,6 +34,7 @@ export default {
props: {
gutter: {type: Number, default: 10},
span: {type: Number, default: 8},
showSubTitle: {type: Boolean, default: true},
},
data() {
return {
......@@ -106,8 +107,30 @@ export default {
return viewType
},
setData(data, sapData, sapPropertyMap) {
let keys = Object.keys(sapPropertyMap)
setData(data, sapData, propertyViews) {
let newSapData = {}
for (const propertyView of propertyViews) {
let propertyList = propertyView.propertyList
switch (propertyView.dataType) {
case 0: // 属性
for (const property of propertyList) {
newSapData[property.sapField] = data[property.relationField] || sapData[property.sapField] || ''
}
case 1: // 对象
let viewObj = {}
for (const property of propertyList) {
viewObj[property.sapField] = data[propertyView.viewType][property.relationField] || data[property.relationField]
|| sapData[propertyView.viewType][property.sapField] || ''
}
newSapData[propertyView.viewType] = viewObj
case 2: // 列表
let viewArr = sapData[propertyView.viewType] || []
data
for (const property of propertyList) {
}
}
}
for (const key of keys) {
if (!sapPropertyMap.hasOwnProperty(key)) continue
if (!sapData[key]) sapData[key] = {}
......@@ -131,12 +154,7 @@ export default {
let sapData = {}
// 获取sap特性列表
listByType({type, viewType}).then(res => {
let sapProperties = res.data || []
let sapPropertyMap = sapProperties.reduce((sapPropertyMap, item) => {
if (!sapPropertyMap[item.viewType]) sapPropertyMap[item.viewType] = []
sapPropertyMap[item.viewType].push(item)
return sapPropertyMap
}, {})
let propertyViews = res.data || []
if (relationId) {
// 获取sap特性值
listData({type, viewType, relationId}).then(resp => {
......@@ -144,10 +162,10 @@ export default {
this.form.id = row.id
sapData = JSON.parse(row.sapData)
// 再次赋值
this.setData(data, sapData, sapPropertyMap)
this.setData(data, sapData, propertyViews)
})
} else {
this.setData(data, sapData, sapPropertyMap)
this.setData(data, sapData, propertyViews)
}
})
}
......
......@@ -156,9 +156,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="关联属性" prop="relationField">
<el-select v-model="form.relationField" placeholder="请选择关联客户属性" clearable filterable>
<el-option v-for="item in relationFields" :key="item.value" v-bind="item"/>
</el-select>
<el-input v-model.trim="form.relationField" placeholder="请选择关联客户属性" clearable/>
</el-form-item>
</el-col>
<el-col :span="8">
......@@ -237,7 +235,6 @@ export default {
enableFlag: 'Y',
},
viewTypes: [],
relationFields: [],
// 表单校验
rules: {
type: [{ required: true, message: '特性类型不能为空', trigger: ['blur', 'change']}],
......@@ -257,7 +254,6 @@ export default {
methods: {
onChangeType(val) {
this.viewTypes = this.dict.type.sap_property_view.filter(item => item.value === val).map(item => ({label: item.label, value: item.raw.cssClass}))
this.relationFields = this.dict.type.sap_property_relation.filter(item => item.value === val).map(item => ({label: item.label, value: item.raw.cssClass}))
},
toDataType() {
this.$router.push({ path: '/mes/md/propertytype'})
......
......@@ -115,7 +115,7 @@
icon="el-icon-search"
@click="handleUpdate(scope.row)"
v-hasPermi="['od:salesOrder:edit']"
>查看
>详情
</el-button>
<el-button
size="mini"
......
......@@ -171,100 +171,117 @@
</el-form>
</div>
<el-tabs v-model="activeName" type="border-card" @tab-click="onTabClick">
<el-tab-pane label="详情" name="detail">
<div class="page-item">
<el-table :data="form.detailList" @selection-change="handleSelectionChange" max-height="600">
<el-table-column type="selection" width="55"/>
<el-table-column label="产品名称" prop="itemName" show-overflow-tooltip/>
<el-table-column label="产品编码" prop="itemNo" show-overflow-tooltip/>
<el-table-column label="总数量" prop="totalNum" show-overflow-tooltip/>
<el-table-column label="loss数量" prop="lossNum" show-overflow-tooltip/>
<el-table-column label="数量" prop="num" show-overflow-tooltip/>
<el-table-column label="单价" :formatter="r => this.formatMoney(r.price)" show-overflow-tooltip/>
<el-table-column label="装运点" prop="shipmentPointNo" show-overflow-tooltip/>
<el-table-column label="存储地点" prop="storeAddr" show-overflow-tooltip/>
<el-table-column label="批次号" prop="batchNo" show-overflow-tooltip/>
<el-table-column label="批次号" prop="batchNo" show-overflow-tooltip/>
<el-table-column label="实际交货日期" prop="actualDeliveryDate" show-overflow-tooltip/>
<el-table-column label="定价值" prop="pricingVal" show-overflow-tooltip/>
<el-table-column label="报价单位" prop="offerUnit" show-overflow-tooltip/>
<el-table-column label="销售单位" prop="saleUnit" show-overflow-tooltip/>
<el-table-column label="尺码单位" prop="sizeUnit" show-overflow-tooltip/>
<el-table-column label="客户订单号" prop="poOrderNo" show-overflow-tooltip/>
<el-table-column label="客户产品代码" prop="clientItemNo" show-overflow-tooltip/>
<el-table-column label="客户产品名称" prop="clientItemName" show-overflow-tooltip/>
<el-table-column label="客户尺码单位" prop="clientSizeUnit" show-overflow-tooltip/>
<el-table-column label="客户指令号" prop="clientCmd" show-overflow-tooltip/>
<el-table-column label="客户单重" prop="clientKg" show-overflow-tooltip/>
<el-table-column label="销线" prop="salePath" show-overflow-tooltip/>
<el-table-column label="段别" prop="segment" show-overflow-tooltip/>
<el-table-column label="版面" prop="layout" show-overflow-tooltip/>
<el-table-column label="季度" prop="quarter" show-overflow-tooltip/>
<el-table-column label="整/半码" prop="wholeSize" show-overflow-tooltip/>
<el-table-column label="特殊尺码" prop="specSize" show-overflow-tooltip/>
<el-table-column label="po号" prop="poNo" show-overflow-tooltip/>
<el-table-column label="wip号" prop="wipNo" show-overflow-tooltip/>
<el-table-column label="装箱数" prop="packingNum" show-overflow-tooltip/>
<el-table-column label="周期" prop="cycle" show-overflow-tooltip/>
<el-table-column label="周期" prop="cycle" show-overflow-tooltip/>
<el-table-column label="sk号" prop="skNo" show-overflow-tooltip/>
<el-table-column label="专利号" prop="patentNo" show-overflow-tooltip/>
<el-table-column label="材质描述" prop="materialDesc" show-overflow-tooltip/>
<el-table-column label="签收人" prop="signer" show-overflow-tooltip/>
<el-table-column label="ShipToId" prop="shipToId" show-overflow-tooltip/>
<el-table-column label="ShipToId" prop="shipToId" show-overflow-tooltip/>
<el-table-column label="交货日期" prop="deliveryDate" show-overflow-tooltip/>
<el-table-column label="尺码组" prop="sizeGroup" show-overflow-tooltip/>
<el-table-column label="订单量" prop="orderNum" show-overflow-tooltip/>
<el-table-column label="条码" prop="barCode" show-overflow-tooltip/>
<el-table-column label="印刷方向" prop="printingDirection" show-overflow-tooltip/>
<el-table-column label="产品规格" prop="prodSpec" show-overflow-tooltip/>
<el-table-column label="客户工厂代号" prop="plantCode" show-overflow-tooltip/>
<el-table-column label="包装方式" prop="packMode" show-overflow-tooltip/>
<el-table-column label="备注" prop="remark" show-overflow-tooltip/>
<el-table-column label="状态" prop="state">
<template slot-scope="{row}">
{{ dict.type.sales_order_state.find(item => item.value == row.state).label }}
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="100">
<template slot-scope="{row, $index}">
<el-button
v-hasPermi="['od:salesOrder:edit']"
size="mini"
type="text"
@click="onShowEditDetail(row, $index)"
>查看
</el-button>
<el-button
v-hasPermi="['od:salesOrder:edit']"
size="mini"
type="text"
@click="onShowSpecDetail(row)"
>特性
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-tab-pane>
<el-tab-pane label="SAP特性" name="SapPropertyData">
<SapPropertyData ref="SapPropertyData" :span="6"/>
</el-tab-pane>
</el-tabs>
<div class="detail-body">
<el-tabs v-model="activeName" type="border-card" @tab-click="onTabClick">
<el-tab-pane label="详情" name="detail">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="onShowEditDetail(null, form.detailList.length)"
v-hasPermi="['od:salesOrder:add']"
>新增
</el-button>
</el-col>
</el-row>
<div class="page-item">
<el-table :data="form.detailList" @selection-change="handleSelectionChange" max-height="600">
<el-table-column type="selection" width="55"/>
<el-table-column label="产品编码" prop="itemNo" show-overflow-tooltip/>
<el-table-column label="产品名称" prop="itemName" show-overflow-tooltip/>
<el-table-column label="总数量" prop="totalNum" show-overflow-tooltip/>
<el-table-column label="loss数量" prop="lossNum" show-overflow-tooltip/>
<el-table-column label="数量" prop="num" show-overflow-tooltip/>
<el-table-column label="单价" :formatter="r => this.formatMoney(r.price)" show-overflow-tooltip/>
<!-- <el-table-column label="装运点" prop="shipmentPointNo" show-overflow-tooltip/>-->
<!-- <el-table-column label="存储地点" prop="storeAddr" show-overflow-tooltip/>-->
<!-- <el-table-column label="批次号" prop="batchNo" show-overflow-tooltip/>-->
<!-- <el-table-column label="实际交货日期" prop="actualDeliveryDate" show-overflow-tooltip/>-->
<!-- <el-table-column label="定价值" prop="pricingVal" show-overflow-tooltip/>-->
<!-- <el-table-column label="报价单位" prop="offerUnit" show-overflow-tooltip/>-->
<!-- <el-table-column label="销售单位" prop="saleUnit" show-overflow-tooltip/>-->
<!-- <el-table-column label="尺码单位" prop="sizeUnit" show-overflow-tooltip/>-->
<!-- <el-table-column label="客户订单号" prop="poOrderNo" show-overflow-tooltip/>-->
<!-- <el-table-column label="客户产品代码" prop="clientItemNo" show-overflow-tooltip/>-->
<!-- <el-table-column label="客户产品名称" prop="clientItemName" show-overflow-tooltip/>-->
<!-- <el-table-column label="客户尺码单位" prop="clientSizeUnit" show-overflow-tooltip/>-->
<el-table-column label="客户指令号" prop="clientCmd" show-overflow-tooltip/>
<!-- <el-table-column label="客户单重" prop="clientKg" show-overflow-tooltip/>-->
<!-- <el-table-column label="销线" prop="salePath" show-overflow-tooltip/>-->
<!-- <el-table-column label="段别" prop="segment" show-overflow-tooltip/>-->
<!-- <el-table-column label="版面" prop="layout" show-overflow-tooltip/>-->
<!-- <el-table-column label="季度" prop="quarter" show-overflow-tooltip/>-->
<!-- <el-table-column label="整/半码" prop="wholeSize" show-overflow-tooltip/>-->
<!-- <el-table-column label="特殊尺码" prop="specSize" show-overflow-tooltip/>-->
<!-- <el-table-column label="po号" prop="poNo" show-overflow-tooltip/>-->
<!-- <el-table-column label="wip号" prop="wipNo" show-overflow-tooltip/>-->
<!-- <el-table-column label="装箱数" prop="packingNum" show-overflow-tooltip/>-->
<!-- <el-table-column label="周期" prop="cycle" show-overflow-tooltip/>-->
<!-- <el-table-column label="sk号" prop="skNo" show-overflow-tooltip/>-->
<!-- <el-table-column label="专利号" prop="patentNo" show-overflow-tooltip/>-->
<!-- <el-table-column label="材质描述" prop="materialDesc" show-overflow-tooltip/>-->
<!-- <el-table-column label="签收人" prop="signer" show-overflow-tooltip/>-->
<!-- <el-table-column label="ShipToId" prop="shipToId" show-overflow-tooltip/>-->
<!-- <el-table-column label="交货日期" prop="deliveryDate" show-overflow-tooltip/>-->
<!-- <el-table-column label="尺码组" prop="sizeGroup" show-overflow-tooltip/>-->
<el-table-column label="订单量" prop="orderNum" show-overflow-tooltip/>
<!-- <el-table-column label="条码" prop="barCode" show-overflow-tooltip/>-->
<!-- <el-table-column label="印刷方向" prop="printingDirection" show-overflow-tooltip/>-->
<!-- <el-table-column label="产品规格" prop="prodSpec" show-overflow-tooltip/>-->
<!-- <el-table-column label="客户工厂代号" prop="plantCode" show-overflow-tooltip/>-->
<!-- <el-table-column label="包装方式" prop="packMode" show-overflow-tooltip/>-->
<!-- <el-table-column label="备注" prop="remark" show-overflow-tooltip/>-->
<el-table-column label="状态" prop="state">
<template slot-scope="{row}">
{{ dict.type.sales_order_state.find(item => item.value == row.state).label }}
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="100">
<template slot-scope="{row, $index}">
<el-button
v-hasPermi="['od:salesOrder:edit']"
size="mini"
type="text"
@click="onShowEditDetail(row, $index)"
>查看
</el-button>
<el-button
v-hasPermi="['od:salesOrder:edit']"
size="mini"
type="text"
@click="onShowSpecDetail(row)"
>特性
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-tab-pane>
<el-tab-pane label="SAP特性" name="SapPropertyData">
<SapPropertyData ref="SapPropertyData" :span="6"/>
</el-tab-pane>
</el-tabs>
</div>
<el-dialog :visible.sync="showEditDetail" title="订单详情" width="1200px">
<el-form :model="itemForm" ref="itemForm" :rules="itemRules" label-width="100px">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item prop="" label="产品名称">
<el-input v-model="itemForm.itemName" placeholder="" clearable/>
<el-form-item label="产品编码" prop="">
<el-input v-model="itemForm.itemNo" readonly placeholder="请选择产品">
<el-button slot="append" icon="el-icon-search" @click="$refs['ItemSelectRef'].showFlag = true"/>
</el-input>
<ItemSelect ref="ItemSelectRef" @onSelected="onItemSelect"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="" label="产品编码">
<el-input v-model="itemForm.itemNo" placeholder="" clearable/>
<el-form-item prop="" label="产品名称">
<el-input v-model="itemForm.itemName" placeholder="" readonly/>
</el-form-item>
</el-col>
<el-col :span="8">
......@@ -678,11 +695,20 @@ export default {
})
},
onItemSelect(row) {
if (row != undefined) {
this.itemForm.itemId = row.itemId;
this.itemForm.itemNo = row.itemCode;
this.itemForm.itemName = row.itemName;
}
},
onEditDetail() {
this.showEditDetail = false
this.$refs.itemForm.validate(valid => {
if (valid) {
this.form.detailList[this.itemForm.index] = this.itemForm
this.form.detailList.splice(this.itemForm.index, 1, this.itemForm)
console.log(this.form.detailList)
}
})
},
......@@ -706,7 +732,7 @@ export default {
console.log(item)
this.showEditDetail = true
this.$refs.itemForm && this.$refs.itemForm.resetFields()
this.itemForm = item || { itemName: null, itemCode: null, num: null, amount: null, state: null, specList: [] }
this.itemForm = item || { itemName: null, itemNo: null, num: null, amount: null, state: null, specList: [] }
this.itemForm.index = $index
},
......@@ -873,4 +899,9 @@ export default {
color: #99a9bf;
}
.detail-body {
margin-bottom: 50px;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment