sun-biz 0.0.4-beta.44 → 0.0.4-beta.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4877,6 +4877,17 @@ const PERSON = "PERSON"; //应该放到BIZ_ID_TYPE_CODE这个里面
4877
4877
  color: colorItem.cssValue
4878
4878
  } : {};
4879
4879
  };
4880
+ /**
4881
+ * 格式化数据值,如果listFlag为1,则将数组用逗号分隔
4882
+ */ const formatDataValue = (item)=>{
4883
+ if (item.listFlag === __WEBPACK_EXTERNAL_MODULE__sun_toolkit_enums__.FLAG.YES && item.dataValue) try {
4884
+ const parsedData = JSON.parse(item.dataValue);
4885
+ if (Array.isArray(parsedData)) return parsedData.join(",");
4886
+ } catch (error) {
4887
+ console.error("格式化失败", error);
4888
+ }
4889
+ return item.dataValue || "--";
4890
+ };
4880
4891
  function setBizId(data) {
4881
4892
  switch(tagBizIdTypeCode){
4882
4893
  case PERSON:
@@ -5092,8 +5103,7 @@ const PERSON = "PERSON"; //应该放到BIZ_ID_TYPE_CODE这个里面
5092
5103
  'text-[#555]',
5093
5104
  getDynamicCssClasses(item.comptControlCssList)
5094
5105
  ]),
5095
- style: (0, __WEBPACK_EXTERNAL_MODULE_vue__.normalizeStyle)(getColorStyle(item.comptControlCssList)),
5096
- type: ""
5106
+ style: (0, __WEBPACK_EXTERNAL_MODULE_vue__.normalizeStyle)(getColorStyle(item.comptControlCssList))
5097
5107
  }, {
5098
5108
  default: (0, __WEBPACK_EXTERNAL_MODULE_vue__.withCtx)(()=>[
5099
5109
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.createTextVNode)((0, __WEBPACK_EXTERNAL_MODULE_vue__.toDisplayString)(item.labelNameDisplay) + ":", 1)
@@ -5106,7 +5116,7 @@ const PERSON = "PERSON"; //应该放到BIZ_ID_TYPE_CODE这个里面
5106
5116
  ]),
