forked from gzzfw/frontEnd/gzDyh

xusd
2024-09-08 5424fb6cc7c907ec12025e96bb41146b28e5582c
gz-customerSystem/src/components/SelectObjModal/selectPerson.jsx
@@ -18,7 +18,20 @@
// 获取人员,组织,部门数据
function getDataApi(type, searchData) {
   const url = type === 'person' ? 'ctUser/userChoose' : type === 'unit' ? 'ctUser/unitList' : 'ctUser/deptList';
   let url
   switch (type) {
      case 'dept':
         url = `ctUnit/unitChoose`
         break;
      case 'person':
         url = 'ctUser/userChoose'
         break
      case 'unit':
         url = 'ctUser/unitList'
         break
      default:
         break;
   }
   return $$.ax.request({ url, type: 'get', data: searchData, service: 'cust' });
}
@@ -31,36 +44,37 @@
 * onClose, // 关闭
 * onOk, // 点击确定的回调
 */
const SelectObjModal = ({ visible = false, checkKeys = [], type = 'person', isCheckbox = false, searchData = {}, onClose, onOk, }) => {
const SelectObjModal = ({ visible = false, checkKeys = [], type = 'dept', isCheckbox = false, searchData = {}, onClose, onOk, }) => {
   const nameStr = type === 'person' ? '人员' : type === 'unit' ? '组织' : '部门';
   // 默认调解员查询'22_00024-4'
   const searchRole = type === 'person' ? { roleCode: '22_00024-4' } : {};
   const [data, setData] = useState([]);
   const [checkedKeys, setCheckedKeys] = useState({ keys: [], items: [] });
   const [expandedKeys, setExpandedKeys] = useState([]);
   const [searchValue, setSearchValue] = useState('');
   const [autoExpandParent, setAutoExpandParent] = useState(true);
   const [dataList, setDataList] = useState([]);
   // tree复选框选择
   function handleCheck(checkedKeys, e) {
      if (!isCheckbox && checkedKeys.checked.length > 1) {
         $$.info({ type: 'warning', content: '当前选择只可单选' });
         return;
   useEffect(() => {
      if (!visible) return;
      // 获取数据
      async function getData() {
         // global.setSpinning(true);
         const res = await getDataApi(type, { ...searchRole, ...searchData });
         // global.setSpinning(false);
         if (res.type) {
            setData(res.data || []);
      }
      let checkedNodes = e.checkedNodes;
      checkedNodes.forEach((x) => delete x.children);
      setCheckedKeys({ keys: checkedKeys.checked, items: checkedNodes });
   }
   // 删除选项
   function handleDelete(t) {
      checkedKeys.keys.splice(t, 1);
      checkedKeys.items.splice(t, 1);
      setCheckedKeys({ ...checkedKeys });
      if (checkKeys.length !== 0) {
         let keys = [];
         checkKeys.forEach((x) => keys.push(x.value));
         setCheckedKeys({ keys, items: checkKeys });
      } else {
         setCheckedKeys({ keys: [], items: [] });
   }
      getData();
   }, [type, visible]);
   // 搜索
   useEffect(() => {
@@ -80,35 +94,6 @@
      setDataList(arr);
      handleSearch('', arr);
   }, [data]);
   const getParentKey = (key, tree) => {
      let parentKey;
      for (let i = 0; i < tree.length; i++) {
         const node = tree[i];
         if (node.children) {
            if (node.children.some((item) => item.value === key)) {
               parentKey = node.value;
            } else if (getParentKey(key, node.children)) {
               parentKey = getParentKey(key, node.children);
            }
         }
      }
      return parentKey;
   };
   function handleSearch(value, dataList) {
      const newExpandedKeys = dataList
         .map((item) => {
            if (item.label.indexOf(value) > -1) {
               return getParentKey(item.value, data);
            }
            return null;
         })
         .filter((item, i, self) => item && self.indexOf(item) === i);
      setExpandedKeys(newExpandedKeys);
      setSearchValue(value);
      setAutoExpandParent(true);
   }
   const treeData = useMemo(() => {
      const loop = (data) =>
@@ -146,32 +131,52 @@
      return loop(data);
   }, [searchValue, data]);
   // 默认调解员查询'22_00024-4'
   const searchRole = type === 'person' ? { roleCode: '22_00024-4' } : {};
   // tree复选框选择
   function handleCheck(checkedKeys, e) {
      if (!isCheckbox && checkedKeys.checked.length > 1) {
         $$.info({ type: 'warning', content: '当前选择只可单选' });
         return;
      }
      let checkedNodes = e.checkedNodes;
      checkedNodes.forEach((x) => delete x.children);
      setCheckedKeys({ keys: checkedKeys.checked, items: checkedNodes });
   }
   console.log(checkedKeys.keys,'checkedKeys.keyscheckedKeys.keys')
   useEffect(() => {
      if (!visible) return;
      // 获取数据
      async function getData() {
         global.setSpinning(true);
         const res = await getDataApi(type, { ...searchRole, ...searchData });
         global.setSpinning(false);
         if (res.type) {
            setData(res.data || []);
   // 删除选项
   function handleDelete(t) {
      checkedKeys.keys.splice(t, 1);
      checkedKeys.items.splice(t, 1);
      setCheckedKeys({ ...checkedKeys });
         }
      }
      if (checkKeys.length !== 0) {
         let keys = [];
         checkKeys.forEach((x) => keys.push(x.value));
         setCheckedKeys({ keys, items: checkKeys });
      } else {
         setCheckedKeys({ keys: [], items: [] });
      }
      getData();
   }, [type, visible]);
   const nameStr = type === 'person' ? '人员' : type === 'unit' ? '组织' : '部门';
   const getParentKey = (key, tree) => {
      let parentKey;
      for (let i = 0; i < tree.length; i++) {
         const node = tree[i];
         if (node.children) {
            if (node.children.some((item) => item.value === key)) {
               parentKey = node.value;
            } else if (getParentKey(key, node.children)) {
               parentKey = getParentKey(key, node.children);
            }
         }
      }
      return parentKey;
   };
   function handleSearch(value, dataList) {
      const newExpandedKeys = dataList
         .map((item) => {
            if (item.label.indexOf(value) > -1) {
               return getParentKey(item.value, data);
            }
            return null;
         })
         .filter((item, i, self) => item && self.indexOf(item) === i);
      setExpandedKeys(newExpandedKeys);
      setSearchValue(value);
      setAutoExpandParent(true);
   }
   return (
      <Modal