11 changed files with 2008 additions and 5 deletions
-
11src/api/property/propertyItem.js
-
10src/api/property/propertyItemAvailable.js
-
11src/api/property/template.js
-
13src/api/property/templateDetail.js
-
794src/views/modules/property/available.vue
-
1041src/views/modules/property/propertyTemplate.vue
-
7src/views/modules/quote/detail/primary/quoteDetailBom.vue
-
48src/views/modules/quote/detail/primary/quoteDetailOther.vue
-
63src/views/modules/quote/detail/primary/quoteDetailRouting.vue
-
14src/views/modules/quote/detail/quoteDetail.vue
-
1src/views/modules/quote/index.vue
@ -0,0 +1,11 @@ |
|||||
|
import {createAPI} from "../../utils/httpRequest"; |
||||
|
|
||||
|
export const queryPropertyItem = (data) => createAPI("/property/item", "post", data); |
||||
|
|
||||
|
export const queryPropertyItemByPage = (data) => createAPI(`/property/item/${data.no}/${data.size}`, "post", data); |
||||
|
|
||||
|
export const savePropertyItem = (data) => createAPI("/property/item/save", "post", data); |
||||
|
|
||||
|
export const updatePropertyItem = (data) => createAPI("/property/item/update", "post", data); |
||||
|
|
||||
|
export const removePropertyItem = (data) => createAPI(`/property/item/remove/${data.id}`, "post", data); |
||||
@ -0,0 +1,10 @@ |
|||||
|
import {createAPI} from "../../utils/httpRequest"; |
||||
|
import {data} from "autoprefixer"; |
||||
|
|
||||
|
export const queryPropertyItemAvailable = (data) => createAPI(`/property/item/available`,'post',data) |
||||
|
|
||||
|
export const savePropertyItemAvailable = (data) => createAPI(`/property/item/available/save`,'post',data) |
||||
|
|
||||
|
export const removePropertyItemAvailable = (data) => createAPI(`/property/item/available/remove`,'post',data) |
||||
|
|
||||
|
export const updatePropertyItemAvailable = (data) => createAPI(`/property/item/available/update`,'post',data) |
||||
@ -0,0 +1,11 @@ |
|||||
|
import {createAPI} from "../../utils/httpRequest"; |
||||
|
|
||||
|
export const queryPropertyTemplate = (data) => createAPI(`/property/template`, "post", data); |
||||
|
export const queryPropertyTemplateType = (data) => createAPI(`/property/template/type`, "post", data); |
||||
|
export const queryPropertyTemplateByPage = (data) => createAPI(`/property/template/${data.no}/${data.size}`, "post", data); |
||||
|
|
||||
|
export const savePropertyTemplate = (data) => createAPI(`/property/template/save`, "post", data); |
||||
|
|
||||
|
export const removePropertyTemplate = (data) => createAPI(`/property/template/remove/${data.id}`, "post", data); |
||||
|
|
||||
|
export const updatePropertyTemplate = (data) => createAPI(`/property/template/update`, "post", data); |
||||
@ -0,0 +1,13 @@ |
|||||
|
import {createAPI} from "../../utils/httpRequest"; |
||||
|
|
||||
|
|
||||
|
export const queryPropertyTemplateDetail = (data) => createAPI('/property/template/detail','post',data) |
||||
|
export const queryPropertyTemplateDetailItem = (data) => createAPI('/property/template/detail/item','post',data) |
||||
|
|
||||
|
|
||||
|
export const batchSavePropertyTemplateDetail = (data) => createAPI('/property/template/detail/batch/save','post',data) |
||||
|
|
||||
|
export const removePropertyTemplateDetail = (data) => createAPI('/property/template/detail/remove','post',data) |
||||
|
export const removeBatchPropertyTemplateDetail = (data) => createAPI('/property/template/detail/batch/remove','post',data) |
||||
|
|
||||
|
export const batchUpdatePropertyTemplateDetail = (data) => createAPI('/property/template/detail/batch/update','post',data) |
||||
@ -0,0 +1,794 @@ |
|||||
|
<script> |
||||
|
import {queryPropertyTemplateType} from "../../../api/property/template"; |
||||
|
import { |
||||
|
queryPropertyItemByPage, |
||||
|
removePropertyItem, |
||||
|
savePropertyItem, |
||||
|
updatePropertyItem |
||||
|
} from "../../../api/property/propertyItem"; |
||||
|
import BuSelect from "../../../components/selector/select/BuSelect.vue"; |
||||
|
import {getSiteAndBuByUserName} from "../../../api/eam/eam"; |
||||
|
import { |
||||
|
queryPropertyItemAvailable, removePropertyItemAvailable, |
||||
|
savePropertyItemAvailable, |
||||
|
updatePropertyItemAvailable |
||||
|
} from "../../../api/property/propertyItemAvailable"; |
||||
|
|
||||
|
export default { |
||||
|
name: "available", |
||||
|
components: {BuSelect}, |
||||
|
data(){ |
||||
|
return{ |
||||
|
no:1, |
||||
|
size:20, |
||||
|
total:0, |
||||
|
menuId:180003, |
||||
|
dataList: [], |
||||
|
queryLoading: false, |
||||
|
templateItem:{ |
||||
|
id:null, |
||||
|
itemNo:'', |
||||
|
itemDesc:'', |
||||
|
itemType:'', |
||||
|
buId:null, |
||||
|
valueType:'', |
||||
|
valueTypeDb:'', |
||||
|
defaultValue:'', |
||||
|
maxValue:undefined, |
||||
|
minValue:undefined, |
||||
|
valueChooseFlag:'', |
||||
|
}, |
||||
|
dataTypeList: [], |
||||
|
queryForm: { |
||||
|
|
||||
|
}, |
||||
|
columns: [ |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableBuDesc', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'buDesc', |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: 'BU', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 80, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
},{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableItemTypeDesc', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'itemTypeDesc', |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: '属性类型', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 120, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableValueType', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'itemNo', |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: '属性编码', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 100, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableValueType', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'itemDesc', |
||||
|
headerAlign: "center", |
||||
|
align: "left", |
||||
|
columnLabel: '属性名称', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 120, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableValueType', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'valueType', |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: '值类型', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 80, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableDefaultValue', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'defaultValue', |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: '参照值', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 80, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableMaxValue', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'maxValue', |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: '最大值', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 80, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableMinValue', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'minValue', |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: '最小值', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 80, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableValueChooseFlag', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'valueChooseFlag', |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: '是否值可选', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 80, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableCreateDate', |
||||
|
tableId: '180003Table', |
||||
|
tableName: '属性表', |
||||
|
columnProp: 'createDate', |
||||
|
headerAlign: 'center', |
||||
|
align: 'center', |
||||
|
columnLabel: '创建时间', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 100, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableCreateBy', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'createBy', |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: '创建人', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 80, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableUpdateDate', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'updateDate', |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: '更新时间', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 100, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
{ |
||||
|
userId: this.$store.state.user.name, |
||||
|
functionId: 180003, |
||||
|
serialNumber: '180003TableUpdateBy', |
||||
|
tableId: "180003Table", |
||||
|
tableName: "属性表", |
||||
|
columnProp: 'updateBy', |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: '更新人', |
||||
|
columnHidden: false, |
||||
|
columnImage: false, |
||||
|
columnSortable: false, |
||||
|
columnWidth: 80, |
||||
|
sortLv: 0, |
||||
|
status: true, |
||||
|
fixed: '', |
||||
|
}, |
||||
|
], |
||||
|
saveVisible:false, |
||||
|
saveLoading:false, |
||||
|
saveForm:{ |
||||
|
|
||||
|
}, |
||||
|
rules:{ |
||||
|
buId: [ |
||||
|
{ required: true, message: '请选择BU', trigger: 'change' } |
||||
|
], |
||||
|
itemNo: [ |
||||
|
{ required: true, message: '请输入属性编码', trigger: 'blur' } |
||||
|
], |
||||
|
itemDesc: [ |
||||
|
{ required: true, message: '请输入属性描述', trigger: 'blur' } |
||||
|
], |
||||
|
itemType: [ |
||||
|
{ required: true, message: '请选择属性类型', trigger: 'change' } |
||||
|
], |
||||
|
valueType: [ |
||||
|
{ required: true, message: '请选择值类型', trigger: 'change' } |
||||
|
], |
||||
|
}, |
||||
|
availableVisible:false, |
||||
|
availableLoading:false, |
||||
|
availableForm:{ |
||||
|
|
||||
|
}, |
||||
|
availableList:[], |
||||
|
availableValueVisible:false, |
||||
|
availableValue:{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods:{ |
||||
|
handleQueryPropertyTemplateType(){ |
||||
|
let params = { |
||||
|
|
||||
|
} |
||||
|
queryPropertyTemplateType(params).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.dataTypeList = data.rows; |
||||
|
}else { |
||||
|
this.$message.warning(data.msg); |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error); |
||||
|
}) |
||||
|
}, |
||||
|
handleQueryByPage(){ |
||||
|
let params = { |
||||
|
...this.templateItem, |
||||
|
no:this.no, |
||||
|
size:this.size, |
||||
|
createBy: this.$store.state.user.name, |
||||
|
} |
||||
|
this.queryLoading = true; |
||||
|
queryPropertyItemByPage(params).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.dataList = data.rows; |
||||
|
this.total = data.total; |
||||
|
}else { |
||||
|
this.$message.warning(data.msg); |
||||
|
} |
||||
|
this.queryLoading = false; |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error); |
||||
|
this.queryLoading = false; |
||||
|
}) |
||||
|
}, |
||||
|
handleSizeChange(val){ |
||||
|
this.size = val; |
||||
|
this.handleQueryByPage(); |
||||
|
}, |
||||
|
handlePageChange(val){ |
||||
|
this.no = val; |
||||
|
this.handleQueryByPage(); |
||||
|
}, |
||||
|
handleSave(row){ |
||||
|
this.$nextTick(()=>{ |
||||
|
if (this.$refs.saveForm){ |
||||
|
this.$refs.saveForm.clearValidate(); |
||||
|
} |
||||
|
}) |
||||
|
if (row){ |
||||
|
this.saveForm = {...row} |
||||
|
}else { |
||||
|
this.saveForm = {...this.templateItem} |
||||
|
this.saveForm.valueChooseFlag = 'N'; |
||||
|
this.saveForm.valueType = 'text'; |
||||
|
if (this.queryForm.itemType){ |
||||
|
this.saveForm.itemType = this.queryForm.itemType; |
||||
|
} |
||||
|
this.saveForm.buId = this.userBuList.length > 0 ? this.userBuList[0].id : '' |
||||
|
} |
||||
|
this.saveVisible = true; |
||||
|
}, |
||||
|
handleSaveOrUpdate(){ |
||||
|
this.$refs.saveForm.validate((valid,obj) => { |
||||
|
if (valid){ |
||||
|
if (this.saveForm.id){ |
||||
|
this.handleUpdateItem(); |
||||
|
}else { |
||||
|
this.handleSaveItem(); |
||||
|
} |
||||
|
}else { |
||||
|
let i = 1 |
||||
|
for (let key in obj) { |
||||
|
if (i === 1){ |
||||
|
this.$message.error(obj[key][0].message); |
||||
|
break |
||||
|
} |
||||
|
i++ |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
handleSaveItem(){ |
||||
|
let params = { |
||||
|
...this.saveForm, |
||||
|
createBy: this.$store.state.user.name, |
||||
|
} |
||||
|
if (!this.saveForm.minValue){ |
||||
|
params.minValue = ''; |
||||
|
} |
||||
|
if (!this.saveForm.maxValue){ |
||||
|
params.maxValue = ''; |
||||
|
} |
||||
|
this.saveLoading = true; |
||||
|
savePropertyItem(params).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.$message.success(data.msg); |
||||
|
this.saveVisible = false; |
||||
|
this.handleQueryByPage(); |
||||
|
}else { |
||||
|
this.$message.warning(data.msg); |
||||
|
} |
||||
|
this.saveLoading = false; |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error); |
||||
|
this.saveLoading = false; |
||||
|
}) |
||||
|
}, |
||||
|
handleUpdateItem(){ |
||||
|
let params = { |
||||
|
...this.saveForm, |
||||
|
updateBy: this.$store.state.user.name, |
||||
|
} |
||||
|
if (!this.saveForm.minValue){ |
||||
|
params.minValue = ''; |
||||
|
} |
||||
|
if (!this.saveForm.maxValue){ |
||||
|
params.maxValue = ''; |
||||
|
} |
||||
|
this.saveLoading = true; |
||||
|
updatePropertyItem(params).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.$message.success(data.msg); |
||||
|
this.saveVisible = false; |
||||
|
this.handleQueryByPage(); |
||||
|
}else { |
||||
|
this.$message.warning(data.msg); |
||||
|
} |
||||
|
this.saveLoading = false; |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error); |
||||
|
this.saveLoading = false; |
||||
|
}) |
||||
|
}, |
||||
|
handleQueryBu(){ |
||||
|
let params = { |
||||
|
username: this.$store.state.user.name, |
||||
|
} |
||||
|
getSiteAndBuByUserName(params).then(({data}) => { |
||||
|
if (data && data.code === 0) { |
||||
|
this.userBuList = data.rows |
||||
|
}else { |
||||
|
this.$message.warning(data.message) |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
}, |
||||
|
handleRemove(row){ |
||||
|
this.$alert('确认删除该属性吗?', '提示', { |
||||
|
confirmButtonText: '确定', |
||||
|
cancelButtonText: '取消', |
||||
|
type: 'warning' |
||||
|
}).then(() => { |
||||
|
let params = { |
||||
|
id: row.id, |
||||
|
} |
||||
|
this.saveLoading = true; |
||||
|
removePropertyItem(params).then(({data}) => { |
||||
|
if (data && data.code === 0) { |
||||
|
this.$message.success(data.msg) |
||||
|
this.handleQueryByPage() |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
this.saveLoading = false |
||||
|
}).catch((error) => { |
||||
|
this.$message.error(error) |
||||
|
this.saveLoading = false |
||||
|
}) |
||||
|
}).catch(() => { |
||||
|
}) |
||||
|
}, |
||||
|
handleSaveAvailable(row){ |
||||
|
this.availableForm = {...row} |
||||
|
this.availableForm.itemId = this.availableForm.id |
||||
|
this.availableForm.id = null |
||||
|
this.handleQueryPropertyItemAvailable(); |
||||
|
this.availableVisible = true; |
||||
|
}, |
||||
|
handleSaveAvailableValue(row){ |
||||
|
if (row){ |
||||
|
this.availableValue = {...row} |
||||
|
}else { |
||||
|
this.availableValue = { |
||||
|
...this.availableForm, |
||||
|
availableValue:undefined, |
||||
|
} |
||||
|
} |
||||
|
this.availableValueVisible = true; |
||||
|
}, |
||||
|
handleQueryPropertyItemAvailable(){ |
||||
|
let params = { |
||||
|
itemId: this.availableForm.itemId, |
||||
|
} |
||||
|
queryPropertyItemAvailable(params).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.availableList = data.rows; |
||||
|
}else { |
||||
|
this.$message.warning(data.msg); |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error); |
||||
|
}) |
||||
|
}, |
||||
|
handleSaveItemAvailableValue(){ |
||||
|
if (this.availableValue.id){ |
||||
|
this.availableValue.updateBy = this.$store.state.user.name |
||||
|
updatePropertyItemAvailable(this.availableValue).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.$message.success(data.msg) |
||||
|
this.availableValueVisible = false; |
||||
|
this.handleQueryPropertyItemAvailable(); |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
}else { |
||||
|
this.availableValue.createBy = this.$store.state.user.name |
||||
|
savePropertyItemAvailable(this.availableValue).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.$message.success(data.msg) |
||||
|
this.availableValueVisible = false; |
||||
|
this.handleQueryPropertyItemAvailable(); |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
handleRemoveAvailableValue(row){ |
||||
|
this.$confirm('确认删除该可选值吗?', '提示', {}).then(() => { |
||||
|
removePropertyItemAvailable(row).then(({data})=>{ |
||||
|
if (data && data.code === 0){ |
||||
|
this.$message.success(data.msg) |
||||
|
this.availableValueVisible = false; |
||||
|
this.handleQueryPropertyItemAvailable(); |
||||
|
} else { |
||||
|
this.$message.warning(data.msg) |
||||
|
} |
||||
|
}).catch((error)=>{ |
||||
|
this.$message.error(error) |
||||
|
}) |
||||
|
}) |
||||
|
}, |
||||
|
changeValueType(val){ |
||||
|
this.saveForm.minValue = undefined; |
||||
|
this.saveForm.maxValue = undefined; |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.queryForm = {...this.templateItem} |
||||
|
this.handleQueryPropertyTemplateType(); |
||||
|
this.handleQueryByPage(); |
||||
|
this.handleQueryBu(); |
||||
|
}, |
||||
|
watch:{ |
||||
|
'saveForm.itemNo'(newVal, oldVal){ |
||||
|
this.saveForm.itemNo = newVal.toUpperCase(); |
||||
|
}, |
||||
|
'templateItem.itemNo'(newVal, oldVal){ |
||||
|
this.templateItem.itemNo = newVal.toUpperCase(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div> |
||||
|
<div style="width: 1000px"> |
||||
|
<el-form :model="templateItem" label-position="top"> |
||||
|
<el-row :gutter="10"> |
||||
|
<el-col :span="4"> |
||||
|
<el-form-item label="属性编码"> |
||||
|
<el-input v-model="templateItem.itemNo"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="4"> |
||||
|
<el-form-item label="属性描述"> |
||||
|
<el-input v-model="templateItem.itemDesc"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="4"> |
||||
|
<el-form-item label="属性类型"> |
||||
|
<el-select v-model="templateItem.itemType" style="width: 100%;"> |
||||
|
<el-option label="全部" value=""></el-option> |
||||
|
<el-option :label="item.functionTypeDesc" :value="item.functionType" v-for="item in dataTypeList" :key="item.functionType"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="4"> |
||||
|
<el-form-item label=" "> |
||||
|
<el-button type="primary" @click="handleQueryByPage">查询</el-button> |
||||
|
<el-button type="primary" @click="handleSave(null)">新增</el-button> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
<el-table :data="dataList" style="width: 100%" border v-loading="queryLoading" height="80vh"> |
||||
|
<el-table-column |
||||
|
v-for="(item,index) in columns" :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"> |
||||
|
<template v-if="item.columnProp==='valueType'">{{ scope.row[item.columnProp] === 'text' ? '文本' : '数字' }}</template> |
||||
|
<template v-else-if="item.columnProp==='valueChooseFlag'">{{ scope.row[item.columnProp] === 'Y' ? '是' : '否' }}</template> |
||||
|
<template v-else>{{ scope.row[item.columnProp] }}</template> |
||||
|
</span> |
||||
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
fixed="right" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
width="160" |
||||
|
label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
<a @click="handleSave(scope.row)">编辑</a> |
||||
|
<a @click="handleRemove(scope.row)">删除</a> |
||||
|
<a v-if="scope.row.valueChooseFlag === 'Y'" @click="handleSaveAvailable(scope.row)">可选值</a> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
|
||||
|
<el-pagination @size-change="handleSizeChange" |
||||
|
@current-change="handlePageChange" |
||||
|
:current-page="no" |
||||
|
:page-sizes="[20, 50, 100, 200, 500]" |
||||
|
:page-size="size" |
||||
|
:total="total" |
||||
|
layout="total,sizes, prev, pager, next, jumper"> |
||||
|
|
||||
|
</el-pagination> |
||||
|
|
||||
|
<el-dialog title="属性信息" :close-on-click-modal="false" v-drag :visible.sync="saveVisible" width="500px"> |
||||
|
<el-form :model="saveForm" ref="saveForm" :rules="rules" label-position="top" label-width="100px"> |
||||
|
<el-row :gutter="10"> |
||||
|
<el-col :span="16"> |
||||
|
<el-form-item label="BU" prop="buId" :show-message="false"> |
||||
|
<bu-select v-model="saveForm.buId" :disabled="saveForm.id > 0"></bu-select> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="10"> |
||||
|
<el-form-item label="属性编码" prop="itemNo" :show-message="false"> |
||||
|
<el-input v-model="saveForm.itemNo" :disabled="saveForm.id"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="14"> |
||||
|
<el-form-item label="属性描述" prop="itemDesc" :show-message="false"> |
||||
|
<el-input v-model="saveForm.itemDesc"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="10"> |
||||
|
<el-form-item label="值类型" prop="valueType" :show-message="false"> |
||||
|
<el-select v-model="saveForm.valueType" style="width: 100%;" @change="changeValueType"> |
||||
|
<el-option label="文本" value="text"></el-option> |
||||
|
<el-option label="数字" value="num"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="14"> |
||||
|
<el-form-item label="参照值" prop="defaultValue" :show-message="false"> |
||||
|
<el-input v-model="saveForm.defaultValue"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="10" v-if="saveForm.valueType !== 'text'"> |
||||
|
<el-form-item label="最大值" prop="maxValue" :show-message="false"> |
||||
|
<el-input-number style="width: 100%;" :controls="false" :step="0" v-model="saveForm.maxValue"></el-input-number> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="10" v-else> |
||||
|
<el-form-item label="最大值" prop="maxValue" :show-message="false"> |
||||
|
<el-input v-model="saveForm.maxValue"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="10" v-if="saveForm.valueType !== 'text'"> |
||||
|
<el-form-item label="最小值" prop="minValue" :show-message="false"> |
||||
|
<el-input-number style="width: 100%;" :controls="false" :step="0" :disabled="saveForm.valueType === 'text'" v-model="saveForm.minValue"></el-input-number> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="10" v-else> |
||||
|
<el-form-item label="最小值" prop="minValue" :show-message="false"> |
||||
|
<el-input v-model="saveForm.minValue"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="10"> |
||||
|
<el-form-item label="属性类型" prop="itemType" :show-message="false"> |
||||
|
<el-select v-model="saveForm.itemType" style="width: 100%;"> |
||||
|
<el-option :label="item.functionTypeDesc" :value="item.functionType" v-for="item in dataTypeList" :key="item.functionType"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="10"> |
||||
|
<el-form-item label=" " prop="valueChooseFlag" :show-message="false"> |
||||
|
<el-checkbox v-model="saveForm.valueChooseFlag" :true-label="'Y'" :false-label="'N'">是否值可选</el-checkbox> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" :loading="saveLoading" @click="handleSaveOrUpdate">确 定</el-button> |
||||
|
<el-button @click="saveVisible = false">取 消</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="availableVisible" width="500px"> |
||||
|
<el-form :model="availableForm" label-position="top" > |
||||
|
<el-row :gutter="10"> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label="属性编码" prop="itemNo" :show-message="false"> |
||||
|
<el-input v-model="availableForm.itemNo" disabled></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="10"> |
||||
|
<el-form-item label="属性描述" prop="itemDesc" :show-message="false"> |
||||
|
<el-input v-model="availableForm.itemDesc" disabled></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label=" " > |
||||
|
<el-button type="primary" @click="handleSaveAvailableValue(null)">新增</el-button> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
<el-table :data="availableList" border style="width: 100%" :height="300"> |
||||
|
<el-table-column |
||||
|
prop="availableValue" |
||||
|
header-align="center" |
||||
|
align="left" |
||||
|
min-width="200" |
||||
|
label="属性值"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
min-width="100" |
||||
|
label="操作"> |
||||
|
<template slot-scope="scope"> |
||||
|
<a @click="handleSaveAvailableValue(scope.row)">修改</a> |
||||
|
<a @click="handleRemoveAvailableValue(scope.row)">删除</a> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</el-dialog> |
||||
|
<el-dialog title="可选值信息" :close-on-click-modal="false" v-drag :visible.sync="availableValueVisible" width="300px"> |
||||
|
<el-form :model="availableValue" label-position="top"> |
||||
|
<el-form-item label="可选值" required> |
||||
|
<el-input v-model="availableValue.availableValue" v-if="availableForm.valueType === 'text'"></el-input> |
||||
|
<el-input-number style="width: 100%;" :controls="false" :step="0" v-model="availableForm.availableValue" v-if="availableForm.valueType === 'num'"></el-input-number> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" :loading="saveLoading" @click="handleSaveItemAvailableValue">确 定</el-button> |
||||
|
<el-button @click="availableValueVisible = false">取 消</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped> |
||||
|
.el-table /deep/ .cell{ |
||||
|
height: auto; |
||||
|
line-height: 1.5; |
||||
|
} |
||||
|
</style> |
||||
1041
src/views/modules/property/propertyTemplate.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,48 @@ |
|||||
|
<script> |
||||
|
export default { |
||||
|
name: "quoteDetailOther", |
||||
|
props:{ |
||||
|
quoteDetail: { |
||||
|
type: Object, |
||||
|
required: true |
||||
|
} |
||||
|
}, |
||||
|
model:{ |
||||
|
prop: "quoteDetail", |
||||
|
event: "update" |
||||
|
}, |
||||
|
data(){ |
||||
|
return{ |
||||
|
dataList:[], |
||||
|
} |
||||
|
}, |
||||
|
methods:{ |
||||
|
handleQueryOther(){ |
||||
|
console.log(this.quoteDetail.id) |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
if (this.quoteDetail && this.quoteDetail.id){ |
||||
|
this.handleQueryOther() |
||||
|
} |
||||
|
}, |
||||
|
watch:{ |
||||
|
'quoteDetail.id'(newVal, oldVal){ |
||||
|
this.handleQueryOther() |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div> |
||||
|
<el-button type="primary">新增</el-button> |
||||
|
<el-table :data="dataList" style="width: 100%" border :height="420"> |
||||
|
|
||||
|
</el-table> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped> |
||||
|
|
||||
|
</style> |
||||
@ -0,0 +1,63 @@ |
|||||
|
<script> |
||||
|
export default { |
||||
|
name: "quoteDetailRouting", |
||||
|
props:{ |
||||
|
quoteDetail:{ |
||||
|
type:Object, |
||||
|
required:true |
||||
|
}, |
||||
|
}, |
||||
|
model:{ |
||||
|
prop: "quoteDetail", |
||||
|
event: "update" |
||||
|
}, |
||||
|
data(){ |
||||
|
return{ |
||||
|
isAllBom:false, |
||||
|
dataList:[], |
||||
|
treeData:[], |
||||
|
} |
||||
|
}, |
||||
|
methods:{ |
||||
|
handleQueryQuoteDetailRouting(){ |
||||
|
console.log(this.quoteDetail.id) |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
if (this.quoteDetail && this.quoteDetail.id){ |
||||
|
this.handleQueryQuoteDetailRouting(); |
||||
|
} |
||||
|
}, |
||||
|
watch:{ |
||||
|
'quoteDetail.id'(newVal,oldVal){ |
||||
|
this.handleQueryQuoteDetailRouting(); |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<div> |
||||
|
<div style="margin-bottom: 10px"> |
||||
|
<el-link style="margin-right: 20px">切换版本</el-link> |
||||
|
<el-checkbox v-model="isAllBom">全级Routing结构</el-checkbox> |
||||
|
</div> |
||||
|
<el-container> |
||||
|
<el-aside width="300px"> |
||||
|
<el-tree |
||||
|
:data="treeData"> |
||||
|
|
||||
|
</el-tree> |
||||
|
</el-aside> |
||||
|
<el-main style="padding: 0"> |
||||
|
<el-table :data="dataList" border style="width: 100%" :height="420"> |
||||
|
|
||||
|
</el-table> |
||||
|
</el-main> |
||||
|
</el-container> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped> |
||||
|
|
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue