Commit cc2d3fab authored by hiyonx's avatar hiyonx

sap特性视图模块

parent 92268122
...@@ -2,13 +2,16 @@ ...@@ -2,13 +2,16 @@
<div class="base-info"> <div class="base-info">
<el-form :model="sapData" ref="form" label-width="120px" size="mini"> <el-form :model="sapData" ref="form" label-width="120px" size="mini">
<el-row class="form-wrap" :gutter="gutter"> <el-row class="form-wrap" :gutter="gutter">
<template v-for="item in sapProperties"> <template v-for="(sapProperties, key) in sapPropertyMap">
<el-col :span="span" :key="item.id"> <el-divider content-position="left">{{ getViewTypeName(key) }}</el-divider>
<el-form-item :label="item.name" :prop="item.sapField" <template v-for="item in sapProperties">
:rules="{required: true, validator: (rule, value, callback) => onValidate(rule, value, callback, item), trigger: ['blur', 'change']}"> <el-col :span="span" :key="item.id">
<el-input-all v-model="sapData[item.sapField]" :item="item"/> <el-form-item :label="item.name" :prop="item.sapField"
</el-form-item> :rules="{required: item.required, validator: (rule, value, callback) => onValidate(rule, value, callback, item), trigger: ['blur', 'change']}">
</el-col> <el-input-all v-model="sapData[item.sapField]" :item="item"/>
</el-form-item>
</el-col>
</template>
</template> </template>
</el-row> </el-row>
...@@ -25,6 +28,7 @@ import {listByType} from '@/api/mes/md/sapproperty' ...@@ -25,6 +28,7 @@ import {listByType} from '@/api/mes/md/sapproperty'
import { addData, updateData, listData } from '@/api/mes/md/sapPropertyData' import { addData, updateData, listData } from '@/api/mes/md/sapPropertyData'
export default { export default {
dicts: ['sap_property_view', 'sap_property_relation'],
props: { props: {
gutter: {type: Number, default: 10}, gutter: {type: Number, default: 10},
span: {type: Number, default: 8}, span: {type: Number, default: 8},
...@@ -32,7 +36,7 @@ export default { ...@@ -32,7 +36,7 @@ export default {
data() { data() {
return { return {
loading: false, loading: false,
sapProperties: [], sapPropertyMap: [],
customer: {}, customer: {},
form: { form: {
type: null, type: null,
...@@ -89,10 +93,21 @@ export default { ...@@ -89,10 +93,21 @@ export default {
} }
}, },
setData(data, sapData, sapProperties) { getViewTypeName(viewType) {
for (let property of sapProperties) { let viewTypeDict = this.dict.type.sap_property_view.find(item => item.value == this.form.type && item.raw.cssClass === viewType)
let propertyData = data[property.relationField] return viewTypeDict.label
sapData[property.sapField] = propertyData || sapData[property.sapField] },
setData(data, sapData, sapPropertyMap) {
let keys = Object.keys(sapPropertyMap)
for (const key of keys) {
if (!sapPropertyMap.hasOwnProperty(key)) continue
if (!sapData[key]) sapData[key] = {}
let properties = sapPropertyMap[key]
for (let property of properties) {
let propertyData = data[property.relationField]
sapData[key][property.sapField] = propertyData || sapData[key][property.sapField]
}
} }
console.log(sapData) console.log(sapData)
this.sapData = sapData this.sapData = sapData
...@@ -107,7 +122,13 @@ export default { ...@@ -107,7 +122,13 @@ export default {
// 获取sap特性列表 // 获取sap特性列表
listByType({type}).then(res => { listByType({type}).then(res => {
let sapProperties = res.data || [] let sapProperties = res.data || []
this.sapProperties = sapProperties let sapPropertyMap = sapProperties.reduce((sapPropertyMap, item) => {
if (!sapPropertyMap[item.viewType]) sapPropertyMap[item.viewType] = []
sapPropertyMap[item.viewType].push(item)
return sapPropertyMap
}, {})
console.log(sapPropertyMap)
this.sapPropertyMap = sapPropertyMap
if (relationId) { if (relationId) {
// 获取sap特性值 // 获取sap特性值
listData({type, relationId}).then(resp => { listData({type, relationId}).then(resp => {
...@@ -115,10 +136,10 @@ export default { ...@@ -115,10 +136,10 @@ export default {
this.form.id = row.id this.form.id = row.id
sapData = JSON.parse(row.sapData) sapData = JSON.parse(row.sapData)
// 再次赋值 // 再次赋值
this.setData(data, sapData, sapProperties) this.setData(data, sapData, sapPropertyMap)
}) })
} else { } else {
this.setData(data, sapData, sapProperties) this.setData(data, sapData, sapPropertyMap)
} }
}) })
} }
......
...@@ -111,12 +111,12 @@ ...@@ -111,12 +111,12 @@
</el-table> </el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="960px">
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="特性类型" prop="type"> <el-form-item label="特性类型" prop="type">
<el-select v-model="form.type" placeholder="请选择特性类型" clearable filterable> <el-select v-model="form.type" placeholder="请选择特性类型" @change="onChangeType" clearable filterable>
<el-option v-for="item in dict.type.sap_property_type" :key="item.value" v-bind="item"/> <el-option v-for="item in dict.type.sap_property_type" :key="item.value" v-bind="item"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -124,9 +124,7 @@ ...@@ -124,9 +124,7 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="视图类型" prop="viewType"> <el-form-item label="视图类型" prop="viewType">
<el-select v-model="form.viewType" placeholder="请选择视图类型" clearable filterable> <el-select v-model="form.viewType" placeholder="请选择视图类型" clearable filterable>
<template v-for="item in viewTypes"> <el-option v-for="item in viewTypes" :key="item.value" v-bind="item"/>
<el-option v-if="!item.types || item.types.includes(form.type)" :key="item.value" v-bind="item"/>
</template>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -193,7 +191,7 @@ import { listPropertytype } from '@/api/mes/md/propertytype' ...@@ -193,7 +191,7 @@ import { listPropertytype } from '@/api/mes/md/propertytype'
export default { export default {
name: "Client", name: "Client",
dicts: ['mes_client_type','sys_yes_no','sys_data_type','sap_property_type'], dicts: ['mes_client_type','sys_yes_no','sys_data_type','sap_property_type', 'sap_property_view', 'sap_property_relation'],
data() { data() {
return { return {
//自动生成编码 //自动生成编码
...@@ -238,39 +236,8 @@ export default { ...@@ -238,39 +236,8 @@ export default {
money: 1, money: 1,
enableFlag: 'Y', enableFlag: 'Y',
}, },
viewTypes: [ viewTypes: [],
{label: '基本信息', value: '1', types: ''}, relationFields: [],
{label: '客户品牌联系人', value: '2', types: ''},
{label: '银行数据', value: '3', types: ''},
{label: '公司代码', value: '4', types: ''},
{label: '销售组织', value: '5', types: ''},
],
relationFields: [
{label: '客户编码', value: 'client_code'},
{label: '客户名称', value: 'client_name'},
{label: '客户简称', value: 'client_nick'},
{label: '客户英文名称', value: 'client_en'},
{label: '客户简介', value: 'client_des'},
{label: '客户LOGO地址', value: 'client_logo'},
{label: '客户类型', value: 'client_type'},
{label: '客户地址', value: 'address'},
{label: '客户官网地址', value: 'website'},
{label: '客户邮箱地址', value: 'email'},
{label: '客户电话', value: 'tel'},
{label: '联系人1', value: 'contact1'},
{label: '联系人1-电话', value: 'contact1_tel'},
{label: '联系人1-邮箱', value: 'contact1_email'},
{label: '联系人2', value: 'contact2'},
{label: '联系人2-电话', value: 'contact2_tel'},
{label: '联系人2-邮箱', value: 'contact2_email'},
{label: '统一社会信用代码', value: 'credit_code'},
{label: '是否启用', value: 'enable_flag'},
{label: '备注', value: 'remark'},
{label: '预留字段1', value: 'attr1'},
{label: '预留字段2', value: 'attr2'},
{label: '预留字段3', value: 'attr3'},
{label: '预留字段4', value: 'attr4'},
],
// 表单校验 // 表单校验
rules: { rules: {
type: [{ required: true, message: '特性类型不能为空', trigger: ['blur', 'change']}], type: [{ required: true, message: '特性类型不能为空', trigger: ['blur', 'change']}],
...@@ -288,6 +255,10 @@ export default { ...@@ -288,6 +255,10 @@ export default {
this.getList(); this.getList();
}, },
methods: { 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() { toDataType() {
this.$router.push({ path: '/mes/md/propertytype'}) this.$router.push({ path: '/mes/md/propertytype'})
}, },
......
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