mirror of
https://github.com/PanJiaChen/vue-element-admin.git
synced 2025-08-13 07:04:21 +08:00
* Add locator wharehouse (#7) * proposal for location component * change props * remove children if is empty * redefine call data Co-authored-by: leonel1524 <matosleonel0@gmail.com> * feat: Add Locator Warehouse Field. * remove unused code. Co-authored-by: leonel1524 <matosleonel0@gmail.com>
89 lines
2.1 KiB
Vue
89 lines
2.1 KiB
Vue
<template>
|
|
<el-cascader
|
|
:ref="metadata.columnName"
|
|
v-model="value"
|
|
:placeholder="metadata.help"
|
|
:options="options"
|
|
:readonly="Boolean(metadata.readonly)"
|
|
:disabled="isDisabled"
|
|
:clearable="true"
|
|
filterable
|
|
lazy
|
|
:show-all-levels="false"
|
|
:lazy-load="searchLocatorByWarehouse"
|
|
:props="props"
|
|
@change="preHandleChange"
|
|
/>
|
|
</template>
|
|
|
|
<script>
|
|
import { fieldMixin } from '@/components/ADempiere/Field/FieldMixin'
|
|
import { getLocatorList } from '@/api/ADempiere/field/locator'
|
|
|
|
export default {
|
|
name: 'FieldLocation',
|
|
mixins: [fieldMixin],
|
|
data() {
|
|
return {
|
|
value: [],
|
|
options: [],
|
|
props: {
|
|
// checkStrictly: true,
|
|
// emitPath: false,
|
|
lazy: true,
|
|
lazyLoad: this.searchLocatorByWarehouse
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
warehouse() {
|
|
return this.$store.getters['user/getWarehouse']
|
|
},
|
|
warehousesList() {
|
|
return this.$store.getters['user/getWarehouses']
|
|
.map(itemWarehouse => {
|
|
return {
|
|
label: itemWarehouse.name,
|
|
value: itemWarehouse.id,
|
|
children: []
|
|
}
|
|
})
|
|
}
|
|
},
|
|
created() {
|
|
this.options = this.warehousesList
|
|
},
|
|
methods: {
|
|
preHandleChange(value) {
|
|
let selected = value
|
|
if (Array.isArray(value)) {
|
|
selected = value[value.length - 1]
|
|
}
|
|
this.handleChange(selected)
|
|
this.value = value
|
|
},
|
|
searchLocatorByWarehouse(node, resolve) {
|
|
getLocatorList({
|
|
warehouseId: node.value
|
|
})
|
|
.then(responseData => {
|
|
const locatorList = responseData.recordsList.map(item => {
|
|
const { values } = item
|
|
return {
|
|
label: values.Value,
|
|
value: values.M_Locator_ID,
|
|
warehouse: values.M_Warehouse_ID, // node.value
|
|
leaf: true
|
|
}
|
|
})
|
|
resolve(locatorList)
|
|
})
|
|
.catch(error => {
|
|
console.warn(`Error getting Locator List By Warehouse from server. Code: ${error.code}. Message: ${error.message}.`)
|
|
resolve()
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|