refactor:(04) use TreeCompoent
This commit is contained in:
parent
b538356751
commit
ac171b1379
2 changed files with 117 additions and 12 deletions
|
|
@ -1,15 +1,8 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { BranchWithChildren } from 'stores/branch/types';
|
import { BranchWithChildren } from 'stores/branch/types';
|
||||||
const nodes = defineModel<
|
const nodes = defineModel<(any | BranchWithChildren)[]>('nodes', {
|
||||||
(
|
default: [],
|
||||||
| {
|
});
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
children: [];
|
|
||||||
}
|
|
||||||
| BranchWithChildren
|
|
||||||
)[]
|
|
||||||
>('nodes', { default: [] });
|
|
||||||
|
|
||||||
const expandedTree = defineModel<string[]>('expandedTree', { default: [] });
|
const expandedTree = defineModel<string[]>('expandedTree', { default: [] });
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import FormServiceProperties from 'components/04_product-service/FormServiceProp
|
||||||
import InfoForm from 'components/02_personnel-management/InfoForm.vue';
|
import InfoForm from 'components/02_personnel-management/InfoForm.vue';
|
||||||
import NoData from 'components/NoData.vue';
|
import NoData from 'components/NoData.vue';
|
||||||
import PaginationComponent from 'src/components/PaginationComponent.vue';
|
import PaginationComponent from 'src/components/PaginationComponent.vue';
|
||||||
|
import TreeCompoent from 'src/components/TreeCompoent.vue';
|
||||||
|
|
||||||
import useFlowStore from 'src/stores/flow';
|
import useFlowStore from 'src/stores/flow';
|
||||||
import useMyBranchStore from 'src/stores/my-branch';
|
import useMyBranchStore from 'src/stores/my-branch';
|
||||||
|
|
@ -1476,7 +1477,118 @@ watch(
|
||||||
|
|
||||||
<div class="col full-width scroll">
|
<div class="col full-width scroll">
|
||||||
<div class="q-pa-md">
|
<div class="q-pa-md">
|
||||||
<q-tree
|
<TreeCompoent
|
||||||
|
:nodes="treeProductTypeAndGroup"
|
||||||
|
v-model:expanded-tree="expandedTree"
|
||||||
|
node-key="id"
|
||||||
|
label-key="name"
|
||||||
|
children-key="children"
|
||||||
|
type-tree="product"
|
||||||
|
@select="
|
||||||
|
async (v) => {
|
||||||
|
if (v.type === 'group') {
|
||||||
|
if (currentIdGrop !== v.id) {
|
||||||
|
filterStat.push('group');
|
||||||
|
await enterGroup(v.id, v.name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentIdGrop === v.id) {
|
||||||
|
expandedTree = [];
|
||||||
|
filterStat = [];
|
||||||
|
expandedTree = expandedTree.filter((i) => v.id !== i);
|
||||||
|
currentIdGrop = '';
|
||||||
|
currentIdType = '';
|
||||||
|
productMode = 'group';
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (v.type === 'type') {
|
||||||
|
if (currentIdType !== v.id) {
|
||||||
|
filterStat.push('group', 'type');
|
||||||
|
await enterType(v.id, v.name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (currentIdType === v.id) {
|
||||||
|
filterStat = filterStat.filter((item) => {
|
||||||
|
return item !== 'type';
|
||||||
|
});
|
||||||
|
currentIdType = '';
|
||||||
|
productMode = 'type';
|
||||||
|
expandedTree.pop();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"
|
||||||
|
@view="
|
||||||
|
(v) => {
|
||||||
|
if (v.type === 'type') {
|
||||||
|
editByTree = 'type';
|
||||||
|
currentStatusProduct = v.status === 'INACTIVE';
|
||||||
|
clearFormGroup();
|
||||||
|
currentIdType = v.id;
|
||||||
|
assignFormDataGroup(v);
|
||||||
|
isEdit = false;
|
||||||
|
drawerInfo = true;
|
||||||
|
}
|
||||||
|
if (v.type === 'group') {
|
||||||
|
editByTree = 'group';
|
||||||
|
currentStatusProduct = v.status === 'INACTIVE';
|
||||||
|
clearFormGroup();
|
||||||
|
assignFormDataGroup(v);
|
||||||
|
isEdit = false;
|
||||||
|
currentIdGrop = v.id;
|
||||||
|
drawerInfo = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"
|
||||||
|
@edit="
|
||||||
|
(v) => {
|
||||||
|
editByTree = v.type;
|
||||||
|
if (v.type === 'type') {
|
||||||
|
clearFormGroup();
|
||||||
|
currentIdType = v.id;
|
||||||
|
assignFormDataGroup(v);
|
||||||
|
isEdit = true;
|
||||||
|
drawerInfo = true;
|
||||||
|
}
|
||||||
|
if (v.type === 'group') {
|
||||||
|
clearFormGroup();
|
||||||
|
assignFormDataGroup(v);
|
||||||
|
isEdit = true;
|
||||||
|
currentIdGrop = v.id;
|
||||||
|
|
||||||
|
drawerInfo = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"
|
||||||
|
@delete="
|
||||||
|
(v) => {
|
||||||
|
editByTree = v.type;
|
||||||
|
|
||||||
|
if (v.type === 'type') {
|
||||||
|
deleteProductById(v.id);
|
||||||
|
}
|
||||||
|
if (v.type === 'group') {
|
||||||
|
deleteProductById(v.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"
|
||||||
|
@change-status="
|
||||||
|
async (v) => {
|
||||||
|
if (v.type === 'type') {
|
||||||
|
triggerChangeStatus(v.id, v.status, v.type);
|
||||||
|
}
|
||||||
|
if (v.type === 'group') {
|
||||||
|
triggerChangeStatus(v.id, v.status, v.type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- <q-tree
|
||||||
:nodes="treeProductTypeAndGroup"
|
:nodes="treeProductTypeAndGroup"
|
||||||
color="transparent"
|
color="transparent"
|
||||||
node-key="id"
|
node-key="id"
|
||||||
|
|
@ -1781,7 +1893,7 @@ watch(
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</q-tree>
|
</q-tree> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue