{"version":3,"file":"GUser.mjs","sources":["../../../../src/comDefault/GUser/GUser.vue"],"sourcesContent":["<template>\r\n\t<span>\r\n\t\t<span v-if=\"props.type == 'select'\">\r\n\t\t\t<a-select\r\n          ref=\"userselect\"\r\n          :mode=\"props.mode\"\r\n          allowClear\r\n          size=\"default\"\r\n          :open=\"false\"\r\n          :style=\"{ width: props.showButton ? '90%' : '100%' }\"\r\n          v-model:value=\"currentValue\"\r\n          @click=\"showUserPlusModal\"\r\n      >\r\n\t\t\t\t<a-select-option v-for=\"item in selectedList\" :value=\"item.userId\" :key=\"item.userId\">\r\n\t\t\t\t\t{{ item.nickname }}\r\n\t\t\t\t</a-select-option>\r\n\t\t\t</a-select>\r\n\t\t\t<a-button v-if=\"props.showButton\" @click=\"showUserPlusModal\" :style=\"{ width: props.showButton ? '10%' : '0%' }\">\r\n\t\t\t\t<template #icon>\r\n\t\t\t\t\t<select-outlined />\r\n\t\t\t\t</template>\r\n\t\t\t\t<span>选择</span>\r\n\t\t\t</a-button>\r\n\t\t</span>\r\n\t\t<div v-else class=\"add-user-wrapper\">\r\n\t\t\t<div class=\"add-user-icon\">\r\n\t\t\t\t<a-button shape=\"round\" @click=\"showUserPlusModal\">\r\n\t\t\t\t\t<template #icon>\r\n\t\t\t\t\t\t<plus-outlined />\r\n\t\t\t\t\t</template>\r\n\t\t\t\t</a-button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"add-user-item\" v-for=\"item in selectedList\" :key=\"item.id\">\r\n\t\t\t\t<a-avatar size=\"small\">\r\n\t\t\t\t\t<template #icon><UserOutlined /></template>\r\n\t\t\t\t</a-avatar>\r\n\t\t\t\t<div>{{ item.name }}</div>\r\n\t\t\t\t<close-outlined @click=\"removeSelectedItem(item)\" />\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<user-selector-plus\r\n        ref=\"userselectorPlus\"\r\n        page-url=\"/sys/user/page\"\r\n        org-url=\"/sys/org/tree\"\r\n        :max=\"max\"\r\n        :min=\"min\"\r\n        @onBack=\"callBack\"\r\n    />\r\n\t</span>\r\n</template>\r\n<script setup name=\"GUser\">\r\nimport {onMounted, ref, watch} from 'vue'\r\nimport {remove} from 'lodash-es'\r\nimport userSelectorPlusApi from '@/api/components/Selector/userSelectorPlusApi'\r\n// 接收属性\r\nconst props = defineProps({\r\n  mode: { type: String, default: 'default' },\r\n  type: { type: String, default: 'select' },\r\n  showButton: { type: Boolean, default: false },\r\n  modelValue: { type: Array, default: () => [] },\r\n  min: { type: Number, default: 1 },\r\n  max: { type: Number, default: 100000 }\r\n})\r\n\r\nconst currentValue = ref([])\r\n\r\nconst selectedList = ref([])\r\n\r\nconst userselectorPlus = ref()\r\n\r\nwatch(\r\n    () => props.modelValue,\r\n    (newValue) => {\r\n      console.log('newValue', newValue)\r\n      if (selectedList.value.length == 0) {\r\n        // 获取用户信息\r\n        if (newValue && newValue.length > 0) {\r\n          reload(newValue)\r\n        }\r\n      } else if (newValue && newValue[0] == undefined) {\r\n        currentValue.value = []\r\n        selectedList.value = []\r\n      }\r\n    }\r\n)\r\n\r\nonMounted(() => {\r\n  if (selectedList.value.length == 0) {\r\n    // 获取机构信息\r\n    if (props.modelValue && props.modelValue.length > 0) {\r\n      reload(props.modelValue)\r\n    }\r\n  }\r\n})\r\n\r\nconst reload = async (empIds) => {\r\n  const params = []\r\n  if(Array.isArray(empIds)) {\r\n    for (let i = 0; i < empIds.length; i++) {\r\n      params.push({ id: empIds[i] })\r\n    }\r\n  } else {\r\n    params.push({ id: empIds })\r\n  }\r\n  const res = await userSelectorPlusApi.getUsersByUserIds('/sys/user/ids', params)\r\n  console.info(\"ids\",res)\r\n  if (res) {\r\n    res.forEach((item) => {\r\n      currentValue.value.push(item.id)\r\n      selectedList.value.push(item)\r\n      emit(\r\n          'update:label',\r\n          selectedList.value.map((a) => a.name)\r\n      )\r\n    })\r\n  }\r\n}\r\n\r\nconst showUserPlusModal = () => {\r\n  userselectorPlus.value.showUserPlusModal(selectedList.value)\r\n}\r\n\r\nconst removeSelectedItem = (record) => {\r\n  remove(selectedList.value, (item) => item.id === record.id)\r\n  remove(currentValue.value, (item) => item === record.id)\r\n  // 只有ID\r\n  userselectorPlus.value.delRecord(record)\r\n  console.log('currentValue.value', currentValue.value)\r\n  emit('update:modelValue', currentValue.value)\r\n  emit(\r\n      'update:label',\r\n      selectedList.value.map((a) => a.name)\r\n  )\r\n  emit('update:data', selectedList)\r\n}\r\n\r\nconst emit = defineEmits(['update:modelValue', 'update:data', 'update:label', 'click'])\r\n\r\n/**\r\n * 确定\r\n * @param {*} record\r\n */\r\nconst callBack = (records) => {\r\n  console.log('records', records)\r\n  selectedList.value = []\r\n  currentValue.value = []\r\n  for (let index = 0; index < records.length; index++) {\r\n    const element = {\r\n      userId: records[index].id,\r\n      nickname: records[index].name\r\n    }\r\n    selectedList.value.push(element)\r\n    // 只有ID\r\n    currentValue.value.push(records[index].id)\r\n  }\r\n  emit('update:modelValue', currentValue.value)\r\n  emit(\r\n      'update:label',\r\n      selectedList.value.map((a) => a.nickname)\r\n  )\r\n  emit('update:data', selectedList)\r\n}\r\n\r\ndefineExpose({})\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.add-user-wrapper {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  min-height: 40px;\r\n  padding-left: 5px;\r\n  .add-user-icon {\r\n    display: flex;\r\n    align-items: center;\r\n    width: 40px;\r\n    height: 32px;\r\n    border-radius: 100px;\r\n    border: 1px solid #3370ff;\r\n    justify-content: center;\r\n    margin-right: 8px;\r\n    margin-top: 8px;\r\n    cursor: pointer;\r\n  }\r\n  .add-user-item {\r\n    display: flex;\r\n    align-items: center;\r\n    min-width: 70px;\r\n    max-width: 50%;\r\n    height: 32px;\r\n    background: #eff0f1;\r\n    border-radius: 16px;\r\n    padding: 0 4px;\r\n    margin-right: 8px;\r\n    margin-top: 8px;\r\n\r\n    img {\r\n      width: 24px;\r\n      height: 24px;\r\n      border-radius: 12px;\r\n    }\r\n    div {\r\n      padding: 0;\r\n      margin: 0 4px;\r\n      min-width: 28px;\r\n      overflow: hidden;\r\n      text-overflow: ellipsis;\r\n      white-space: nowrap;\r\n    }\r\n    i {\r\n      margin-right: 10px;\r\n      color: #646a73;\r\n      cursor: pointer;\r\n    }\r\n  }\r\n}\r\n.selected-items {\r\n  overflow-y: auto;\r\n  margin: 0 10px 0;\r\n  border: 1px dashed #ccc;\r\n  padding: 4px 4px 0;\r\n  min-height: 34px;\r\n  max-height: 60px;\r\n  .ant-tag {\r\n    margin-bottom: 4px;\r\n  }\r\n}\r\n</style>\r\n"],"names":["_createElementBlock","_createVNode","_normalizeStyle","_Fragment","_renderList","_createBlock","_createTextVNode","_toDisplayString","_createElementVNode","_openBlock"],"mappings":"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"}