persagy-vant 0.0.44 → 0.0.45
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/es/index.d.ts +1 -1
- package/es/index.mjs +1 -1
- package/es/location-select/LocationSelect.d.ts +19 -1
- package/es/location-select/LocationSelect.mjs +123 -19
- package/es/location-select/index.css +1 -1
- package/es/location-select/index.d.ts +14 -1
- package/es/location-select/index.less +1 -0
- package/es/location-select/style/index.mjs +1 -0
- package/es/location-select/style/less.mjs +1 -0
- package/es/location-select/types.d.ts +2 -0
- package/es/location-select/types.mjs +0 -0
- package/es/material-add/MaterialAdd.d.ts +19 -2
- package/es/material-add/MaterialAdd.mjs +99 -8
- package/es/material-add/index.css +1 -1
- package/es/material-add/index.d.ts +14 -2
- package/es/material-add/index.less +1 -1
- package/es/material-add/style/index.mjs +1 -0
- package/es/material-add/style/less.mjs +1 -0
- package/es/material-add/types.d.ts +7 -6
- package/es/object-select/ObjectSelect.d.ts +19 -2
- package/es/object-select/ObjectSelect.mjs +140 -20
- package/es/object-select/index.css +1 -1
- package/es/object-select/index.d.ts +14 -2
- package/es/object-select/index.less +1 -0
- package/es/object-select/style/index.mjs +1 -0
- package/es/object-select/style/less.mjs +1 -0
- package/es/object-select/types.d.ts +1 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.less +2 -2
- package/lib/location-select/LocationSelect.d.ts +19 -1
- package/lib/location-select/LocationSelect.js +121 -17
- package/lib/location-select/index.css +1 -1
- package/lib/location-select/index.d.ts +14 -1
- package/lib/location-select/index.less +1 -0
- package/lib/location-select/style/index.js +1 -0
- package/lib/location-select/style/less.js +1 -0
- package/lib/location-select/types.d.ts +2 -0
- package/lib/location-select/types.js +15 -0
- package/lib/material-add/MaterialAdd.d.ts +19 -2
- package/lib/material-add/MaterialAdd.js +97 -6
- package/lib/material-add/index.css +1 -1
- package/lib/material-add/index.d.ts +14 -2
- package/lib/material-add/index.less +1 -1
- package/lib/material-add/style/index.js +1 -0
- package/lib/material-add/style/less.js +1 -0
- package/lib/material-add/types.d.ts +7 -6
- package/lib/object-select/ObjectSelect.d.ts +19 -2
- package/lib/object-select/ObjectSelect.js +138 -18
- package/lib/object-select/index.css +1 -1
- package/lib/object-select/index.d.ts +14 -2
- package/lib/object-select/index.less +1 -0
- package/lib/object-select/style/index.js +1 -0
- package/lib/object-select/style/less.js +1 -0
- package/lib/object-select/types.d.ts +1 -0
- package/lib/vant.cjs.js +353 -44
- package/lib/vant.es.js +353 -44
- package/lib/vant.js +353 -44
- package/lib/vant.min.js +1 -1
- package/lib/web-types.json +1 -1
- package/package.json +1 -1
- package/skills/use-persagy-vant/references/business-component-catalog.md +3 -3
package/lib/vant.es.js
CHANGED
|
@@ -13032,7 +13032,7 @@ var stdin_default$K = defineComponent({
|
|
|
13032
13032
|
}
|
|
13033
13033
|
});
|
|
13034
13034
|
const InfoCard = withInstall(stdin_default$K);
|
|
13035
|
-
var __async$
|
|
13035
|
+
var __async$5 = (__this, __arguments, generator) => {
|
|
13036
13036
|
return new Promise((resolve, reject) => {
|
|
13037
13037
|
var fulfilled = (value) => {
|
|
13038
13038
|
try {
|
|
@@ -13136,7 +13136,7 @@ var stdin_default$J = defineComponent({
|
|
|
13136
13136
|
emit("update:expandedKeys", next);
|
|
13137
13137
|
emit("expand", id, expanded);
|
|
13138
13138
|
};
|
|
13139
|
-
const toggleExpanded = (item) => __async$
|
|
13139
|
+
const toggleExpanded = (item) => __async$5(this, null, function* () {
|
|
13140
13140
|
const {
|
|
13141
13141
|
id
|
|
13142
13142
|
} = item;
|
|
@@ -13269,6 +13269,26 @@ var stdin_default$J = defineComponent({
|
|
|
13269
13269
|
});
|
|
13270
13270
|
const TreeSelect = withInstall(stdin_default$J);
|
|
13271
13271
|
var stdin_default$I = TreeSelect;
|
|
13272
|
+
var __async$4 = (__this, __arguments, generator) => {
|
|
13273
|
+
return new Promise((resolve, reject) => {
|
|
13274
|
+
var fulfilled = (value) => {
|
|
13275
|
+
try {
|
|
13276
|
+
step(generator.next(value));
|
|
13277
|
+
} catch (e) {
|
|
13278
|
+
reject(e);
|
|
13279
|
+
}
|
|
13280
|
+
};
|
|
13281
|
+
var rejected = (value) => {
|
|
13282
|
+
try {
|
|
13283
|
+
step(generator.throw(value));
|
|
13284
|
+
} catch (e) {
|
|
13285
|
+
reject(e);
|
|
13286
|
+
}
|
|
13287
|
+
};
|
|
13288
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
13289
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
13290
|
+
});
|
|
13291
|
+
};
|
|
13272
13292
|
const [name$A, bem$A] = createNamespace("location-select");
|
|
13273
13293
|
const locations = [[{
|
|
13274
13294
|
id: "basement",
|
|
@@ -13403,12 +13423,14 @@ const props$1 = {
|
|
|
13403
13423
|
type: Array,
|
|
13404
13424
|
default: () => locations
|
|
13405
13425
|
},
|
|
13406
|
-
tabTitles: makeArrayProp()
|
|
13426
|
+
tabTitles: makeArrayProp(),
|
|
13427
|
+
search: Function,
|
|
13428
|
+
searchDebounce: makeNumericProp(300)
|
|
13407
13429
|
};
|
|
13408
13430
|
var stdin_default$H = defineComponent({
|
|
13409
13431
|
name: name$A,
|
|
13410
13432
|
props: props$1,
|
|
13411
|
-
emits: ["update:show", "update:modelValue", "change"],
|
|
13433
|
+
emits: ["update:show", "update:modelValue", "change", "search-error"],
|
|
13412
13434
|
setup(props2, {
|
|
13413
13435
|
emit
|
|
13414
13436
|
}) {
|
|
@@ -13418,6 +13440,12 @@ var stdin_default$H = defineComponent({
|
|
|
13418
13440
|
const customValue = ref("");
|
|
13419
13441
|
const expandedKeys = ref(["basement", "b3"]);
|
|
13420
13442
|
const query = ref("");
|
|
13443
|
+
const asyncSearchResults = ref([]);
|
|
13444
|
+
const searchLoading = ref(false);
|
|
13445
|
+
const searchFailed = ref(false);
|
|
13446
|
+
const searchedItems = shallowReactive(/* @__PURE__ */ new Map());
|
|
13447
|
+
let searchTimer;
|
|
13448
|
+
let searchRequestId = 0;
|
|
13421
13449
|
const titles = computed(() => props2.tabTitles.length ? props2.tabTitles : ["ABC座地下室", "A座", "B座", "C座", "D座"]);
|
|
13422
13450
|
const allItems = computed(() => props2.items.flatMap(flatten));
|
|
13423
13451
|
const currentRoot = computed(() => {
|
|
@@ -13428,7 +13456,48 @@ var stdin_default$H = defineComponent({
|
|
|
13428
13456
|
var _a;
|
|
13429
13457
|
return ((_a = currentRoot.value) == null ? void 0 : _a.children) || [];
|
|
13430
13458
|
});
|
|
13431
|
-
const searchResults = computed(() =>
|
|
13459
|
+
const searchResults = computed(() => {
|
|
13460
|
+
if (!query.value.trim())
|
|
13461
|
+
return [];
|
|
13462
|
+
if (props2.search)
|
|
13463
|
+
return asyncSearchResults.value;
|
|
13464
|
+
return allItems.value.filter((item) => item.text.includes(query.value));
|
|
13465
|
+
});
|
|
13466
|
+
const runSearch = (..._0) => __async$4(this, [..._0], function* (keyword = query.value.trim()) {
|
|
13467
|
+
if (!props2.search || !keyword)
|
|
13468
|
+
return;
|
|
13469
|
+
const requestId = ++searchRequestId;
|
|
13470
|
+
searchLoading.value = true;
|
|
13471
|
+
searchFailed.value = false;
|
|
13472
|
+
try {
|
|
13473
|
+
const results = yield props2.search(keyword);
|
|
13474
|
+
if (requestId !== searchRequestId)
|
|
13475
|
+
return;
|
|
13476
|
+
asyncSearchResults.value = results;
|
|
13477
|
+
results.forEach((item) => searchedItems.set(item.id, item));
|
|
13478
|
+
} catch (error) {
|
|
13479
|
+
if (requestId !== searchRequestId)
|
|
13480
|
+
return;
|
|
13481
|
+
asyncSearchResults.value = [];
|
|
13482
|
+
searchFailed.value = true;
|
|
13483
|
+
emit("search-error", keyword, error);
|
|
13484
|
+
} finally {
|
|
13485
|
+
if (requestId === searchRequestId)
|
|
13486
|
+
searchLoading.value = false;
|
|
13487
|
+
}
|
|
13488
|
+
});
|
|
13489
|
+
const scheduleSearch = () => {
|
|
13490
|
+
if (searchTimer)
|
|
13491
|
+
clearTimeout(searchTimer);
|
|
13492
|
+
searchRequestId += 1;
|
|
13493
|
+
searchLoading.value = false;
|
|
13494
|
+
searchFailed.value = false;
|
|
13495
|
+
asyncSearchResults.value = [];
|
|
13496
|
+
if (props2.search && query.value.trim()) {
|
|
13497
|
+
searchTimer = setTimeout(runSearch, Number(props2.searchDebounce));
|
|
13498
|
+
}
|
|
13499
|
+
};
|
|
13500
|
+
watch([query, () => props2.search], scheduleSearch);
|
|
13432
13501
|
watch(() => props2.show, (show) => {
|
|
13433
13502
|
if (show) {
|
|
13434
13503
|
active.value = 0;
|
|
@@ -13436,11 +13505,16 @@ var stdin_default$H = defineComponent({
|
|
|
13436
13505
|
expandedKeys.value = ["basement", "b3"];
|
|
13437
13506
|
}
|
|
13438
13507
|
});
|
|
13508
|
+
onBeforeUnmount(() => {
|
|
13509
|
+
searchRequestId += 1;
|
|
13510
|
+
if (searchTimer)
|
|
13511
|
+
clearTimeout(searchTimer);
|
|
13512
|
+
});
|
|
13439
13513
|
const close = () => emit("update:show", false);
|
|
13440
13514
|
const select = (value) => {
|
|
13441
13515
|
const selected = value[0];
|
|
13442
13516
|
if (selected !== void 0) {
|
|
13443
|
-
const selectedItem = allItems.value.find((item) => item.id === selected);
|
|
13517
|
+
const selectedItem = allItems.value.find((item) => item.id === selected) || searchedItems.get(selected);
|
|
13444
13518
|
emit("update:modelValue", selected);
|
|
13445
13519
|
emit("change", selected, selectedItem == null ? void 0 : selectedItem.text);
|
|
13446
13520
|
close();
|
|
@@ -13455,6 +13529,37 @@ var stdin_default$H = defineComponent({
|
|
|
13455
13529
|
showCustom.value = false;
|
|
13456
13530
|
close();
|
|
13457
13531
|
};
|
|
13532
|
+
const renderSearchContent = () => {
|
|
13533
|
+
if (searchLoading.value)
|
|
13534
|
+
return createVNode("div", {
|
|
13535
|
+
"class": bem$A("search-state")
|
|
13536
|
+
}, [createVNode(Loading, {
|
|
13537
|
+
"vertical": true
|
|
13538
|
+
}, {
|
|
13539
|
+
default: () => [createTextVNode("加载中...")]
|
|
13540
|
+
})]);
|
|
13541
|
+
if (searchFailed.value)
|
|
13542
|
+
return createVNode(Empty, {
|
|
13543
|
+
"image": "network",
|
|
13544
|
+
"description": "搜索失败,请重试"
|
|
13545
|
+
}, null);
|
|
13546
|
+
if (!searchResults.value.length)
|
|
13547
|
+
return createVNode(Empty, {
|
|
13548
|
+
"description": "暂无搜索结果"
|
|
13549
|
+
}, null);
|
|
13550
|
+
return createVNode("div", {
|
|
13551
|
+
"class": bem$A("card")
|
|
13552
|
+
}, [searchResults.value.map((item, index) => createVNode(Cell, {
|
|
13553
|
+
"key": item.id,
|
|
13554
|
+
"title": item.text,
|
|
13555
|
+
"rightSelect": props2.modelValue === item.id,
|
|
13556
|
+
"selectType": "radio",
|
|
13557
|
+
"border": index < searchResults.value.length - 1,
|
|
13558
|
+
"clickable": true,
|
|
13559
|
+
"onClick": () => select([item.id]),
|
|
13560
|
+
"onUpdate:rightSelect": () => select([item.id])
|
|
13561
|
+
}, null))]);
|
|
13562
|
+
};
|
|
13458
13563
|
return () => createVNode(ActionSheet, {
|
|
13459
13564
|
"show": props2.show,
|
|
13460
13565
|
"class": bem$A(),
|
|
@@ -13485,23 +13590,20 @@ var stdin_default$H = defineComponent({
|
|
|
13485
13590
|
"modelValue": query.value,
|
|
13486
13591
|
"onUpdate:modelValue": ($event) => query.value = $event,
|
|
13487
13592
|
"class": bem$A("search"),
|
|
13593
|
+
"variant": "pure",
|
|
13488
13594
|
"shape": "round",
|
|
13489
13595
|
"inputAlign": "left",
|
|
13490
|
-
"placeholder": "请输入搜索关键词"
|
|
13596
|
+
"placeholder": "请输入搜索关键词",
|
|
13597
|
+
"onSearch": () => {
|
|
13598
|
+
if (props2.search) {
|
|
13599
|
+
if (searchTimer)
|
|
13600
|
+
clearTimeout(searchTimer);
|
|
13601
|
+
runSearch();
|
|
13602
|
+
}
|
|
13603
|
+
}
|
|
13491
13604
|
}, null), query.value ? createVNode("div", {
|
|
13492
13605
|
"class": bem$A("body")
|
|
13493
|
-
}, [createVNode(
|
|
13494
|
-
"class": bem$A("card")
|
|
13495
|
-
}, [searchResults.value.map((item) => createVNode(Cell, {
|
|
13496
|
-
"key": item.id,
|
|
13497
|
-
"title": item.text,
|
|
13498
|
-
"rightSelect": props2.modelValue === item.id,
|
|
13499
|
-
"selectType": "radio",
|
|
13500
|
-
"border": true,
|
|
13501
|
-
"clickable": true,
|
|
13502
|
-
"onClick": () => select([item.id]),
|
|
13503
|
-
"onUpdate:rightSelect": () => select([item.id])
|
|
13504
|
-
}, null))])]) : createVNode(Fragment, null, [createVNode(Tabs, {
|
|
13606
|
+
}, [renderSearchContent()]) : createVNode(Fragment, null, [createVNode(Tabs, {
|
|
13505
13607
|
"active": active.value,
|
|
13506
13608
|
"onUpdate:active": ($event) => active.value = $event,
|
|
13507
13609
|
"showMore": showMore.value,
|
|
@@ -14169,6 +14271,26 @@ var stdin_default$D = defineComponent({
|
|
|
14169
14271
|
});
|
|
14170
14272
|
const MaterialDetail = withInstall(stdin_default$D);
|
|
14171
14273
|
var stdin_default$C = MaterialDetail;
|
|
14274
|
+
var __async$3 = (__this, __arguments, generator) => {
|
|
14275
|
+
return new Promise((resolve, reject) => {
|
|
14276
|
+
var fulfilled = (value) => {
|
|
14277
|
+
try {
|
|
14278
|
+
step(generator.next(value));
|
|
14279
|
+
} catch (e) {
|
|
14280
|
+
reject(e);
|
|
14281
|
+
}
|
|
14282
|
+
};
|
|
14283
|
+
var rejected = (value) => {
|
|
14284
|
+
try {
|
|
14285
|
+
step(generator.throw(value));
|
|
14286
|
+
} catch (e) {
|
|
14287
|
+
reject(e);
|
|
14288
|
+
}
|
|
14289
|
+
};
|
|
14290
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
14291
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
14292
|
+
});
|
|
14293
|
+
};
|
|
14172
14294
|
const [name$w, bem$w] = createNamespace("material-add");
|
|
14173
14295
|
const defaultItems = [{
|
|
14174
14296
|
id: "refrigerant",
|
|
@@ -14476,12 +14598,14 @@ const materialAddProps = {
|
|
|
14476
14598
|
commonTabText: makeStringProp("常用物料"),
|
|
14477
14599
|
allTabText: makeStringProp("全部物料"),
|
|
14478
14600
|
materialTabText: makeStringProp("物资"),
|
|
14479
|
-
toolTabText: makeStringProp("工具")
|
|
14601
|
+
toolTabText: makeStringProp("工具"),
|
|
14602
|
+
search: Function,
|
|
14603
|
+
searchDebounce: makeNumericProp(300)
|
|
14480
14604
|
};
|
|
14481
14605
|
var stdin_default$B = defineComponent({
|
|
14482
14606
|
name: name$w,
|
|
14483
14607
|
props: materialAddProps,
|
|
14484
|
-
emits: ["update:show", "update:modelValue", "change", "confirm"],
|
|
14608
|
+
emits: ["update:show", "update:modelValue", "change", "confirm", "search-error"],
|
|
14485
14609
|
setup(props2, {
|
|
14486
14610
|
emit
|
|
14487
14611
|
}) {
|
|
@@ -14497,6 +14621,10 @@ var stdin_default$B = defineComponent({
|
|
|
14497
14621
|
const activeKind = ref(getDefaultKind());
|
|
14498
14622
|
const keyword = ref("");
|
|
14499
14623
|
const searching = ref(false);
|
|
14624
|
+
const searchLoading = ref(false);
|
|
14625
|
+
const searchFailed = ref(false);
|
|
14626
|
+
let searchTimer;
|
|
14627
|
+
let searchRequestId = 0;
|
|
14500
14628
|
const expandedKeys = ref([]);
|
|
14501
14629
|
const expandedSelected = ref(false);
|
|
14502
14630
|
const detailItem = ref();
|
|
@@ -14568,6 +14696,11 @@ var stdin_default$B = defineComponent({
|
|
|
14568
14696
|
activeTab.value = getDefaultTab();
|
|
14569
14697
|
activeKind.value = getDefaultKind();
|
|
14570
14698
|
keyword.value = "";
|
|
14699
|
+
searchLoading.value = false;
|
|
14700
|
+
searchFailed.value = false;
|
|
14701
|
+
searchRequestId += 1;
|
|
14702
|
+
if (searchTimer)
|
|
14703
|
+
clearTimeout(searchTimer);
|
|
14571
14704
|
searching.value = false;
|
|
14572
14705
|
expandedKeys.value = getDefaultExpandedKeys();
|
|
14573
14706
|
expandedSelected.value = false;
|
|
@@ -14585,6 +14718,40 @@ var stdin_default$B = defineComponent({
|
|
|
14585
14718
|
expandedKeys.value = getDefaultExpandedKeys();
|
|
14586
14719
|
}
|
|
14587
14720
|
});
|
|
14721
|
+
const runSearch = (..._0) => __async$3(this, [..._0], function* (query = keyword.value.trim()) {
|
|
14722
|
+
if (!props2.search || !query)
|
|
14723
|
+
return;
|
|
14724
|
+
const requestId = ++searchRequestId;
|
|
14725
|
+
searchLoading.value = true;
|
|
14726
|
+
searchFailed.value = false;
|
|
14727
|
+
try {
|
|
14728
|
+
yield props2.search(query);
|
|
14729
|
+
} catch (error) {
|
|
14730
|
+
if (requestId !== searchRequestId)
|
|
14731
|
+
return;
|
|
14732
|
+
searchFailed.value = true;
|
|
14733
|
+
emit("search-error", query, error);
|
|
14734
|
+
} finally {
|
|
14735
|
+
if (requestId === searchRequestId)
|
|
14736
|
+
searchLoading.value = false;
|
|
14737
|
+
}
|
|
14738
|
+
});
|
|
14739
|
+
const scheduleSearch = () => {
|
|
14740
|
+
if (searchTimer)
|
|
14741
|
+
clearTimeout(searchTimer);
|
|
14742
|
+
searchRequestId += 1;
|
|
14743
|
+
searchLoading.value = false;
|
|
14744
|
+
searchFailed.value = false;
|
|
14745
|
+
if (props2.search && keyword.value.trim()) {
|
|
14746
|
+
searchTimer = setTimeout(runSearch, Number(props2.searchDebounce));
|
|
14747
|
+
}
|
|
14748
|
+
};
|
|
14749
|
+
watch([keyword, () => props2.search], scheduleSearch);
|
|
14750
|
+
onBeforeUnmount(() => {
|
|
14751
|
+
searchRequestId += 1;
|
|
14752
|
+
if (searchTimer)
|
|
14753
|
+
clearTimeout(searchTimer);
|
|
14754
|
+
});
|
|
14588
14755
|
const setActiveTab = (tab) => {
|
|
14589
14756
|
activeTab.value = tab;
|
|
14590
14757
|
if (tab === "all") {
|
|
@@ -14651,9 +14818,25 @@ var stdin_default$B = defineComponent({
|
|
|
14651
14818
|
}, null);
|
|
14652
14819
|
const renderList = () => createVNode("div", {
|
|
14653
14820
|
"class": bem$w("material-list")
|
|
14654
|
-
}, [visibleItems.value.length ? visibleItems.value.map((item) => renderMaterialCell(item, props2.items.indexOf(item))) : createVNode(
|
|
14655
|
-
"
|
|
14656
|
-
},
|
|
14821
|
+
}, [visibleItems.value.length ? visibleItems.value.map((item) => renderMaterialCell(item, props2.items.indexOf(item))) : createVNode(Empty, {
|
|
14822
|
+
"description": "暂无匹配物料"
|
|
14823
|
+
}, null)]);
|
|
14824
|
+
const renderSearchContent = () => {
|
|
14825
|
+
if (searchLoading.value)
|
|
14826
|
+
return createVNode("div", {
|
|
14827
|
+
"class": bem$w("search-state")
|
|
14828
|
+
}, [createVNode(Loading, {
|
|
14829
|
+
"vertical": true
|
|
14830
|
+
}, {
|
|
14831
|
+
default: () => [createTextVNode("加载中...")]
|
|
14832
|
+
})]);
|
|
14833
|
+
if (searchFailed.value)
|
|
14834
|
+
return createVNode(Empty, {
|
|
14835
|
+
"image": "network",
|
|
14836
|
+
"description": "搜索失败,请重试"
|
|
14837
|
+
}, null);
|
|
14838
|
+
return renderList();
|
|
14839
|
+
};
|
|
14657
14840
|
const renderCatalog = () => {
|
|
14658
14841
|
const catalogItems = getCatalogItems();
|
|
14659
14842
|
const defaultExpandedKeys = getDefaultExpandedKeys();
|
|
@@ -14710,11 +14893,19 @@ var stdin_default$B = defineComponent({
|
|
|
14710
14893
|
"modelValue": keyword.value,
|
|
14711
14894
|
"onUpdate:modelValue": ($event) => keyword.value = $event,
|
|
14712
14895
|
"class": bem$w("search"),
|
|
14896
|
+
"variant": "pure",
|
|
14713
14897
|
"shape": "round",
|
|
14714
14898
|
"inputAlign": "left",
|
|
14715
14899
|
"autofocus": true,
|
|
14716
14900
|
"showAction": true,
|
|
14717
14901
|
"placeholder": "搜索物资/工具名称",
|
|
14902
|
+
"onSearch": () => {
|
|
14903
|
+
if (props2.search) {
|
|
14904
|
+
if (searchTimer)
|
|
14905
|
+
clearTimeout(searchTimer);
|
|
14906
|
+
runSearch();
|
|
14907
|
+
}
|
|
14908
|
+
},
|
|
14718
14909
|
"onCancel": () => {
|
|
14719
14910
|
searching.value = false;
|
|
14720
14911
|
keyword.value = "";
|
|
@@ -14768,7 +14959,7 @@ var stdin_default$B = defineComponent({
|
|
|
14768
14959
|
default: () => [props2.toolTabText]
|
|
14769
14960
|
})])]), createVNode("div", {
|
|
14770
14961
|
"class": bem$w("body")
|
|
14771
|
-
}, [searching.value && !keyword.value.trim() ? null : searching.value
|
|
14962
|
+
}, [searching.value && !keyword.value.trim() ? null : searching.value ? renderSearchContent() : activeTab.value === "common" ? renderList() : renderCatalog()]), createVNode("div", {
|
|
14772
14963
|
"class": bem$w("footer")
|
|
14773
14964
|
}, [renderSelectPanel(), createVNode(BottomActionBar, {
|
|
14774
14965
|
"fixed": false,
|
|
@@ -15864,6 +16055,26 @@ var stdin_default$u = defineComponent({
|
|
|
15864
16055
|
}
|
|
15865
16056
|
});
|
|
15866
16057
|
const NumberKeyboard = withInstall(stdin_default$u);
|
|
16058
|
+
var __async$2 = (__this, __arguments, generator) => {
|
|
16059
|
+
return new Promise((resolve, reject) => {
|
|
16060
|
+
var fulfilled = (value) => {
|
|
16061
|
+
try {
|
|
16062
|
+
step(generator.next(value));
|
|
16063
|
+
} catch (e) {
|
|
16064
|
+
reject(e);
|
|
16065
|
+
}
|
|
16066
|
+
};
|
|
16067
|
+
var rejected = (value) => {
|
|
16068
|
+
try {
|
|
16069
|
+
step(generator.throw(value));
|
|
16070
|
+
} catch (e) {
|
|
16071
|
+
reject(e);
|
|
16072
|
+
}
|
|
16073
|
+
};
|
|
16074
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
16075
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
16076
|
+
});
|
|
16077
|
+
};
|
|
15867
16078
|
const [name$o, bem$o] = createNamespace("object-select");
|
|
15868
16079
|
const spaceItems = [{
|
|
15869
16080
|
id: "shenzhen-hq",
|
|
@@ -16220,13 +16431,15 @@ const objectSelectProps = {
|
|
|
16220
16431
|
type: Array,
|
|
16221
16432
|
default: () => specialties
|
|
16222
16433
|
},
|
|
16223
|
-
loadChildren: Function
|
|
16434
|
+
loadChildren: Function,
|
|
16435
|
+
search: Function,
|
|
16436
|
+
searchDebounce: makeNumericProp(300)
|
|
16224
16437
|
};
|
|
16225
16438
|
const flattenItems$1 = (items) => items.flatMap((item) => [item, ...item.children ? flattenItems$1(item.children) : []]);
|
|
16226
16439
|
var stdin_default$t = defineComponent({
|
|
16227
16440
|
name: name$o,
|
|
16228
16441
|
props: objectSelectProps,
|
|
16229
|
-
emits: ["update:show", "update:modelValue", "change", "confirm", "load", "load-error"],
|
|
16442
|
+
emits: ["update:show", "update:modelValue", "change", "confirm", "load", "load-error", "search-error"],
|
|
16230
16443
|
setup(props2, {
|
|
16231
16444
|
emit
|
|
16232
16445
|
}) {
|
|
@@ -16239,6 +16452,12 @@ var stdin_default$t = defineComponent({
|
|
|
16239
16452
|
const expandedSelected = ref(false);
|
|
16240
16453
|
const searching = ref(false);
|
|
16241
16454
|
const keyword = ref("");
|
|
16455
|
+
const asyncSearchResults = ref([]);
|
|
16456
|
+
const searchLoading = ref(false);
|
|
16457
|
+
const searchFailed = ref(false);
|
|
16458
|
+
const searchedItems = shallowReactive(/* @__PURE__ */ new Map());
|
|
16459
|
+
let searchTimer;
|
|
16460
|
+
let searchRequestId = 0;
|
|
16242
16461
|
const loadedChildren = shallowReactive(/* @__PURE__ */ new Map());
|
|
16243
16462
|
const getChildren = (item) => loadedChildren.get(item.id) || item.children || [];
|
|
16244
16463
|
const hydrateItems = (items) => items.map((item) => {
|
|
@@ -16260,6 +16479,12 @@ var stdin_default$t = defineComponent({
|
|
|
16260
16479
|
view.value = 0;
|
|
16261
16480
|
specialtyType.value = 0;
|
|
16262
16481
|
keyword.value = "";
|
|
16482
|
+
asyncSearchResults.value = [];
|
|
16483
|
+
searchLoading.value = false;
|
|
16484
|
+
searchFailed.value = false;
|
|
16485
|
+
searchRequestId += 1;
|
|
16486
|
+
if (searchTimer)
|
|
16487
|
+
clearTimeout(searchTimer);
|
|
16263
16488
|
searching.value = false;
|
|
16264
16489
|
expandedSelected.value = false;
|
|
16265
16490
|
expandedSpecialties.value = {
|
|
@@ -16272,13 +16497,64 @@ var stdin_default$t = defineComponent({
|
|
|
16272
16497
|
});
|
|
16273
16498
|
const selected = computed(() => props2.modelValue);
|
|
16274
16499
|
const allItems = computed(() => flattenItems$1(hydrateItems([...props2.spaceItems, ...props2.specialties.flatMap((specialty) => [...specialty.deviceItems, ...specialty.systemItems])])));
|
|
16275
|
-
const selectedItems = computed(() =>
|
|
16500
|
+
const selectedItems = computed(() => {
|
|
16501
|
+
const items = /* @__PURE__ */ new Map();
|
|
16502
|
+
allItems.value.forEach((item) => items.set(item.id, item));
|
|
16503
|
+
searchedItems.forEach((item) => items.set(item.id, item));
|
|
16504
|
+
return selected.value.flatMap((id) => {
|
|
16505
|
+
const item = items.get(id);
|
|
16506
|
+
return item ? [item] : [];
|
|
16507
|
+
});
|
|
16508
|
+
});
|
|
16276
16509
|
const searchResults = computed(() => {
|
|
16277
16510
|
const query = keyword.value.trim().toLowerCase();
|
|
16278
16511
|
if (!query)
|
|
16279
16512
|
return [];
|
|
16513
|
+
if (props2.search)
|
|
16514
|
+
return asyncSearchResults.value;
|
|
16280
16515
|
return allItems.value.filter((item) => item.text.toLowerCase().includes(query));
|
|
16281
16516
|
});
|
|
16517
|
+
const runSearch = (..._0) => __async$2(this, [..._0], function* (query = keyword.value.trim()) {
|
|
16518
|
+
if (!props2.search || !query)
|
|
16519
|
+
return;
|
|
16520
|
+
const requestId = ++searchRequestId;
|
|
16521
|
+
searchLoading.value = true;
|
|
16522
|
+
searchFailed.value = false;
|
|
16523
|
+
try {
|
|
16524
|
+
const results = yield props2.search(query);
|
|
16525
|
+
if (requestId !== searchRequestId)
|
|
16526
|
+
return;
|
|
16527
|
+
asyncSearchResults.value = results;
|
|
16528
|
+
results.forEach((item) => searchedItems.set(item.id, item));
|
|
16529
|
+
} catch (error) {
|
|
16530
|
+
if (requestId !== searchRequestId)
|
|
16531
|
+
return;
|
|
16532
|
+
asyncSearchResults.value = [];
|
|
16533
|
+
searchFailed.value = true;
|
|
16534
|
+
emit("search-error", query, error);
|
|
16535
|
+
} finally {
|
|
16536
|
+
if (requestId === searchRequestId)
|
|
16537
|
+
searchLoading.value = false;
|
|
16538
|
+
}
|
|
16539
|
+
});
|
|
16540
|
+
const scheduleSearch = () => {
|
|
16541
|
+
if (searchTimer)
|
|
16542
|
+
clearTimeout(searchTimer);
|
|
16543
|
+
searchRequestId += 1;
|
|
16544
|
+
searchLoading.value = false;
|
|
16545
|
+
searchFailed.value = false;
|
|
16546
|
+
asyncSearchResults.value = [];
|
|
16547
|
+
const query = keyword.value.trim();
|
|
16548
|
+
if (!props2.search || !query)
|
|
16549
|
+
return;
|
|
16550
|
+
searchTimer = setTimeout(runSearch, Number(props2.searchDebounce));
|
|
16551
|
+
};
|
|
16552
|
+
watch([keyword, () => props2.search], scheduleSearch);
|
|
16553
|
+
onBeforeUnmount(() => {
|
|
16554
|
+
searchRequestId += 1;
|
|
16555
|
+
if (searchTimer)
|
|
16556
|
+
clearTimeout(searchTimer);
|
|
16557
|
+
});
|
|
16282
16558
|
const renderHighlightedText = (text) => {
|
|
16283
16559
|
const query = keyword.value.trim();
|
|
16284
16560
|
if (!query)
|
|
@@ -16359,6 +16635,45 @@ var stdin_default$t = defineComponent({
|
|
|
16359
16635
|
}, null), expanded && renderTree(items)]);
|
|
16360
16636
|
};
|
|
16361
16637
|
const close = () => emit("update:show", false);
|
|
16638
|
+
const renderSearchContent = () => {
|
|
16639
|
+
if (!keyword.value.trim())
|
|
16640
|
+
return;
|
|
16641
|
+
if (searchLoading.value) {
|
|
16642
|
+
return createVNode("div", {
|
|
16643
|
+
"class": bem$o("search-state")
|
|
16644
|
+
}, [createVNode(Loading, {
|
|
16645
|
+
"vertical": true
|
|
16646
|
+
}, {
|
|
16647
|
+
default: () => [createTextVNode("加载中...")]
|
|
16648
|
+
})]);
|
|
16649
|
+
}
|
|
16650
|
+
if (searchFailed.value) {
|
|
16651
|
+
return createVNode(Empty, {
|
|
16652
|
+
"image": "network",
|
|
16653
|
+
"description": "搜索失败,请重试"
|
|
16654
|
+
}, null);
|
|
16655
|
+
}
|
|
16656
|
+
if (!searchResults.value.length) {
|
|
16657
|
+
return createVNode(Empty, {
|
|
16658
|
+
"description": "暂无搜索结果"
|
|
16659
|
+
}, null);
|
|
16660
|
+
}
|
|
16661
|
+
return createVNode("div", {
|
|
16662
|
+
"class": bem$o("tree-card", {
|
|
16663
|
+
search: true
|
|
16664
|
+
})
|
|
16665
|
+
}, [searchResults.value.map((item) => createVNode(Cell, {
|
|
16666
|
+
"key": item.id,
|
|
16667
|
+
"rightSelect": selected.value.includes(item.id),
|
|
16668
|
+
"selectType": "checkbox",
|
|
16669
|
+
"border": true,
|
|
16670
|
+
"clickable": true,
|
|
16671
|
+
"onClick": () => toggleSearchItem(item),
|
|
16672
|
+
"onUpdate:rightSelect": () => toggleSearchItem(item)
|
|
16673
|
+
}, {
|
|
16674
|
+
title: () => renderHighlightedText(item.text)
|
|
16675
|
+
}))]);
|
|
16676
|
+
};
|
|
16362
16677
|
return () => createVNode(ActionSheet, {
|
|
16363
16678
|
"show": props2.show,
|
|
16364
16679
|
"class": bem$o(),
|
|
@@ -16369,10 +16684,18 @@ var stdin_default$t = defineComponent({
|
|
|
16369
16684
|
"modelValue": keyword.value,
|
|
16370
16685
|
"onUpdate:modelValue": ($event) => keyword.value = $event,
|
|
16371
16686
|
"class": bem$o("search"),
|
|
16687
|
+
"variant": "pure",
|
|
16372
16688
|
"shape": "round",
|
|
16373
16689
|
"inputAlign": "left",
|
|
16374
16690
|
"autofocus": true,
|
|
16375
16691
|
"placeholder": "搜索对象",
|
|
16692
|
+
"onSearch": () => {
|
|
16693
|
+
if (props2.search) {
|
|
16694
|
+
if (searchTimer)
|
|
16695
|
+
clearTimeout(searchTimer);
|
|
16696
|
+
runSearch();
|
|
16697
|
+
}
|
|
16698
|
+
},
|
|
16376
16699
|
"onCancel": () => {
|
|
16377
16700
|
searching.value = false;
|
|
16378
16701
|
keyword.value = "";
|
|
@@ -16411,21 +16734,7 @@ var stdin_default$t = defineComponent({
|
|
|
16411
16734
|
}, null)]
|
|
16412
16735
|
})]), createVNode("div", {
|
|
16413
16736
|
"class": bem$o("body")
|
|
16414
|
-
}, [searching.value ?
|
|
16415
|
-
"class": bem$o("tree-card", {
|
|
16416
|
-
search: true
|
|
16417
|
-
})
|
|
16418
|
-
}, [searchResults.value.map((item) => createVNode(Cell, {
|
|
16419
|
-
"key": item.id,
|
|
16420
|
-
"rightSelect": selected.value.includes(item.id),
|
|
16421
|
-
"selectType": "checkbox",
|
|
16422
|
-
"border": true,
|
|
16423
|
-
"clickable": true,
|
|
16424
|
-
"onClick": () => toggleSearchItem(item),
|
|
16425
|
-
"onUpdate:rightSelect": () => toggleSearchItem(item)
|
|
16426
|
-
}, {
|
|
16427
|
-
title: () => renderHighlightedText(item.text)
|
|
16428
|
-
}))]) : view.value === 0 ? renderTree(props2.spaceItems) : createVNode(Fragment, null, [createVNode("div", {
|
|
16737
|
+
}, [searching.value ? renderSearchContent() : view.value === 0 ? renderTree(props2.spaceItems) : createVNode(Fragment, null, [createVNode("div", {
|
|
16429
16738
|
"class": bem$o("type-tabs")
|
|
16430
16739
|
}, [createVNode(FilterTag, {
|
|
16431
16740
|
"selected": specialtyType.value === 0,
|
|
@@ -21463,7 +21772,7 @@ const Lazyload = {
|
|
|
21463
21772
|
});
|
|
21464
21773
|
}
|
|
21465
21774
|
};
|
|
21466
|
-
const version = "0.0.
|
|
21775
|
+
const version = "0.0.45";
|
|
21467
21776
|
function install(app) {
|
|
21468
21777
|
const components = [
|
|
21469
21778
|
ActionBar,
|