widget.qw 1.1.3 → 1.1.5

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.
package/.env.development CHANGED
@@ -7,4 +7,4 @@ VITE_NEED_LOGIN_CODE=401
7
7
  # 注意:发布时 VITE_IS_DEBUG必须配置为false
8
8
  # 本地开发时 VITE_IS_DEBUG必须配置为true
9
9
  VITE_IS_DEBUG=true
10
- VITE_DEBUG_TOKEN= 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJIb3VNdSIsInJuU3RyIjoiNU9FTEgydFJReDlVQ2VFYzljZzJjRGc2a3g3VEp3SGQifQ.z3urMfzsUoQAd_DFGx1lgIdwKSHTFLFbUPjcAcFNI1A'
10
+ VITE_DEBUG_TOKEN= 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJIb3VNdSIsInJuU3RyIjoiVm1CUFdpRmpURnFoOGgzam5VSG43SEQyeU80b2FuZW8ifQ.OqAOTbI6tqVeFHKYTWHLhtGQ8KMMLONBdL1jck-p4qU'
package/build/style.css CHANGED
@@ -89,10 +89,10 @@
89
89
  :root:root {
90
90
  --van-popover-action-width: 70vw;
91
91
  }
92
- [data-v-bdbdf60a] .label {
92
+ [data-v-fcba0e18] .label {
93
93
  color: #000 !important;
94
94
  }
95
- [data-v-bdbdf60a] .van-field__control:disabled {
95
+ [data-v-fcba0e18] .van-field__control:disabled {
96
96
  color: #000 !important;
97
97
  cursor: not-allowed;
98
98
  opacity: 1;
@@ -675,25 +675,25 @@
675
675
  margin:3px;
676
676
  }
677
677
 
678
- .cascader-pop[data-v-1f4b2244] {
678
+ .cascader-pop[data-v-0a051cd5] {
679
679
  width: 100%;
680
680
  overflow: hidden;
681
681
  }
682
- .cascader-selector[data-v-1f4b2244] {
682
+ .cascader-selector[data-v-0a051cd5] {
683
683
  padding: 10px;
684
684
  }
685
- .search-buttons[data-v-1f4b2244] {
685
+ .search-buttons[data-v-0a051cd5] {
686
686
  display: flex;
687
687
  gap: 10px;
688
688
  }
689
- .clear-btn[data-v-1f4b2244] {
689
+ .clear-btn[data-v-0a051cd5] {
690
690
  background-color: #f2f3f5;
691
691
  border: none;
692
692
  border-radius: 4px;
693
693
  padding: 4px 8px;
694
694
  font-size: 14px;
695
695
  }
696
- .confirm-btn[data-v-1f4b2244] {
696
+ .confirm-btn[data-v-0a051cd5] {
697
697
  background-color: #1989fa;
698
698
  color: white;
699
699
  border: none;
@@ -701,19 +701,19 @@
701
701
  padding: 4px 8px;
702
702
  font-size: 14px;
703
703
  }
704
- .no-results[data-v-1f4b2244] {
704
+ .no-results[data-v-0a051cd5] {
705
705
  text-align: center;
706
706
  padding: 20px;
707
707
  color: #969799;
708
708
  }
709
- .cascader-header[data-v-1f4b2244] {
709
+ .cascader-header[data-v-0a051cd5] {
710
710
  padding: 10px;
711
711
  border-bottom: 1px solid #ebedf0;
712
712
  display: flex;
713
713
  justify-content: space-between;
714
714
  align-items: center;
715
715
  }
716
- .current-path[data-v-1f4b2244] {
716
+ .current-path[data-v-0a051cd5] {
717
717
  flex: 1;
718
718
  font-size: 14px;
719
719
  margin-left: 5px;
@@ -722,25 +722,25 @@
722
722
  overflow: hidden;
723
723
  text-overflow: ellipsis;
724
724
  }
725
- .header-right[data-v-1f4b2244] {
725
+ .header-right[data-v-0a051cd5] {
726
726
  display: flex;
727
727
  gap: 8px;
728
728
  margin-left: auto;
729
729
  }
730
- .cancel-btn[data-v-1f4b2244] {
730
+ .cancel-btn[data-v-0a051cd5] {
731
731
  color: #969799;
732
732
  margin-right: 5px;
733
733
  }
734
- .scroll-container[data-v-1f4b2244] {
734
+ .scroll-container[data-v-0a051cd5] {
735
735
  height: calc(80vh - 150px);
736
736
  overflow-y: auto;
737
737
  }
738
- .cell-content[data-v-1f4b2244] {
738
+ .cell-content[data-v-0a051cd5] {
739
739
  display: flex;
740
740
  align-items: center;
741
741
  gap: 12px;
742
742
  }
743
- .circle-selector[data-v-1f4b2244] {
743
+ .circle-selector[data-v-0a051cd5] {
744
744
  width: 20px;
745
745
  height: 20px;
746
746
  border-radius: 50%;
@@ -750,29 +750,29 @@
750
750
  transition: all 0.2s;
751
751
  flex-shrink: 0;
752
752
  }
753
- .circle-selector.selected[data-v-1f4b2244] {
753
+ .circle-selector.selected[data-v-0a051cd5] {
754
754
  background-color: #1989fa;
755
755
  border-color: #1989fa;
756
756
  }
757
- .circle-selector.selected .van-icon[data-v-1f4b2244] {
757
+ .circle-selector.selected .van-icon[data-v-0a051cd5] {
758
758
  color: white;
759
759
  font-size: 14px;
760
760
  }
761
- .van-cell__right-icon[data-v-1f4b2244] {
761
+ .van-cell__right-icon[data-v-0a051cd5] {
762
762
  color: #969799;
763
763
  font-size: 16px;
764
764
  margin-left: 8px;
765
765
  }
766
- .name[data-v-1f4b2244] {
766
+ .name[data-v-0a051cd5] {
767
767
  flex: 1;
768
768
  overflow: hidden;
769
769
  text-overflow: ellipsis;
770
770
  white-space: nowrap;
771
771
  }
772
- .cancel-btn[data-v-1f4b2244] {
772
+ .cancel-btn[data-v-0a051cd5] {
773
773
  color: #969799;
774
774
  }
775
- .search-field[data-v-1f4b2244] {
775
+ .search-field[data-v-0a051cd5] {
776
776
  background: #fff;
777
777
  padding: 10px 16px;
778
778
  border-bottom: 1px solid #ebedf0;
@@ -17638,7 +17638,7 @@ function useVModel(props2, key, emit2, options = {}) {
17638
17638
  });
17639
17639
  }
17640
17640
  }
17641
- var Input_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "[data-v-bdbdf60a] .label {\n color: #000 !important;\n}\n[data-v-bdbdf60a] .van-field__control:disabled {\n color: #000 !important;\n cursor: not-allowed;\n opacity: 1;\n -webkit-text-fill-color: #000;\n}")();
17641
+ var Input_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "[data-v-fcba0e18] .label {\n color: #000 !important;\n}\n[data-v-fcba0e18] .van-field__control:disabled {\n color: #000 !important;\n cursor: not-allowed;\n opacity: 1;\n -webkit-text-fill-color: #000;\n}")();
17642
17642
  const _hoisted_1$i = {
17643
17643
  style: {
17644
17644
  "display": "flex",
@@ -17758,10 +17758,11 @@ const _sfc_main$s = {
17758
17758
  autosize: props.autosize,
17759
17759
  rules: unref(rules)
17760
17760
  }, {
17761
- button: withCtx(() => [createVNode(_component_van_icon, {
17761
+ button: withCtx(() => [!unref(isGone) && !unref(isReadonly) && !unref(isDisabled) ? (openBlock(), createBlock(_component_van_icon, {
17762
+ key: 0,
17762
17763
  name: "plus",
17763
17764
  onClick: onCalc
17764
- })]),
17765
+ })) : createCommentVNode("", true)]),
17765
17766
  _: 1
17766
17767
  }, 8, ["label", "modelValue", "disabled", "required", "placeholder", "type", "rows", "autosize", "rules"])) : createCommentVNode("", true), createVNode(_component_van_popup, {
17767
17768
  show: data.isShowPop,
@@ -17805,7 +17806,7 @@ const _sfc_main$s = {
17805
17806
  };
17806
17807
  }
17807
17808
  };
17808
- var Input = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-bdbdf60a"]]);
17809
+ var Input = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-fcba0e18"]]);
17809
17810
  var SinglePicker_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "[data-v-3ae83b36] .label {\n color: #000 !important;\n}\n[data-v-3ae83b36] .van-field__control:disabled {\n color: #000 !important;\n cursor: not-allowed;\n opacity: 1;\n -webkit-text-fill-color: #000;\n}")();
17810
17811
  const _sfc_main$r = {
17811
17812
  __name: "SinglePicker",
@@ -21635,8 +21636,8 @@ const _sfc_main$4 = {
21635
21636
  }
21636
21637
  };
21637
21638
  var TreePicker = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-ebc14630"]]);
21638
- var CascaderPop_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "\n.cascader-pop[data-v-1f4b2244] {\r\n width: 100%;\r\n overflow: hidden;\n}\n.cascader-selector[data-v-1f4b2244] {\r\n padding: 10px;\n}\n.search-buttons[data-v-1f4b2244] {\r\n display: flex;\r\n gap: 10px;\n}\n.clear-btn[data-v-1f4b2244] {\r\n background-color: #f2f3f5;\r\n border: none;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 14px;\n}\n.confirm-btn[data-v-1f4b2244] {\r\n background-color: #1989fa;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 14px;\n}\n.no-results[data-v-1f4b2244] {\r\n text-align: center;\r\n padding: 20px;\r\n color: #969799;\n}\n.cascader-header[data-v-1f4b2244] {\r\n padding: 10px;\r\n border-bottom: 1px solid #ebedf0;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\n}\n.current-path[data-v-1f4b2244] {\r\n flex: 1;\r\n font-size: 14px;\r\n margin-left: 5px;\r\n color: #323233;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\n}\n.header-right[data-v-1f4b2244] {\r\n display: flex;\r\n gap: 8px;\r\n margin-left: auto;\n}\n.cancel-btn[data-v-1f4b2244] {\r\n color: #969799;\r\n margin-right: 5px;\n}\n.scroll-container[data-v-1f4b2244] {\r\n height: calc(80vh - 150px);\r\n overflow-y: auto;\n}\n.cell-content[data-v-1f4b2244] {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\n}\n.circle-selector[data-v-1f4b2244] {\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.2s;\r\n flex-shrink: 0;\n}\n.circle-selector.selected[data-v-1f4b2244] {\r\n background-color: #1989fa;\r\n border-color: #1989fa;\n}\n.circle-selector.selected .van-icon[data-v-1f4b2244] {\r\n color: white;\r\n font-size: 14px;\n}\n.van-cell__right-icon[data-v-1f4b2244] {\r\n color: #969799;\r\n font-size: 16px;\r\n margin-left: 8px;\n}\n.name[data-v-1f4b2244] {\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\n}\n.cancel-btn[data-v-1f4b2244] {\r\n color: #969799;\n}\n.search-field[data-v-1f4b2244] {\r\n background: #fff;\r\n padding: 10px 16px;\r\n border-bottom: 1px solid #ebedf0;\r\n position: sticky;\r\n top: 0;\r\n z-index: 999;\r\n margin-bottom: 10px;\r\n flex-shrink: 0;\r\n /* \u9632\u6B62\u538B\u7F29 */\n}\r\n")();
21639
- const _withScopeId = (n) => (pushScopeId("data-v-1f4b2244"), n = n(), popScopeId(), n);
21639
+ var CascaderPop_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "\n.cascader-pop[data-v-0a051cd5] {\r\n width: 100%;\r\n overflow: hidden;\n}\n.cascader-selector[data-v-0a051cd5] {\r\n padding: 10px;\n}\n.search-buttons[data-v-0a051cd5] {\r\n display: flex;\r\n gap: 10px;\n}\n.clear-btn[data-v-0a051cd5] {\r\n background-color: #f2f3f5;\r\n border: none;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 14px;\n}\n.confirm-btn[data-v-0a051cd5] {\r\n background-color: #1989fa;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 14px;\n}\n.no-results[data-v-0a051cd5] {\r\n text-align: center;\r\n padding: 20px;\r\n color: #969799;\n}\n.cascader-header[data-v-0a051cd5] {\r\n padding: 10px;\r\n border-bottom: 1px solid #ebedf0;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\n}\n.current-path[data-v-0a051cd5] {\r\n flex: 1;\r\n font-size: 14px;\r\n margin-left: 5px;\r\n color: #323233;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\n}\n.header-right[data-v-0a051cd5] {\r\n display: flex;\r\n gap: 8px;\r\n margin-left: auto;\n}\n.cancel-btn[data-v-0a051cd5] {\r\n color: #969799;\r\n margin-right: 5px;\n}\n.scroll-container[data-v-0a051cd5] {\r\n height: calc(80vh - 150px);\r\n overflow-y: auto;\n}\n.cell-content[data-v-0a051cd5] {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\n}\n.circle-selector[data-v-0a051cd5] {\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.2s;\r\n flex-shrink: 0;\n}\n.circle-selector.selected[data-v-0a051cd5] {\r\n background-color: #1989fa;\r\n border-color: #1989fa;\n}\n.circle-selector.selected .van-icon[data-v-0a051cd5] {\r\n color: white;\r\n font-size: 14px;\n}\n.van-cell__right-icon[data-v-0a051cd5] {\r\n color: #969799;\r\n font-size: 16px;\r\n margin-left: 8px;\n}\n.name[data-v-0a051cd5] {\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\n}\n.cancel-btn[data-v-0a051cd5] {\r\n color: #969799;\n}\n.search-field[data-v-0a051cd5] {\r\n background: #fff;\r\n padding: 10px 16px;\r\n border-bottom: 1px solid #ebedf0;\r\n position: sticky;\r\n top: 0;\r\n z-index: 999;\r\n margin-bottom: 10px;\r\n flex-shrink: 0;\r\n /* \u9632\u6B62\u538B\u7F29 */\n}\r\n")();
21640
+ const _withScopeId = (n) => (pushScopeId("data-v-0a051cd5"), n = n(), popScopeId(), n);
21640
21641
  const _hoisted_1$3 = {
21641
21642
  class: "cascader-selector"
21642
21643
  };
@@ -21780,22 +21781,31 @@ const _sfc_main$3 = {
21780
21781
  const ids2nodes2 = () => __async(this, null, function* () {
21781
21782
  if (!data2.selectedNodeIds || data2.selectedNodeIds.length < 1)
21782
21783
  return [];
21783
- let promises = data2.selectedNodeIds.map((nodeId) => __async(this, null, function* () {
21784
+ let ids = data2.selectedNodeIds;
21785
+ let res = [];
21786
+ let receivedNodes = [];
21787
+ for (var i = 0; i < ids.length; i++) {
21788
+ let nodeId = ids[i];
21789
+ let selectNode = null;
21790
+ selectNode = util.findNode(nodeId, receivedNodes);
21791
+ if (selectNode) {
21792
+ res = [...res, selectNode];
21793
+ continue;
21794
+ }
21784
21795
  let params = {};
21785
21796
  params.id = nodeId;
21786
21797
  params.isReturnParent = true;
21787
- params.hasChildren = false;
21798
+ params.hasChildren = true;
21788
21799
  params.hasPaths = true;
21789
21800
  params.hasUsers = true;
21790
- let selectNode = null;
21791
21801
  yield props2.idQueryNode(params, (node) => {
21792
- data2.parentNode = node;
21793
- selectNode = util.findNode(nodeId, data2.parentNode.children);
21802
+ receivedNodes = [...receivedNodes, ...node.children || []];
21803
+ selectNode = util.findNode(nodeId, receivedNodes);
21794
21804
  });
21795
- return selectNode;
21796
- }));
21797
- let selectNodes = yield Promise.all(promises);
21798
- return selectNodes;
21805
+ if (selectNode)
21806
+ res = [...res, selectNode];
21807
+ }
21808
+ return res;
21799
21809
  });
21800
21810
  const onSubmit2 = () => __async(this, null, function* () {
21801
21811
  if (!data2.selectedNodeIds || data2.selectedNodeIds.length < 1) {
@@ -21964,7 +21974,7 @@ const _sfc_main$3 = {
21964
21974
  };
21965
21975
  }
21966
21976
  };
21967
- var CascaderPop = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-1f4b2244"]]);
21977
+ var CascaderPop = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-0a051cd5"]]);
21968
21978
  const _hoisted_1$2 = {
21969
21979
  style: {
21970
21980
  "display": "flex",
@@ -22081,9 +22091,9 @@ const _sfc_main$2 = {
22081
22091
  }
22082
22092
  let params = {};
22083
22093
  params.id = nodeId;
22084
- params.isReturnParent = false;
22085
- params.hasChildren = false;
22086
- params.hasPaths = false;
22094
+ params.isReturnParent = true;
22095
+ params.hasChildren = true;
22096
+ params.hasPaths = true;
22087
22097
  params.hasUsers = true;
22088
22098
  yield props2.idQueryNode(params, (node) => {
22089
22099
  receivedNodes = [...receivedNodes, ...node.children || []];
@@ -22104,6 +22114,10 @@ const _sfc_main$2 = {
22104
22114
  data2.selectedNodeIds = [];
22105
22115
  }
22106
22116
  data2.selectedNodes = yield ids2nodes2();
22117
+ if (!props2.multiple)
22118
+ emit2("select", data2.selectedNodes[0]);
22119
+ else
22120
+ emit2("select", data2.selectedNodes);
22107
22121
  }), {
22108
22122
  immediate: true
22109
22123
  });
@@ -17641,7 +17641,7 @@ var __async = (__this, __arguments, generator) => {
17641
17641
  });
17642
17642
  }
17643
17643
  }
17644
- var Input_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "[data-v-bdbdf60a] .label {\n color: #000 !important;\n}\n[data-v-bdbdf60a] .van-field__control:disabled {\n color: #000 !important;\n cursor: not-allowed;\n opacity: 1;\n -webkit-text-fill-color: #000;\n}")();
17644
+ var Input_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "[data-v-fcba0e18] .label {\n color: #000 !important;\n}\n[data-v-fcba0e18] .van-field__control:disabled {\n color: #000 !important;\n cursor: not-allowed;\n opacity: 1;\n -webkit-text-fill-color: #000;\n}")();
17645
17645
  const _hoisted_1$i = {
17646
17646
  style: {
17647
17647
  "display": "flex",
@@ -17761,10 +17761,11 @@ var __async = (__this, __arguments, generator) => {
17761
17761
  autosize: props.autosize,
17762
17762
  rules: vue.unref(rules)
17763
17763
  }, {
17764
- button: vue.withCtx(() => [vue.createVNode(_component_van_icon, {
17764
+ button: vue.withCtx(() => [!vue.unref(isGone) && !vue.unref(isReadonly) && !vue.unref(isDisabled) ? (vue.openBlock(), vue.createBlock(_component_van_icon, {
17765
+ key: 0,
17765
17766
  name: "plus",
17766
17767
  onClick: onCalc
17767
- })]),
17768
+ })) : vue.createCommentVNode("", true)]),
17768
17769
  _: 1
17769
17770
  }, 8, ["label", "modelValue", "disabled", "required", "placeholder", "type", "rows", "autosize", "rules"])) : vue.createCommentVNode("", true), vue.createVNode(_component_van_popup, {
17770
17771
  show: data.isShowPop,
@@ -17808,7 +17809,7 @@ var __async = (__this, __arguments, generator) => {
17808
17809
  };
17809
17810
  }
17810
17811
  };
17811
- var Input = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-bdbdf60a"]]);
17812
+ var Input = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-fcba0e18"]]);
17812
17813
  var SinglePicker_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "[data-v-3ae83b36] .label {\n color: #000 !important;\n}\n[data-v-3ae83b36] .van-field__control:disabled {\n color: #000 !important;\n cursor: not-allowed;\n opacity: 1;\n -webkit-text-fill-color: #000;\n}")();
17813
17814
  const _sfc_main$r = {
17814
17815
  __name: "SinglePicker",
@@ -21638,8 +21639,8 @@ var __async = (__this, __arguments, generator) => {
21638
21639
  }
21639
21640
  };
21640
21641
  var TreePicker = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-ebc14630"]]);
21641
- var CascaderPop_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "\n.cascader-pop[data-v-1f4b2244] {\r\n width: 100%;\r\n overflow: hidden;\n}\n.cascader-selector[data-v-1f4b2244] {\r\n padding: 10px;\n}\n.search-buttons[data-v-1f4b2244] {\r\n display: flex;\r\n gap: 10px;\n}\n.clear-btn[data-v-1f4b2244] {\r\n background-color: #f2f3f5;\r\n border: none;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 14px;\n}\n.confirm-btn[data-v-1f4b2244] {\r\n background-color: #1989fa;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 14px;\n}\n.no-results[data-v-1f4b2244] {\r\n text-align: center;\r\n padding: 20px;\r\n color: #969799;\n}\n.cascader-header[data-v-1f4b2244] {\r\n padding: 10px;\r\n border-bottom: 1px solid #ebedf0;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\n}\n.current-path[data-v-1f4b2244] {\r\n flex: 1;\r\n font-size: 14px;\r\n margin-left: 5px;\r\n color: #323233;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\n}\n.header-right[data-v-1f4b2244] {\r\n display: flex;\r\n gap: 8px;\r\n margin-left: auto;\n}\n.cancel-btn[data-v-1f4b2244] {\r\n color: #969799;\r\n margin-right: 5px;\n}\n.scroll-container[data-v-1f4b2244] {\r\n height: calc(80vh - 150px);\r\n overflow-y: auto;\n}\n.cell-content[data-v-1f4b2244] {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\n}\n.circle-selector[data-v-1f4b2244] {\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.2s;\r\n flex-shrink: 0;\n}\n.circle-selector.selected[data-v-1f4b2244] {\r\n background-color: #1989fa;\r\n border-color: #1989fa;\n}\n.circle-selector.selected .van-icon[data-v-1f4b2244] {\r\n color: white;\r\n font-size: 14px;\n}\n.van-cell__right-icon[data-v-1f4b2244] {\r\n color: #969799;\r\n font-size: 16px;\r\n margin-left: 8px;\n}\n.name[data-v-1f4b2244] {\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\n}\n.cancel-btn[data-v-1f4b2244] {\r\n color: #969799;\n}\n.search-field[data-v-1f4b2244] {\r\n background: #fff;\r\n padding: 10px 16px;\r\n border-bottom: 1px solid #ebedf0;\r\n position: sticky;\r\n top: 0;\r\n z-index: 999;\r\n margin-bottom: 10px;\r\n flex-shrink: 0;\r\n /* \u9632\u6B62\u538B\u7F29 */\n}\r\n")();
21642
- const _withScopeId = (n) => (vue.pushScopeId("data-v-1f4b2244"), n = n(), vue.popScopeId(), n);
21642
+ var CascaderPop_vue_vue_type_style_index_0_scoped_true_lang = /* @__PURE__ */ (() => "\n.cascader-pop[data-v-0a051cd5] {\r\n width: 100%;\r\n overflow: hidden;\n}\n.cascader-selector[data-v-0a051cd5] {\r\n padding: 10px;\n}\n.search-buttons[data-v-0a051cd5] {\r\n display: flex;\r\n gap: 10px;\n}\n.clear-btn[data-v-0a051cd5] {\r\n background-color: #f2f3f5;\r\n border: none;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 14px;\n}\n.confirm-btn[data-v-0a051cd5] {\r\n background-color: #1989fa;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 14px;\n}\n.no-results[data-v-0a051cd5] {\r\n text-align: center;\r\n padding: 20px;\r\n color: #969799;\n}\n.cascader-header[data-v-0a051cd5] {\r\n padding: 10px;\r\n border-bottom: 1px solid #ebedf0;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\n}\n.current-path[data-v-0a051cd5] {\r\n flex: 1;\r\n font-size: 14px;\r\n margin-left: 5px;\r\n color: #323233;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\n}\n.header-right[data-v-0a051cd5] {\r\n display: flex;\r\n gap: 8px;\r\n margin-left: auto;\n}\n.cancel-btn[data-v-0a051cd5] {\r\n color: #969799;\r\n margin-right: 5px;\n}\n.scroll-container[data-v-0a051cd5] {\r\n height: calc(80vh - 150px);\r\n overflow-y: auto;\n}\n.cell-content[data-v-0a051cd5] {\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\n}\n.circle-selector[data-v-0a051cd5] {\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition: all 0.2s;\r\n flex-shrink: 0;\n}\n.circle-selector.selected[data-v-0a051cd5] {\r\n background-color: #1989fa;\r\n border-color: #1989fa;\n}\n.circle-selector.selected .van-icon[data-v-0a051cd5] {\r\n color: white;\r\n font-size: 14px;\n}\n.van-cell__right-icon[data-v-0a051cd5] {\r\n color: #969799;\r\n font-size: 16px;\r\n margin-left: 8px;\n}\n.name[data-v-0a051cd5] {\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\n}\n.cancel-btn[data-v-0a051cd5] {\r\n color: #969799;\n}\n.search-field[data-v-0a051cd5] {\r\n background: #fff;\r\n padding: 10px 16px;\r\n border-bottom: 1px solid #ebedf0;\r\n position: sticky;\r\n top: 0;\r\n z-index: 999;\r\n margin-bottom: 10px;\r\n flex-shrink: 0;\r\n /* \u9632\u6B62\u538B\u7F29 */\n}\r\n")();
21643
+ const _withScopeId = (n) => (vue.pushScopeId("data-v-0a051cd5"), n = n(), vue.popScopeId(), n);
21643
21644
  const _hoisted_1$3 = {
21644
21645
  class: "cascader-selector"
21645
21646
  };
@@ -21783,22 +21784,31 @@ var __async = (__this, __arguments, generator) => {
21783
21784
  const ids2nodes2 = () => __async(this, null, function* () {
21784
21785
  if (!data2.selectedNodeIds || data2.selectedNodeIds.length < 1)
21785
21786
  return [];
21786
- let promises = data2.selectedNodeIds.map((nodeId) => __async(this, null, function* () {
21787
+ let ids = data2.selectedNodeIds;
21788
+ let res = [];
21789
+ let receivedNodes = [];
21790
+ for (var i = 0; i < ids.length; i++) {
21791
+ let nodeId = ids[i];
21792
+ let selectNode = null;
21793
+ selectNode = util.findNode(nodeId, receivedNodes);
21794
+ if (selectNode) {
21795
+ res = [...res, selectNode];
21796
+ continue;
21797
+ }
21787
21798
  let params = {};
21788
21799
  params.id = nodeId;
21789
21800
  params.isReturnParent = true;
21790
- params.hasChildren = false;
21801
+ params.hasChildren = true;
21791
21802
  params.hasPaths = true;
21792
21803
  params.hasUsers = true;
21793
- let selectNode = null;
21794
21804
  yield props2.idQueryNode(params, (node) => {
21795
- data2.parentNode = node;
21796
- selectNode = util.findNode(nodeId, data2.parentNode.children);
21805
+ receivedNodes = [...receivedNodes, ...node.children || []];
21806
+ selectNode = util.findNode(nodeId, receivedNodes);
21797
21807
  });
21798
- return selectNode;
21799
- }));
21800
- let selectNodes = yield Promise.all(promises);
21801
- return selectNodes;
21808
+ if (selectNode)
21809
+ res = [...res, selectNode];
21810
+ }
21811
+ return res;
21802
21812
  });
21803
21813
  const onSubmit2 = () => __async(this, null, function* () {
21804
21814
  if (!data2.selectedNodeIds || data2.selectedNodeIds.length < 1) {
@@ -21967,7 +21977,7 @@ var __async = (__this, __arguments, generator) => {
21967
21977
  };
21968
21978
  }
21969
21979
  };
21970
- var CascaderPop = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-1f4b2244"]]);
21980
+ var CascaderPop = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-0a051cd5"]]);
21971
21981
  const _hoisted_1$2 = {
21972
21982
  style: {
21973
21983
  "display": "flex",
@@ -22084,9 +22094,9 @@ var __async = (__this, __arguments, generator) => {
22084
22094
  }
22085
22095
  let params = {};
22086
22096
  params.id = nodeId;
22087
- params.isReturnParent = false;
22088
- params.hasChildren = false;
22089
- params.hasPaths = false;
22097
+ params.isReturnParent = true;
22098
+ params.hasChildren = true;
22099
+ params.hasPaths = true;
22090
22100
  params.hasUsers = true;
22091
22101
  yield props2.idQueryNode(params, (node) => {
22092
22102
  receivedNodes = [...receivedNodes, ...node.children || []];
@@ -22107,6 +22117,10 @@ var __async = (__this, __arguments, generator) => {
22107
22117
  data2.selectedNodeIds = [];
22108
22118
  }
22109
22119
  data2.selectedNodes = yield ids2nodes2();
22120
+ if (!props2.multiple)
22121
+ emit2("select", data2.selectedNodes[0]);
22122
+ else
22123
+ emit2("select", data2.selectedNodes);
22110
22124
  }), {
22111
22125
  immediate: true
22112
22126
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "widget.qw",
3
3
  "private": false,
4
- "version": "1.1.3",
4
+ "version": "1.1.5",
5
5
  "description": "marqstree Vue3组件库",
6
6
  "main": "build/widget.qw.es.js",
7
7
  "keywords": [
@@ -74,6 +74,8 @@ const props = defineProps({
74
74
  const data = reactive({
75
75
  isShowPop: false,
76
76
  selectedNodes: [],
77
+ //1)单选时,记录选中的临时节点id
78
+ //2)多选时,记录选中的临时节点id列表
77
79
  selectedNodeIds: null
78
80
  })
79
81
 
@@ -145,9 +147,9 @@ const ids2nodes = async () => {
145
147
 
146
148
  let params = {}
147
149
  params.id = nodeId
148
- params.isReturnParent = false
149
- params.hasChildren = false
150
- params.hasPaths = false
150
+ params.isReturnParent = true
151
+ params.hasChildren = true
152
+ params.hasPaths = true
151
153
  params.hasUsers = true
152
154
 
153
155
  await props.idQueryNode(params, (node) => {
@@ -173,7 +175,13 @@ watch(() => JSON.stringify(modelValue.value), async (n, o) => {
173
175
  data.selectedNodeIds = []
174
176
  }
175
177
 
178
+ //记录选中的节点对象列表
179
+ //单选时,数组只含一个元素
176
180
  data.selectedNodes = await ids2nodes()
181
+ if(!props.multiple)
182
+ emit('select', data.selectedNodes[0])
183
+ else
184
+ emit('select', data.selectedNodes)
177
185
  }, {
178
186
  immediate: true
179
187
  })
@@ -185,27 +185,45 @@ const ids2nodes = async () => {
185
185
  if (!data.selectedNodeIds || data.selectedNodeIds.length < 1)
186
186
  return []
187
187
 
188
- let promises = data.selectedNodeIds.map(async (nodeId) => {
188
+ let ids = data.selectedNodeIds
189
+
190
+ let res = []
191
+
192
+ //记录网络请求接收到的所有用户列表
193
+ let receivedNodes = []
194
+ for (var i = 0; i < ids.length; i++) {
195
+ let nodeId = ids[i]
196
+
197
+ let selectNode = null
198
+
199
+ //现在历史用户列表中查找
200
+ //找不到再发网络请求
201
+ selectNode = util.findNode(nodeId, receivedNodes)
202
+ if (selectNode){
203
+ res = [...res, selectNode]
204
+ continue
205
+ }
206
+
189
207
  let params = {}
190
208
  params.id = nodeId
191
209
  params.isReturnParent = true
192
- params.hasChildren = false
210
+ params.hasChildren = true
193
211
  params.hasPaths = true
194
212
  params.hasUsers = true
195
213
 
196
- let selectNode = null
197
214
  await props.idQueryNode(params, (node) => {
198
- data.parentNode = node
199
- selectNode = util.findNode(nodeId, data.parentNode.children)
215
+ receivedNodes = [...receivedNodes, ...(node.children || [])]
216
+ selectNode = util.findNode(nodeId, receivedNodes)
200
217
  })
201
- return selectNode
202
- })
203
-
204
- let selectNodes = await Promise.all(promises)
218
+
219
+ if (selectNode)
220
+ res = [...res, selectNode]
221
+ }
205
222
 
206
- return selectNodes
223
+ return res
207
224
  }
208
225
 
226
+
209
227
  // 确认按钮
210
228
  const onSubmit = async () => {
211
229
  if (!data.selectedNodeIds || data.selectedNodeIds.length < 1) {
@@ -5,7 +5,7 @@
5
5
  :rows="props.rows" :autosize="props.autosize" :rules="rules">
6
6
  <!-- 右侧插槽按钮 -->
7
7
  <template #button>
8
- <van-icon name="plus" @click="onCalc" />
8
+ <van-icon v-if="!isGone && !isReadonly && !isDisabled" name="plus" @click="onCalc" />
9
9
  </template>
10
10
  </van-field>
11
11
  <van-popup v-model:show="data.isShowPop" position="bottom" round style="padding: 25px 15px;">
Binary file
@@ -9,7 +9,7 @@
9
9
  import { onMounted, reactive, watch } from "vue";
10
10
 
11
11
  const data = reactive({
12
- auth:'require',
12
+ auth:'readonly',
13
13
  text: -9,
14
14
  type: 'number',
15
15
  rows: 1,