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.
240 lines
7.8 KiB
240 lines
7.8 KiB
<script>
|
|
import CustomerInfo from '../../customer/info.vue'
|
|
import {
|
|
getExternalPartCustomerList,
|
|
removeExternalPartCustomer,
|
|
saveExternalPartCustomer, updateExternalPartCustomer
|
|
} from '../../../../api/part/externalPartCustomer'
|
|
import dayjs from 'dayjs'
|
|
|
|
let customer = {
|
|
customerNo: "",
|
|
customerName: "",
|
|
newCustomerNo:"",
|
|
}
|
|
export default {
|
|
name: 'linkedCustomer',
|
|
components: {CustomerInfo},
|
|
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{
|
|
customerVisible:false,
|
|
saveVisible: false,
|
|
saveCustomer:{
|
|
...customer,
|
|
},
|
|
customerRules:{
|
|
customerNo: [{ required: true, message: 'Please input Customer No', trigger: ['blur','change']}],
|
|
customerName: [{ required: true, message: 'Please input Customer Name', trigger: ['blur','change']}],
|
|
newCustomerNo: [{ required: true, message: 'Please input Customer Name', trigger: ['blur','change']}],
|
|
},
|
|
}
|
|
},
|
|
watch:{
|
|
"saveCustomer.customerNo"(newVal,oldVal){
|
|
this.saveCustomer.customerNo = newVal.toUpperCase();
|
|
},
|
|
"saveCustomer.newCustomerNo"(newVal,oldVal){
|
|
this.saveCustomer.newCustomerNo = newVal.toUpperCase();
|
|
}
|
|
},
|
|
methods:{
|
|
customerRowClick(row){
|
|
if (this.saveCustomer.site){
|
|
this.saveCustomer.newCustomerNo = row.customerNo
|
|
}else {
|
|
this.saveCustomer.customerNo = row.customerNo
|
|
}
|
|
this.saveCustomer.customerName = row.customerName
|
|
this.customerVisible = false
|
|
},
|
|
saveExternalPartCustomer(){
|
|
this.$refs.saveForm.validate((valid,obj) => {
|
|
if (valid){
|
|
let params = {
|
|
...this.saveCustomer,
|
|
partNo: this.part.partNo,
|
|
site: this.part.site,
|
|
createBy: this.$store.state.user.name,
|
|
createTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
|
}
|
|
saveExternalPartCustomer(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
|
|
}
|
|
}
|
|
})
|
|
},
|
|
removeExternalPartCustomer(row){
|
|
removeExternalPartCustomer(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)
|
|
})
|
|
},
|
|
closeSavePartCustomer(){
|
|
this.saveCustomer = {
|
|
...customer,
|
|
}
|
|
this.$refs.saveForm.resetFields()
|
|
},
|
|
handleUpdate(row){
|
|
this.saveCustomer = {
|
|
...row,
|
|
newCustomerNo: row.customerNo,
|
|
}
|
|
this.saveVisible = true
|
|
},
|
|
updateExternalPartCustomer(){
|
|
this.$refs.saveForm.validate((valid,obj) => {
|
|
if (valid){
|
|
let params = {
|
|
...this.saveCustomer,
|
|
updateBy: this.$store.state.user.name,
|
|
updateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
|
}
|
|
updateExternalPartCustomer(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 Customer</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="removeExternalPartCustomer(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 :title="`Linked Customer`" :close-on-click-modal="false" width="400px" @close="closeSavePartCustomer" :visible.sync="saveVisible">
|
|
<el-form :model="saveCustomer" label-position="top" ref="saveForm" :rules="customerRules" 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="saveCustomer.site">
|
|
<el-form-item label="Customer No" :show-message="false" prop="newCustomerNo">
|
|
<span slot="label" style="cursor:pointer;" @click="customerVisible=true"><a herf="#">Customer No</a></span>
|
|
<el-input v-model="saveCustomer.newCustomerNo" ></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8" v-else>
|
|
<el-form-item label="Customer No" :show-message="false" prop="customerNo">
|
|
<span slot="label" style="cursor:pointer;" @click="customerVisible=true"><a herf="#">Customer No</a></span>
|
|
<el-input v-model="saveCustomer.customerNo" ></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24">
|
|
<el-form-item label="Customer Name" :show-message="false" prop="customerName">
|
|
<el-input v-model="saveCustomer.customerName" disabled></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button type="primary" v-if="saveCustomer.site" @click="updateExternalPartCustomer">Save</el-button>
|
|
<el-button type="primary" v-else @click="saveExternalPartCustomer">Save</el-button>
|
|
<el-button @click="saveVisible=false">Cancel</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<el-dialog title="Select Customer" :close-on-click-modal="false" :visible.sync="customerVisible">
|
|
<customer-info @rowClick="customerRowClick" v-if="customerVisible" :of-components="true" :height="300"></customer-info>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
|
|
</style>
|