{"version":3,"file":"MemberSearchPicker.mjs","sources":["../../../../src/comDefault/MemberSearchPicker/MemberSearchPicker.vue"],"sourcesContent":["<template>\r\n  <div class=\"UserSearchPicker\">\r\n    <a-select\r\n        labelInValue\r\n        show-search\r\n        defaultActiveFirstOption\r\n        allowClear\r\n        :filter-option=\"false\"\r\n        dropdownClassName=\"UserSearchPickerDropDown\"\r\n        v-model:value=\"value\"\r\n        :mode=\"mode\"\r\n        style=\"width: 100%\"\r\n        placeholder=\"姓名/工号/全拼\"\r\n        :max-tag-count=\"2\"\r\n        :options=\"options\"\r\n        @search=\"fetchUser\"\r\n        @change=\"onChange\"\r\n    >\r\n      <template #option=\"option\">\r\n        <div class=\"selectOption\">\r\n          <span class=\"name\">{{ option.name }}</span>\r\n          <span class=\"empNo\">{{ option.empNo }}</span>\r\n          <span class=\"org\">{{ option.orgName }}</span>\r\n        </div>\r\n      </template>\r\n    </a-select>\r\n  </div>\r\n</template>\r\n<script setup name=\"MemberSearchPicker\">\r\nimport { watch } from 'vue'\r\nimport userApi from '@/api/sys/userApi'\r\nimport { debounce } from 'lodash-es'\r\n\r\nconst props = defineProps({\r\n  //'multiple' | 'tags' | 'combobox'\r\n  mode: {\r\n    type: String,\r\n    default: 'combobox'\r\n  },\r\n  modelValue: {\r\n    type: [Array, String, Number],\r\n    required: false\r\n  }\r\n})\r\n\r\nconst emit = defineEmits(['ids', 'members', 'update:modelValue'])\r\nconst options = ref([])\r\nconst value = ref(undefined)\r\n\r\nconst pageConfig = ref({\r\n  current: 1,\r\n  size: 15,\r\n  end: false\r\n})\r\nconst fetchUser = debounce((str) => {\r\n  userApi\r\n      .userPage({\r\n        current: pageConfig.value.current,\r\n        size: pageConfig.value.size,\r\n        searchKey: str\r\n      })\r\n      .then((res) => {\r\n        options.value = res.records.map((r) => {\r\n          r.value = r.id\r\n          r.label = r.name\r\n          return r\r\n        })\r\n      })\r\n})\r\n\r\nonMounted(() => {\r\n  fetchUser()\r\n})\r\n\r\n/**\r\n * 初始数据\r\n * @param {*} value\r\n */\r\nconst initData = (newVal) => {\r\n  if(newVal) {\r\n    if(newVal != value.value) {\r\n      value.value = newVal\r\n    }\r\n  } else {\r\n    value.value = null\r\n  }\r\n}\r\n\r\n/**\r\n * 监听值变化\r\n */\r\nwatch(\r\n    () => props.modelValue,\r\n    (newVal) => {\r\n      initData(newVal)\r\n    }\r\n)\r\n\r\nconst onChange = (val) => {\r\n  if (val) {\r\n    if (Array.isArray(val)) {\r\n      emit(\r\n          'update:modelValue',\r\n          val.map((res) => {\r\n            return res.value\r\n          })\r\n      )\r\n      emit(\r\n          'ids',\r\n          val.map((res) => {\r\n            return res.value\r\n          })\r\n      )\r\n      emit(\r\n          'members',\r\n          val.map((res) => {\r\n            return res.option\r\n          })\r\n      )\r\n    } else {\r\n      emit('update:modelValue', val.value)\r\n      emit('ids', [val.value])\r\n      emit('members', [val.option])\r\n    }\r\n  } else {\r\n    emit('ids', undefined)\r\n    emit('members', undefined)\r\n  }\r\n}\r\n</script>\r\n<style lang=\"less\">\r\n.UserSearchPickerDropDown {\r\n  .selectOption {\r\n    width: 100%;\r\n\r\n    display: flex;\r\n    align-items: center;\r\n\r\n    .name {\r\n      font-weight: bold;\r\n      font-size: 14px;\r\n      margin-right: 12px;\r\n      flex: 0 0 50px;\r\n      overflow: hidden;\r\n      word-break: break-all;\r\n      text-overflow: ellipsis;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .empNo {\r\n      font-size: 12px;\r\n      margin-right: 12px;\r\n      flex: 0 0 50px;\r\n    }\r\n\r\n    .org {\r\n      font-size: 12px;\r\n      margin-right: 12px;\r\n      color: #8a8f97;\r\n      flex: 0 1 100%;\r\n      overflow: hidden;\r\n      word-break: break-all;\r\n      text-overflow: ellipsis;\r\n      white-space: nowrap;\r\n    }\r\n  }\r\n}\r\n</style>\r\n"],"names":["_openBlock","_createElementBlock","_createVNode","_unref","_withCtx","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAiCA,UAAM,QAAQ;AAYd,UAAM,OAAO;AACb,UAAM,UAAU,IAAI,EAAE;AACtB,UAAM,QAAQ,IAAI,MAAS;AAE3B,UAAM,aAAa,IAAI;AAAA,MACrB,SAAS;AAAA,MACT,MAAM;AAAA,MACN,KAAK;AAAA,IACP,CAAC;AACD,UAAM,YAAY,SAAS,CAAC,QAAQ;AAClC,cACK,SAAS;AAAA,QACR,SAAS,WAAW,MAAM;AAAA,QAC1B,MAAM,WAAW,MAAM;AAAA,QACvB,WAAW;AAAA,MACnB,CAAO,EACA,KAAK,CAAC,QAAQ;AACb,gBAAQ,QAAQ,IAAI,QAAQ,IAAI,CAAC,MAAM;AACrC,YAAE,QAAQ,EAAE;AACZ,YAAE,QAAQ,EAAE;AACZ,iBAAO;AAAA,QACjB,CAAS;AAAA,MACT,CAAO;AAAA,IACP,CAAC;AAED,cAAU,MAAM;AACd,gBAAW;AAAA,IACb,CAAC;AAMD,UAAM,WAAW,CAAC,WAAW;AAC3B,UAAG,QAAQ;AACT,YAAG,UAAU,MAAM,OAAO;AACxB,gBAAM,QAAQ;AAAA,QACf;AAAA,MACL,OAAS;AACL,cAAM,QAAQ;AAAA,MACf;AAAA,IACH;AAKA;AAAA,MACI,MAAM,MAAM;AAAA,MACZ,CAAC,WAAW;AACV,iBAAS,MAAM;AAAA,MAChB;AAAA,IACL;AAEA,UAAM,WAAW,CAAC,QAAQ;AACxB,UAAI,KAAK;AACP,YAAI,MAAM,QAAQ,GAAG,GAAG;AACtB;AAAA,YACI;AAAA,YACA,IAAI,IAAI,CAAC,QAAQ;AACf,qBAAO,IAAI;AAAA,YACvB,CAAW;AAAA,UACJ;AACD;AAAA,YACI;AAAA,YACA,IAAI,IAAI,CAAC,QAAQ;AACf,qBAAO,IAAI;AAAA,YACvB,CAAW;AAAA,UACJ;AACD;AAAA,YACI;AAAA,YACA,IAAI,IAAI,CAAC,QAAQ;AACf,qBAAO,IAAI;AAAA,YACvB,CAAW;AAAA,UACJ;AAAA,QACP,OAAW;AACL,eAAK,qBAAqB,IAAI,KAAK;AACnC,eAAK,OAAO,CAAC,IAAI,KAAK,CAAC;AACvB,eAAK,WAAW,CAAC,IAAI,MAAM,CAAC;AAAA,QAC7B;AAAA,MACL,OAAS;AACL,aAAK,OAAO,MAAS;AACrB,aAAK,WAAW,MAAS;AAAA,MAC1B;AAAA,IACH;;;AA/HE,aAAAA,UAAA,GAAAC,mBAyBM,OAzBN,YAyBM;AAAA,QAxBJC,YAuBW,qBAAA;AAAA,UAtBP,cAAA;AAAA,UACA,eAAA;AAAA,UACA,0BAAA;AAAA,UACA,YAAA;AAAA,UACC,iBAAe;AAAA,UAChB,mBAAkB;AAAA,UACV,OAAOC,MAAK,KAAA;AAAA,iFAAL,MAAK,QAAA,SAAA;AAAA,UACnB,MAAM,QAAI;AAAA,UACX,OAAA,EAAmB,SAAA,OAAA;AAAA,UACnB,aAAY;AAAA,UACX,iBAAe;AAAA,UACf,SAASA,MAAO,OAAA;AAAA,UAChB,UAAQA,MAAS,SAAA;AAAA,UACjB;AAAA;UAEQ,QAAMC,QACf,CAIM,WALiB;AAAA,YACvBC,mBAIM,OAJN,YAIM;AAAA,cAHJA,mBAA2C,QAA3C,YAAsBC,gBAAA,OAAO,IAAI,GAAA,CAAA;AAAA,cACjCD,mBAA6C,QAA7C,YAAuBC,gBAAA,OAAO,KAAK,GAAA,CAAA;AAAA,cACnCD,mBAA6C,QAA7C,YAAqBC,gBAAA,OAAO,OAAO,GAAA,CAAA;AAAA;;;;;;;;;"}