5107
5117
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.createVNode)((0, __WEBPACK_EXTERNAL_MODULE_vue__.unref)(__WEBPACK_EXTERNAL_MODULE_element_sun__.ElTooltip), {
5108
5118
  disabled: !isTextOverflowing.value,
5109
- content: item.dataValue
5119
+ content: formatDataValue(item)
5110
5120
  }, {
5111
5121
  default: (0, __WEBPACK_EXTERNAL_MODULE_vue__.withCtx)(()=>[
5112
5122
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.createElementVNode)("span", _hoisted_16, [
@@ -5115,11 +5125,10 @@ const PERSON = "PERSON"; //应该放到BIZ_ID_TYPE_CODE这个里面
5115
5125
  'text-[#555]',
5116
5126
  getDynamicCssClasses(item.comptControlCssList)
5117
5127
  ]),
5118
- style: (0, __WEBPACK_EXTERNAL_MODULE_vue__.normalizeStyle)(getColorStyle(item.comptControlCssList)),
5119
- type: ""
5128
+ style: (0, __WEBPACK_EXTERNAL_MODULE_vue__.normalizeStyle)(getColorStyle(item.comptControlCssList))
5120
5129
  }, {
5121
5130
  default: (0, __WEBPACK_EXTERNAL_MODULE_vue__.withCtx)(()=>[
5122
- (0, __WEBPACK_EXTERNAL_MODULE_vue__.createTextVNode)((0, __WEBPACK_EXTERNAL_MODULE_vue__.toDisplayString)(item.dataValue || "--"), 1)
5131
+ (0, __WEBPACK_EXTERNAL_MODULE_vue__.createTextVNode)((0, __WEBPACK_EXTERNAL_MODULE_vue__.toDisplayString)(formatDataValue(item)), 1)
5123
5132
  ]),
5124
5133
  _: 2
5125
5134
  }, 1032, [
@@ -7342,9 +7351,9 @@ const user_select_exports_ = user_selectvue_type_script_setup_true_lang_ts_name_
7342
7351
  */ const queryBizUnitList = (params)=>(0, __WEBPACK_EXTERNAL_MODULE__sun_toolkit_request__.dictRequest)('/organization/queryBizUnitListByExample', params);
7343
7352
  // 全局事件:用于关闭其他实例的 popover
7344
7353
  const CLOSE_OTHER_POPOVERS_EVENT = 'biz-unit-select:close-others'; /*
7345
- 96-10014-1 业务单元选择组件
7346
- 1、调用“1-10516-1 根据条件查询业务单元列表”传入“启用标志=1、关键字、医院标识=入参:医院标识、科室类型代码集合、就诊类型代码”查询业务单元列表
7347
- 2、展示列包括“组织类型、编码、名称”
7354
+ 96-10014-1 业务单元选择组件
7355
+ 1、调用“1-10516-1 根据条件查询业务单元列表”传入“启用标志=1、关键字、医院标识=入参:医院标识、科室类型代码集合、就诊类型代码”查询业务单元列表
7356
+ 2、展示列包括“组织类型、编码、名称”
7348
7357
  */
7349
7358
  /* ESM default export */ const biz_unit_selectvue_type_script_lang_tsx_name_BizUnitSelect_setup_true = /*@__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_vue__.defineComponent)({
7350
7359
  __name: 'index',
@@ -7610,16 +7619,44 @@ const CLOSE_OTHER_POPOVERS_EVENT = 'biz-unit-select:close-others'; /*
7610
7619
  const handleClickOutside = (e)=>{
7611
7620
  const target = e.target;
7612
7621
  const selectEl = selectRef.value?.$el;
7613
- const popoverEl = popoverRef.value?.popperRef?.contentRef;
7614
- if (!selectEl?.contains(target) && !popoverEl?.contains(target)) popoverVisible.value = false;
7622
+ const popoverEl = popoverRef.value?.popperRef?.contentRef; // 检查是否点击了当前组件的元素
7623
+ if (selectEl?.contains(target) || popoverEl?.contains(target)) return;
7624
+ // 检查是否点击了其他 el-select 或其下拉框
7625
+ let element = target;
7626
+ while(element){
7627
+ if (element.classList?.contains('el-select') || element.classList?.contains('el-select-dropdown') || element.classList?.contains('el-popper') || element.classList?.contains('el-picker-panel') || element.classList?.contains('el-date-picker') || element.classList?.contains('el-time-picker')) {
7628
+ popoverVisible.value = false;
7629
+ return;
7630
+ }
7631
+ element = element.parentElement;
7632
+ } // 点击了其他地方,关闭 popover
7633
+ popoverVisible.value = false;
7634
+ }; // 监听 el-select 的 focus 事件来关闭当前 popover
7635
+ const handleGlobalFocusin = (e)=>{
7636
+ if (!popoverVisible.value) return;
7637
+ const target = e.target;
7638
+ const selectEl = selectRef.value?.$el;
7639
+ const popoverEl = popoverRef.value?.popperRef?.contentRef; // 如果焦点移到了其他元素(如其他 el-select),则关闭当前 popover
7640
+ if (!selectEl?.contains(target) && !popoverEl?.contains(target)) {
7641
+ let element = target;
7642
+ while(element){
7643
+ if (element.classList?.contains('el-select') || element.classList?.contains('el-input')) {
7644
+ popoverVisible.value = false;
7645
+ return;
7646
+ }
7647
+ element = element.parentElement;
7648
+ }
7649
+ }
7615
7650
  };
7616
7651
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.watch)(()=>popoverVisible.value, (val)=>{
7617
7652
  if (val) {
7618
7653
  document.addEventListener('keydown', handleKeydown, true);
7619
- if (props.multiSelectFlag) document.addEventListener('click', handleClickOutside);
7654
+ document.addEventListener('click', handleClickOutside);
7655
+ document.addEventListener('focusin', handleGlobalFocusin, true);
7620
7656
  } else {
7621
7657
  document.removeEventListener('keydown', handleKeydown, true);
7622
- if (props.multiSelectFlag) document.removeEventListener('click', handleClickOutside);
7658
+ document.removeEventListener('click', handleClickOutside);
7659
+ document.removeEventListener('focusin', handleGlobalFocusin, true);
7623
7660
  }
7624
7661
  });
7625
7662
  const handleTableRowSelect = (data)=>{
@@ -7658,7 +7695,8 @@ const CLOSE_OTHER_POPOVERS_EVENT = 'biz-unit-select:close-others'; /*
7658
7695
  };
7659
7696
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.onBeforeUnmount)(()=>{
7660
7697
  document.removeEventListener('keydown', handleKeydown, true);
7661
- if (props.multiSelectFlag) document.removeEventListener('click', handleClickOutside);
7698
+ document.removeEventListener('click', handleClickOutside);
7699
+ document.removeEventListener('focusin', handleGlobalFocusin, true);
7662
7700
  window.removeEventListener(CLOSE_OTHER_POPOVERS_EVENT, handleCloseOtherPopovers);
7663
7701
  });
7664
7702
  const fetchData = async (data)=>{
package/dist/index.js CHANGED
@@ -5377,6 +5377,17 @@ const PERSON = "PERSON"; //应该放到BIZ_ID_TYPE_CODE这个里面
5377
5377
  color: colorItem.cssValue
5378
5378
  } : {};
5379
5379
  };
5380
+ /**
5381
+ * 格式化数据值,如果listFlag为1,则将数组用逗号分隔
5382
+ */ const formatDataValue = (item)=>{
5383
+ if (item.listFlag === __WEBPACK_EXTERNAL_MODULE__sun_toolkit_enums__.FLAG.YES && item.dataValue) try {
5384
+ const parsedData = JSON.parse(item.dataValue);
5385
+ if (Array.isArray(parsedData)) return parsedData.join(",");
5386
+ } catch (error) {
5387
+ console.error("格式化失败", error);
5388
+ }
5389
+ return item.dataValue || "--";
5390
+ };
5380
5391
  function setBizId(data) {
5381
5392
  switch(tagBizIdTypeCode){
5382
5393
  case PERSON:
@@ -5592,8 +5603,7 @@ const PERSON = "PERSON"; //应该放到BIZ_ID_TYPE_CODE这个里面
5592
5603
  'text-[#555]',
5593
5604
  getDynamicCssClasses(item.comptControlCssList)
5594
5605
  ]),
5595
- style: (0, __WEBPACK_EXTERNAL_MODULE_vue__.normalizeStyle)(getColorStyle(item.comptControlCssList)),
5596
- type: ""
5606
+ style: (0, __WEBPACK_EXTERNAL_MODULE_vue__.normalizeStyle)(getColorStyle(item.comptControlCssList))
5597
5607
  }, {
5598
5608
  default: (0, __WEBPACK_EXTERNAL_MODULE_vue__.withCtx)(()=>[
5599
5609
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.createTextVNode)((0, __WEBPACK_EXTERNAL_MODULE_vue__.toDisplayString)(item.labelNameDisplay) + ":", 1)
@@ -5606,7 +5616,7 @@ const PERSON = "PERSON"; //应该放到BIZ_ID_TYPE_CODE这个里面
5606
5616
  ]),
5607
5617
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.createVNode)((0, __WEBPACK_EXTERNAL_MODULE_vue__.unref)(__WEBPACK_EXTERNAL_MODULE_element_sun__.ElTooltip), {
5608
5618
  disabled: !isTextOverflowing.value,
5609
- content: item.dataValue
5619
+ content: formatDataValue(item)
5610
5620
  }, {
5611
5621
  default: (0, __WEBPACK_EXTERNAL_MODULE_vue__.withCtx)(()=>[
5612
5622
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.createElementVNode)("span", _hoisted_16, [
@@ -5615,11 +5625,10 @@ const PERSON = "PERSON"; //应该放到BIZ_ID_TYPE_CODE这个里面
5615
5625
  'text-[#555]',
5616
5626
  getDynamicCssClasses(item.comptControlCssList)
5617
5627
  ]),
5618
- style: (0, __WEBPACK_EXTERNAL_MODULE_vue__.normalizeStyle)(getColorStyle(item.comptControlCssList)),
5619
- type: ""
5628
+ style: (0, __WEBPACK_EXTERNAL_MODULE_vue__.normalizeStyle)(getColorStyle(item.comptControlCssList))
5620
5629
  }, {
5621
5630
  default: (0, __WEBPACK_EXTERNAL_MODULE_vue__.withCtx)(()=>[
5622
- (0, __WEBPACK_EXTERNAL_MODULE_vue__.createTextVNode)((0, __WEBPACK_EXTERNAL_MODULE_vue__.toDisplayString)(item.dataValue || "--"), 1)
5631
+ (0, __WEBPACK_EXTERNAL_MODULE_vue__.createTextVNode)((0, __WEBPACK_EXTERNAL_MODULE_vue__.toDisplayString)(formatDataValue(item)), 1)
5623
5632
  ]),
5624
5633
  _: 2
5625
5634
  }, 1032, [
@@ -8018,9 +8027,9 @@ const user_select_exports_ = user_selectvue_type_script_setup_true_lang_ts_name_
8018
8027
  */ const queryBizUnitList = (params)=>(0, __WEBPACK_EXTERNAL_MODULE__sun_toolkit_request__.dictRequest)('/organization/queryBizUnitListByExample', params);
8019
8028
  // 全局事件:用于关闭其他实例的 popover
8020
8029
  const CLOSE_OTHER_POPOVERS_EVENT = 'biz-unit-select:close-others'; /*
8021
- 96-10014-1 业务单元选择组件
8022
- 1、调用“1-10516-1 根据条件查询业务单元列表”传入“启用标志=1、关键字、医院标识=入参:医院标识、科室类型代码集合、就诊类型代码”查询业务单元列表
8023
- 2、展示列包括“组织类型、编码、名称”
8030
+ 96-10014-1 业务单元选择组件
8031
+ 1、调用“1-10516-1 根据条件查询业务单元列表”传入“启用标志=1、关键字、医院标识=入参:医院标识、科室类型代码集合、就诊类型代码”查询业务单元列表
8032
+ 2、展示列包括“组织类型、编码、名称”
8024
8033
  */
8025
8034
  /* ESM default export */ const biz_unit_selectvue_type_script_lang_tsx_name_BizUnitSelect_setup_true = /*@__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_vue__.defineComponent)({
8026
8035
  __name: 'index',
@@ -8286,16 +8295,44 @@ const CLOSE_OTHER_POPOVERS_EVENT = 'biz-unit-select:close-others'; /*
8286
8295
  const handleClickOutside = (e)=>{
8287
8296
  const target = e.target;
8288
8297
  const selectEl = selectRef.value?.$el;
8289
- const popoverEl = popoverRef.value?.popperRef?.contentRef;
8290
- if (!selectEl?.contains(target) && !popoverEl?.contains(target)) popoverVisible.value = false;
8298
+ const popoverEl = popoverRef.value?.popperRef?.contentRef; // 检查是否点击了当前组件的元素
8299
+ if (selectEl?.contains(target) || popoverEl?.contains(target)) return;
8300
+ // 检查是否点击了其他 el-select 或其下拉框
8301
+ let element = target;
8302
+ while(element){
8303
+ if (element.classList?.contains('el-select') || element.classList?.contains('el-select-dropdown') || element.classList?.contains('el-popper') || element.classList?.contains('el-picker-panel') || element.classList?.contains('el-date-picker') || element.classList?.contains('el-time-picker')) {
8304
+ popoverVisible.value = false;
8305
+ return;
8306
+ }
8307
+ element = element.parentElement;
8308
+ } // 点击了其他地方,关闭 popover
8309
+ popoverVisible.value = false;
8310
+ }; // 监听 el-select 的 focus 事件来关闭当前 popover
8311
+ const handleGlobalFocusin = (e)=>{
8312
+ if (!popoverVisible.value) return;
8313
+ const target = e.target;
8314
+ const selectEl = selectRef.value?.$el;
8315
+ const popoverEl = popoverRef.value?.popperRef?.contentRef; // 如果焦点移到了其他元素(如其他 el-select),则关闭当前 popover
8316
+ if (!selectEl?.contains(target) && !popoverEl?.contains(target)) {
8317
+ let element = target;
8318
+ while(element){
8319
+ if (element.classList?.contains('el-select') || element.classList?.contains('el-input')) {
8320
+ popoverVisible.value = false;
8321
+ return;
8322
+ }
8323
+ element = element.parentElement;
8324
+ }
8325
+ }
8291
8326
  };
8292
8327
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.watch)(()=>popoverVisible.value, (val)=>{
8293
8328
  if (val) {
8294
8329
  document.addEventListener('keydown', handleKeydown, true);
8295
- if (props.multiSelectFlag) document.addEventListener('click', handleClickOutside);
8330
+ document.addEventListener('click', handleClickOutside);
8331
+ document.addEventListener('focusin', handleGlobalFocusin, true);
8296
8332
  } else {
8297
8333
  document.removeEventListener('keydown', handleKeydown, true);
8298
- if (props.multiSelectFlag) document.removeEventListener('click', handleClickOutside);
8334
+ document.removeEventListener('click', handleClickOutside);
8335
+ document.removeEventListener('focusin', handleGlobalFocusin, true);
8299
8336
  }
8300
8337
  });
8301
8338
  const handleTableRowSelect = (data)=>{
@@ -8334,7 +8371,8 @@ const CLOSE_OTHER_POPOVERS_EVENT = 'biz-unit-select:close-others'; /*
8334
8371
  };
8335
8372
  (0, __WEBPACK_EXTERNAL_MODULE_vue__.onBeforeUnmount)(()=>{
8336
8373
  document.removeEventListener('keydown', handleKeydown, true);
8337
- if (props.multiSelectFlag) document.removeEventListener('click', handleClickOutside);
8374
+ document.removeEventListener('click', handleClickOutside);
8375
+ document.removeEventListener('focusin', handleGlobalFocusin, true);
8338
8376
  window.removeEventListener(CLOSE_OTHER_POPOVERS_EVENT, handleCloseOtherPopovers);
8339
8377
  });
8340
8378
  const fetchData = async (data)=>{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sun-biz",
3
- "version": "0.0.4-beta.44",
3
+ "version": "0.0.4-beta.46",
4
4
  "type": "module",
5
5
  "workspaces": [
6
6
  "src/*",