10 changed files with 919 additions and 380 deletions
-
0src/api/part/partInfo.js
-
8src/api/part/partProperties.js
-
10src/api/part/partSupplierRelation.js
-
3src/views/modules/srmPart/com_part_Attachments.vue
-
2src/views/modules/srmPart/com_part_BasicInfo.vue
-
576src/views/modules/srmPart/com_part_SpecParams.vue
-
260src/views/modules/srmPart/com_part_SpecParams_old.vue
-
412src/views/modules/srmPart/com_part_Suppliers.vue
-
24src/views/modules/srmPart/partInfoList.vue
@ -0,0 +1,8 @@ |
|||||
|
import { createAPI } from "@/utils/httpRequest.js"; |
||||
|
|
||||
|
export const refreshPropertiesModal= (data) => createAPI(`/properties/refreshPropertiesModal`,'post',data) |
||||
|
export const updatePropertiesList= (data) => createAPI(`/properties/updatePropertiesList`,'post',data) |
||||
|
export const getPropertiesListByPartAndCodeNo = (data) => createAPI(`/properties/getPropertiesListByPartAndCodeNo`,'post',data) |
||||
|
export const searchPropertiesItemList= data => createAPI(`/properties/searchPropertiesItemList`,'post',data) |
||||
|
export const saveSubPropertiesValueForAlone= data => createAPI(`/properties/saveSubPropertiesValueForAlone`,'post',data) |
||||
|
export const deleteSubPropertiesValueForAlone= data => createAPI(`/properties/deleteSubPropertiesValueForAlone`,'post',data) |
||||
@ -0,0 +1,10 @@ |
|||||
|
import { createAPI } from '@/utils/httpRequest.js' |
||||
|
|
||||
|
|
||||
|
export const searchPartSupplierRelationList = data => createAPI('/partSupplierRelation/list', 'POST', data) |
||||
|
export const createPartSupplierRelation = data => createAPI('/partSupplierRelation/save', 'POST', data) |
||||
|
export const updatePartSupplierRelation = data => createAPI('/partSupplierRelation/save', 'POST', data) |
||||
|
export const getPartSupplierRelation = data => createAPI('partSupplierRelation/getPart','POST', data) |
||||
|
export const deletePartSupplierRelation = id => createAPI('/partSupplierRelation/delete', 'POST', { id: id }) |
||||
|
|
||||
|
export const searchMaterialFamilySupplierData= (data) => createAPI(`/srmSupplierShare/searchMaterialFamilySupplierData`,'post',data) |
||||
@ -1,304 +1,414 @@ |
|||||
<template> |
<template> |
||||
<div class="customer-css"> |
|
||||
<el-form label-position="top" style="margin-top: 1px; margin-left: 0px;"> |
|
||||
<el-form :inline="true" label-position="top" style="margin-top: 0px"> |
|
||||
<el-form-item label="Period:"> |
|
||||
<el-input v-model="searchData.periodMohu" clearable style="width: 120px"></el-input> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="Period Date:"> |
|
||||
<el-date-picker |
|
||||
style="width: 120px" |
|
||||
v-model="searchData.startDate" |
|
||||
type="date" |
|
||||
value-format="yyyy-MM-dd" |
|
||||
placeholder="Start"> |
|
||||
</el-date-picker> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="to:"> |
|
||||
<el-date-picker |
|
||||
style="width: 120px" |
|
||||
v-model="searchData.endDate" |
|
||||
type="date" |
|
||||
value-format="yyyy-MM-dd" |
|
||||
placeholder="End"> |
|
||||
</el-date-picker> |
|
||||
</el-form-item> |
|
||||
<el-form-item label=" "> |
|
||||
<el-button type="primary" @click="searchTable()">Query</el-button> |
|
||||
<!-- <el-button type="primary" @click="addModal()">新增</el-button>--> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
</el-form> |
|
||||
<el-table |
|
||||
:data="dataList" |
|
||||
:height=searchData.height |
|
||||
border |
|
||||
v-loading="dataListLoading" |
|
||||
style="width: 100%; "> |
|
||||
<el-table-column |
|
||||
v-for="(item,index) in columnList" :key="index" |
|
||||
:sortable="item.columnSortable" |
|
||||
:prop="item.columnProp" |
|
||||
:header-align="item.headerAlign" |
|
||||
:show-overflow-tooltip="item.showOverflowTooltip" |
|
||||
:align="item.align" |
|
||||
:fixed="item.fixed==''?false:item.fixed" |
|
||||
:min-width="item.columnWidth" |
|
||||
:label="item.columnLabel"> |
|
||||
<template slot-scope="scope"> |
|
||||
<span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span> |
|
||||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" |
|
||||
style="width: 100px; height: 80px"/></span> |
|
||||
</template> |
|
||||
</el-table-column> |
|
||||
</el-table> |
|
||||
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> |
|
||||
|
<div> |
||||
|
<div style="margin-top: 5px"> |
||||
|
<el-button type="primary" @click="clickSave">{{ attributeDialog?'编辑':'保存' }}</el-button> |
||||
|
<el-button type="primary" @click="refreshPropertiesModal" :disabled="disabled" v-if="attributeDialog">刷新属性模板</el-button> |
||||
|
</div> |
||||
|
<div class="rq " v-if="attributeDialog"> |
||||
|
<el-table |
||||
|
:height="height" |
||||
|
:data="dataList" |
||||
|
border |
||||
|
style="width: 100%;margin-top: 5px"> |
||||
|
<el-table-column |
||||
|
v-for="(item,index) in productColumnList" :key="index" |
||||
|
:sortable="item.columnSortable" |
||||
|
:prop="item.columnProp" |
||||
|
:header-align="item.headerAlign" |
||||
|
:show-overflow-tooltip="item.showOverflowTooltip" |
||||
|
:align="item.align" |
||||
|
:fixed="item.fixed===''?false:item.fixed" |
||||
|
:min-width="item.columnWidth" |
||||
|
:label="item.columnLabel"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div v-if="item.columnProp !== 'textValue' && item.columnProp !== 'numValue'"> |
||||
|
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> |
||||
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
||||
|
</div> |
||||
|
<div v-else> |
||||
|
{{scope.row.valueTypeDb==='T'?scope.row.textValue:scope.row.numValue}} |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</div> |
||||
|
<div class="rq " v-else> |
||||
|
<el-table |
||||
|
:height="height" |
||||
|
:data="copyAttributeList" |
||||
|
border |
||||
|
style="width: 100%;margin-top: 5px"> |
||||
|
<el-table-column |
||||
|
v-for="(item,index) in productColumnList" :key="index" |
||||
|
:sortable="item.columnSortable" |
||||
|
:prop="item.columnProp" |
||||
|
:header-align="item.headerAlign" |
||||
|
:show-overflow-tooltip="item.showOverflowTooltip" |
||||
|
:align="item.align" |
||||
|
:fixed="item.fixed===''?false:item.fixed" |
||||
|
:min-width="item.columnWidth" |
||||
|
:label="item.columnLabel"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div v-if="item.columnProp !== 'textValue' && item.columnProp !== 'numValue'"> |
||||
|
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> |
||||
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
||||
|
</div> |
||||
|
<div v-else> |
||||
|
<div v-if="scope.row.valueChooseFlag !== 'Y'"> |
||||
|
<el-input-number v-model="scope.row.numValue" style="padding: 0;width: 100%" v-if="scope.row.valueType === '数字'" :controls="false" |
||||
|
></el-input-number> |
||||
|
<el-input v-model="scope.row.textValue" v-else></el-input> |
||||
|
</div> |
||||
|
<div v-else> |
||||
|
<el-select style="width: 100%;" v-if="scope.row.valueType === '文本'" v-model="scope.row.textValue"> |
||||
|
<el-option :value="i.availableValue" :label="i.availableValue" v-for="(i,key) in scope.row.availableValueList" :key="key"></el-option> |
||||
|
</el-select> |
||||
|
<el-select style="width: 100%;" v-else v-model="scope.row.numValue"> |
||||
|
<el-option :value="i.availableValue" :label="i.availableValue" v-for="(i,key) in scope.row.availableValueList" :key="key"></el-option> |
||||
|
</el-select> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</div> |
||||
|
<el-dialog title="属性项目" v-drag :visible.sync="attributeSaveDialog" append-to-body> |
||||
|
<transfer-table v-if="attributeSaveDialog" |
||||
|
v-model="dataList2" |
||||
|
:data-list="searchDataList"> </transfer-table> |
||||
|
<el-footer style="height:40px;margin-top: 20px;text-align:center"> |
||||
|
<el-button type="primary" @click="attributeSaveDialog = false">关闭</el-button> |
||||
|
</el-footer> |
||||
|
</el-dialog> |
||||
</div> |
</div> |
||||
</template> |
</template> |
||||
|
|
||||
<script> |
|
||||
|
|
||||
import Chooselist from '@/views/modules/common/Chooselist_eam' |
|
||||
|
|
||||
|
<script> |
||||
import { |
import { |
||||
deleteSrmMaterialFamilySupplier, deleteSrmMaterialFamilySupplierShareList, |
|
||||
saveSrmMaterialFamilySupplierShare, |
|
||||
searchMaterialFamilySupplierData, |
|
||||
searchSrmMaterialFamilySupplierShare |
|
||||
} from '../../../api/srm/srmSupplier' |
|
||||
|
refreshPropertiesModal, |
||||
|
updatePropertiesList, |
||||
|
getPropertiesListByPartAndCodeNo, |
||||
|
searchPropertiesItemList, |
||||
|
saveSubPropertiesValueForAlone, |
||||
|
deleteSubPropertiesValueForAlone |
||||
|
} from "@/api/part/partProperties.js"; |
||||
|
|
||||
|
import TransferTable from "@/views/modules/common/transferTable.vue"; |
||||
|
|
||||
export default { |
export default { |
||||
components: { |
|
||||
Chooselist |
|
||||
|
name: "orderAttribute", |
||||
|
components: {TransferTable}, |
||||
|
props:{ |
||||
|
site:{ |
||||
|
type:String, |
||||
|
}, |
||||
|
partNo:{ |
||||
|
type:String, |
||||
|
}, |
||||
|
codeNo:{ |
||||
|
type:String, |
||||
|
}, |
||||
|
functionType:{ |
||||
|
type:String, |
||||
|
}, |
||||
|
disabled:{ |
||||
|
type:Boolean, |
||||
|
default:false, |
||||
|
} |
||||
}, |
}, |
||||
data() { |
|
||||
return { |
|
||||
dataList: [], |
|
||||
searchData: { |
|
||||
site: '', |
|
||||
username: '', |
|
||||
periodMohu: '', |
|
||||
startDate: '', |
|
||||
supplierNo: '', |
|
||||
endDate: '', |
|
||||
materialFamilyNo: '', |
|
||||
materialFamilyDesc: '', |
|
||||
height:'300', |
|
||||
page: 1, |
|
||||
limit: 1000 |
|
||||
}, |
|
||||
dataListLoading: false, |
|
||||
currentRow:'', |
|
||||
columnList: [ |
|
||||
|
data(){ |
||||
|
return{ |
||||
|
height:320, |
||||
|
loading:false, |
||||
|
attributeDialog:true, |
||||
|
copyAttributeList:[], |
||||
|
attributeSaveDialog:false, |
||||
|
productColumnList: [ |
||||
{ |
{ |
||||
userId: this.$store.state.user.name, |
userId: this.$store.state.user.name, |
||||
functionId: this.functionId, |
|
||||
serialNumber: '811001Table8Period', |
|
||||
tableId: "811001Table8", |
|
||||
tableName: "供应商份额", |
|
||||
columnProp: "period", |
|
||||
|
functionId: 100002001, |
||||
|
serialNumber: '100002001TablePropertiesItemNo', |
||||
|
tableId: "100002001Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'propertiesItemNo', |
||||
headerAlign: "center", |
headerAlign: "center", |
||||
align: "left", |
align: "left", |
||||
columnLabel: "Period", |
|
||||
columnWidth: '100', |
|
||||
|
columnLabel: '属性编码', |
||||
columnHidden: false, |
columnHidden: false, |
||||
columnImage: false, |
columnImage: false, |
||||
columnSortable: false, |
columnSortable: false, |
||||
sortLv: 0, |
sortLv: 0, |
||||
status: true, |
status: true, |
||||
fixed: false |
|
||||
}, |
|
||||
{ |
|
||||
|
fixed: '', |
||||
|
},{ |
||||
userId: this.$store.state.user.name, |
userId: this.$store.state.user.name, |
||||
functionId: this.functionId, |
|
||||
serialNumber: '811001Table1PeriodStartDate', |
|
||||
tableId: "811001Table8", |
|
||||
tableName: "供应商份额", |
|
||||
columnProp: "periodStartDate", |
|
||||
|
functionId: 100002001, |
||||
|
serialNumber: '100002001TableItemDesc', |
||||
|
tableId: "100002001Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'itemDesc', |
||||
headerAlign: "center", |
headerAlign: "center", |
||||
align: "center", |
|
||||
columnLabel: "Period Start Date", |
|
||||
columnWidth: '100', |
|
||||
|
align: "left", |
||||
|
columnLabel: '属性名称', |
||||
columnHidden: false, |
columnHidden: false, |
||||
columnImage: false, |
columnImage: false, |
||||
columnSortable: false, |
columnSortable: false, |
||||
sortLv: 0, |
sortLv: 0, |
||||
status: true, |
status: true, |
||||
fixed: false |
|
||||
|
fixed: '', |
||||
}, |
}, |
||||
{ |
{ |
||||
userId: this.$store.state.user.name, |
userId: this.$store.state.user.name, |
||||
functionId: this.functionId, |
|
||||
serialNumber: '811001Table1PeriodEndDate', |
|
||||
tableId: "811001Table8", |
|
||||
tableName: "供应商份额", |
|
||||
columnProp: "periodEndDate", |
|
||||
|
functionId: 100002001, |
||||
|
serialNumber: '100002001TableValueType', |
||||
|
tableId: "100002001Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'valueType', |
||||
headerAlign: "center", |
headerAlign: "center", |
||||
align: "center", |
align: "center", |
||||
columnLabel: "Period End Date", |
|
||||
columnWidth: '100', |
|
||||
columnHidden: false, |
|
||||
columnImage: false, |
|
||||
columnSortable: false, |
|
||||
sortLv: 0, |
|
||||
status: true, |
|
||||
fixed: false |
|
||||
}, |
|
||||
{ |
|
||||
userId: this.$store.state.user.name, |
|
||||
functionId: this.functionId, |
|
||||
serialNumber: '811001Table1MaterialFamilyNo', |
|
||||
tableId: "811001Table8", |
|
||||
tableName: "供应商份额", |
|
||||
columnProp: "materialFamilyNo", |
|
||||
headerAlign: "center", |
|
||||
align: "left", |
|
||||
columnLabel: "Material Family No", |
|
||||
columnWidth: '100', |
|
||||
|
columnLabel: '值类型', |
||||
columnHidden: false, |
columnHidden: false, |
||||
columnImage: false, |
columnImage: false, |
||||
columnSortable: false, |
columnSortable: false, |
||||
sortLv: 0, |
sortLv: 0, |
||||
status: true, |
status: true, |
||||
fixed: false |
|
||||
|
fixed: '', |
||||
|
columnWidth:80, |
||||
}, |
}, |
||||
|
|
||||
{ |
{ |
||||
userId: this.$store.state.user.name, |
userId: this.$store.state.user.name, |
||||
functionId: this.functionId, |
|
||||
serialNumber: '811001Table1MaterialFamilyDesc', |
|
||||
tableId: "811001Table8", |
|
||||
tableName: "供应商份额", |
|
||||
columnProp: "materialFamilyDesc", |
|
||||
|
functionId: 100002001, |
||||
|
serialNumber: '100002001TableMaxValue', |
||||
|
tableId: "100002001Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'textValue', |
||||
headerAlign: "center", |
headerAlign: "center", |
||||
align: "left", |
align: "left", |
||||
columnLabel: "Material Family Desc", |
|
||||
columnWidth: '200', |
|
||||
columnHidden: false, |
|
||||
columnImage: false, |
|
||||
columnSortable: false, |
|
||||
sortLv: 0, |
|
||||
status: true, |
|
||||
fixed: false |
|
||||
}, |
|
||||
{ |
|
||||
userId: this.$store.state.user.name, |
|
||||
functionId: this.functionId, |
|
||||
serialNumber: '811001Table1EstimateShare', |
|
||||
tableId: "811001Table8", |
|
||||
tableName: "供应商份额", |
|
||||
columnProp: "estimateShare", |
|
||||
headerAlign: "center", |
|
||||
align: "right", |
|
||||
columnLabel: "Estimate Share", |
|
||||
columnWidth: '80', |
|
||||
|
columnLabel: '属性值', |
||||
columnHidden: false, |
columnHidden: false, |
||||
columnImage: false, |
columnImage: false, |
||||
columnSortable: false, |
columnSortable: false, |
||||
sortLv: 0, |
sortLv: 0, |
||||
status: true, |
status: true, |
||||
fixed: false |
|
||||
}, |
|
||||
{ |
|
||||
userId: this.$store.state.user.name, |
|
||||
functionId: this.functionId, |
|
||||
serialNumber: '811001Table1ActualShare', |
|
||||
tableId: "811001Table8", |
|
||||
tableName: "供应商份额", |
|
||||
columnProp: "actualShare", |
|
||||
headerAlign: "center", |
|
||||
align: "right", |
|
||||
columnLabel: "Actual Share", |
|
||||
columnWidth: '80', |
|
||||
columnHidden: false, |
|
||||
columnImage: false, |
|
||||
columnSortable: false, |
|
||||
sortLv: 0, |
|
||||
status: true, |
|
||||
fixed: false |
|
||||
|
fixed: '', |
||||
|
columnWidth:120, |
||||
}, |
}, |
||||
|
|
||||
], |
], |
||||
modelList:[], |
|
||||
|
searchDataList:[], |
||||
|
dataList:[], |
||||
|
dataList2:[], |
||||
} |
} |
||||
}, |
}, |
||||
methods: { |
|
||||
// 获取基础数据列表S |
|
||||
getBaseList (val, type) { |
|
||||
this.tagNo = val |
|
||||
this.tagNo1 = type |
|
||||
this.$nextTick(() => { |
|
||||
let strVal = '' |
|
||||
// if (val === 1013) { |
|
||||
// if(type==1) { |
|
||||
// strVal = this.dataForm.partType |
|
||||
// } |
|
||||
// } |
|
||||
this.$refs.baseList.init(val, strVal) |
|
||||
}) |
|
||||
}, |
|
||||
/* 列表方法的回调 */ |
|
||||
getBaseData (val) { |
|
||||
// if (this.tagNo === 1013) { |
|
||||
// if(this.tagNo1==1) { |
|
||||
// this.dataForm.partType = val.Base_id |
|
||||
// this.dataForm.partTypeDesc = val.Base_desc |
|
||||
// } |
|
||||
// } |
|
||||
|
watch:{ |
||||
|
partNo(newValue,oldValue){ |
||||
|
if (newValue){ |
||||
|
this.getProperties(); |
||||
|
} |
||||
}, |
}, |
||||
|
}, |
||||
|
methods:{ |
||||
|
|
||||
//初始化组件的参数 |
//初始化组件的参数 |
||||
init(inData) { |
init(inData) { |
||||
//初始化参数 |
//初始化参数 |
||||
this.searchData = JSON.parse(JSON.stringify(inData)); |
this.searchData = JSON.parse(JSON.stringify(inData)); |
||||
//刷新表格 |
//刷新表格 |
||||
this.searchTable(); |
|
||||
|
this.getProperties(); |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
refreshPropertiesModal(){ |
||||
|
this.$confirm(`是否刷新至最新模板界面,已填数据会更新到新模板中,若旧属性在新模板中被删除,该条数据会消失。`, '提示', { |
||||
|
confirmButtonText: '确定', |
||||
|
cancelButtonText: '取消', |
||||
|
type: 'warning' |
||||
|
}).then(() => { |
||||
|
let params = { |
||||
|
site: this.searchData.site, |
||||
|
partNo: this.searchData.partNo, |
||||
|
codeNo: this.searchData.codeNo, |
||||
|
recordType: this.searchData.functionType, |
||||
|
} |
||||
|
refreshPropertiesModal(params).then(({data}) => { |
||||
|
if (data && data.code === 0) { |
||||
|
this.$message.success(data.msg); |
||||
|
this.getProperties(); |
||||
|
this.attributeDialog = true; |
||||
|
} else { |
||||
|
this.$message.warning(data.msg); |
||||
|
} |
||||
|
this.loading = false |
||||
|
}).catch((error) => { |
||||
|
this.$message.error(error) |
||||
|
this.loading = false |
||||
|
}) |
||||
|
}) |
||||
|
}, |
||||
|
getProperties(){ |
||||
|
let params = { |
||||
|
site: this.searchData.site, |
||||
|
partNo: this.searchData.partNo, |
||||
|
codeNo: this.searchData.codeNo, |
||||
|
recordType: this.searchData.functionType, |
||||
|
} |
||||
|
|
||||
|
console.log("当前参数:",params) |
||||
|
getPropertiesListByPartAndCodeNo(params).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.dataList = data.rows; |
||||
|
this.dataList2 = JSON.parse(JSON.stringify(data.rows)); |
||||
|
for (let i = 0; i <this.dataList2.length ; i++) { |
||||
|
this.dataList2[i].itemNo= this.dataList2[i].propertiesItemNo |
||||
|
} |
||||
|
this.searchAttributeList({}) |
||||
|
}else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
}, |
||||
|
clickSave(){ |
||||
|
console.log("点击保存/编辑按钮,当前模式:", this.attributeDialog) |
||||
|
console.log("数据条数:", this.dataList.length) |
||||
|
console.log(0) |
||||
|
if(this.dataList.length===0) { |
||||
|
console.log("属性数据为空!") |
||||
|
return false |
||||
|
} |
||||
|
if(this.dataList.length===0){ |
||||
|
return false |
||||
|
} |
||||
|
if (!this.attributeDialog){ |
||||
|
this.updateTestPropertiesList(); |
||||
|
}else { |
||||
|
//针对null 处理 |
||||
|
for (let i = 0; i < this.dataList.length; i++){ |
||||
|
if (this.dataList[i].numValue == null){ |
||||
|
this.dataList[i].numValue = undefined; |
||||
|
} |
||||
|
} |
||||
|
this.copyAttributeList = JSON.parse(JSON.stringify(this.dataList)) |
||||
|
this.attributeDialog = false; |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
updateTestPropertiesList(){ |
||||
|
this.loading = true |
||||
|
updatePropertiesList(this.copyAttributeList).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.$message.success(data.msg); |
||||
|
this.getProperties(); |
||||
|
this.attributeDialog = true; |
||||
|
}else { |
||||
|
this.$message.warning(data.msg); |
||||
|
} |
||||
|
this.loading = false |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
this.loading = false |
||||
|
}) |
||||
}, |
}, |
||||
searchTable(){ |
|
||||
searchSrmMaterialFamilySupplierShare(this.searchData).then(({data}) => { |
|
||||
//区分请求成功和失败的状况 |
|
||||
if (data && data.code == 0) { |
|
||||
this.dataList = data.rows |
|
||||
console.log(this.dataList) |
|
||||
} else { |
|
||||
this.dataList = []; |
|
||||
|
clickSaveBtn(){ |
||||
|
if (!this.attributeDialog) { |
||||
|
this.$message.warning('请保存更改!') |
||||
|
return |
||||
|
} |
||||
|
//查询 属性模板 |
||||
|
this.searchAttributeList({}) |
||||
|
this.attributeSaveDialog = true; |
||||
|
}, |
||||
|
saveTestPropertiesItem(params){ |
||||
|
let i = 0; |
||||
|
let arr = params.searchTableList.map(item=>{ |
||||
|
item.partNo = this.searchData.partNo; |
||||
|
item.site = this.searchData.site; |
||||
|
item.codeNo = this.searchData.codeNo; |
||||
|
item.recordType = this.searchData.functionType; |
||||
|
return item |
||||
|
}) |
||||
|
for (let j = 0; j <arr.length ; j++) { |
||||
|
arr[j].propertiesItemNo= arr[j].itemNo |
||||
|
arr[j].itemNo=999 |
||||
|
} |
||||
|
saveSubPropertiesValueForAlone(arr).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.$message.success(data.msg); |
||||
|
this.getProperties(params) |
||||
|
}else { |
||||
|
this.$message.warning(data.msg); |
||||
} |
} |
||||
}); |
|
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
}, |
}, |
||||
addModal(){ |
|
||||
this.modelSearchData={ |
|
||||
site:this.searchData.site, |
|
||||
materialFamilyNo:this.searchData.materialFamilyNo, |
|
||||
materialFamilyDesc:this.searchData.materialFamilyDesc, |
|
||||
period:'', |
|
||||
flag:0, |
|
||||
periodStartDate:'', |
|
||||
periodEndDate:'', |
|
||||
detailList:[], |
|
||||
|
removeTestPropertiesItem(params){ |
||||
|
for (let i = 0; i <params.dataTableList.length ; i++) { |
||||
|
params.dataTableList[i].propertiesItemNo= params.dataTableList[i].itemNo |
||||
|
params.dataTableList[i].itemNo=999 |
||||
} |
} |
||||
this.searchMaterialFamilySupplier(); |
|
||||
this.modelFlag=true; |
|
||||
|
deleteSubPropertiesValueForAlone(params.dataTableList).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.$message.success(data.msg); |
||||
|
this.getProperties(params) |
||||
|
|
||||
|
}else { |
||||
|
this.$message.warning(data.msg); |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
}, |
}, |
||||
searchMaterialFamilySupplier(){ |
|
||||
searchMaterialFamilySupplierData(this.modelSearchData).then(({data}) => { |
|
||||
//区分请求成功和失败的状况 |
|
||||
if (data && data.code == 0) { |
|
||||
this.modelList = data.rows |
|
||||
} else { |
|
||||
this.modelList = []; |
|
||||
|
searchAttributeList(data){ |
||||
|
let params= JSON.parse(JSON.stringify(data)) |
||||
|
params.site=this.$store.state.user.site; |
||||
|
params.list = this.dataList; |
||||
|
if (!this.attributeSaveDialog){ |
||||
|
this.searchDataList = []; |
||||
|
} |
||||
|
let inData={ |
||||
|
site: this.searchData.site, |
||||
|
partNo: this.searchData.partNo, |
||||
|
codeNo: this.searchData.codeNo, |
||||
|
functionType: this.searchData.functionType |
||||
|
|
||||
|
} |
||||
|
searchPropertiesItemList(inData).then(({data}) => { |
||||
|
if (data && data.code === 0){ |
||||
|
this.searchDataList = data.rows; |
||||
|
}else { |
||||
|
this.$message.warning(data.msg) |
||||
} |
} |
||||
}); |
|
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
|
||||
}, |
}, |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
created() { |
||||
|
// this.getProperties(); |
||||
}, |
}, |
||||
} |
} |
||||
</script> |
</script> |
||||
|
|
||||
<style scoped lang="scss"> |
|
||||
|
|
||||
.rq .auto /deep/ .el-form-item__content{ |
|
||||
height: auto; |
|
||||
line-height: 1.5; |
|
||||
} |
|
||||
/deep/ .el-table__fixed-right-patch { |
|
||||
display: none !important; |
|
||||
} |
|
||||
|
<style scoped> |
||||
|
.el-input-number /deep/ .el-input__inner { |
||||
|
text-align: right; |
||||
|
padding-right: 5px !important; |
||||
|
} |
||||
|
|
||||
|
/deep/ .el-input .el-input--medium{ |
||||
|
line-height: 20px; |
||||
|
} |
||||
|
/deep/ .el-input-number .el-input--medium{ |
||||
|
line-height: 20px; |
||||
|
} |
||||
</style> |
</style> |
||||
@ -0,0 +1,260 @@ |
|||||
|
<template> |
||||
|
<div class="customer-css"> |
||||
|
<el-form label-position="top" style="margin-top: 1px; margin-left: 0px;"> |
||||
|
<el-form :inline="true" label-position="top" style="margin-top: 0px"> |
||||
|
<el-form-item label="参数编码:"> |
||||
|
<el-input v-model="searchData.propertiesItemNo" clearable style="width: 120px"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="参数名称:"> |
||||
|
<el-input v-model="searchData.subCodeDesc" clearable style="width: 120px"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label=" "> |
||||
|
<el-button type="primary" @click="searchTable()">Query</el-button> |
||||
|
<!-- <el-button type="primary" @click="addModal()">新增</el-button>--> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
</el-form> |
||||
|
<el-table |
||||
|
:data="dataList" |
||||
|
:height=searchData.height |
||||
|
border |
||||
|
v-loading="dataListLoading" |
||||
|
style="width: 100%; "> |
||||
|
<el-table-column |
||||
|
v-for="(item,index) in columnList" :key="index" |
||||
|
:sortable="item.columnSortable" |
||||
|
:prop="item.columnProp" |
||||
|
:header-align="item.headerAlign" |
||||
|
:show-overflow-tooltip="item.showOverflowTooltip" |
||||
|
:align="item.align" |
||||
|
:fixed="item.fixed==''?false:item.fixed" |
||||
|
:min-width="item.columnWidth" |
||||
|
:label="item.columnLabel"> |
||||
|
<template slot-scope="scope"> |
||||
|
<span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span> |
||||
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" |
||||
|
style="width: 100px; height: 80px"/></span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import Chooselist from '@/views/modules/common/Chooselist_eam' |
||||
|
|
||||
|
import { |
||||
|
deleteSrmMaterialFamilySupplier, deleteSrmMaterialFamilySupplierShareList, |
||||
|
saveSrmMaterialFamilySupplierShare, |
||||
|
searchMaterialFamilySupplierData, |
||||
|
searchSrmMaterialFamilySupplierShare |
||||
|
} from '../../../api/srm/srmSupplier' |
||||
|
|
||||
|
import { |
||||
|
searchPropertiesItemList |
||||
|
} from "@/api/part/partProperties.js" |
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
Chooselist |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
dataList: [], |
||||
|
searchData: { |
||||
|
site: '', |
||||
|
username: '', |
||||
|
subCodeSeqNo: '', |
||||
|
subCodeDesc: '', |
||||
|
propertiesItemNo: '', |
||||
|
recordType:'', |
||||
|
itemNo:'', |
||||
|
textValue:'', |
||||
|
numValue:'', |
||||
|
valueTypeDb:'', |
||||
|
height:'300', |
||||
|
page: 1, |
||||
|
limit: 1000 |
||||
|
}, |
||||
|
dataListLoading: false, |
||||
|
currentRow:'', |
||||
|
columnList: [ |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: this.functionId, |
||||
|
serialNumber: '811001Table8Period', |
||||
|
tableId: "811001Table8", |
||||
|
tableName: "规格参数", |
||||
|
columnProp: "subCodeSeqNo", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "序号", |
||||
|
columnWidth: '100', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false |
||||
|
}, |
||||
|
|
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: this.functionId, |
||||
|
serialNumber: '811001Table1MaterialFamilyNo', |
||||
|
tableId: "811001Table8", |
||||
|
tableName: "规格参数", |
||||
|
columnProp: "propertiesItemNo", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "参数编码", |
||||
|
columnWidth: '100', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: this.functionId, |
||||
|
serialNumber: '811001Table1MaterialFamilyDesc', |
||||
|
tableId: "811001Table8", |
||||
|
tableName: "规格参数", |
||||
|
columnProp: "subCodeDesc", |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: "参数名称", |
||||
|
columnWidth: '200', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: this.functionId, |
||||
|
serialNumber: '811001Table1EstimateShare', |
||||
|
tableId: "811001Table8", |
||||
|
tableName: "规格参数", |
||||
|
columnProp: "textValue", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "参数值", |
||||
|
columnWidth: '80', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: this.functionId, |
||||
|
serialNumber: '811001Table1ActualShare', |
||||
|
tableId: "811001Table8", |
||||
|
tableName: "规格参数", |
||||
|
columnProp: "unit", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "单位", |
||||
|
columnWidth: '80', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: false |
||||
|
}, |
||||
|
], |
||||
|
modelList:[], |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
// 获取基础数据列表S |
||||
|
getBaseList (val, type) { |
||||
|
this.tagNo = val |
||||
|
this.tagNo1 = type |
||||
|
this.$nextTick(() => { |
||||
|
let strVal = '' |
||||
|
// if (val === 1013) { |
||||
|
// if(type==1) { |
||||
|
// strVal = this.dataForm.partType |
||||
|
// } |
||||
|
// } |
||||
|
this.$refs.baseList.init(val, strVal) |
||||
|
}) |
||||
|
}, |
||||
|
/* 列表方法的回调 */ |
||||
|
getBaseData (val) { |
||||
|
// if (this.tagNo === 1013) { |
||||
|
// if(this.tagNo1==1) { |
||||
|
// this.dataForm.partType = val.Base_id |
||||
|
// this.dataForm.partTypeDesc = val.Base_desc |
||||
|
// } |
||||
|
// } |
||||
|
}, |
||||
|
//初始化组件的参数 |
||||
|
init(inData) { |
||||
|
//初始化参数 |
||||
|
this.searchData = JSON.parse(JSON.stringify(inData)); |
||||
|
//刷新表格 |
||||
|
this.searchTable(); |
||||
|
|
||||
|
}, |
||||
|
searchTable(){ |
||||
|
searchPropertiesItemList(this.searchData).then(({data}) => { |
||||
|
//区分请求成功和失败的状况 |
||||
|
if (data && data.code == 0) { |
||||
|
this.dataList = data.rows |
||||
|
console.log(this.dataList) |
||||
|
} else { |
||||
|
this.dataList = []; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
addModal(){ |
||||
|
this.modelSearchData={ |
||||
|
site:this.searchData.site, |
||||
|
materialFamilyNo:this.searchData.materialFamilyNo, |
||||
|
materialFamilyDesc:this.searchData.materialFamilyDesc, |
||||
|
period:'', |
||||
|
flag:0, |
||||
|
periodStartDate:'', |
||||
|
periodEndDate:'', |
||||
|
detailList:[], |
||||
|
} |
||||
|
this.searchMaterialFamilySupplier(); |
||||
|
this.modelFlag=true; |
||||
|
}, |
||||
|
searchMaterialFamilySupplier(){ |
||||
|
searchMaterialFamilySupplierData(this.modelSearchData).then(({data}) => { |
||||
|
//区分请求成功和失败的状况 |
||||
|
if (data && data.code == 0) { |
||||
|
this.modelList = data.rows |
||||
|
} else { |
||||
|
this.modelList = []; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
|
||||
|
.rq .auto /deep/ .el-form-item__content{ |
||||
|
height: auto; |
||||
|
line-height: 1.5; |
||||
|
} |
||||
|
/deep/ .el-table__fixed-right-patch { |
||||
|
display: none !important; |
||||
|
} |
||||
|
|
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue