{"version":3,"file":"member-select2.mjs","sources":["../../../../../../../packages/components/member-select/src/member-select.vue"],"sourcesContent":["<template>\n  <div ref=\"memberSelectElRef\" class=\"ta-member-select\">\n    <div v-if=\"!noSelect\">\n      <template v-if=\"type == 'user'\">\n        <Select\n          ref=\"userSelectRef\"\n          v-model:value=\"selectedData[0]\"\n          show-search\n          dropdown-class-name=\"ta-member-select-option\"\n          option-filter-prop=\"label\"\n          :allow-clear=\"allowClear\"\n          :options=\"userList\"\n          :filter-option=\"filterHandle\"\n          :max-tag-count=\"maxTagCount\"\n          :max-tag-placeholder=\"maxTagPlaceholder\"\n          :disabled=\"disabled\"\n          :placeholder=\"placeholder\"\n          :mode=\"multiple ? 'multiple' : undefined\"\n          :autofocus=\"autofocus\"\n          :default-open=\"defaultOpen\"\n          :get-popup-container=\"getPopupContainer\"\n          @change=\"emitHandle\"\n          @blur=\"handleBlur\"\n        >\n          <!-- @inputKeyDown=\"preventInnerKeydownTriggerOuterKeydown\" -->\n\n          <template #tagRender=\"{ label, option }\">\n            <Tag color=\"blue\" closable @close.prevent=\"removeItem(option)\"> {{ label }}</Tag>\n          </template>\n          <template #option=\"item\">\n            <div class=\"ta-member-select-option-item\">\n              <span>\n                {{ item.label }}\n                <template v-if=\"item.status === 0\"> ({{ tavI18n('Tav.member.4') }}) </template>\n              </span>\n              <span>\n                <template v-if=\"item.userOrgs && item.userOrgs.length > 0\">\n                  <Tooltip>\n                    <template #title>\n                      <span>{{ item.userOrgs.map((v) => v.organizationName).join('、') }}</span>\n                    </template>\n                    {{ item.userOrgs[0]?.organizationName }}\n                  </Tooltip>\n                </template>\n                <template v-else> - </template>\n              </span>\n              <span :title=\"item.phone\">{{ item.phone }}</span>\n            </div>\n          </template>\n          <template #dropdownRender=\"{ menuNode: menu }\">\n            <v-nodes :vnodes=\"menu\" />\n            <div\n              v-if=\"userList.length > 0\"\n              class=\"ta-member-select-option-more\"\n              @mousedown=\"(e) => e.preventDefault()\"\n              @click=\"userShowMore\"\n            >\n              <a href=\"javascript:;\">{{ tavI18n('Tav.common.moreText') }}</a>\n            </div>\n          </template>\n        </Select>\n      </template>\n      <template v-else>\n        <TreeSelect\n          v-model:value=\"selectedData[0]\"\n          dropdown-class-name=\"ta-member-select-tree\"\n          tree-node-filter-prop=\"title\"\n          show-search\n          tree-icon\n          :tree-default-expanded-keys=\"orgExpandedKey\"\n          :allow-clear=\"allowClear\"\n          :max-tag-count=\"maxTagCount\"\n          :max-tag-placeholder=\"maxTagPlaceholder\"\n          :disabled=\"disabled\"\n          :placeholder=\"placeholder\"\n          :multiple=\"multiple\"\n          :tree-data=\"orgList\"\n          :field-names=\"orgFileds\"\n          :autofocus=\"autofocus\"\n          :default-open=\"defaultOpen\"\n          :get-popup-container=\"getPopupContainer\"\n          show-checked-strategy=\"SHOW_ALL\"\n          @change=\"emitHandle\"\n        >\n          <!-- @inputKeyDown=\"preventInnerKeydownTriggerOuterKeydown\" -->\n\n          <!-- :treeDefaultExpandedKeys=\"orgExpandedKey\" -->\n          <!-- 自己循环得递归，暂时不这样写 -->\n          <!-- <TreeSelectNode v-for=\"item in orgList\" :key=\"item.id\">\n          {{item.name}}\n        </TreeSelectNode> -->\n        </TreeSelect>\n      </template>\n    </div>\n    <BasicModal\n      :title=\"title || tavI18n('Tav.member.3')\"\n      :width=\"850\"\n      :destroy-on-close=\"true\"\n      :get-container=\"getPopupContainer\"\n      @register=\"registerMemberModal\"\n    >\n      <div style=\"min-height: 360px\">\n        <MemberModal v-if=\"modalIsShow\" :selected-data=\"selectedData\" @change=\"modalChange\" />\n      </div>\n\n      <template #footer>\n        <Button type=\"primary\" @click=\"modalSubmit\">{{ tavI18n('Tav.common.okText') }}</Button>\n        <Button @click=\"hideModal\">{{ tavI18n('Tav.common.cancelText') }}</Button>\n      </template>\n    </BasicModal>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, nextTick, provide, reactive, ref, toRefs, watch } from 'vue'\nimport { Select, Tag, Tooltip, TreeSelect } from 'ant-design-vue'\nimport { isEqual, pull } from 'lodash-es'\nimport pinyin from 'js-pinyin'\nimport Button from '@tav-ui/components/button'\nimport BasicModal from '@tav-ui/components/modal'\nimport { useModal } from '@tav-ui/components/modal/src/hooks/useModal'\nimport { useGlobalConfig } from '@tav-ui/hooks/global/useGlobalConfig'\nimport { tavI18n } from '@tav-ui/locales'\nimport { isNullOrUnDef } from '@tav-ui/utils'\nimport MemberModal from './components/member-modal.vue'\nimport { memberSelectProps } from './types'\nimport type { Ref } from 'vue'\nimport type { Options, UserItem } from './types'\nexport default defineComponent({\n  name: 'TaMemberSelect',\n  components: {\n    VNodes: (_, { attrs }) => {\n      return attrs.vnodes\n    },\n    Tooltip,\n    Tag,\n    BasicModal,\n    MemberModal,\n    Button,\n    Select,\n    TreeSelect,\n  },\n  props: memberSelectProps,\n  emits: ['change', 'update:value', 'blur'],\n  setup(props, { emit }) {\n    const memberSelectElRef = ref<HTMLDivElement>()\n    const userSelectRef = ref<any>(null)\n    const state = reactive({\n      modalIsShow: false,\n      searchValue: '',\n      selectedData: [] as any[], //组件里面选中的数据\n      catchData: [] as any[],\n      userList: [] as UserItem[],\n      orgList: [] as any, //组织树下用的数据\n      orgExpandedKey: [] as any[], //默认展开的数据\n      orgFileds: { label: 'name', value: 'id' },\n    })\n    provide(\n      'propsData',\n      computed(() => props)\n    )\n    provide(\n      'userList',\n      computed(() => state.userList)\n    )\n    provide(\n      'orgList',\n      computed(() => state.orgList)\n    )\n    const globalConfig = useGlobalConfig('components') as Ref<Record<string, any>>\n    const orgApi = globalConfig.value?.TaMemberSelect?.orgApi || props.orgApi\n    const allUserList = globalConfig.value?.TaMemberSelect?.allUserList || []\n    const userListApi = props.userListApi || globalConfig.value?.TaMemberSelect?.userListApi\n    const [registerMemberModal, { openModal: openMemberModal, closeModal: closeMemberModal }] =\n      useModal()\n    const showModal = () => {\n      // 如果是用户选择器，打开弹窗时候 也请求下组织列表，可以根据组织选择用户\n      if (props.type == 'user') {\n        getUserList()\n        if (!props.noOrg) {\n          getOrgList()\n        }\n      }\n      if (props.type == 'org') {\n        getOrgList()\n      }\n      if (userSelectRef.value) {\n        userSelectRef.value.blur()\n      }\n      // 某些情况下直接拉起弹窗，那么就需要重置下数据和请求用户列表\n      setBaseData()\n      //  延迟出现，防止互相覆盖\n      openMemberModal()\n      state.modalIsShow = true\n    }\n    const hideModal = () => {\n      state.modalIsShow = false\n      nextTick(() => {\n        closeMemberModal()\n      })\n    }\n\n    // 这块是用户基础数据，更多选项里面也有用\n    const getTrueUserList = (userList = [] as UserItem[]) => {\n      // 非ignoreUser的用户才能选择\n      const list: Options[] = userList\n        .filter((v) => !props.ignoreUser.includes(v.id))\n        .map((v) => {\n          const fullCharts = pinyin.getFullChars(v.name).toLowerCase()\n          const obj = { ...v, label: v.name, value: v.id, fullCharts }\n          if (!Reflect.has(obj, 'disabled')) {\n            obj.disabled = props.useDisabledUser ? false : obj.status === 0\n          }\n          return obj\n        })\n        .sort((a) => {\n          if (isNullOrUnDef(a.status)) {\n            return -1\n          } else {\n            return a.status === 1 ? -1 : 1\n          }\n        })\n      return list\n    }\n    // 获取用户数据\n    const getUserList = async () => {\n      if (Array.isArray(props.options)) {\n        // 将其处理成 人员的数据格式\n        // let data = JSON.parse(JSON.stringify(props.options));\n        state.userList = getTrueUserList(props.options)\n      } else {\n        userListApi(props.userListParams).then((res: any) => {\n          state.userList = getTrueUserList(res.data)\n        })\n      }\n      checkUserIsExist()\n    }\n    // 获取组织数据\n    const getOrgList = (): void => {\n      orgApi({}).then((res: any) => {\n        state.orgList = res.data\n      })\n    }\n    // 弹窗里面的数据变化\n    const modalChange = (value: any[]) => {\n      state.catchData = value\n    }\n    // 弹窗下面的确定事件\n    const modalSubmit = (): void => {\n      const data = state.catchData\n      const submit = () => {\n        // 多选第一位为数组，单选第一位为字符串\n        state.selectedData[0] = data\n        emitHandle()\n        hideModal()\n      }\n      if (props.modalSubmit) {\n        props.modalSubmit(data, submit)\n      } else {\n        submit()\n      }\n    }\n    const emitHandle = (): void => {\n      const userMap = allUserList.filter((v: UserItem) => {\n        if (props.multiple) {\n          return state.selectedData[0].includes(v.id)\n        } else {\n          return state.selectedData[0] == v.id\n        }\n      })\n      emit('update:value', state.selectedData[0])\n      emit('change', state.selectedData[0], userMap)\n    }\n\n    const handleBlur = () => {\n      emit('blur', state.selectedData[0])\n    }\n\n    // 将传入的value保存为组件使用的数据\n    const setBaseData = (): void => {\n      if (props.multiple) {\n        if (!Array.isArray(props.value)) {\n          console.warn('多选默认值请传入数组')\n          state.selectedData = [[]]\n        } else {\n          state.selectedData = [[...props.value]]\n          checkUserIsExist()\n        }\n      } else {\n        state.selectedData = props.value ? [props.value] : [null]\n        checkUserIsExist()\n      }\n    }\n    // 检查用户在当前的用户列表中是否存在，不存在就去全部用户列表中匹配，匹配到后塞到现有用户列表中去\n    const checkUserIsExist = () => {\n      if (props.multiple) {\n        state.selectedData[0].forEach((userId: string) => {\n          getUserItem(userId)\n        })\n      } else {\n        getUserItem(state.selectedData[0])\n      }\n      function getUserItem(userId: string) {\n        // 如果当前用户列表中查不到该用户就在所用用户中去匹配，匹配到后插入当当前用户列表中\n        if (!state.userList.some((v) => v.id == userId)) {\n          const item = allUserList.find((v: UserItem) => v.id === userId)\n          if (item) {\n            state.userList.push(item)\n          }\n        }\n      }\n    }\n    const filterHandle = (keyword: string, user: UserItem) => {\n      if (!keyword) {\n        return true\n      } else {\n        return (\n          user.fullCharts.indexOf(keyword) > -1 ||\n          user.name.indexOf(keyword) > -1 ||\n          user.userOrgs[0]?.organizationName.indexOf(keyword) > -1\n        )\n      }\n    }\n    // 下拉列表中的查看更多点击事件\n    const userShowMore = () => {\n      setTimeout(() => {\n        showModal()\n      }, 200)\n    }\n    const orgVisibleChange = () => {\n      // console.log(v);\n    }\n    const removeItem = (item: UserItem) => {\n      pull(state.selectedData[0], item.id)\n      emitHandle()\n    }\n\n    watch(\n      () => state.orgList,\n      (newData) => {\n        if (props.multiple) {\n          state.orgExpandedKey =\n            state.selectedData[0].length > 0 ? state.selectedData[0] : [newData[0].id]\n        } else {\n          state.orgExpandedKey = state.selectedData[0] ? state.selectedData : [newData[0].id]\n        }\n      },\n      {\n        deep: true,\n      }\n    )\n    watch(\n      () => props.ignoreUser,\n      (a, b) => {\n        if (!isEqual(a, b)) {\n          getUserList()\n        }\n      }\n    )\n    watch(\n      () => props.options,\n      (data) => {\n        if (data) {\n          getUserList()\n        }\n      },\n      {\n        deep: true,\n      }\n    )\n    watch(\n      () => props.value,\n      () => {\n        // 组件绑定的是 selectedData第一位\n        setBaseData()\n      }\n    )\n    // 页面初始化\n    const pageInit = (): void => {\n      setBaseData()\n      if (props.type == 'user') {\n        // 如果默认不显示select就不请求用户\n        if (props.noSelect) {\n          return\n        }\n        getUserList()\n      } else {\n        getOrgList()\n      }\n    }\n    pageInit()\n\n    /**\n     * 劫持组件内部的回车事件，暂时不用。勿删\n     * @param event\n     */\n    // function preventInnerKeydownTriggerOuterKeydown(event: KeyboardEvent) {\n    //   event.stopPropagation()\n    //   const evt = new Event('keydown')\n    //   memberSelectElRef.value?.dispatchEvent(evt)\n    // }\n\n    return {\n      ...toRefs(state),\n      memberSelectElRef,\n      userSelectRef,\n      removeItem,\n      filterHandle,\n      tavI18n,\n      userShowMore,\n      orgVisibleChange,\n      showModal,\n      hideModal,\n      modalChange,\n      modalSubmit,\n      emitHandle,\n      handleBlur,\n      registerMemberModal,\n      // preventInnerKeydownTriggerOuterKeydown,\n    }\n  },\n})\n</script>\n"],"names":["BasicModal","Button","_createTextVNode","_resolveComponent","_openBlock","_createElementBlock","_createBlock","_createVNode","_withModifiers","_withCtx","_toDisplayString","_createElementVNode","_Fragment","_createCommentVNode"],"mappings":"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"}