Ben Lin
2024-11-07 7c99be35803568d4743a8d134b0479bbf6f281fd
src/views/tigerprojects/system/role/RoleDrawer.vue
@@ -33,6 +33,19 @@
          title="组织分配"
        />
      </template>
      <template #fty="{ model, field }">
        <BasicTree
          v-model:value="model[field]"
          :treeData="treeDataProd"
          :renderIcon="createIconOrg"
          :fieldNames="{ title: 'NAME', key: 'ID' }"
          @gethalfCheckedKeys="gethalfCheckedKeysFty"
          :expanded-keys="expandedKeysFty"
          checkable
          toolbar
          title="工厂分配"
        />
      </template>
      <template #wh="{ model, field }">
        <BasicTree
          v-model:value="model[field]"
@@ -56,21 +69,34 @@
  import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
  import { BasicTree, TreeItem } from '/@/components/Tree';
  import { getMenuList, SaveRole, getRMList, getROList, getWhList } from '/@/api/tigerapi/system';
  import { getTreeList } from '/@/api/tigerapi/dept';
  import {
    getMenuList,
    SaveRole,
    getRMList,
    getROList,
    getWhList,
    getProdList,
    getEntity,
    convertToTree,
  } from '/@/api/tigerapi/system';
  import { getProdTreeList, getTreeList } from '/@/api/tigerapi/dept';
  import { getTreeList as getTreeListWh } from '/@/api/tigerapi/wms/house';
  type CheckKeys = KeyType[] | { checked: string[] | number[]; halfChecked: string[] | number[] };
  type _expandAll = KeyType[] | undefined;
  const emits = defineEmits(['success', 'register']);
  const isUpdate = ref(true);
  const treeData = ref<TreeItem[]>([]);
  const treeDataOrg = ref<TreeItem[]>([]);
  const treeDataProd = ref<TreeItem[]>([]);
  const treeDataWh = ref<TreeItem[]>([]);
  const expandedKeys = ref<_expandAll>([]);
  const expandedKeysOrg = ref<_expandAll>([]);
  const expandedKeysFty = ref<_expandAll>([]);
  const expandedKeysWh = ref<_expandAll>([]);
  const halfCheckedKeys = ref<CheckKeys>([]);
  const halfCheckedKeysOrg = ref<CheckKeys>([]);
  const halfCheckedKeysFty = ref<CheckKeys>([]);
  const halfCheckedKeysWh = ref<CheckKeys>([]);
  const gethalfCheckedKeys = (obj) => {
    halfCheckedKeys.value = obj;
@@ -78,6 +104,10 @@
  };
  const gethalfCheckedKeysOrg = (obj) => {
    halfCheckedKeysOrg.value = obj;
    console.log(obj);
  };
  const gethalfCheckedKeysFty = (obj) => {
    halfCheckedKeysFty.value = obj;
    console.log(obj);
  };
  const gethalfCheckedKeysWh = (obj) => {
@@ -96,10 +126,15 @@
    setDrawerProps({ confirmLoading: false });
    // 需要在setFieldsValue之前先填充treeData,否则Tree组件可能会报key not exist警告
    if (unref(treeData).length === 0) {
      treeData.value = (await getMenuList()) as any as TreeItem[];
      treeData.value = (await getMenuList({menuName: 'SYSTEM'})) as any as TreeItem[];
    }
    if (unref(treeDataOrg).length === 0) {
      treeDataOrg.value = (await getTreeList()) as any as TreeItem[];
    }
    if (unref(treeDataProd).length === 0) {
      // treeDataProd.value = (await getProdTreeList()) as any as TreeItem[];
      let prodTreeData = await getEntity({sqlcmd: '', entityName: 'V_PROD_TREE', order: ''});
      treeDataProd.value = convertToTree(prodTreeData.Data.Items,'PARENT_CODE', 'CODE', '');
    }
    if (unref(treeDataWh).length === 0) {
      treeDataWh.value = (await getTreeListWh()) as any as TreeItem[];
@@ -121,18 +156,24 @@
      }
      //console.log(list,11);
      data.record.menu = list2;
      halfCheckedKeys.value = list;
      expandedKeys.value = list;
      await getRuleOrg(data);
      await getRuleWh(data);
      await getRuleProd(data);
      setFieldsValue({
        ...data.record,
      });
    }
  });
  //获取角色对应的组织
  /**
   * @description: 获取角色对应的组织
   * @param {*} data
   * @return {*}
   */
  async function getRuleOrg(data) {
    const orgList = await getROList(data.record.ID);
    const orgList = await getROList(data.record.ID);
    var hfList = [];
    var list = [];
    for (var key in orgList) {
@@ -145,12 +186,17 @@
      }
    }
    data.record.org = hfList;
    halfCheckedKeysOrg.value = list;
    expandedKeysOrg.value = list;
  }
  //获取角色对应的仓库
  /**
   * @description: 获取角色对应的仓库
   * @param {*} data
   * @return {*}
   */
  async function getRuleWh(data) {
    const whList = await getWhList(data.record.ID);
    const whList = await getWhList(data.record.ID);
    var hfList = [];
    var list = [];
    for (var key in whList) {
@@ -163,7 +209,31 @@
      }
    }
    data.record.wh = hfList;
    halfCheckedKeysWh.value = list;
    expandedKeysWh.value = list;
  }
  /**
   * @description: 获取角色对应的生产
   * @param {*} data
   * @return {*}
   */
  async function getRuleProd(data) {
    const prodList = await getProdList(data.record.ID);
    var hfList = [];
    var list = [];
    for (var key in prodList) {
      if (prodList[key].HALF_CHECK == 'N') {
        var item2 = prodList[key].PROD_CODE as never;
        hfList.push(item2);
      } else {
        var item = prodList[key].PROD_CODE as never;
        list.push(item);
      }
    }
    data.record.fty = hfList;
    halfCheckedKeysFty.value = list;
    expandedKeysFty.value = list;
  }
  const getTitle = computed(() => (!unref(isUpdate) ? '新增角色' : '编辑角色'));
@@ -176,6 +246,8 @@
      values.menu = { checked: values.menu, halfChecked: currentValue };
      let curOrgValue = halfCheckedKeysOrg.value as [];
      values.org = { checked: values.org, halfChecked: curOrgValue };
      let curFtyValue = halfCheckedKeysFty.value as [];
      values.fty = { checked: values.fty, halfChecked: curFtyValue };
      let curWhValue = halfCheckedKeysWh.value as [];
      values.wh = { checked: values.wh, halfChecked: curWhValue };
      // TODO custom api