workdesktop-ai 1.2.3 → 1.2.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/CHANGELOG.md +1 -0
- package/dist/api-button/index.mjs +1 -1
- package/dist/auto-complete/index.mjs +1 -1
- package/dist/checkbox-list/index.mjs +1 -1
- package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs → ApiButton.vue_vue_type_script_setup_true_lang-ZLHP9S_H.mjs} +2 -2
- package/dist/chunks/{ApiButton.vue_vue_type_script_setup_true_lang-3BjZSAPZ.mjs.map → ApiButton.vue_vue_type_script_setup_true_lang-ZLHP9S_H.mjs.map} +1 -1
- package/dist/chunks/{AutoComplete-C6Nxatvt.mjs → AutoComplete-BKWrR5pD.mjs} +2 -2
- package/dist/chunks/{AutoComplete-C6Nxatvt.mjs.map → AutoComplete-BKWrR5pD.mjs.map} +1 -1
- package/dist/chunks/{CheckboxList-5AEx33r5.mjs → CheckboxList-5o9E0Tzg.mjs} +2 -2
- package/dist/chunks/{CheckboxList-5AEx33r5.mjs.map → CheckboxList-5o9E0Tzg.mjs.map} +1 -1
- package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs → ConfirmButton.vue_vue_type_script_setup_true_lang-Cz1M6QsL.mjs} +2 -2
- package/dist/chunks/{ConfirmButton.vue_vue_type_script_setup_true_lang-CXYH1Rlc.mjs.map → ConfirmButton.vue_vue_type_script_setup_true_lang-Cz1M6QsL.mjs.map} +1 -1
- package/dist/chunks/{DataForm-C6VLTSOm.mjs → DataForm-Dvx6GxlR.mjs} +8 -7
- package/dist/chunks/{DataForm-C6VLTSOm.mjs.map → DataForm-Dvx6GxlR.mjs.map} +1 -1
- package/dist/chunks/{DataGrid-Dd7n5JM7.mjs → DataGrid-Cw3yXhmR.mjs} +3 -3
- package/dist/chunks/{DataGrid-Dd7n5JM7.mjs.map → DataGrid-Cw3yXhmR.mjs.map} +1 -1
- package/dist/chunks/{DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs → DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs} +2 -2
- package/dist/chunks/{DialogButton.vue_vue_type_script_setup_true_lang-CTXP79zc.mjs.map → DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs.map} +1 -1
- package/dist/chunks/{Drawer-ucXKUecL.mjs → Drawer-BzdohcBg.mjs} +96 -90
- package/dist/chunks/Drawer-BzdohcBg.mjs.map +1 -0
- package/dist/chunks/{DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs → DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs} +2 -2
- package/dist/chunks/{DrawerButton.vue_vue_type_script_setup_true_lang-DUda4p7_.mjs.map → DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs.map} +1 -1
- package/dist/chunks/{EditableGrid-CDeeVkaX.mjs → EditableGrid-Dr48XzLH.mjs} +6 -5
- package/dist/chunks/{EditableGrid-CDeeVkaX.mjs.map → EditableGrid-Dr48XzLH.mjs.map} +1 -1
- package/dist/chunks/Guide-AWaWvQoq.mjs +347 -0
- package/dist/chunks/Guide-AWaWvQoq.mjs.map +1 -0
- package/dist/chunks/Iframe-BB1Va2kZ.mjs +128 -0
- package/dist/chunks/Iframe-BB1Va2kZ.mjs.map +1 -0
- package/dist/chunks/{ImageUpload-CQA9XQ7Q.mjs → ImageUpload-DiJ16Aga.mjs} +5 -4
- package/dist/chunks/{ImageUpload-CQA9XQ7Q.mjs.map → ImageUpload-DiJ16Aga.mjs.map} +1 -1
- package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs → PromptButton.vue_vue_type_script_setup_true_lang-y_sfI324.mjs} +2 -2
- package/dist/chunks/{PromptButton.vue_vue_type_script_setup_true_lang-oYaMH-CI.mjs.map → PromptButton.vue_vue_type_script_setup_true_lang-y_sfI324.mjs.map} +1 -1
- package/dist/chunks/{RadioList-BUWcP_Pk.mjs → RadioList-CQJDixnr.mjs} +2 -2
- package/dist/chunks/{RadioList-BUWcP_Pk.mjs.map → RadioList-CQJDixnr.mjs.map} +1 -1
- package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-nel6vN12.mjs +63 -0
- package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-nel6vN12.mjs.map +1 -0
- package/dist/chunks/{Select-uvFy7_NU.mjs → Select-ByH7uxuS.mjs} +2 -2
- package/dist/chunks/{Select-uvFy7_NU.mjs.map → Select-ByH7uxuS.mjs.map} +1 -1
- package/dist/chunks/{Station-BTP0SbBg.mjs → Station-DDoJem4F.mjs} +150 -139
- package/dist/chunks/Station-DDoJem4F.mjs.map +1 -0
- package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs → Switch.vue_vue_type_script_setup_true_lang-DrSXmsj6.mjs} +2 -2
- package/dist/chunks/{Switch.vue_vue_type_script_setup_true_lang-DUhXAGs2.mjs.map → Switch.vue_vue_type_script_setup_true_lang-DrSXmsj6.mjs.map} +1 -1
- package/dist/chunks/Tips-B_18E4mc.mjs +71 -0
- package/dist/chunks/Tips-B_18E4mc.mjs.map +1 -0
- package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs → Upload.vue_vue_type_script_setup_true_lang-k-0PTz3l.mjs} +5 -4
- package/dist/chunks/{Upload.vue_vue_type_script_setup_true_lang-CHGCjpKK.mjs.map → Upload.vue_vue_type_script_setup_true_lang-k-0PTz3l.mjs.map} +1 -1
- package/dist/chunks/{Viewer-CjLSQTrw.mjs → Viewer-CmTaneb6.mjs} +2 -2
- package/dist/chunks/{Viewer-CjLSQTrw.mjs.map → Viewer-CmTaneb6.mjs.map} +1 -1
- package/dist/chunks/config-CDqjABpD.mjs +1378 -0
- package/dist/chunks/config-CDqjABpD.mjs.map +1 -0
- package/dist/chunks/http-CW9konD4.mjs +2774 -0
- package/dist/chunks/http-CW9konD4.mjs.map +1 -0
- package/dist/chunks/{useApiAction-DxVQWWxv.mjs → useApiAction-CQVmN1MH.mjs} +2 -2
- package/dist/chunks/{useApiAction-DxVQWWxv.mjs.map → useApiAction-CQVmN1MH.mjs.map} +1 -1
- package/dist/chunks/{useColumnSettings-BwG2V9xp.mjs → useColumnSettings-CIFQCmzT.mjs} +22 -21
- package/dist/chunks/{useColumnSettings-BwG2V9xp.mjs.map → useColumnSettings-CIFQCmzT.mjs.map} +1 -1
- package/dist/chunks/useConfig-ChIkE3Lz.mjs +23 -0
- package/dist/chunks/useConfig-ChIkE3Lz.mjs.map +1 -0
- package/dist/chunks/{useOptionsLoader-DEVCYhrp.mjs → useOptionsLoader-BUO0VTjH.mjs} +2 -2
- package/dist/chunks/{useOptionsLoader-DEVCYhrp.mjs.map → useOptionsLoader-BUO0VTjH.mjs.map} +1 -1
- package/dist/confirm-button/index.mjs +1 -1
- package/dist/data-form/index.mjs +1 -1
- package/dist/data-grid/index.mjs +1 -1
- package/dist/dialog-button/index.mjs +1 -1
- package/dist/drawer/index.mjs +1 -1
- package/dist/drawer/style.css +1 -1
- package/dist/drawer-button/index.mjs +1 -1
- package/dist/editable-grid/index.mjs +1 -1
- package/dist/guide/index.mjs +7 -0
- package/dist/guide/index.mjs.map +1 -0
- package/dist/guide/style.css +1 -0
- package/dist/iframe/index.mjs +1 -1
- package/dist/iframe/style.css +1 -1
- package/dist/image-upload/index.mjs +1 -1
- package/dist/index.esm.js +194 -189
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +25 -21
- package/dist/index.umd.js.map +1 -1
- package/dist/prompt-button/index.mjs +1 -1
- package/dist/radio-list/index.mjs +1 -1
- package/dist/requester/index.mjs +1 -1
- package/dist/select/index.mjs +1 -1
- package/dist/station/index.mjs +1 -1
- package/dist/station/style.css +1 -1
- package/dist/style.css +1 -1
- package/dist/switch/index.mjs +1 -1
- package/dist/tips/index.mjs +1 -1
- package/dist/tips/style.css +1 -1
- package/dist/types/src/components/buttons/ApiButton.vue.d.ts +3 -3
- package/dist/types/src/components/buttons/ConfirmButton.vue.d.ts +5 -5
- package/dist/types/src/components/buttons/DialogButton.vue.d.ts +3 -3
- package/dist/types/src/components/buttons/DrawerButton.vue.d.ts +4 -4
- package/dist/types/src/components/buttons/PopconfirmButton.vue.d.ts +6 -6
- package/dist/types/src/components/buttons/PromptButton.vue.d.ts +5 -5
- package/dist/types/src/components/buttons/RouteButton.vue.d.ts +1 -1
- package/dist/types/src/components/buttons/TipsButton.vue.d.ts +1 -1
- package/dist/types/src/components/containers/Drawer.vue.d.ts +4 -4
- package/dist/types/src/components/containers/Iframe.vue.d.ts +42 -0
- package/dist/types/src/components/data/datagrid/DataGrid.vue.d.ts +5 -5
- package/dist/types/src/components/data/editable-grid/EditableGrid.vue.d.ts +7 -7
- package/dist/types/src/components/data/viewer/Viewer.vue.d.ts +1 -1
- package/dist/types/src/components/form/FormItem.vue.d.ts +1 -1
- package/dist/types/src/components/form/SearchItem.vue.d.ts +1 -1
- package/dist/types/src/components/form/data-form/DataForm.vue.d.ts +10 -10
- package/dist/types/src/components/guide/Guide.vue.d.ts +116 -0
- package/dist/types/src/components/index.d.ts +2 -1
- package/dist/types/src/components/inputs/AutoComplete.vue.d.ts +6 -6
- package/dist/types/src/components/inputs/CheckboxList.vue.d.ts +6 -6
- package/dist/types/src/components/inputs/RadioList.vue.d.ts +6 -6
- package/dist/types/src/components/inputs/Select.vue.d.ts +6 -6
- package/dist/types/src/components/inputs/Switch.vue.d.ts +9 -9
- package/dist/types/src/components/layout/Station.vue.d.ts +15 -4
- package/dist/types/src/components/layout/types.d.ts +2 -0
- package/dist/types/src/components/styles/Path.vue.d.ts +1 -1
- package/dist/types/src/components/styles/Tips.vue.d.ts +17 -0
- package/dist/types/src/components/upload/ImageUpload.vue.d.ts +5 -5
- package/dist/types/src/components/upload/Upload.vue.d.ts +5 -5
- package/dist/types/src/entries/guide.d.ts +9 -0
- package/dist/upload/index.mjs +1 -1
- package/dist/viewer/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunks/Drawer-ucXKUecL.mjs.map +0 -1
- package/dist/chunks/Iframe-CeSiMnvR.mjs +0 -65
- package/dist/chunks/Iframe-CeSiMnvR.mjs.map +0 -1
- package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs +0 -80
- package/dist/chunks/Requester.vue_vue_type_script_setup_true_lang-DkLqAjug.mjs.map +0 -1
- package/dist/chunks/Station-BTP0SbBg.mjs.map +0 -1
- package/dist/chunks/Tips-IWCZcR1K.mjs +0 -63
- package/dist/chunks/Tips-IWCZcR1K.mjs.map +0 -1
- package/dist/chunks/http-C06mNpwY.mjs +0 -4141
- package/dist/chunks/http-C06mNpwY.mjs.map +0 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,51 +1,54 @@
|
|
|
1
1
|
/* empty css */
|
|
2
|
-
import { i as
|
|
3
|
-
import {
|
|
4
|
-
import { W as
|
|
5
|
-
import { W as E } from "./chunks/
|
|
6
|
-
import { W as j } from "./chunks/
|
|
7
|
-
import { W as q } from "./chunks/
|
|
8
|
-
import { W as I } from "./chunks/
|
|
9
|
-
import { W as L } from "./chunks/
|
|
10
|
-
import { W as _ } from "./chunks/
|
|
11
|
-
import {
|
|
12
|
-
import { _ as M } from "./chunks/
|
|
13
|
-
import { _ as F } from "./chunks/
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { _ as ct } from "./chunks/
|
|
19
|
-
import { _ as ut } from "./chunks/
|
|
20
|
-
import { _ as pt } from "./chunks/
|
|
21
|
-
import {
|
|
22
|
-
import { W as
|
|
23
|
-
import { W as gt } from "./chunks/
|
|
24
|
-
import { W as Wt } from "./chunks/
|
|
25
|
-
import { W as ht } from "./chunks/
|
|
26
|
-
import { W as bt } from "./chunks/
|
|
27
|
-
import {
|
|
28
|
-
import { _ as Bt } from "./chunks/
|
|
29
|
-
import {
|
|
30
|
-
import { W as wt } from "./chunks/
|
|
31
|
-
import { W as Ct } from "./chunks/
|
|
32
|
-
import { W as vt } from "./chunks/
|
|
33
|
-
import { W as Pt } from "./chunks/
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
|
|
2
|
+
import { i as G } from "./chunks/config-CDqjABpD.mjs";
|
|
3
|
+
import { S as we, d as Ce, g as ve, a as Pe, b as De, l as Re, m as Te, r as Ae, s as $e } from "./chunks/config-CDqjABpD.mjs";
|
|
4
|
+
import { W as k } from "./chunks/Guide-AWaWvQoq.mjs";
|
|
5
|
+
import { W as E } from "./chunks/DataGrid-Cw3yXhmR.mjs";
|
|
6
|
+
import { W as j } from "./chunks/EditableGrid-Dr48XzLH.mjs";
|
|
7
|
+
import { W as q } from "./chunks/Viewer-CmTaneb6.mjs";
|
|
8
|
+
import { W as I } from "./chunks/DataForm-Dvx6GxlR.mjs";
|
|
9
|
+
import { W as L } from "./chunks/SearchPanel-DPlWWuXb.mjs";
|
|
10
|
+
import { W as _ } from "./chunks/FormItem-C1q0opnk.mjs";
|
|
11
|
+
import { W as N } from "./chunks/SearchItem-pFO57lEO.mjs";
|
|
12
|
+
import { _ as M } from "./chunks/ApiButton.vue_vue_type_script_setup_true_lang-ZLHP9S_H.mjs";
|
|
13
|
+
import { _ as F } from "./chunks/ConfirmButton.vue_vue_type_script_setup_true_lang-Cz1M6QsL.mjs";
|
|
14
|
+
import { _ as V } from "./chunks/DialogButton.vue_vue_type_script_setup_true_lang-ex2zYLZC.mjs";
|
|
15
|
+
import { defineComponent as U, ref as A, resolveComponent as S, openBlock as P, createElementBlock as H, Fragment as z, createVNode as D, mergeProps as K, unref as J, withCtx as Q, renderSlot as X, createTextVNode as Y, toDisplayString as Z, createBlock as tt, createCommentVNode as et, shallowRef as R, onUnmounted as $, isReactive as ot, reactive as rt } from "vue";
|
|
16
|
+
import { u as nt } from "./chunks/useApiAction-CQVmN1MH.mjs";
|
|
17
|
+
import { t as at, b as it, a as st, h as ft, f as lt } from "./chunks/props-DAytpx7D.mjs";
|
|
18
|
+
import { _ as ct } from "./chunks/PromptButton.vue_vue_type_script_setup_true_lang-y_sfI324.mjs";
|
|
19
|
+
import { _ as ut } from "./chunks/RouteButton.vue_vue_type_script_setup_true_lang-Da0D3tKA.mjs";
|
|
20
|
+
import { _ as pt } from "./chunks/TipsButton.vue_vue_type_script_setup_true_lang-DvcpRSV1.mjs";
|
|
21
|
+
import { _ as mt } from "./chunks/DrawerButton.vue_vue_type_script_setup_true_lang-u5ifQw5k.mjs";
|
|
22
|
+
import { W as dt } from "./chunks/Drawer-BzdohcBg.mjs";
|
|
23
|
+
import { W as gt } from "./chunks/Iframe-BB1Va2kZ.mjs";
|
|
24
|
+
import { W as Wt } from "./chunks/Select-ByH7uxuS.mjs";
|
|
25
|
+
import { W as ht } from "./chunks/AutoComplete-BKWrR5pD.mjs";
|
|
26
|
+
import { W as bt } from "./chunks/CheckboxList-5o9E0Tzg.mjs";
|
|
27
|
+
import { W as yt } from "./chunks/RadioList-CQJDixnr.mjs";
|
|
28
|
+
import { _ as Bt } from "./chunks/Switch.vue_vue_type_script_setup_true_lang-DrSXmsj6.mjs";
|
|
29
|
+
import { _ as St } from "./chunks/Upload.vue_vue_type_script_setup_true_lang-k-0PTz3l.mjs";
|
|
30
|
+
import { W as wt } from "./chunks/ImageUpload-DiJ16Aga.mjs";
|
|
31
|
+
import { W as Ct } from "./chunks/Panel-BHqAeBaH.mjs";
|
|
32
|
+
import { W as vt } from "./chunks/Path-pIP0JQ0c.mjs";
|
|
33
|
+
import { W as Pt } from "./chunks/Tips-B_18E4mc.mjs";
|
|
34
|
+
import { W as Dt } from "./chunks/Station-DDoJem4F.mjs";
|
|
35
|
+
import { _ as Rt } from "./chunks/Requester.vue_vue_type_script_setup_true_lang-nel6vN12.mjs";
|
|
36
|
+
import { r as T } from "./chunks/http-CW9konD4.mjs";
|
|
37
|
+
import { R as Oe } from "./chunks/http-CW9konD4.mjs";
|
|
38
|
+
import { c as ke, g as Ee, r as je, a as qe, b as Ie, s as Le } from "./chunks/linkage-FbL1mcz3.mjs";
|
|
39
|
+
import { g as Ne, n as Me, r as Fe, a as Ve, s as Ue, b as He } from "./chunks/station-linkage-D54-_iyL.mjs";
|
|
40
|
+
import { u as Ke } from "./chunks/useColumnSettings-CIFQCmzT.mjs";
|
|
41
|
+
import { u as Qe, a as Xe } from "./chunks/useConfig-ChIkE3Lz.mjs";
|
|
42
|
+
const Tt = /* @__PURE__ */ U({
|
|
40
43
|
name: "WdPopconfirmButton",
|
|
41
44
|
inheritAttrs: !1,
|
|
42
45
|
__name: "PopconfirmButton",
|
|
43
46
|
props: {
|
|
44
47
|
...lt,
|
|
45
|
-
...
|
|
48
|
+
...ft,
|
|
46
49
|
...st,
|
|
50
|
+
...it,
|
|
47
51
|
...at,
|
|
48
|
-
...nt,
|
|
49
52
|
// ---------- el-popconfirm 集成属性 ----------
|
|
50
53
|
/** 确认提示标题 */
|
|
51
54
|
title: { type: String, default: "" },
|
|
@@ -107,7 +110,7 @@ const Rt = /* @__PURE__ */ V({
|
|
|
107
110
|
"apiAfter"
|
|
108
111
|
],
|
|
109
112
|
setup(t, { emit: o }) {
|
|
110
|
-
const e = t, a = o,
|
|
113
|
+
const e = t, a = o, s = A(), { loading: i, doRequest: l } = nt({
|
|
111
114
|
getApi: () => e.api,
|
|
112
115
|
getMethod: () => e.apiMethod,
|
|
113
116
|
getParam: () => e.apiParam,
|
|
@@ -117,42 +120,42 @@ const Rt = /* @__PURE__ */ V({
|
|
|
117
120
|
buttonLoading: () => e.buttonLoading,
|
|
118
121
|
getReqOptions: () => ({ showLoading: e.pageLoading })
|
|
119
122
|
});
|
|
120
|
-
function
|
|
123
|
+
function m(r) {
|
|
121
124
|
a("click", r);
|
|
122
125
|
}
|
|
123
|
-
async function
|
|
124
|
-
a("confirm"), await
|
|
126
|
+
async function d() {
|
|
127
|
+
a("confirm"), await l();
|
|
125
128
|
}
|
|
126
129
|
function h() {
|
|
127
130
|
a("cancel");
|
|
128
131
|
}
|
|
129
132
|
return (r, u) => {
|
|
130
|
-
const
|
|
131
|
-
return
|
|
132
|
-
|
|
133
|
+
const f = S("el-button"), b = S("el-tooltip"), g = S("el-popconfirm");
|
|
134
|
+
return P(), H(z, null, [
|
|
135
|
+
D(f, K({
|
|
133
136
|
ref_key: "btnRef",
|
|
134
|
-
ref:
|
|
137
|
+
ref: s
|
|
135
138
|
}, r.$attrs, {
|
|
136
|
-
loading:
|
|
137
|
-
onClick:
|
|
139
|
+
loading: J(i),
|
|
140
|
+
onClick: m
|
|
138
141
|
}), {
|
|
139
|
-
default:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
+
default: Q(() => [
|
|
143
|
+
X(r.$slots, "default", {}, () => [
|
|
144
|
+
Y(Z(r.label), 1)
|
|
142
145
|
])
|
|
143
146
|
]),
|
|
144
147
|
_: 3
|
|
145
148
|
}, 16, ["loading"]),
|
|
146
|
-
r.tips ? (
|
|
149
|
+
r.tips ? (P(), tt(b, {
|
|
147
150
|
key: 0,
|
|
148
|
-
"virtual-ref":
|
|
151
|
+
"virtual-ref": s.value,
|
|
149
152
|
"virtual-triggering": "",
|
|
150
153
|
content: r.tips,
|
|
151
154
|
effect: r.tipsType,
|
|
152
155
|
placement: r.placement
|
|
153
|
-
}, null, 8, ["virtual-ref", "content", "effect", "placement"])) :
|
|
154
|
-
|
|
155
|
-
"virtual-ref":
|
|
156
|
+
}, null, 8, ["virtual-ref", "content", "effect", "placement"])) : et("", !0),
|
|
157
|
+
D(g, {
|
|
158
|
+
"virtual-ref": s.value,
|
|
156
159
|
"virtual-triggering": "",
|
|
157
160
|
title: t.title,
|
|
158
161
|
"confirm-button-text": t.confirmButtonText,
|
|
@@ -171,7 +174,7 @@ const Rt = /* @__PURE__ */ V({
|
|
|
171
174
|
"show-after": t.showAfter,
|
|
172
175
|
teleported: t.teleported,
|
|
173
176
|
persistent: t.persistent,
|
|
174
|
-
onConfirm:
|
|
177
|
+
onConfirm: d,
|
|
175
178
|
onCancel: h,
|
|
176
179
|
onShow: u[0] || (u[0] = (y) => a("show")),
|
|
177
180
|
onHide: u[1] || (u[1] = (y) => a("hide"))
|
|
@@ -179,85 +182,86 @@ const Rt = /* @__PURE__ */ V({
|
|
|
179
182
|
], 64);
|
|
180
183
|
};
|
|
181
184
|
}
|
|
182
|
-
}),
|
|
185
|
+
}), At = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
183
186
|
__proto__: null,
|
|
184
|
-
WdApiButton:
|
|
185
|
-
WdAutoComplete:
|
|
186
|
-
WdCheckboxList:
|
|
187
|
-
WdConfirmButton:
|
|
188
|
-
WdDataForm:
|
|
189
|
-
WdDataGrid:
|
|
190
|
-
WdDialogButton:
|
|
187
|
+
WdApiButton: M,
|
|
188
|
+
WdAutoComplete: ht,
|
|
189
|
+
WdCheckboxList: bt,
|
|
190
|
+
WdConfirmButton: F,
|
|
191
|
+
WdDataForm: I,
|
|
192
|
+
WdDataGrid: E,
|
|
193
|
+
WdDialogButton: V,
|
|
191
194
|
WdDrawer: dt,
|
|
192
|
-
WdDrawerButton:
|
|
193
|
-
WdEditableGrid:
|
|
194
|
-
WdFormItem:
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
195
|
+
WdDrawerButton: mt,
|
|
196
|
+
WdEditableGrid: j,
|
|
197
|
+
WdFormItem: _,
|
|
198
|
+
WdGuide: k,
|
|
199
|
+
WdIframe: gt,
|
|
200
|
+
WdImageUpload: wt,
|
|
201
|
+
WdPanel: Ct,
|
|
202
|
+
WdPath: vt,
|
|
203
|
+
WdPopconfirmButton: Tt,
|
|
204
|
+
WdPromptButton: ct,
|
|
205
|
+
WdRadioList: yt,
|
|
206
|
+
WdRequester: Rt,
|
|
207
|
+
WdRouteButton: ut,
|
|
208
|
+
WdSearchItem: N,
|
|
209
|
+
WdSearchPanel: L,
|
|
210
|
+
WdSelect: Wt,
|
|
211
|
+
WdStation: Dt,
|
|
212
|
+
WdSwitch: Bt,
|
|
213
|
+
WdTips: Pt,
|
|
214
|
+
WdTipsButton: pt,
|
|
215
|
+
WdUpload: St,
|
|
216
|
+
WdViewer: q
|
|
217
|
+
}, Symbol.toStringTag, { value: "Module" })), $t = Object.values(At), xt = (t, o) => {
|
|
218
|
+
G(o), $t.forEach((e) => {
|
|
215
219
|
e != null && e.name && t.component(e.name, e);
|
|
216
220
|
});
|
|
217
|
-
},
|
|
218
|
-
function
|
|
221
|
+
}, We = { install: xt };
|
|
222
|
+
function he(t, o = {}) {
|
|
219
223
|
const {
|
|
220
224
|
method: e = "post",
|
|
221
225
|
immediate: a = !0,
|
|
222
|
-
initialParams:
|
|
223
|
-
reqOptions:
|
|
224
|
-
onSuccess:
|
|
225
|
-
onFail:
|
|
226
|
-
onError:
|
|
227
|
-
} = o, h =
|
|
228
|
-
let
|
|
226
|
+
initialParams: s,
|
|
227
|
+
reqOptions: i,
|
|
228
|
+
onSuccess: l,
|
|
229
|
+
onFail: m,
|
|
230
|
+
onError: d
|
|
231
|
+
} = o, h = R(null), r = A(!1), u = R(null);
|
|
232
|
+
let f = null;
|
|
229
233
|
function b() {
|
|
230
234
|
return typeof t == "function" ? t() : t;
|
|
231
235
|
}
|
|
232
236
|
async function g(W) {
|
|
233
|
-
r.value = !0, u.value = null,
|
|
234
|
-
const C = { ...
|
|
237
|
+
r.value = !0, u.value = null, f && f.abort(), f = new AbortController();
|
|
238
|
+
const C = { ...i, signal: f.signal };
|
|
235
239
|
try {
|
|
236
240
|
let n;
|
|
237
241
|
const v = b();
|
|
238
|
-
return e === "get" || e === "delete" ? n = await
|
|
242
|
+
return e === "get" || e === "delete" ? n = await T.request(
|
|
239
243
|
{ url: v, method: e, params: W },
|
|
240
244
|
C
|
|
241
|
-
) : n = await
|
|
245
|
+
) : n = await T.request({ url: v, method: e, data: W }, C), n.success ? (h.value = n.data, l == null || l(n.data, n)) : m == null || m(n), n;
|
|
242
246
|
} catch (n) {
|
|
243
|
-
return u.value = n instanceof Error ? n : new Error((n == null ? void 0 : n.message) || "请求失败"),
|
|
247
|
+
return u.value = n instanceof Error ? n : new Error((n == null ? void 0 : n.message) || "请求失败"), d == null || d(n), null;
|
|
244
248
|
} finally {
|
|
245
|
-
r.value = !1,
|
|
249
|
+
r.value = !1, f = null;
|
|
246
250
|
}
|
|
247
251
|
}
|
|
248
252
|
function y() {
|
|
249
253
|
return g(B);
|
|
250
254
|
}
|
|
251
255
|
function w() {
|
|
252
|
-
|
|
256
|
+
f && (f.abort(), f = null, r.value = !1);
|
|
253
257
|
}
|
|
254
|
-
let B =
|
|
255
|
-
const
|
|
256
|
-
return a && g(
|
|
258
|
+
let B = s;
|
|
259
|
+
const O = (W) => (B = W ?? B, g(W));
|
|
260
|
+
return a && g(s), $(w), {
|
|
257
261
|
data: h,
|
|
258
262
|
loading: r,
|
|
259
263
|
error: u,
|
|
260
|
-
run:
|
|
264
|
+
run: O,
|
|
261
265
|
refresh: y,
|
|
262
266
|
abort: w
|
|
263
267
|
};
|
|
@@ -268,25 +272,25 @@ function Ot(t, o) {
|
|
|
268
272
|
e && e.forEach((a) => {
|
|
269
273
|
try {
|
|
270
274
|
a(o);
|
|
271
|
-
} catch (
|
|
272
|
-
console.error(`[WorkDesktop] eventBus[${t}] handler error:`,
|
|
275
|
+
} catch (s) {
|
|
276
|
+
console.error(`[WorkDesktop] eventBus[${t}] handler error:`, s);
|
|
273
277
|
}
|
|
274
278
|
});
|
|
275
279
|
}
|
|
276
|
-
function
|
|
277
|
-
return p.has(t) || p.set(t, /* @__PURE__ */ new Set()), p.get(t).add(o), () =>
|
|
280
|
+
function Gt(t, o) {
|
|
281
|
+
return p.has(t) || p.set(t, /* @__PURE__ */ new Set()), p.get(t).add(o), () => x(t, o);
|
|
278
282
|
}
|
|
279
|
-
function
|
|
283
|
+
function x(t, o) {
|
|
280
284
|
var e;
|
|
281
285
|
(e = p.get(t)) == null || e.delete(o);
|
|
282
286
|
}
|
|
283
287
|
function kt(t) {
|
|
284
288
|
t ? p.delete(t) : p.clear();
|
|
285
289
|
}
|
|
286
|
-
function
|
|
290
|
+
function be() {
|
|
287
291
|
const t = [], o = (e, a) => {
|
|
288
|
-
const
|
|
289
|
-
return t.push(
|
|
292
|
+
const s = Gt(e, a);
|
|
293
|
+
return t.push(s), s;
|
|
290
294
|
};
|
|
291
295
|
try {
|
|
292
296
|
$(() => {
|
|
@@ -297,88 +301,89 @@ function ge() {
|
|
|
297
301
|
return {
|
|
298
302
|
emit: Ot,
|
|
299
303
|
on: o,
|
|
300
|
-
off:
|
|
304
|
+
off: x,
|
|
301
305
|
clear: kt
|
|
302
306
|
};
|
|
303
307
|
}
|
|
304
|
-
const c =
|
|
305
|
-
function
|
|
308
|
+
const c = rt({});
|
|
309
|
+
function ye(t, o) {
|
|
306
310
|
if (!(t in c))
|
|
307
|
-
c[t] = o ?
|
|
311
|
+
c[t] = o ? ot(o) ? o : { ...o } : {};
|
|
308
312
|
else if (o && typeof o == "object")
|
|
309
|
-
for (const
|
|
310
|
-
c[t][
|
|
313
|
+
for (const i of Object.keys(o))
|
|
314
|
+
c[t][i] === void 0 && (c[t][i] = o[i]);
|
|
311
315
|
const e = c[t];
|
|
312
|
-
return { state: e, set: (
|
|
313
|
-
const
|
|
314
|
-
Object.assign(c[t],
|
|
316
|
+
return { state: e, set: (i) => {
|
|
317
|
+
const l = typeof i == "function" ? i(e) : i;
|
|
318
|
+
Object.assign(c[t], l);
|
|
315
319
|
}, reset: () => {
|
|
316
|
-
const
|
|
317
|
-
Object.keys(c[t]).forEach((
|
|
320
|
+
const i = o ? { ...o } : {};
|
|
321
|
+
Object.keys(c[t]).forEach((l) => delete c[t][l]), Object.assign(c[t], i);
|
|
318
322
|
} };
|
|
319
323
|
}
|
|
320
324
|
export {
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
325
|
+
Oe as RequestAPI,
|
|
326
|
+
we as SKIN_PRESETS,
|
|
327
|
+
M as WdApiButton,
|
|
328
|
+
ht as WdAutoComplete,
|
|
329
|
+
bt as WdCheckboxList,
|
|
330
|
+
F as WdConfirmButton,
|
|
331
|
+
I as WdDataForm,
|
|
332
|
+
E as WdDataGrid,
|
|
333
|
+
V as WdDialogButton,
|
|
330
334
|
dt as WdDrawer,
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
wt as
|
|
337
|
-
Ct as
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
335
|
+
mt as WdDrawerButton,
|
|
336
|
+
j as WdEditableGrid,
|
|
337
|
+
_ as WdFormItem,
|
|
338
|
+
k as WdGuide,
|
|
339
|
+
gt as WdIframe,
|
|
340
|
+
wt as WdImageUpload,
|
|
341
|
+
Ct as WdPanel,
|
|
342
|
+
vt as WdPath,
|
|
343
|
+
Tt as WdPopconfirmButton,
|
|
344
|
+
ct as WdPromptButton,
|
|
345
|
+
yt as WdRadioList,
|
|
346
|
+
Rt as WdRequester,
|
|
347
|
+
ut as WdRouteButton,
|
|
348
|
+
N as WdSearchItem,
|
|
349
|
+
L as WdSearchPanel,
|
|
350
|
+
Wt as WdSelect,
|
|
351
|
+
Dt as WdStation,
|
|
352
|
+
Bt as WdSwitch,
|
|
353
|
+
Pt as WdTips,
|
|
354
|
+
pt as WdTipsButton,
|
|
355
|
+
St as WdUpload,
|
|
356
|
+
q as WdViewer,
|
|
357
|
+
We as WorkDesktop,
|
|
353
358
|
ke as clearLinkageRegistry,
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
359
|
+
Ce as deepMerge,
|
|
360
|
+
We as default,
|
|
361
|
+
ve as getComponentDefault,
|
|
362
|
+
Ee as getDataGrids,
|
|
363
|
+
Pe as getGlobalConfig,
|
|
364
|
+
De as getSkinPreset,
|
|
365
|
+
Ne as getStationMenuChain,
|
|
366
|
+
T as http,
|
|
367
|
+
G as initConfig,
|
|
368
|
+
Re as listSkins,
|
|
369
|
+
Te as mergeConfig,
|
|
370
|
+
Me as notifyStationChange,
|
|
371
|
+
je as refreshDataGrid,
|
|
372
|
+
Fe as refreshStationView,
|
|
373
|
+
qe as registerDataGrid,
|
|
374
|
+
Ve as registerStation,
|
|
375
|
+
T as request,
|
|
376
|
+
Ae as resetConfig,
|
|
377
|
+
Ie as resetSearchDataGrid,
|
|
378
|
+
Le as searchDataGrid,
|
|
379
|
+
$e as setGlobalConfig,
|
|
380
|
+
Ue as setStationFooter,
|
|
381
|
+
He as subscribeStationChange,
|
|
382
|
+
Qe as useConfig,
|
|
383
|
+
Ke as useDataGrid,
|
|
384
|
+
be as useEventBus,
|
|
385
|
+
Xe as useGlobalConfig,
|
|
386
|
+
ye as useGlobalState,
|
|
387
|
+
he as useRequest
|
|
383
388
|
};
|
|
384
389
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/components/buttons/PopconfirmButton.vue","../src/lib/install.ts","../src/lib/composables/useRequest.ts","../src/lib/composables/useEventBus.ts","../src/lib/composables/useGlobalState.ts"],"sourcesContent":["<template>\n <!-- 悬停提示(el-tooltip)与气泡确认(el-popconfirm)平级,均以 virtual-ref 指向同一按钮:\n hover 显示提示、click 弹出确认,互不嵌套、互不冲突 -->\n <el-button ref=\"btnRef\" v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\n <slot>{{ label }}</slot>\n </el-button>\n\n <el-tooltip\n v-if=\"tips\"\n :virtual-ref=\"btnRef\"\n virtual-triggering\n :content=\"tips\"\n :effect=\"tipsType\"\n :placement=\"placement\"\n />\n\n <el-popconfirm\n :virtual-ref=\"btnRef\"\n virtual-triggering\n :title=\"title\"\n :confirm-button-text=\"confirmButtonText\"\n :cancel-button-text=\"cancelButtonText\"\n :confirm-button-type=\"confirmButtonType\"\n :cancel-button-type=\"cancelButtonType\"\n :icon=\"popIcon\"\n :icon-color=\"popIconColor\"\n :hide-after=\"hideAfter\"\n :disabled=\"popDisabled\"\n :width=\"width\"\n :trigger=\"trigger\"\n :placement=\"placement\"\n :popper-class=\"popperClass\"\n :popper-options=\"popperOptions\"\n :show-after=\"showAfter\"\n :teleported=\"teleported\"\n :persistent=\"persistent\"\n @confirm=\"onConfirm\"\n @cancel=\"onCancel\"\n @show=\"emit('show')\"\n @hide=\"emit('hide')\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, type Component, type PropType } from 'vue'\nimport { useApiAction } from './useApiAction'\nimport { filterProp, headRefreshDatagridProp, apiProps, buttonTextProp, tipsProp } from '../common/props'\n\ndefineOptions({ name: 'WdPopconfirmButton', inheritAttrs: false })\n\nconst props = defineProps({\n ...filterProp,\n ...headRefreshDatagridProp,\n ...apiProps,\n ...buttonTextProp,\n ...tipsProp,\n // ---------- el-popconfirm 集成属性 ----------\n /** 确认提示标题 */\n title: { type: String, default: '' },\n /** 确定按钮文案 */\n confirmButtonText: { type: String, default: '确定' },\n /** 取消按钮文案 */\n cancelButtonText: { type: String, default: '取消' },\n /** 确定按钮类型 */\n confirmButtonType: {\n type: String as PropType<'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'>,\n default: 'primary'\n },\n /** 取消按钮类型 */\n cancelButtonType: {\n type: String as PropType<'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'>,\n default: 'text'\n },\n /** 弹层图标(命名 popIcon 避免与 el-button 的 icon 透传冲突) */\n popIcon: { type: [String, Object] as PropType<string | Component>, default: undefined },\n /** 弹层图标颜色 */\n popIconColor: { type: String, default: undefined },\n /** 关闭动画时长(ms,继承自 el-popconfirm) */\n hideAfter: { type: Number, default: undefined },\n /** 禁用确认弹层(命名 popDisabled 避免与 el-button 的 disabled 透传冲突) */\n popDisabled: { type: Boolean, default: false },\n /** 弹层宽度 */\n width: { type: [String, Number], default: undefined },\n /** 触发方式 */\n trigger: {\n type: String as PropType<'click' | 'hover' | 'focus' | 'contextmenu'>,\n default: 'click'\n },\n /** 弹层自定义类名 */\n popperClass: { type: String, default: '' },\n /** popper 配置 */\n popperOptions: { type: Object, default: undefined },\n /** 显示延迟(ms) */\n showAfter: { type: Number, default: undefined },\n /** 是否挂载到 body */\n teleported: { type: Boolean, default: true },\n /** 关闭时是否保留内容 */\n persistent: { type: Boolean, default: false },\n // ---------- 请求相关 ----------\n /** 按钮级 loading(默认 true);false 时按钮不转圈 */\n buttonLoading: { type: Boolean, default: true },\n /** 页面级 loading(全局遮罩 ElLoading) */\n pageLoading: { type: Boolean, default: false }\n})\n\nconst emit = defineEmits([\n 'click',\n 'confirm',\n 'cancel',\n 'show',\n 'hide',\n 'apiBefore',\n 'apiSuccess',\n 'apiFail',\n 'apiException',\n 'apiAfter'\n])\n\n/** 按钮引用:el-tooltip / el-popconfirm 通过 virtual-ref 指向它 */\nconst btnRef = ref<InstanceType<typeof import('element-plus').ElButton>>()\n\nconst { loading, doRequest } = useApiAction({\n getApi: () => props.api,\n getMethod: () => props.apiMethod,\n getParam: () => props.apiParam,\n getFilter: () => props.filter,\n getHeadRefresh: () => props.headRefreshDatagrid,\n emit,\n buttonLoading: () => props.buttonLoading,\n getReqOptions: () => ({ showLoading: props.pageLoading })\n})\n\n/** 点击按钮(弹层触发由 el-popconfirm 接管) */\nfunction onClick(event: MouseEvent) {\n emit('click', event)\n}\n\n/** 用户点击「确定」→ 自动请求 API */\nasync function onConfirm() {\n emit('confirm')\n await doRequest()\n}\n\n/** 用户点击「取消」 */\nfunction onCancel() {\n emit('cancel')\n}\n</script>\n","/**\n * Vue 插件入口(PRD 8.2 双入口)\n *\n * npm:app.use(WorkDesktop, config)\n * script:window.workDesktopConfig 配置 + window.WorkDesktop 自动安装\n */\nimport type { App, Plugin } from 'vue'\nimport type { DeepPartial, WorkDesktopConfig } from '../types/config'\nimport { initConfig } from './core/config'\nimport * as components from '../components'\n\nconst componentList = Object.values(components)\n\nconst install: Plugin['install'] = (app: App, config?: DeepPartial<WorkDesktopConfig>) => {\n // 双入口配置汇入同一套 merge 逻辑\n initConfig(config)\n componentList.forEach((comp: any) => {\n if (comp?.name) app.component(comp.name, comp)\n })\n}\n\nconst WorkDesktop: Plugin = { install }\n\nexport default WorkDesktop\nexport { install }\n","import { ref, shallowRef, isRef, onUnmounted } from 'vue'\nimport { request, type ApiResult } from '../core/http'\nimport type { ReqOptions } from '../../types/config'\n\n/**\n * useRequest(PRD 5.3)\n * 封装请求逻辑,返回 data/loading/error + 请求方法。\n *\n * @example\n * const { data, loading, run } = useRequest<User[]>('/api/users', {\n * method: 'post',\n * immediate: false,\n * reqConfig: { showTips: false }\n * })\n * run({ page: 1 })\n */\n\nexport interface UseRequestOptions {\n /** 请求方法,默认 post */\n method?: 'get' | 'post' | 'put' | 'delete'\n /** 是否立即自动请求,默认 true */\n immediate?: boolean\n /** 自动请求时的初始参数 */\n initialParams?: any\n /** 请求级覆盖项(透传给 http) */\n reqOptions?: ReqOptions\n /** 成功回调(data 为解封后的业务数据) */\n onSuccess?: (data: any, result: ApiResult) => void\n /** 业务失败回调 */\n onFail?: (result: ApiResult) => void\n /** 异常回调 */\n onError?: (error: any) => void\n}\n\nexport function useRequest<T = any>(api: string | (() => string), options: UseRequestOptions = {}) {\n const {\n method = 'post',\n immediate = true,\n initialParams,\n reqOptions,\n onSuccess,\n onFail,\n onError\n } = options\n\n const data = shallowRef<T | null>(null)\n const loading = ref(false)\n const error = shallowRef<Error | null>(null)\n\n let controller: AbortController | null = null\n\n function resolveApi(): string {\n return typeof api === 'function' ? api() : api\n }\n\n async function run(params?: any): Promise<ApiResult<T> | null> {\n loading.value = true\n error.value = null\n // 支持中断:上一个未完成则中止\n if (controller) controller.abort()\n controller = new AbortController()\n\n const opts: ReqOptions = { ...reqOptions, signal: controller.signal }\n try {\n let result: ApiResult<T>\n const url = resolveApi()\n if (method === 'get' || method === 'delete') {\n result = await request.request<T>(\n { url, method, params },\n opts\n )\n } else {\n result = await request.request<T>({ url, method, data: params }, opts)\n }\n\n if (result.success) {\n data.value = result.data\n onSuccess?.(result.data, result)\n } else {\n onFail?.(result)\n }\n return result\n } catch (e: any) {\n error.value = e instanceof Error ? e : new Error(e?.message || '请求失败')\n onError?.(e)\n return null\n } finally {\n loading.value = false\n controller = null\n }\n }\n\n function refresh() {\n return run(lastParams)\n }\n\n function abort() {\n if (controller) {\n controller.abort()\n controller = null\n loading.value = false\n }\n }\n\n let lastParams: any = initialParams\n\n // 包装 run 记录最后参数供 refresh\n const runWrap = (params?: any) => {\n lastParams = params ?? lastParams\n return run(params)\n }\n\n if (immediate) {\n run(initialParams)\n }\n\n onUnmounted(abort)\n\n return {\n data,\n loading,\n error,\n run: runWrap,\n refresh,\n abort\n }\n}\n\n/** 工具:解包可能为 ref 的值 */\nexport function unrefValue<T>(v: T | { value: T }): T {\n return isRef(v) ? (v as any).value : (v as T)\n}\n","import { onUnmounted } from 'vue'\n\n/**\n * 轻量事件总线(PRD 5.3 / 6.3)\n * 跨组件事件联动。组件卸载自动 off。\n */\n\ntype Handler = (payload?: any) => void\n\nconst channel: Map<string, Set<Handler>> = new Map()\n\nfunction emit(event: string, payload?: any) {\n const set = channel.get(event)\n if (!set) return\n set.forEach((fn) => {\n try {\n fn(payload)\n } catch (e) {\n console.error(`[WorkDesktop] eventBus[${event}] handler error:`, e)\n }\n })\n}\n\nfunction on(event: string, handler: Handler): () => void {\n if (!channel.has(event)) channel.set(event, new Set())\n channel.get(event)!.add(handler)\n return () => off(event, handler)\n}\n\nfunction off(event: string, handler: Handler) {\n channel.get(event)?.delete(handler)\n}\n\nfunction clear(event?: string) {\n if (event) channel.delete(event)\n else channel.clear()\n}\n\nexport function useEventBus() {\n const disposers: Array<() => void> = []\n\n const autoOn = (event: string, handler: Handler) => {\n const dispose = on(event, handler)\n disposers.push(dispose)\n return dispose\n }\n\n // 组件卸载时自动 off(setup 上下文中)\n try {\n onUnmounted(() => {\n disposers.forEach((d) => d())\n disposers.length = 0\n })\n } catch {\n // 组件外使用时无生命周期,忽略\n }\n\n return {\n emit,\n on: autoOn,\n off,\n clear\n }\n}\n\nexport type EventBus = ReturnType<typeof useEventBus>\n","import { reactive, isReactive } from 'vue'\n\n/**\n * 全局响应式状态单例(PRD 5.3,替代 Pinia 的轻量方案)\n * 相同 key 共享同一份状态,跨组件/跨层级复用。\n */\n\nconst globalStore: Record<string, any> = reactive({})\n\nexport function useGlobalState<T extends object = Record<string, any>>(\n key: string,\n initial?: T\n): { state: T; set: (partial: Partial<T> | ((prev: T) => Partial<T>)) => void; reset: () => void } {\n if (!(key in globalStore)) {\n globalStore[key] = initial ? (isReactive(initial) ? initial : { ...initial }) : {}\n } else if (initial && typeof initial === 'object') {\n // 已存在则补齐缺失的初始字段\n for (const k of Object.keys(initial)) {\n if (globalStore[key][k] === undefined) {\n globalStore[key][k] = (initial as any)[k]\n }\n }\n }\n\n const state = globalStore[key] as T\n\n const set = (partial: Partial<T> | ((prev: T) => Partial<T>)) => {\n const patch = typeof partial === 'function' ? (partial as (p: T) => Partial<T>)(state) : partial\n Object.assign(globalStore[key], patch)\n }\n\n const reset = () => {\n const fresh = initial ? { ...initial } : {}\n Object.keys(globalStore[key]).forEach((k) => delete globalStore[key][k])\n Object.assign(globalStore[key], fresh)\n }\n\n return { state, set, reset }\n}\n"],"names":["props","__props","emit","__emit","btnRef","ref","loading","doRequest","useApiAction","onClick","event","onConfirm","onCancel","_createVNode","_component_el_button","_mergeProps","$attrs","_unref","_renderSlot","_ctx","label","tips","_createBlock","_component_el_tooltip","tipsType","placement","_component_el_popconfirm","componentList","components","install","app","config","initConfig","comp","WorkDesktop","useRequest","api","options","method","immediate","initialParams","reqOptions","onSuccess","onFail","onError","data","shallowRef","error","controller","resolveApi","run","params","opts","result","url","request","e","refresh","lastParams","abort","runWrap","onUnmounted","channel","payload","set","fn","on","handler","off","_a","clear","useEventBus","disposers","autoOn","dispose","d","globalStore","reactive","useGlobalState","key","initial","isReactive","k","state","partial","patch","fresh"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/components/buttons/PopconfirmButton.vue","../src/lib/install.ts","../src/lib/composables/useRequest.ts","../src/lib/composables/useEventBus.ts","../src/lib/composables/useGlobalState.ts"],"sourcesContent":["<template>\n <!-- 悬停提示(el-tooltip)与气泡确认(el-popconfirm)平级,均以 virtual-ref 指向同一按钮:\n hover 显示提示、click 弹出确认,互不嵌套、互不冲突 -->\n <el-button ref=\"btnRef\" v-bind=\"$attrs\" :loading=\"loading\" @click=\"onClick\">\n <slot>{{ label }}</slot>\n </el-button>\n\n <el-tooltip\n v-if=\"tips\"\n :virtual-ref=\"btnRef\"\n virtual-triggering\n :content=\"tips\"\n :effect=\"tipsType\"\n :placement=\"placement\"\n />\n\n <el-popconfirm\n :virtual-ref=\"btnRef\"\n virtual-triggering\n :title=\"title\"\n :confirm-button-text=\"confirmButtonText\"\n :cancel-button-text=\"cancelButtonText\"\n :confirm-button-type=\"confirmButtonType\"\n :cancel-button-type=\"cancelButtonType\"\n :icon=\"popIcon\"\n :icon-color=\"popIconColor\"\n :hide-after=\"hideAfter\"\n :disabled=\"popDisabled\"\n :width=\"width\"\n :trigger=\"trigger\"\n :placement=\"placement\"\n :popper-class=\"popperClass\"\n :popper-options=\"popperOptions\"\n :show-after=\"showAfter\"\n :teleported=\"teleported\"\n :persistent=\"persistent\"\n @confirm=\"onConfirm\"\n @cancel=\"onCancel\"\n @show=\"emit('show')\"\n @hide=\"emit('hide')\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, type Component, type PropType } from 'vue'\nimport { useApiAction } from './useApiAction'\nimport { filterProp, headRefreshDatagridProp, apiProps, buttonTextProp, tipsProp } from '../common/props'\n\ndefineOptions({ name: 'WdPopconfirmButton', inheritAttrs: false })\n\nconst props = defineProps({\n ...filterProp,\n ...headRefreshDatagridProp,\n ...apiProps,\n ...buttonTextProp,\n ...tipsProp,\n // ---------- el-popconfirm 集成属性 ----------\n /** 确认提示标题 */\n title: { type: String, default: '' },\n /** 确定按钮文案 */\n confirmButtonText: { type: String, default: '确定' },\n /** 取消按钮文案 */\n cancelButtonText: { type: String, default: '取消' },\n /** 确定按钮类型 */\n confirmButtonType: {\n type: String as PropType<'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'>,\n default: 'primary'\n },\n /** 取消按钮类型 */\n cancelButtonType: {\n type: String as PropType<'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'>,\n default: 'text'\n },\n /** 弹层图标(命名 popIcon 避免与 el-button 的 icon 透传冲突) */\n popIcon: { type: [String, Object] as PropType<string | Component>, default: undefined },\n /** 弹层图标颜色 */\n popIconColor: { type: String, default: undefined },\n /** 关闭动画时长(ms,继承自 el-popconfirm) */\n hideAfter: { type: Number, default: undefined },\n /** 禁用确认弹层(命名 popDisabled 避免与 el-button 的 disabled 透传冲突) */\n popDisabled: { type: Boolean, default: false },\n /** 弹层宽度 */\n width: { type: [String, Number], default: undefined },\n /** 触发方式 */\n trigger: {\n type: String as PropType<'click' | 'hover' | 'focus' | 'contextmenu'>,\n default: 'click'\n },\n /** 弹层自定义类名 */\n popperClass: { type: String, default: '' },\n /** popper 配置 */\n popperOptions: { type: Object, default: undefined },\n /** 显示延迟(ms) */\n showAfter: { type: Number, default: undefined },\n /** 是否挂载到 body */\n teleported: { type: Boolean, default: true },\n /** 关闭时是否保留内容 */\n persistent: { type: Boolean, default: false },\n // ---------- 请求相关 ----------\n /** 按钮级 loading(默认 true);false 时按钮不转圈 */\n buttonLoading: { type: Boolean, default: true },\n /** 页面级 loading(全局遮罩 ElLoading) */\n pageLoading: { type: Boolean, default: false }\n})\n\nconst emit = defineEmits([\n 'click',\n 'confirm',\n 'cancel',\n 'show',\n 'hide',\n 'apiBefore',\n 'apiSuccess',\n 'apiFail',\n 'apiException',\n 'apiAfter'\n])\n\n/** 按钮引用:el-tooltip / el-popconfirm 通过 virtual-ref 指向它 */\nconst btnRef = ref<InstanceType<typeof import('element-plus').ElButton>>()\n\nconst { loading, doRequest } = useApiAction({\n getApi: () => props.api,\n getMethod: () => props.apiMethod,\n getParam: () => props.apiParam,\n getFilter: () => props.filter,\n getHeadRefresh: () => props.headRefreshDatagrid,\n emit,\n buttonLoading: () => props.buttonLoading,\n getReqOptions: () => ({ showLoading: props.pageLoading })\n})\n\n/** 点击按钮(弹层触发由 el-popconfirm 接管) */\nfunction onClick(event: MouseEvent) {\n emit('click', event)\n}\n\n/** 用户点击「确定」→ 自动请求 API */\nasync function onConfirm() {\n emit('confirm')\n await doRequest()\n}\n\n/** 用户点击「取消」 */\nfunction onCancel() {\n emit('cancel')\n}\n</script>\n","/**\n * Vue 插件入口(PRD 8.2 双入口)\n *\n * npm:app.use(WorkDesktop, config)\n * script:window.workDesktopConfig 配置 + window.WorkDesktop 自动安装\n */\nimport type { App, Plugin } from 'vue'\nimport type { DeepPartial, WorkDesktopConfig } from '../types/config'\nimport { initConfig } from './core/config'\nimport * as components from '../components'\n\nconst componentList = Object.values(components)\n\nconst install: Plugin['install'] = (app: App, config?: DeepPartial<WorkDesktopConfig>) => {\n // 双入口配置汇入同一套 merge 逻辑\n initConfig(config)\n componentList.forEach((comp: any) => {\n if (comp?.name) app.component(comp.name, comp)\n })\n}\n\nconst WorkDesktop: Plugin = { install }\n\nexport default WorkDesktop\nexport { install }\n","import { ref, shallowRef, isRef, onUnmounted } from 'vue'\nimport { request, type ApiResult } from '../core/http'\nimport type { ReqOptions } from '../../types/config'\n\n/**\n * useRequest(PRD 5.3)\n * 封装请求逻辑,返回 data/loading/error + 请求方法。\n *\n * @example\n * const { data, loading, run } = useRequest<User[]>('/api/users', {\n * method: 'post',\n * immediate: false,\n * reqConfig: { showTips: false }\n * })\n * run({ page: 1 })\n */\n\nexport interface UseRequestOptions {\n /** 请求方法,默认 post */\n method?: 'get' | 'post' | 'put' | 'delete'\n /** 是否立即自动请求,默认 true */\n immediate?: boolean\n /** 自动请求时的初始参数 */\n initialParams?: any\n /** 请求级覆盖项(透传给 http) */\n reqOptions?: ReqOptions\n /** 成功回调(data 为解封后的业务数据) */\n onSuccess?: (data: any, result: ApiResult) => void\n /** 业务失败回调 */\n onFail?: (result: ApiResult) => void\n /** 异常回调 */\n onError?: (error: any) => void\n}\n\nexport function useRequest<T = any>(api: string | (() => string), options: UseRequestOptions = {}) {\n const {\n method = 'post',\n immediate = true,\n initialParams,\n reqOptions,\n onSuccess,\n onFail,\n onError\n } = options\n\n const data = shallowRef<T | null>(null)\n const loading = ref(false)\n const error = shallowRef<Error | null>(null)\n\n let controller: AbortController | null = null\n\n function resolveApi(): string {\n return typeof api === 'function' ? api() : api\n }\n\n async function run(params?: any): Promise<ApiResult<T> | null> {\n loading.value = true\n error.value = null\n // 支持中断:上一个未完成则中止\n if (controller) controller.abort()\n controller = new AbortController()\n\n const opts: ReqOptions = { ...reqOptions, signal: controller.signal }\n try {\n let result: ApiResult<T>\n const url = resolveApi()\n if (method === 'get' || method === 'delete') {\n result = await request.request<T>(\n { url, method, params },\n opts\n )\n } else {\n result = await request.request<T>({ url, method, data: params }, opts)\n }\n\n if (result.success) {\n data.value = result.data\n onSuccess?.(result.data, result)\n } else {\n onFail?.(result)\n }\n return result\n } catch (e: any) {\n error.value = e instanceof Error ? e : new Error(e?.message || '请求失败')\n onError?.(e)\n return null\n } finally {\n loading.value = false\n controller = null\n }\n }\n\n function refresh() {\n return run(lastParams)\n }\n\n function abort() {\n if (controller) {\n controller.abort()\n controller = null\n loading.value = false\n }\n }\n\n let lastParams: any = initialParams\n\n // 包装 run 记录最后参数供 refresh\n const runWrap = (params?: any) => {\n lastParams = params ?? lastParams\n return run(params)\n }\n\n if (immediate) {\n run(initialParams)\n }\n\n onUnmounted(abort)\n\n return {\n data,\n loading,\n error,\n run: runWrap,\n refresh,\n abort\n }\n}\n\n/** 工具:解包可能为 ref 的值 */\nexport function unrefValue<T>(v: T | { value: T }): T {\n return isRef(v) ? (v as any).value : (v as T)\n}\n","import { onUnmounted } from 'vue'\n\n/**\n * 轻量事件总线(PRD 5.3 / 6.3)\n * 跨组件事件联动。组件卸载自动 off。\n */\n\ntype Handler = (payload?: any) => void\n\nconst channel: Map<string, Set<Handler>> = new Map()\n\nfunction emit(event: string, payload?: any) {\n const set = channel.get(event)\n if (!set) return\n set.forEach((fn) => {\n try {\n fn(payload)\n } catch (e) {\n console.error(`[WorkDesktop] eventBus[${event}] handler error:`, e)\n }\n })\n}\n\nfunction on(event: string, handler: Handler): () => void {\n if (!channel.has(event)) channel.set(event, new Set())\n channel.get(event)!.add(handler)\n return () => off(event, handler)\n}\n\nfunction off(event: string, handler: Handler) {\n channel.get(event)?.delete(handler)\n}\n\nfunction clear(event?: string) {\n if (event) channel.delete(event)\n else channel.clear()\n}\n\nexport function useEventBus() {\n const disposers: Array<() => void> = []\n\n const autoOn = (event: string, handler: Handler) => {\n const dispose = on(event, handler)\n disposers.push(dispose)\n return dispose\n }\n\n // 组件卸载时自动 off(setup 上下文中)\n try {\n onUnmounted(() => {\n disposers.forEach((d) => d())\n disposers.length = 0\n })\n } catch {\n // 组件外使用时无生命周期,忽略\n }\n\n return {\n emit,\n on: autoOn,\n off,\n clear\n }\n}\n\nexport type EventBus = ReturnType<typeof useEventBus>\n","import { reactive, isReactive } from 'vue'\n\n/**\n * 全局响应式状态单例(PRD 5.3,替代 Pinia 的轻量方案)\n * 相同 key 共享同一份状态,跨组件/跨层级复用。\n */\n\nconst globalStore: Record<string, any> = reactive({})\n\nexport function useGlobalState<T extends object = Record<string, any>>(\n key: string,\n initial?: T\n): { state: T; set: (partial: Partial<T> | ((prev: T) => Partial<T>)) => void; reset: () => void } {\n if (!(key in globalStore)) {\n globalStore[key] = initial ? (isReactive(initial) ? initial : { ...initial }) : {}\n } else if (initial && typeof initial === 'object') {\n // 已存在则补齐缺失的初始字段\n for (const k of Object.keys(initial)) {\n if (globalStore[key][k] === undefined) {\n globalStore[key][k] = (initial as any)[k]\n }\n }\n }\n\n const state = globalStore[key] as T\n\n const set = (partial: Partial<T> | ((prev: T) => Partial<T>)) => {\n const patch = typeof partial === 'function' ? (partial as (p: T) => Partial<T>)(state) : partial\n Object.assign(globalStore[key], patch)\n }\n\n const reset = () => {\n const fresh = initial ? { ...initial } : {}\n Object.keys(globalStore[key]).forEach((k) => delete globalStore[key][k])\n Object.assign(globalStore[key], fresh)\n }\n\n return { state, set, reset }\n}\n"],"names":["props","__props","emit","__emit","btnRef","ref","loading","doRequest","useApiAction","onClick","event","onConfirm","onCancel","_createVNode","_component_el_button","_mergeProps","$attrs","_unref","_renderSlot","_ctx","label","tips","_createBlock","_component_el_tooltip","tipsType","placement","_component_el_popconfirm","componentList","components","install","app","config","initConfig","comp","WorkDesktop","useRequest","api","options","method","immediate","initialParams","reqOptions","onSuccess","onFail","onError","data","shallowRef","error","controller","resolveApi","run","params","opts","result","url","request","e","refresh","lastParams","abort","runWrap","onUnmounted","channel","payload","set","fn","on","handler","off","_a","clear","useEventBus","disposers","autoOn","dispose","d","globalStore","reactive","useGlobalState","key","initial","isReactive","k","state","partial","patch","fresh"],"mappings":"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"}
|