You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

239 lines
8.2 KiB

<script>
import dayjs from 'dayjs'
import {
removeExternalPartManufacturer,
saveExternalPartManufacturer, updateExternalPartManufacturer
} from '../../../../api/part/externalPartManufacturer'
import Manufacturer from '../../manufacturer/manufacturerInformation.vue'
let manufacturer = {
manufacturerNo: "",
manufacturerName: "",
newManufacturerNo:"",
}
export default {
name: 'linkedManufacturer',
components: {Manufacturer},
props:{
dataList:{
type:Array,
default:()=>[],
},
part:{
type:Object,
default:()=>{},
},
height:{
type:Number,
default:350,
},
columnList:{
type:Array,
default:()=>[],
},
visible:{
type:Boolean,
default:true,
}
},
data(){
return{
manufacturerVisible:false,
saveVisible: false,
saveManufacturer:{
...manufacturer,
},
manufacturerRules:{
manufacturerNo: [{ required: true, message: 'Please input Manufacturer No', trigger: ['blur','change']}],
manufacturerName: [{ required: true, message: 'Please input Manufacturer Name', trigger: ['blur','change']}],
newManufacturerNo: [{ required: true, message: 'Please input Manufacturer Name', trigger: ['blur','change']}],
},
}
},
watch:{
"saveManufacturer.manufacturerNo"(newVal,oldVal){
this.saveManufacturer.manufacturerNo = newVal.toUpperCase();
},
"saveManufacturer.newManufacturerNo"(newVal,oldVal){
this.saveManufacturer.newManufacturerNo = newVal.toUpperCase();
}
},
methods:{
manufacturerRowClick(row){
if (this.saveManufacturer.site){
this.saveManufacturer.newManufacturerNo = row.manufacturerNo
}else {
this.saveManufacturer.manufacturerNo = row.manufacturerNo
}
this.saveManufacturer.manufacturerName = row.manufacturerName
this.manufacturerVisible = false
},
saveExternalPartManufacturer(){
this.$refs.saveForm.validate((valid,obj) => {
if (valid){
let params = {
...this.saveManufacturer,
partNo: this.part.partNo,
site: this.part.site,
createBy: this.$store.state.user.name,
createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
}
saveExternalPartManufacturer(params).then(({data})=>{
if (data && data.code === 0){
this.$emit('refresh')
this.saveVisible = false
this.$message.success(data.msg)
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}else {
for (let i = 0; i < Object.keys(obj).length; i++) {
this.$message.warning(obj[Object.keys(obj)[i]][0].message)
break
}
}
})
},
removeExternalPartManufacturer(row){
removeExternalPartManufacturer(row).then(({data})=>{
if (data && data.code === 0){
this.$emit('refresh')
this.saveVisible = false
this.$message.success(data.msg)
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
},
closeSavePartManufacturer(){
this.saveManufacturer = {
...manufacturer,
}
this.$refs.saveForm.resetFields()
},
handleUpdate(row){
this.saveManufacturer = {
...row,
newManufacturerNo: row.manufacturerNo,
}
this.saveVisible = true
},
updateExternalPartManufacturer(){
this.$refs.saveForm.validate((valid,obj) => {
if (valid){
let params = {
...this.saveManufacturer,
updateBy: this.$store.state.user.name,
updateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
}
updateExternalPartManufacturer(params).then(({data})=>{
if (data && data.code === 0){
this.$emit('refresh')
this.saveVisible = false
this.$message.success(data.msg)
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}else {
for (let i = 0; i < Object.keys(obj).length; i++) {
this.$message.warning(obj[Object.keys(obj)[i]][0].message)
break
}
}
})
}
}
}
</script>
<template>
<div>
<div v-if="visible">
<el-button type="primary" @click="saveVisible=true">New Manufacturer</el-button>
</div>
<el-table :data="dataList" style="width: 100%;margin-top: 5px" :height="height" border>
<el-table-column
v-if="visible"
header-align="center"
align="center"
width="100"
fixed="left"
label="Actions">
<template slot-scope="scope">
<el-link style="cursor:pointer;" @click="handleUpdate(scope.row)">Edit</el-link>
<el-link style="cursor:pointer;" @click="removeExternalPartManufacturer(scope.row)">Delete</el-link>
</template>
</el-table-column>
<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>
<el-dialog v-drag :close-on-click-modal="false" :title="`Linked Manufacturer`" width="400px" @close="closeSavePartManufacturer" :visible.sync="saveVisible">
<el-form :model="saveManufacturer" label-position="top" ref="saveForm" :rules="manufacturerRules" label-width="100px">
<el-row :gutter="10">
<el-col :span="8">
<el-form-item label="Part No">
<el-input v-model="part.partNo" readonly disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="Part Description">
<el-input v-model="part.partDesc" readonly disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="8" v-if="saveManufacturer.site">
<el-form-item label="Manufacturer No" :show-message="false" prop="newManufacturerNo">
<span slot="label" style="cursor:pointer;" @click="manufacturerVisible=true"><a herf="#">Manufacturer No</a></span>
<el-input v-model="saveManufacturer.newManufacturerNo" ></el-input>
</el-form-item>
</el-col>
<el-col :span="8" v-else>
<el-form-item label="Manufacturer No" :show-message="false" prop="manufacturerNo">
<span slot="label" style="cursor:pointer;" @click="manufacturerVisible=true"><a herf="#">Manufacturer No</a></span>
<el-input v-model="saveManufacturer.manufacturerNo" ></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="Manufacturer Name" :show-message="false" prop="manufacturerName">
<el-input v-model="saveManufacturer.manufacturerName" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="saveManufacturer.site" @click="updateExternalPartManufacturer">Save</el-button>
<el-button type="primary" v-else @click="saveExternalPartManufacturer">Save</el-button>
<el-button @click="saveVisible=false">Cancel</el-button>
</div>
</el-dialog>
<el-dialog v-drag title="Linked Manufacturer" :visible.sync="manufacturerVisible">
<manufacturer v-if="manufacturerVisible" @rowClick="manufacturerRowClick" :component-height="300" :is-component="true"></manufacturer>
</el-dialog>
</div>
</template>
<style scoped>
</style>