@ibiz-template/vue3-components 0.2.8 → 0.2.10
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/dist/index.min.css +1 -1
- package/dist/index.system.min.js +5 -5
- package/dist/index.system.min.js.map +1 -1
- package/dist/map-chart-7nfIdU3w.js +2 -0
- package/dist/map-chart-7nfIdU3w.js.map +1 -0
- package/es/common/data-import/data-import.css +1 -0
- package/es/common/data-import/data-import.d.ts +34 -0
- package/es/common/data-import/data-import.mjs +147 -0
- package/es/common/index.d.ts +1 -0
- package/es/common/index.mjs +2 -0
- package/es/common/map-chart/map-chart.d.ts +15 -14
- package/es/common/map-chart/map-chart.mjs +20 -10
- package/es/common/map-chart/map-chart.util.d.ts +11 -1
- package/es/common/map-chart/map-chart.util.mjs +12 -2
- package/es/common/map-chart/map-manager.d.ts +1 -1
- package/es/common/map-chart/map-manager.mjs +6 -6
- package/es/control/form/form-detail/form-button/form-button.css +1 -1
- package/es/control/form/form-detail/form-button/form-button.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-container/form-mdctrl-container.css +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-container/form-mdctrl-container.mjs +3 -3
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-data-view/form-mdctrl-data-view.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-grid/form-mdctrl-grid.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-shell.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-grid/form-mdctrl-repeater-grid.mjs +1 -1
- package/es/control/map/map.d.ts +15 -0
- package/es/control/map/map.mjs +10 -3
- package/es/control/toolbar/export-excel/export-excel.mjs +54 -52
- package/es/control/toolbar/toolbar.css +1 -1
- package/es/control/toolbar/toolbar.mjs +1 -1
- package/es/editor/autocomplete/autocomplete-editor.controller.mjs +7 -4
- package/es/editor/data-picker/picker-editor.controller.mjs +12 -10
- package/es/editor/list-box/list-box-picker-editor.controller.mjs +3 -2
- package/es/index.mjs +1 -1
- package/es/panel-component/multi-data-container/multi-data-container-item.controller.d.ts +5 -2
- package/es/panel-component/multi-data-container/multi-data-container-item.controller.mjs +27 -2
- package/es/panel-component/multi-data-container/multi-data-container.controller.d.ts +2 -0
- package/es/panel-component/multi-data-container/multi-data-container.controller.mjs +20 -4
- package/es/panel-component/panel-button/panel-button.css +1 -1
- package/es/panel-component/panel-button/panel-button.mjs +1 -1
- package/es/panel-component/panel-field/panel-field.controller.mjs +3 -8
- package/es/panel-component/single-data-container/single-data-container.controller.d.ts +9 -0
- package/es/panel-component/single-data-container/single-data-container.controller.mjs +38 -4
- package/es/view-engine/login-view.engine.d.ts +2 -0
- package/es/view-engine/login-view.engine.mjs +19 -0
- package/lib/common/data-import/data-import.cjs +149 -0
- package/lib/common/data-import/data-import.css +1 -0
- package/lib/common/index.cjs +2 -0
- package/lib/common/map-chart/map-chart.cjs +19 -9
- package/lib/common/map-chart/map-chart.util.cjs +12 -2
- package/lib/common/map-chart/map-manager.cjs +6 -6
- package/lib/control/form/form-detail/form-button/form-button.cjs +1 -1
- package/lib/control/form/form-detail/form-button/form-button.css +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-container/form-mdctrl-container.cjs +2 -2
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-container/form-mdctrl-container.css +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-data-view/form-mdctrl-data-view.cjs +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.cjs +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-grid/form-mdctrl-grid.cjs +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.cjs +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-shell.cjs +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-grid/form-mdctrl-repeater-grid.cjs +1 -1
- package/lib/control/map/map.cjs +9 -2
- package/lib/control/toolbar/export-excel/export-excel.cjs +54 -52
- package/lib/control/toolbar/toolbar.cjs +1 -1
- package/lib/control/toolbar/toolbar.css +1 -1
- package/lib/editor/autocomplete/autocomplete-editor.controller.cjs +7 -4
- package/lib/editor/data-picker/picker-editor.controller.cjs +11 -9
- package/lib/editor/list-box/list-box-picker-editor.controller.cjs +3 -2
- package/lib/index.cjs +1 -1
- package/lib/panel-component/multi-data-container/multi-data-container-item.controller.cjs +26 -1
- package/lib/panel-component/multi-data-container/multi-data-container.controller.cjs +19 -3
- package/lib/panel-component/panel-button/panel-button.cjs +1 -1
- package/lib/panel-component/panel-button/panel-button.css +1 -1
- package/lib/panel-component/panel-field/panel-field.controller.cjs +3 -8
- package/lib/panel-component/single-data-container/single-data-container.controller.cjs +37 -3
- package/lib/view-engine/login-view.engine.cjs +19 -0
- package/package.json +4 -4
- package/dist/map-chart-yT41jdRg.js +0 -2
- package/dist/map-chart-yT41jdRg.js.map +0 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var core = require('@ibiz-template/core');
|
|
4
4
|
var runtime = require('@ibiz-template/runtime');
|
|
5
|
+
var ramda = require('ramda');
|
|
5
6
|
|
|
6
7
|
"use strict";
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
@@ -48,14 +49,14 @@ class ListBoxPickerEditorController extends runtime.EditorController {
|
|
|
48
49
|
this.context,
|
|
49
50
|
this.params
|
|
50
51
|
);
|
|
51
|
-
|
|
52
|
+
const tempParams = ramda.mergeDeepLeft(params, { size: 1e3 });
|
|
52
53
|
if (this.interfaceName) {
|
|
53
54
|
const app = ibiz.hub.getApp(this.context.srfappid);
|
|
54
55
|
const res = await app.deService.exec(
|
|
55
56
|
this.model.appDataEntityId,
|
|
56
57
|
this.interfaceName,
|
|
57
58
|
context,
|
|
58
|
-
|
|
59
|
+
tempParams
|
|
59
60
|
);
|
|
60
61
|
return res;
|
|
61
62
|
}
|
package/lib/index.cjs
CHANGED
|
@@ -221,7 +221,7 @@ var index$1f = require('./util/store/index.cjs');
|
|
|
221
221
|
var index = {
|
|
222
222
|
install: (v) => {
|
|
223
223
|
ibiz.i18n = index$2.iBizI18n;
|
|
224
|
-
ibiz.util.
|
|
224
|
+
ibiz.util.getExcelUtil = () => Promise.resolve().then(function () { return require('./util/xlsx-util/xlsx-util.cjs'); });
|
|
225
225
|
v.use(index$3.IBizCommonComponents);
|
|
226
226
|
v.use(index$W.IBizPanelComponents);
|
|
227
227
|
v.use(index$1b.IBizView);
|
|
@@ -34,6 +34,13 @@ class MultiDataContainerItemController {
|
|
|
34
34
|
*/
|
|
35
35
|
__publicField(this, "panelItems", {});
|
|
36
36
|
this.state.data = data;
|
|
37
|
+
const fields = runtime.getAllPanelField(this.model);
|
|
38
|
+
const fieldKeys = fields.map((item) => item.id);
|
|
39
|
+
data._evt.on("change", (key) => {
|
|
40
|
+
if (fieldKeys.includes(key)) {
|
|
41
|
+
this.childDataChangeNotify([key]);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
37
44
|
}
|
|
38
45
|
get data() {
|
|
39
46
|
return this.state.data;
|
|
@@ -88,13 +95,31 @@ class MultiDataContainerItemController {
|
|
|
88
95
|
);
|
|
89
96
|
}
|
|
90
97
|
async dataChangeNotify(_names) {
|
|
91
|
-
|
|
98
|
+
}
|
|
99
|
+
async childDataChangeNotify(names) {
|
|
100
|
+
Object.values(this.panelItems).forEach((panelItem) => {
|
|
101
|
+
panelItem.dataChangeNotify(names);
|
|
102
|
+
});
|
|
92
103
|
}
|
|
93
104
|
async panelStateNotify(state) {
|
|
94
105
|
Object.values(this.panelItems).forEach((panelItem) => {
|
|
95
106
|
panelItem.panelStateNotify(state);
|
|
96
107
|
});
|
|
97
108
|
}
|
|
109
|
+
async setDataValue(name, value) {
|
|
110
|
+
if (Object.prototype.hasOwnProperty.call(this.state.data, name) && this.state.data[name] === value) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.state.data[name] = value;
|
|
114
|
+
this.childDataChangeNotify([name]);
|
|
115
|
+
}
|
|
116
|
+
destroy() {
|
|
117
|
+
var _a, _b;
|
|
118
|
+
(_b = (_a = this.data).destroy) == null ? void 0 : _b.call(_a);
|
|
119
|
+
Object.values(this.panelItems).forEach((item) => {
|
|
120
|
+
item.destroy();
|
|
121
|
+
});
|
|
122
|
+
}
|
|
98
123
|
}
|
|
99
124
|
|
|
100
125
|
exports.MultiDataContainerItemController = MultiDataContainerItemController;
|
|
@@ -139,7 +139,9 @@ class MultiDataContainerController extends runtime.PanelItemController {
|
|
|
139
139
|
* @param {IData[]} items
|
|
140
140
|
*/
|
|
141
141
|
async setData(items) {
|
|
142
|
-
|
|
142
|
+
const fields = runtime.getAllPanelField(this.model);
|
|
143
|
+
const _items = items.map((item) => new runtime.PanelData(fields, item));
|
|
144
|
+
this.dataItems = _items.map((item) => {
|
|
143
145
|
return new multiDataContainerItem_controller.MultiDataContainerItemController(
|
|
144
146
|
this.model,
|
|
145
147
|
this.panel,
|
|
@@ -154,7 +156,7 @@ class MultiDataContainerController extends runtime.PanelItemController {
|
|
|
154
156
|
})
|
|
155
157
|
);
|
|
156
158
|
}
|
|
157
|
-
this.state.items =
|
|
159
|
+
this.state.items = _items;
|
|
158
160
|
this.childrenStateNotify(runtime.PanelNotifyState.LOAD);
|
|
159
161
|
}
|
|
160
162
|
/**
|
|
@@ -240,13 +242,27 @@ class MultiDataContainerController extends runtime.PanelItemController {
|
|
|
240
242
|
return;
|
|
241
243
|
}
|
|
242
244
|
const updateData = () => {
|
|
243
|
-
|
|
245
|
+
const originData = view.state[dataName];
|
|
246
|
+
if (originData) {
|
|
247
|
+
this.setData(originData);
|
|
248
|
+
} else {
|
|
249
|
+
ibiz.log.error(`\u89C6\u56FEstate\u91CC\u6CA1\u6709${dataName}\u5C5E\u6027`);
|
|
250
|
+
}
|
|
244
251
|
};
|
|
245
252
|
updateData();
|
|
246
253
|
view.evt.on("onDataChange", () => {
|
|
247
254
|
updateData();
|
|
248
255
|
});
|
|
249
256
|
}
|
|
257
|
+
setDataValue(_name, _value) {
|
|
258
|
+
throw new Error("Method not implemented.");
|
|
259
|
+
}
|
|
260
|
+
destroy() {
|
|
261
|
+
super.destroy();
|
|
262
|
+
this.dataItems.forEach((item) => {
|
|
263
|
+
item.destroy();
|
|
264
|
+
});
|
|
265
|
+
}
|
|
250
266
|
}
|
|
251
267
|
|
|
252
268
|
exports.MultiDataContainerController = MultiDataContainerController;
|
|
@@ -90,7 +90,7 @@ const PanelButton = /* @__PURE__ */ vue.defineComponent({
|
|
|
90
90
|
render() {
|
|
91
91
|
if (this.state.visible) {
|
|
92
92
|
return vue.createVNode("div", {
|
|
93
|
-
"class": [this.ns.b(), this.ns.m(this.codeName), ...this.controller.containerClass]
|
|
93
|
+
"class": [this.ns.b(), this.ns.m(this.codeName), this.ns.is("loading", this.state.loading), ...this.controller.containerClass]
|
|
94
94
|
}, [vue.createVNode(vue.resolveComponent("el-button"), {
|
|
95
95
|
"type": this.buttonType,
|
|
96
96
|
"text": this.isText,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-panel-button{--ibiz-panel-button-icon-margin:
|
|
1
|
+
.ibiz-panel-button{--ibiz-panel-button-icon-margin:var(--ibiz-spacing-extra-tight);--ibiz-panel-button-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-panel-button-icon-max-height:var(--ibiz-width-icon-medium);padding:var(--ibiz-spacing-tight);overflow:hidden}.ibiz-panel-button .el-button{width:100%}.ibiz-panel-button .el-button .ibiz-panel-button-content{display:flex;align-items:center;justify-content:flex-start}.ibiz-panel-button .el-button .ibiz-panel-button-content i,.ibiz-panel-button .el-button .ibiz-panel-button-content img{display:inline-block;max-width:var(--ibiz-panel-button-icon-max-width);max-height:var(--ibiz-panel-button-icon-max-height)}.ibiz-panel-button .el-button .ibiz-panel-button-content .ibiz-icon+.ibiz-panel-button-content--caption{margin-left:var(--ibiz-panel-button-icon-margin)}.ibiz-panel-button.is-loading .el-button .ibiz-icon{display:none}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var core = require('@ibiz-template/core');
|
|
4
3
|
var runtime = require('@ibiz-template/runtime');
|
|
5
4
|
var panelField_state = require('./panel-field.state.cjs');
|
|
6
5
|
|
|
@@ -67,11 +66,7 @@ class PanelFieldController extends runtime.PanelItemController {
|
|
|
67
66
|
* @readonly
|
|
68
67
|
*/
|
|
69
68
|
get value() {
|
|
70
|
-
|
|
71
|
-
if (!viewFieldName) {
|
|
72
|
-
throw new core.RuntimeModelError(this.model, "\u6CA1\u6709\u7ED1\u5B9A\u6570\u636E\u9879");
|
|
73
|
-
}
|
|
74
|
-
return this.data[viewFieldName.toLowerCase()];
|
|
69
|
+
return this.data[this.model.id];
|
|
75
70
|
}
|
|
76
71
|
createState() {
|
|
77
72
|
var _a;
|
|
@@ -107,8 +102,8 @@ class PanelFieldController extends runtime.PanelItemController {
|
|
|
107
102
|
* @param {string} name 要设置的面板数据的属性名称
|
|
108
103
|
*/
|
|
109
104
|
async setDataValue(value, name) {
|
|
110
|
-
const {
|
|
111
|
-
name = name ||
|
|
105
|
+
const { id } = this.model;
|
|
106
|
+
name = name || id;
|
|
112
107
|
if (this.dataParent.setDataValue) {
|
|
113
108
|
await this.dataParent.setDataValue(name, value);
|
|
114
109
|
}
|
|
@@ -148,7 +148,17 @@ class SingleDataContainerController extends runtime.PanelItemController {
|
|
|
148
148
|
* @param {IData[]} items
|
|
149
149
|
*/
|
|
150
150
|
async setData(data) {
|
|
151
|
-
|
|
151
|
+
var _a, _b;
|
|
152
|
+
const fields = runtime.getAllPanelField(this.model);
|
|
153
|
+
const fieldKeys = fields.map((item) => item.id);
|
|
154
|
+
const panelData = new runtime.PanelData(fields, data);
|
|
155
|
+
panelData._evt.on("change", (key) => {
|
|
156
|
+
if (fieldKeys.includes(key)) {
|
|
157
|
+
this.childDataChangeNotify([key]);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
(_b = (_a = this.data).destroy) == null ? void 0 : _b.call(_a);
|
|
161
|
+
this.state.data = panelData;
|
|
152
162
|
this.childrenStateNotify(runtime.PanelNotifyState.LOAD);
|
|
153
163
|
}
|
|
154
164
|
/**
|
|
@@ -234,13 +244,30 @@ class SingleDataContainerController extends runtime.PanelItemController {
|
|
|
234
244
|
return;
|
|
235
245
|
}
|
|
236
246
|
const updateData = () => {
|
|
237
|
-
|
|
247
|
+
const originData = view.state[dataName];
|
|
248
|
+
if (originData) {
|
|
249
|
+
this.setData(originData);
|
|
250
|
+
} else {
|
|
251
|
+
ibiz.log.error(`\u89C6\u56FEstate\u91CC\u6CA1\u6709${dataName}\u5C5E\u6027`);
|
|
252
|
+
}
|
|
238
253
|
};
|
|
239
254
|
updateData();
|
|
240
255
|
view.evt.on("onDataChange", () => {
|
|
241
256
|
updateData();
|
|
242
257
|
});
|
|
243
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* 通知所有子面板成员面板操作过程中的数据变更
|
|
261
|
+
*
|
|
262
|
+
* @author lxm
|
|
263
|
+
* @date 2022-09-20 18:09:40
|
|
264
|
+
* @param {string[]} names
|
|
265
|
+
*/
|
|
266
|
+
childDataChangeNotify(names) {
|
|
267
|
+
Object.values(this.panelItems).forEach((panelItem) => {
|
|
268
|
+
panelItem.dataChangeNotify(names);
|
|
269
|
+
});
|
|
270
|
+
}
|
|
244
271
|
/**
|
|
245
272
|
* 设置面板数据的值
|
|
246
273
|
*
|
|
@@ -252,7 +279,14 @@ class SingleDataContainerController extends runtime.PanelItemController {
|
|
|
252
279
|
return;
|
|
253
280
|
}
|
|
254
281
|
this.state.data[name] = value;
|
|
255
|
-
|
|
282
|
+
}
|
|
283
|
+
destroy() {
|
|
284
|
+
var _a, _b;
|
|
285
|
+
super.destroy();
|
|
286
|
+
(_b = (_a = this.data).destroy) == null ? void 0 : _b.call(_a);
|
|
287
|
+
Object.values(this.panelItems).forEach((item) => {
|
|
288
|
+
item.destroy();
|
|
289
|
+
});
|
|
256
290
|
}
|
|
257
291
|
}
|
|
258
292
|
|
|
@@ -14,6 +14,20 @@ class LoginViewEngine extends runtime.ViewEngineBase {
|
|
|
14
14
|
constructor() {
|
|
15
15
|
super(...arguments);
|
|
16
16
|
__publicField(this, "route", vueRouter.useRoute());
|
|
17
|
+
__publicField(this, "enterKeyListener", async (event) => {
|
|
18
|
+
if (event.key === "Enter" && this.AppLoginView.layoutPanel) {
|
|
19
|
+
const args = {
|
|
20
|
+
data: [
|
|
21
|
+
{
|
|
22
|
+
isRemember: this.AppLoginView.layoutPanel.data.isRemember,
|
|
23
|
+
username: this.AppLoginView.layoutPanel.data.username,
|
|
24
|
+
password: this.AppLoginView.layoutPanel.data.password
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
};
|
|
28
|
+
await this.login(args);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
17
31
|
}
|
|
18
32
|
get AppLoginView() {
|
|
19
33
|
return this.view.getController("AppLoginView");
|
|
@@ -33,6 +47,11 @@ class LoginViewEngine extends runtime.ViewEngineBase {
|
|
|
33
47
|
);
|
|
34
48
|
}
|
|
35
49
|
}
|
|
50
|
+
document.addEventListener("keydown", this.enterKeyListener);
|
|
51
|
+
}
|
|
52
|
+
async onDestroyed() {
|
|
53
|
+
super.onDestroyed();
|
|
54
|
+
document.removeEventListener("keydown", this.enterKeyListener);
|
|
36
55
|
}
|
|
37
56
|
async call(key, args = {}) {
|
|
38
57
|
if (key === runtime.SysUIActionTag.LOGIN) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/vue3-components",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"description": "使用 rollup 编译 vue 组件或者 jsx",
|
|
5
5
|
"main": "lib/index.cjs",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
"@floating-ui/dom": "^1.5.3",
|
|
27
27
|
"@ibiz-template-plugin/ai-chat": "^0.0.1",
|
|
28
28
|
"@ibiz-template/core": "^0.2.6",
|
|
29
|
-
"@ibiz-template/model-helper": "^0.2.
|
|
30
|
-
"@ibiz-template/runtime": "^0.2.
|
|
29
|
+
"@ibiz-template/model-helper": "^0.2.10",
|
|
30
|
+
"@ibiz-template/runtime": "^0.2.10",
|
|
31
31
|
"@ibiz-template/theme": "^0.2.0",
|
|
32
|
-
"@ibiz-template/vue3-util": "^0.2.
|
|
32
|
+
"@ibiz-template/vue3-util": "^0.2.10",
|
|
33
33
|
"@ibiz/model-core": "^0.0.20",
|
|
34
34
|
"@imengyu/vue3-context-menu": "^1.3.3",
|
|
35
35
|
"@monaco-editor/loader": "^1.4.0",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
System.register(["vue","ramda","@ibiz-template/vue3-util","echarts"],function(O){"use strict";var y,x,k,S,N,z,v,w,I,T,B,R;return{setters:[function(o){y=o.ref,x=o.onMounted,k=o.defineComponent,S=o.computed,N=o.toRefs,z=o.watch,v=o.createVNode,w=o.createTextVNode},function(o){I=o.mergeDeepRight},function(o){T=o.useNamespace},function(o){B=o.init,R=o.registerMap}],execute:function(){const j={strMapCode:!1,visualMap:{text:["\u9AD8","\u4F4E"],min:0,max:100,rangeColor:["#90d1e7","#fff600","#ff5200"]},pointSymbol:"pin",jsonBaseUrl:"/assets/json/map/jiangsu"};async function $(n,u){return(await ibiz.net.axios({url:`${n}/${u}.json`})).data}function A(n,u,h){const d=new Map,r=y(""),f=y([]);let i;const b=y(),D=e=>{const t={cityNames:{},noChild:e.features.length===1};return e.features.forEach(s=>{const{adcode:p,name:C}=s.properties;t.cityNames[p]=C}),t},M=async e=>{if(d.has(e))return;const t=await $(n.value.jsonBaseUrl,e);d.set(e,D(t)),R(e,t)},_=e=>{const t=d.get(r.value);if(t)return t.cityNames[e]},m=()=>{if(r.value){const e=u(r.value);i.setOption(e),i.resize()}},g=async(e,t=!1)=>{t||h("mapChange",{areaCode:n.value.strMapCode?`${e}`:Number(e)}),d.has(e)||await M(e),r.value=e,f.value.push(e),m()},c=()=>{if(f.value.length>1){f.value.pop();const e=f.value.pop();g(e)}};return x(()=>{i=B(b.value),window.addEventListener("resize",()=>{i?.resize()}),i.on("click",e=>{if(e.componentType==="series"){if(e.seriesType==="scatter"){h("pointClick",e.data);return}if(e.seriesType==="map"&&(e.data&&h("areaClick",e.data),e.name!==r.value)){debugger;g(e.name)}}}),i.on("mouseover",function(e){if(e.componentType==="series"&&e.seriesType==="scatter"){const t=e.dataIndex,s=i.getOption(),p=s.series[e.seriesIndex].data,C=s.series[e.seriesIndex].symbolSize;p[t].symbolSize=C+10,i.setOption(s)}}),i.on("mouseout",function(e){if(e.componentType==="series"&&e.seriesType==="scatter"){const t=e.dataIndex,s=i.getOption(),p=s.series[e.seriesIndex].data;delete p[t].symbolSize,i.setOption(s)}})}),{chartRef:b,historyNames:f,currentName:r,changeMap:g,getCityName:_,goBack:c,refresh:m}}const F=k({name:"IBizMapChart",props:{areaData:{type:Array},pointData:{type:Array},options:{type:Object,default:()=>({})},defaultAreaCode:{type:String,required:!0,default:"320000"}},setup(n,{emit:u}){const h=T("map-chart"),d=S(()=>I(j,n.options)),r=(c,e)=>{if(e==="area"&&n.areaData)return n.areaData.find(t=>t._id===c);if(e==="point"&&n.pointData)return n.pointData.find(t=>t._id===c)},{chartRef:f,historyNames:i,changeMap:b,getCityName:D,goBack:M,refresh:_}=A(d,c=>{const{visualMap:e,pointSymbol:t}=d.value,s=n.areaData||[],p=n.pointData||[];return{geo:{map:c},tooltip:{trigger:"item",textStyle:{color:"#fff",fontSize:12},backgroundColor:"rgba(0, 0, 0, 0.47)",borderWidth:0,extraCssText:"backdrop-filter: blur(3px);"},visualMap:{min:e.min,max:e.max,text:e.text,realtime:!1,hoverLink:!1,inRange:{color:e.rangeColor}},series:[{type:"map",map:c,nameProperty:"adcodeStr",itemStyle:{borderColor:"#FFF",borderWidth:2},tooltip:{formatter:a=>{if(!a.data)return;const l=r(a.data._id,"area");if(l)return l._tooltip}},label:{show:!0,color:"#000000",fontSize:14,formatter:a=>D(a.name)},select:{disabled:!0},data:s.map(a=>({name:`${a._areaCode}`,value:a._value,_id:a._id}))},{type:"scatter",coordinateSystem:"geo",symbol:t,symbolSize:20,visualMap:!1,itemStyle:{color:"#FF1D00"},label:{show:!0,color:"#000000",fontSize:14,textShadowBlur:0,formatter:a=>{const l=r(a.data._id,"point");return l?._text},position:"left",offset:[10,-15]},tooltip:{formatter:a=>{const l=r(a.data._id,"point");return l?._tooltip}},data:p.map(a=>({_id:a._id,symbol:a._symbol?`image://${a._symbol}`:void 0,value:[Number(a._longitude),Number(a._latitude)],visualMap:!1}))}]}},(c,e)=>{switch(c){case"mapChange":u("mapChange",e);break;case"pointClick":u("pointClick",{data:r(e._id,"point")});break;case"areaClick":u("areaClick",{data:r(e._id,"area")});break}});x(()=>{b(n.defaultAreaCode,!0)});const{areaData:m,pointData:g}=N(n);return z([m,g],()=>{_()}),{ns:h,chartRef:f,historyNames:i,goBack:M}},render(){return v("div",{class:this.ns.b()},[v("div",{class:this.ns.e("chart"),ref:"chartRef"},null),this.historyNames.length>1&&v("div",{class:this.ns.e("goback"),onClick:()=>{this.goBack()}},[w("\u8FD4\u56DE")])])}});O({IBizMapChart:F,default:F})}}});
|
|
2
|
-
//# sourceMappingURL=map-chart-yT41jdRg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"map-chart-yT41jdRg.js","sources":["../src/common/map-chart/map-chart.util.ts","../src/common/map-chart/map-json.ts","../src/common/map-chart/map-manager.ts","../src/common/map-chart/map-chart.tsx"],"sourcesContent":["/** 渐变颜色集合 */\nexport const GradientColors = ['#90d1e7', '#fff600', '#ff5200'];\n\nexport const defaultOpts = {\n /** true地图code标识使用字符串,false使用数字 */\n strMapCode: false,\n /** 热力图配置 */\n visualMap: {\n /** 两端的文本,如 ['高', '低'] */\n text: ['高', '低'],\n /** 底部代表的值 */\n min: 0,\n /** 顶部代表的值 */\n max: 100,\n /** 热力图渐变颜色数组 */\n rangeColor: GradientColors,\n },\n pointSymbol: 'pin',\n jsonBaseUrl: '/assets/json/map/jiangsu',\n};\n\nexport type MapOptions = typeof defaultOpts;\n","export async function getJsonUrl(\n baseUrl: string,\n code: string | number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<any> {\n const res = await ibiz.net.axios({\n url: `${baseUrl}/${code}.json`,\n });\n return res.data;\n}\n","/* eslint-disable no-unused-vars */\nimport { registerMap as register, EChartsType, init } from 'echarts';\nimport { ComputedRef, onMounted, ref } from 'vue';\nimport { MapOptions } from './map-chart.util';\nimport { getJsonUrl } from './map-json';\n\n/**\n * 使用echarts地图\n * @author lxm\n * @date 2023-04-06 12:00:07\n * @export\n * @param {(name: string) => IData} calcEchartsOpts 计算echarts的Options\n * @param {(name: string, e: IData) => void} emit 事件回调\n * @return {*}\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function useMapManager(\n opts: ComputedRef<MapOptions>,\n calcEchartsOpts: (name: string) => IData,\n emit: (name: string, e: IData) => void,\n) {\n const mapInfos = new Map<string, IData>();\n\n const currentName = ref('');\n\n const historyNames = ref<string[]>([]);\n\n let chart: EChartsType;\n const chartRef = ref();\n\n const parseJson = (json: IData) => {\n const info: IData = {\n cityNames: {},\n noChild: json.features.length === 1,\n };\n json.features.forEach((item: IData) => {\n const { adcode, name } = item.properties;\n info.cityNames[adcode] = name;\n });\n return info;\n };\n\n const registerMap = async (name: string) => {\n if (mapInfos.has(name)) {\n return;\n }\n const json = await getJsonUrl(opts.value.jsonBaseUrl, name);\n mapInfos.set(name, parseJson(json));\n register(name, json);\n };\n\n const getCityName = (mapName: string | number) => {\n const info = mapInfos.get(currentName.value);\n if (info) {\n return info.cityNames[mapName];\n }\n };\n\n const refresh = () => {\n if (currentName.value) {\n const options = calcEchartsOpts(currentName.value);\n chart.setOption(options);\n chart.resize();\n }\n };\n\n const changeMap = async (name: string, isInit: boolean = false) => {\n if (!isInit) {\n emit('mapChange', {\n areaCode: opts.value.strMapCode ? `${name}` : Number(name),\n });\n }\n\n if (!mapInfos.has(name)) {\n await registerMap(name);\n }\n currentName.value = name;\n historyNames.value.push(name);\n refresh();\n };\n\n const goBack = () => {\n // 一个时只有当前的name,不能后退。\n if (historyNames.value.length > 1) {\n historyNames.value.pop(); // 先删除当前地图的name\n const name = historyNames.value.pop(); // 获取上一个地图的name\n changeMap(name!);\n }\n };\n\n onMounted(() => {\n chart = init(chartRef.value);\n\n window.addEventListener('resize', () => {\n chart?.resize();\n });\n\n chart.on('click', params => {\n // 散点点击事件\n if (params.componentType === 'series') {\n if (params.seriesType === 'scatter') {\n emit('pointClick', params.data as IData);\n return;\n }\n if (params.seriesType === 'map') {\n if (params.data) {\n emit('areaClick', params.data as IData);\n }\n // 禁止切换同一个地图,到最下级的时候会出现这种情况\n if (params.name !== currentName.value) {\n debugger;\n changeMap(params.name);\n }\n }\n }\n });\n\n // 散点悬浮size变大\n chart.on('mouseover', function (params) {\n if (params.componentType === 'series') {\n if (params.seriesType === 'scatter') {\n const dataIndex = params.dataIndex;\n const option: IData = chart.getOption();\n const seriesData = option.series[params.seriesIndex!].data;\n const originSize = option.series[params.seriesIndex!].symbolSize;\n // 修改悬浮的数据点大小\n seriesData[dataIndex].symbolSize = originSize + 10;\n\n // 刷新图表\n chart.setOption(option);\n }\n }\n });\n chart.on('mouseout', function (params) {\n if (params.componentType === 'series') {\n if (params.seriesType === 'scatter') {\n const dataIndex = params.dataIndex;\n const option: IData = chart.getOption();\n const seriesData = option.series[params.seriesIndex!].data;\n\n // 恢复原始的数据点大小\n delete seriesData[dataIndex].symbolSize;\n\n // 刷新图表\n chart.setOption(option);\n }\n }\n });\n });\n\n return {\n chartRef,\n historyNames,\n currentName,\n changeMap,\n getCityName,\n goBack,\n refresh,\n };\n}\n","/* eslint-disable eqeqeq */\nimport {\n defineComponent,\n onMounted,\n PropType,\n computed,\n toRefs,\n watch,\n} from 'vue';\nimport { mergeDeepRight } from 'ramda';\nimport { useNamespace } from '@ibiz-template/vue3-util';\nimport { IMapData } from '@ibiz-template/runtime';\nimport { defaultOpts, MapOptions } from './map-chart.util';\nimport { useMapManager } from './map-manager';\nimport './map-chart.scss';\n\nexport const IBizMapChart = defineComponent({\n name: 'IBizMapChart',\n props: {\n areaData: {\n type: Array<IMapData>,\n },\n pointData: {\n type: Array<IMapData>,\n },\n options: {\n type: Object as PropType<Partial<MapOptions>>,\n default: () => ({}),\n },\n defaultAreaCode: { type: String, required: true, default: '320000' },\n },\n setup(props, { emit }) {\n const ns = useNamespace('map-chart');\n const options = computed(() => mergeDeepRight(defaultOpts, props.options));\n\n const findData = (id: string, type: 'area' | 'point') => {\n if (type === 'area' && props.areaData) {\n return props.areaData.find(item => item._id === id);\n }\n if (type === 'point' && props.pointData) {\n return props.pointData.find(item => item._id === id);\n }\n };\n\n const { chartRef, historyNames, changeMap, getCityName, goBack, refresh } =\n useMapManager(\n options,\n mapName => {\n const { visualMap, pointSymbol } = options.value;\n const areaData = props.areaData || [];\n const pointData = props.pointData || [];\n\n const result: IData = {\n geo: {\n map: mapName,\n },\n tooltip: {\n trigger: 'item',\n // 全局的tooltip样式\n textStyle: {\n color: '#fff',\n fontSize: 12,\n },\n backgroundColor: 'rgba(0, 0, 0, 0.47)',\n borderWidth: 0,\n extraCssText: 'backdrop-filter: blur(3px);',\n },\n visualMap: {\n min: visualMap.min,\n max: visualMap.max,\n text: visualMap.text,\n realtime: false,\n hoverLink: false,\n inRange: {\n color: visualMap.rangeColor,\n },\n },\n series: [\n // 地图区块序列\n {\n type: 'map',\n map: mapName,\n // 地图JSON里和name匹配的属性名称\n nameProperty: 'adcodeStr',\n itemStyle: {\n borderColor: '#FFF',\n borderWidth: 2,\n },\n tooltip: {\n formatter: (params: IData) => {\n if (!params.data) {\n // 没有数据的时候不显示tooltip\n return;\n }\n const find = findData(params.data._id, 'area')!;\n if (!find) {\n return;\n }\n return find._tooltip;\n },\n },\n label: {\n // 区块文字固定显示\n show: true,\n // 字体样式\n color: '#000000',\n fontSize: 14,\n formatter: (params: IData) => {\n return getCityName(params.name);\n },\n },\n select: {\n disabled: true,\n },\n data: areaData.map(item => ({\n name: `${item._areaCode}`,\n value: item._value,\n _id: item._id,\n })),\n },\n // 地图散点序列\n {\n type: 'scatter',\n coordinateSystem: 'geo',\n symbol: pointSymbol,\n symbolSize: 20,\n visualMap: false,\n itemStyle: {\n color: '#FF1D00',\n },\n label: {\n show: true,\n // 字体样式\n color: '#000000',\n fontSize: 14,\n textShadowBlur: 0,\n formatter: (params: IData) => {\n const find = findData(params.data._id, 'point')!;\n return find?._text;\n },\n // 偏移\n position: 'left',\n offset: [10, -15],\n },\n tooltip: {\n formatter: (params: IData) => {\n const find = findData(params.data._id, 'point')!;\n return find?._tooltip;\n },\n },\n data: pointData.map(item => {\n return {\n _id: item._id,\n symbol: item._symbol\n ? `image://${item._symbol}`\n : undefined,\n value: [Number(item._longitude), Number(item._latitude)],\n // 每个点逃离visualMap\n visualMap: false,\n };\n }),\n },\n ],\n };\n return result;\n },\n (name, e) => {\n switch (name) {\n case 'mapChange':\n emit('mapChange', e);\n break;\n case 'pointClick':\n emit('pointClick', { data: findData(e._id, 'point') });\n break;\n case 'areaClick':\n emit('areaClick', { data: findData(e._id, 'area') });\n break;\n default:\n break;\n }\n },\n );\n\n onMounted(() => {\n changeMap(props.defaultAreaCode, true);\n });\n\n const { areaData, pointData } = toRefs(props);\n watch([areaData, pointData], () => {\n refresh();\n });\n\n return { ns, chartRef, historyNames, goBack };\n },\n render() {\n return (\n <div class={this.ns.b()}>\n <div class={this.ns.e('chart')} ref='chartRef'></div>\n {this.historyNames.length > 1 && (\n <div\n class={this.ns.e('goback')}\n onClick={() => {\n this.goBack();\n }}\n >\n 返回\n </div>\n )}\n </div>\n );\n },\n});\n\nexport default IBizMapChart;\n"],"names":["defaultOpts","getJsonUrl","baseUrl","code","useMapManager","opts","calcEchartsOpts","emit","mapInfos","currentName","ref","historyNames","chart","chartRef","parseJson","json","info","item","adcode","name","registerMap","register","getCityName","mapName","refresh","options","changeMap","isInit","goBack","onMounted","init","params","dataIndex","option","seriesData","originSize","IBizMapChart","defineComponent","props","areaData","type","Array","pointData","Object","default","defaultAreaCode","String","required","setup","ns","useNamespace","computed","mergeDeepRight","findData","id","find","visualMap","pointSymbol","value","geo","map","tooltip","trigger","textStyle","color","fontSize","backgroundColor","borderWidth","extraCssText","min","max","text","realtime","hoverLink","inRange","rangeColor","series","nameProperty","itemStyle","borderColor","data","select","disabled","areaData2","_areaCode","_value","coordinateSystem","symbol","symbolSize","label","textShadowBlur","position","offset","pointData2","_id","_symbol","e","toRefs","watch","render","_createVNode","b","length","onClick","_createTextVNode","exports"],"mappings":"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"}
|