<template>
|
<div class="m-4 mr-0 overflow-hidden bg-white" >
|
<TigerTree
|
:title="t('仓库')"
|
toolbar
|
search
|
add
|
:clickRowToExpand="false"
|
:treeData="treeData"
|
:renderIcon="createIcon"
|
:fieldNames="{ key: 'id', title: 'houseName' }"
|
:beforeRightClick="getRightMenuList"
|
@select="handleSelect"
|
@addHouse="addHouse"
|
/>
|
<!-- <button :onClick="aa" style="
|
position: absolute;
|
left: 11px;
|
top: 15px;
|
font-size: 22px;
|
|
background-color: transparent;">+</button> -->
|
<WareHouseModal @register="registerWareHouse" @success="handleSuccess" />
|
<RegionModal @register="registerRegion" @success="handleSuccess" />
|
<ShelfModal @register="registerShelf" @success="handleSuccess" />
|
</div>
|
</template>
|
<script lang="ts">
|
import { defineComponent, onMounted, ref } from 'vue';
|
import { useModal } from '/@/components/Modal';
|
import { TigerTree, TreeItem, ContextMenuItem } from '/@/components/TigerTree';
|
import WareHouseModal from './WareHouseModal.vue';
|
import RegionModal from './RegionModal.vue';
|
import ShelfModal from './ShelfModal.vue';
|
import { getTreeList, DeleteWareHouse, getWHList } from '/@/api/tigerapi/wms/house';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
const { t } = useI18n('WMS.WareHouse');
|
|
export default defineComponent({
|
name: 'HouseTree',
|
components: { TigerTree, RegionModal, WareHouseModal, ShelfModal },
|
|
emits: ['select', 'success','delete'],
|
setup(_, { emit }) {
|
const treeData = ref<TreeItem[]>();
|
const [registerWareHouse, { openModal: openWareHouseModal }] = useModal();
|
const [registerRegion, { openModal: openRegionModal }] = useModal();
|
const [registerShelf, { openModal: openShelfModal }] = useModal();
|
const { createMessage } = useMessage();
|
function addHouse() {
|
openWareHouseModal(true, {
|
data: 'content',
|
info: 'Info',
|
});
|
}
|
async function fetch() {
|
treeData.value = (await getTreeList()) as unknown as TreeItem[];
|
// treeData.value.forEach(warehouse => {
|
// if(warehouse.children?.length>0){
|
// warehouse.children.forEach(regions => {
|
// if(regions.children?.length>0){
|
// regions.children.forEach(shelf => {
|
// createIcon(shelf.houseType)
|
// });
|
// }else{
|
// createIcon(regions.houseType);
|
// }
|
// });
|
// }else{
|
// createIcon(warehouse.houseType);
|
// }
|
|
// });
|
console.log(treeData.value);
|
}
|
|
function handleSelect(keys: any[]) {
|
console.log(treeData.value);
|
|
emit('select', keys[0]);
|
}
|
onMounted(() => {
|
fetch();
|
});
|
|
function handleSuccess() {
|
fetch();
|
}
|
|
async function getRightMenuList(node: any): Promise<ContextMenuItem[]> {
|
var name = node.houseType === 'Warehouse' ? t('新增储区') : t('新增货架');
|
|
if (node.houseType === 'Shelf') {
|
return [
|
{
|
label: t('删除'),
|
handler: () => {
|
console.log('点击了删除', node);
|
const apiAction = DeleteWareHouse(node);
|
apiAction.then((action) => {
|
if (action.IsSuccessed) {
|
emit('delete', 0);
|
createMessage.info(t('删除成功'));
|
fetch();
|
} else {
|
createMessage.error(node.Code + ':' + t('删除失败'));
|
}
|
});
|
},
|
icon: 'bx:bxs-folder-open',
|
},
|
];
|
} else {
|
return [
|
{
|
label: name,
|
handler: async function () {
|
console.log('点击了新增', node);
|
if (node.houseType === 'Warehouse') {
|
var org = await GetORG_CODE(node.eventKey);
|
openRegionModal(true, {
|
data: org,
|
info: node.id.slice(1),
|
});
|
} else {
|
org = await GetORG_CODE(node.eventKey);
|
openShelfModal(true, {
|
data: org,
|
info: node.id.slice(1),
|
});
|
}
|
},
|
icon: 'bi:plus',
|
},
|
{
|
label: t('删除'),
|
handler: () => {
|
console.log('点击了删除', node);
|
const apiAction = DeleteWareHouse(node);
|
apiAction.then((action) => {
|
if (action.IsSuccessed) {
|
console.log(action);
|
emit('delete', 0);
|
createMessage.info(t('删除成功'));
|
fetch();
|
} else {
|
createMessage.error(node.Code + ':' + t('删除失败'));
|
}
|
});
|
},
|
icon: 'bx:bxs-folder-open',
|
},
|
];
|
}
|
}
|
async function GetORG_CODE(params: string) {
|
var org = await getWHList(params);
|
return org[0].AUTH_ORG;
|
}
|
function createIcon({ houseType }) {
|
if (houseType === 'Warehouse') {
|
return 'warehouse|svg';
|
}
|
if (houseType === 'Region') {
|
return 'Region|svg';
|
}
|
if (houseType === 'Shelf') {
|
return 'Shelf|svg';
|
}
|
return '';
|
}
|
return {
|
t,
|
treeData,
|
handleSelect,
|
getRightMenuList,
|
addHouse,
|
registerWareHouse,
|
registerRegion,
|
registerShelf,
|
handleSuccess,
|
GetORG_CODE,
|
createIcon,
|
};
|
},
|
});
|
</script>
|