hy-dispatch-ui-v3 0.2.59 → 0.2.60
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/tailwind.css +129 -0
- package/es/_virtual/_plugin-vue_export-helper.mjs +9 -0
- package/es/api/index.mjs +137 -0
- package/es/bussiness/hyAddDepartmentType/addDepartmentType.vue.mjs +365 -0
- package/es/bussiness/hyAddDepartmentType/index.mjs +6 -0
- package/es/bussiness/hyAddDepartmentType/style/addDepartmentType.scss +31 -0
- package/es/bussiness/index.mjs +1 -1
- package/es/components/hyAudioPlayer/audioPlayer.vue.mjs +1 -1
- package/es/components/hyBatchUploadDialog/batchUploadDialog.vue.mjs +45 -36
- package/es/components/hyDatePicker/datePicker.vue.mjs +2 -0
- package/es/components/hyForm/cpns/formItem.vue.mjs +106 -43
- package/es/components/hyForm/cpns/locationSelect.vue.mjs +358 -0
- package/es/components/hyForm/form.vue.mjs +83 -31
- package/es/components/hyForm/js/index.mjs +9 -2
- package/es/components/hyForm/js/useAppForm.mjs +6 -36
- package/es/components/hyMap/map.vue.mjs +3 -3
- package/es/components/hyRadioGroup/index.mjs +6 -0
- package/es/components/hyRadioGroup/radioGroup.vue.mjs +123 -0
- package/es/components/hyRadioGroup/style/radioGroup.scss +0 -0
- package/es/components/hySearch/cpns/searchItem.vue.mjs +20 -13
- package/es/components/hySearch/js/useAppSearch.mjs +3 -33
- package/es/components/hyTable/cpns/virtualTable.vue.mjs +9 -1
- package/es/components/hyTable/js/index.mjs +6 -3
- package/es/components/hyTable/js/search.mjs +1 -0
- package/es/components/hyTable/table.vue.mjs +11 -4
- package/es/components/hyTableForm/batchTableForm.vue.mjs +5 -2
- package/es/components/hyTableForm/tableForm.vue.mjs +6 -0
- package/es/components/hyTree/js/index.mjs +69 -53
- package/es/components/hyTree/tree.vue.mjs +36 -1
- package/es/components/index.mjs +1 -0
- package/es/index.mjs +3 -1
- package/es/locale/en.mjs +17 -1
- package/es/locale/zh_CN.mjs +17 -1
- package/es/static/hy-svg-icons/hy-icon-ops-linear-shouqi.js +8 -0
- package/es/static/hy-svg-icons/hy-icon-ops-linear-zhankai.js +8 -0
- package/es/style/index.scss +53 -0
- package/es/style/theme.scss +0 -53
- package/es/utils/form.mjs +56 -7
- package/es/utils/index.mjs +1 -1
- package/es/utils/map/hook/bigMap.mjs +4 -0
- package/es/utils/map/hook/gaode.mjs +3 -0
- package/es/utils/map/hook/leafletjs.mjs +10 -10
- package/es/utils/map/index.mjs +27 -7
- package/es/version.mjs +1 -1
- package/lib/_virtual/_plugin-vue_export-helper.js +13 -0
- package/lib/api/index.js +147 -0
- package/lib/bussiness/hyAddDepartmentType/addDepartmentType.vue.js +369 -0
- package/lib/bussiness/hyAddDepartmentType/index.js +11 -0
- package/lib/bussiness/hyAddDepartmentType/style/addDepartmentType.scss +31 -0
- package/lib/bussiness/index.js +5 -0
- package/lib/components/hyBatchUploadDialog/batchUploadDialog.vue.js +44 -35
- package/lib/components/hyDatePicker/datePicker.vue.js +2 -0
- package/lib/components/hyForm/cpns/formItem.vue.js +111 -48
- package/lib/components/hyForm/cpns/locationSelect.vue.js +362 -0
- package/lib/components/hyForm/form.vue.js +79 -27
- package/lib/components/hyForm/js/index.js +9 -1
- package/lib/components/hyForm/js/useAppForm.js +5 -35
- package/lib/components/hyMap/map.vue.js +3 -3
- package/lib/components/hyRadioGroup/index.js +11 -0
- package/lib/components/hyRadioGroup/radioGroup.vue.js +127 -0
- package/lib/components/hyRadioGroup/style/radioGroup.scss +0 -0
- package/lib/components/hySearch/cpns/searchItem.vue.js +19 -12
- package/lib/components/hySearch/js/useAppSearch.js +2 -32
- package/lib/components/hyTable/cpns/virtualTable.vue.js +9 -1
- package/lib/components/hyTable/js/index.js +6 -3
- package/lib/components/hyTable/js/search.js +1 -0
- package/lib/components/hyTable/table.vue.js +43 -36
- package/lib/components/hyTableForm/batchTableForm.vue.js +5 -2
- package/lib/components/hyTableForm/tableForm.vue.js +6 -0
- package/lib/components/hyTree/js/index.js +69 -53
- package/lib/components/hyTree/tree.vue.js +36 -1
- package/lib/components/index.js +14 -12
- package/lib/index.js +56 -49
- package/lib/locale/en.js +17 -1
- package/lib/locale/zh_CN.js +17 -1
- package/lib/static/hy-svg-icons/hy-icon-ops-linear-shouqi.js +8 -0
- package/lib/static/hy-svg-icons/hy-icon-ops-linear-zhankai.js +8 -0
- package/lib/style/index.scss +53 -0
- package/lib/style/theme.scss +0 -53
- package/lib/utils/form.js +57 -5
- package/lib/utils/index.js +3 -0
- package/lib/utils/map/hook/bigMap.js +4 -0
- package/lib/utils/map/hook/gaode.js +3 -0
- package/lib/utils/map/hook/leafletjs.js +10 -10
- package/lib/utils/map/index.js +26 -6
- package/lib/version.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var vue = require('vue');
|
|
6
|
+
var elementPlus = require('element-plus');
|
|
7
|
+
var formItem = require('./formItem.vue.js');
|
|
8
|
+
var useLocale = require('../../../hooks/useLocale.js');
|
|
9
|
+
var is = require('../../../utils/is.js');
|
|
10
|
+
var form = require('../../../utils/form.js');
|
|
11
|
+
var index = require('../../../utils/map/index.js');
|
|
12
|
+
var index$1 = require('../../hyInput/index.js');
|
|
13
|
+
var index$2 = require('../../hyIcon/index.js');
|
|
14
|
+
var index$3 = require('../../hyMap/index.js');
|
|
15
|
+
|
|
16
|
+
const _sfc_main = {
|
|
17
|
+
__name: "locationSelect",
|
|
18
|
+
props: {
|
|
19
|
+
model: {
|
|
20
|
+
type: Object,
|
|
21
|
+
default: () => ({})
|
|
22
|
+
},
|
|
23
|
+
column: {
|
|
24
|
+
type: Object,
|
|
25
|
+
default: () => ({})
|
|
26
|
+
},
|
|
27
|
+
rules: {
|
|
28
|
+
type: Object,
|
|
29
|
+
default: () => ({})
|
|
30
|
+
},
|
|
31
|
+
columnNum: {
|
|
32
|
+
type: Number,
|
|
33
|
+
default: 1
|
|
34
|
+
},
|
|
35
|
+
loading: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
default: false
|
|
38
|
+
},
|
|
39
|
+
disabled: {
|
|
40
|
+
type: Boolean,
|
|
41
|
+
default: false
|
|
42
|
+
},
|
|
43
|
+
readonly: {
|
|
44
|
+
type: Boolean,
|
|
45
|
+
default: false
|
|
46
|
+
},
|
|
47
|
+
size: {
|
|
48
|
+
type: String,
|
|
49
|
+
default: "default"
|
|
50
|
+
},
|
|
51
|
+
allMapSelect: {
|
|
52
|
+
type: Boolean,
|
|
53
|
+
default: false
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
emits: ["setMapSize"],
|
|
57
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
58
|
+
const props = __props;
|
|
59
|
+
const emits = __emit;
|
|
60
|
+
const { t } = useLocale.useLocale();
|
|
61
|
+
const containerRef = vue.useTemplateRef("containerRef");
|
|
62
|
+
const addressValue = vue.computed({
|
|
63
|
+
get() {
|
|
64
|
+
const item = props.column.children.find((v) => v.type === "address");
|
|
65
|
+
if (item) {
|
|
66
|
+
const prop = is.isArray(item.field) ? item.field[0] : item.field;
|
|
67
|
+
return form.getValueByProp(props.model, prop);
|
|
68
|
+
}
|
|
69
|
+
return "";
|
|
70
|
+
},
|
|
71
|
+
set(val) {
|
|
72
|
+
const item = props.column.children.find((v) => v.type === "address");
|
|
73
|
+
if (item) {
|
|
74
|
+
const prop = is.isArray(item.field) ? item.field[0] : item.field;
|
|
75
|
+
form.setValueByProp(props.model, prop, val);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
const lngValue = vue.computed({
|
|
80
|
+
get() {
|
|
81
|
+
const item = props.column.children.find((v) => v.type === "lng");
|
|
82
|
+
if (item) {
|
|
83
|
+
const prop = is.isArray(item.field) ? item.field[0] : item.field;
|
|
84
|
+
return form.getValueByProp(props.model, prop);
|
|
85
|
+
}
|
|
86
|
+
return "";
|
|
87
|
+
},
|
|
88
|
+
set(val) {
|
|
89
|
+
const item = props.column.children.find((v) => v.type === "lng");
|
|
90
|
+
if (item) {
|
|
91
|
+
const prop = is.isArray(item.field) ? item.field[0] : item.field;
|
|
92
|
+
form.setValueByProp(props.model, prop, val);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
const latValue = vue.computed({
|
|
97
|
+
get() {
|
|
98
|
+
const item = props.column.children.find((v) => v.type === "lat");
|
|
99
|
+
if (item) {
|
|
100
|
+
const prop = is.isArray(item.field) ? item.field[0] : item.field;
|
|
101
|
+
return form.getValueByProp(props.model, prop);
|
|
102
|
+
}
|
|
103
|
+
return "";
|
|
104
|
+
},
|
|
105
|
+
set(val) {
|
|
106
|
+
const item = props.column.children.find((v) => v.type === "lat");
|
|
107
|
+
if (item) {
|
|
108
|
+
const prop = is.isArray(item.field) ? item.field[0] : item.field;
|
|
109
|
+
form.setValueByProp(props.model, prop, val);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
const containerStyle = vue.computed(() => {
|
|
114
|
+
const columnNum = is.isNumber(props.column.columnNum) && props.column.columnNum > 0 ? props.column.columnNum : is.isNumber(props.columnNum) && props.columnNum > 0 ? props.columnNum || 1 : 1;
|
|
115
|
+
return {
|
|
116
|
+
gridTemplateColumns: `repeat(${columnNum}, minmax(0, 1fr))`
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
const children = vue.computed(
|
|
120
|
+
() => props.column.children.map((item) => {
|
|
121
|
+
if (item.type === "address") {
|
|
122
|
+
return {
|
|
123
|
+
rightSlot: "addressRight",
|
|
124
|
+
...item,
|
|
125
|
+
type: "input",
|
|
126
|
+
slot: "address",
|
|
127
|
+
attrs: {
|
|
128
|
+
placeholder: "\u8F93\u5165\u5730\u5740\u53EF\u641C\u7D22",
|
|
129
|
+
...item.attrs
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
...item,
|
|
135
|
+
type: "input",
|
|
136
|
+
attrs: {
|
|
137
|
+
// placeholder: item.type === 'lng' ? '经度' : '维度',
|
|
138
|
+
...item.attrs
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
})
|
|
142
|
+
);
|
|
143
|
+
const mapConfig = JSON.parse(window.sessionStorage.getItem("mapConfig") || "{}");
|
|
144
|
+
let hyMap = null;
|
|
145
|
+
let map = null;
|
|
146
|
+
const poiServer = index.setPoiServer(mapConfig);
|
|
147
|
+
let marker = null;
|
|
148
|
+
function placeSearchFn(address) {
|
|
149
|
+
poiServer.placeSearch({
|
|
150
|
+
pageSize: 1,
|
|
151
|
+
// 单页显示结果条数
|
|
152
|
+
pageIndex: 1,
|
|
153
|
+
convertIngAndLat: false,
|
|
154
|
+
query: address
|
|
155
|
+
}).then(({ results }) => {
|
|
156
|
+
console.log(results);
|
|
157
|
+
if (results && results.length) {
|
|
158
|
+
const geographicalPosition = results[0];
|
|
159
|
+
throughCoordinatePosition(
|
|
160
|
+
geographicalPosition.lng,
|
|
161
|
+
geographicalPosition.lat
|
|
162
|
+
);
|
|
163
|
+
} else {
|
|
164
|
+
elementPlus.ElMessage.error("\u6CA1\u6709\u627E\u5230\u641C\u7D22\u5730\u7406\u4F4D\u7F6E");
|
|
165
|
+
}
|
|
166
|
+
}).catch((error) => {
|
|
167
|
+
console.log("\u672A\u627E\u5230\u5730\u5740", error);
|
|
168
|
+
elementPlus.ElMessage.error("\u6CA1\u6709\u627E\u5230\u641C\u7D22\u5730\u7406\u4F4D\u7F6E");
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function throughCoordinatePosition(lng, lat) {
|
|
172
|
+
poiServer.geocoderFormat({
|
|
173
|
+
lat,
|
|
174
|
+
lng
|
|
175
|
+
}).then(({ results }) => {
|
|
176
|
+
geographicalPositionFn({
|
|
177
|
+
lng,
|
|
178
|
+
lat,
|
|
179
|
+
address: results.address,
|
|
180
|
+
name: results.address
|
|
181
|
+
});
|
|
182
|
+
}).catch(() => {
|
|
183
|
+
geographicalPositionFn({
|
|
184
|
+
lng,
|
|
185
|
+
lat,
|
|
186
|
+
address: `${Number(lat).toFixed(6)}\u3001${Number(lng).toFixed(6)}`,
|
|
187
|
+
name: `${Number(lat).toFixed(6)}\u3001${Number(lng).toFixed(6)}`
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
function geographicalPositionFn(obj) {
|
|
192
|
+
console.log("\u7ED3\u679C", obj);
|
|
193
|
+
addressValue.value = obj.address;
|
|
194
|
+
lngValue.value = obj.lng;
|
|
195
|
+
latValue.value = obj.lat;
|
|
196
|
+
}
|
|
197
|
+
function addressEnter() {
|
|
198
|
+
console.log("\u6848\u4EF6enter");
|
|
199
|
+
if (addressValue.value) {
|
|
200
|
+
placeSearchFn(addressValue.value);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function complete(initHyMap, initMap) {
|
|
204
|
+
hyMap = initHyMap;
|
|
205
|
+
map = initMap;
|
|
206
|
+
map.on("click", (res) => {
|
|
207
|
+
console.log(res);
|
|
208
|
+
const latlng = res.latlng;
|
|
209
|
+
setMarker(res.latlng);
|
|
210
|
+
throughCoordinatePosition(latlng.lng, latlng.lat);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
function setMarker({ lat, lng }) {
|
|
214
|
+
if (marker) {
|
|
215
|
+
marker.setLatLng({ lat, lng });
|
|
216
|
+
map.setView({ lat, lng }, mapConfig.maxZoom || 18);
|
|
217
|
+
} else {
|
|
218
|
+
const divIcon = hyMap.DivIcon({
|
|
219
|
+
html: '<svg class="hy-icon !w-9 !h-14 mr-1 text-auxiliary" svgName="map-marker-trajectory-personnel"><use xlink:href="#hy-icon-map-marker-trajectory-personnel"></use></svg>',
|
|
220
|
+
iconSize: [36, 56],
|
|
221
|
+
iconAnchor: [20, 56]
|
|
222
|
+
});
|
|
223
|
+
marker = hyMap.Marker({
|
|
224
|
+
icon: divIcon,
|
|
225
|
+
zIndexOffset: 1,
|
|
226
|
+
position: {
|
|
227
|
+
lat,
|
|
228
|
+
lng
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
marker.addTo(map);
|
|
232
|
+
map.setView({ lat, lng }, mapConfig.maxZoom || 18);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function setMapSize() {
|
|
236
|
+
emits("setMapSize");
|
|
237
|
+
setTimeout(() => {
|
|
238
|
+
map.invalidateSize();
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
vue.onBeforeUnmount(() => {
|
|
242
|
+
if (marker) {
|
|
243
|
+
marker.remove();
|
|
244
|
+
}
|
|
245
|
+
map.removeMap();
|
|
246
|
+
map = null;
|
|
247
|
+
hyMap = null;
|
|
248
|
+
});
|
|
249
|
+
__expose({
|
|
250
|
+
setMarker
|
|
251
|
+
});
|
|
252
|
+
return (_ctx, _cache) => {
|
|
253
|
+
return vue.openBlock(), vue.createElementBlock("div", { class: "w-full h-full flex flex-col" }, [
|
|
254
|
+
vue.createElementVNode(
|
|
255
|
+
"div",
|
|
256
|
+
{
|
|
257
|
+
ref_key: "containerRef",
|
|
258
|
+
ref: containerRef,
|
|
259
|
+
class: "grid gap-x-6",
|
|
260
|
+
style: vue.normalizeStyle(containerStyle.value)
|
|
261
|
+
},
|
|
262
|
+
[
|
|
263
|
+
(vue.openBlock(true), vue.createElementBlock(
|
|
264
|
+
vue.Fragment,
|
|
265
|
+
null,
|
|
266
|
+
vue.renderList(children.value, (item, index) => {
|
|
267
|
+
return vue.openBlock(), vue.createBlock(formItem.default, {
|
|
268
|
+
key: index,
|
|
269
|
+
model: __props.model,
|
|
270
|
+
column: item,
|
|
271
|
+
rules: __props.rules,
|
|
272
|
+
size: __props.size,
|
|
273
|
+
loading: __props.loading,
|
|
274
|
+
disabled: __props.disabled,
|
|
275
|
+
readonly: __props.readonly
|
|
276
|
+
}, vue.createSlots({
|
|
277
|
+
addressRight: vue.withCtx(() => [
|
|
278
|
+
vue.createElementVNode("div", { class: "h-full flex items-center text-auxiliary" }, [
|
|
279
|
+
vue.createElementVNode("span", { class: "text-xs" }, [
|
|
280
|
+
vue.createVNode(vue.unref(index$2.HyIcon), {
|
|
281
|
+
"svg-name": "dispatch-share-tips",
|
|
282
|
+
class: "!w-3 !h-3 mr-1 text-auxiliary"
|
|
283
|
+
}),
|
|
284
|
+
vue.createElementVNode("span", null, "\u53EF\u901A\u8FC7\u5730\u56FE\u70B9\u9009\u4EE5\u83B7\u53D6\u7CBE\u786E\u5750\u6807")
|
|
285
|
+
])
|
|
286
|
+
])
|
|
287
|
+
]),
|
|
288
|
+
address: vue.withCtx(({ column }) => [
|
|
289
|
+
vue.createVNode(vue.unref(index$1.HyInput), vue.mergeProps({
|
|
290
|
+
modelValue: addressValue.value,
|
|
291
|
+
"onUpdate:modelValue": ($event) => addressValue.value = $event
|
|
292
|
+
}, { ref_for: true }, column.attrs, {
|
|
293
|
+
onKeyup: vue.withKeys(addressEnter, ["enter"])
|
|
294
|
+
}), null, 16, ["modelValue", "onUpdate:modelValue"])
|
|
295
|
+
]),
|
|
296
|
+
_: 2
|
|
297
|
+
/* DYNAMIC */
|
|
298
|
+
}, [
|
|
299
|
+
vue.renderList(_ctx.$slots, (_, slotName) => {
|
|
300
|
+
return {
|
|
301
|
+
name: slotName,
|
|
302
|
+
fn: vue.withCtx((scope) => [
|
|
303
|
+
vue.renderSlot(_ctx.$slots, slotName, vue.mergeProps({ ref_for: true }, scope))
|
|
304
|
+
])
|
|
305
|
+
};
|
|
306
|
+
})
|
|
307
|
+
]), 1032, ["model", "column", "rules", "size", "loading", "disabled", "readonly"]);
|
|
308
|
+
}),
|
|
309
|
+
128
|
|
310
|
+
/* KEYED_FRAGMENT */
|
|
311
|
+
))
|
|
312
|
+
],
|
|
313
|
+
4
|
|
314
|
+
/* STYLE */
|
|
315
|
+
),
|
|
316
|
+
vue.createElementVNode(
|
|
317
|
+
"div",
|
|
318
|
+
{
|
|
319
|
+
class: vue.normalizeClass([[__props.allMapSelect ? "h-0 flex-grow" : "h-[280px]"], "w-full border border-border rounded relative box-border"])
|
|
320
|
+
},
|
|
321
|
+
[
|
|
322
|
+
vue.createElementVNode("div", { class: "w-full h-full relative z-10" }, [
|
|
323
|
+
vue.createVNode(vue.unref(index$3.HyMap), {
|
|
324
|
+
mapType: vue.unref(mapConfig).mapType,
|
|
325
|
+
mapConfig: vue.unref(mapConfig),
|
|
326
|
+
onComplete: complete
|
|
327
|
+
}, null, 8, ["mapType", "mapConfig"])
|
|
328
|
+
]),
|
|
329
|
+
vue.createElementVNode(
|
|
330
|
+
"div",
|
|
331
|
+
{
|
|
332
|
+
class: vue.normalizeClass(["z-20 cursor-pointer absolute rounded top-2 right-2 w-[110px] h-8 border bg-background/70 text-xs flex items-center justify-center gap-1", [
|
|
333
|
+
__props.allMapSelect ? "border-theme text-theme" : "border-border/50 text-main"
|
|
334
|
+
]]),
|
|
335
|
+
onClick: vue.withModifiers(setMapSize, ["stop"])
|
|
336
|
+
},
|
|
337
|
+
[
|
|
338
|
+
vue.createVNode(vue.unref(index$2.HyIcon), {
|
|
339
|
+
svgName: __props.allMapSelect ? "ops-button-reduce" : "ops-button-amplify",
|
|
340
|
+
class: vue.normalizeClass(["!w-3 !h-3 text-main", [__props.allMapSelect ? "text-theme" : "text-main"]])
|
|
341
|
+
}, null, 8, ["svgName", "class"]),
|
|
342
|
+
vue.createElementVNode(
|
|
343
|
+
"span",
|
|
344
|
+
null,
|
|
345
|
+
vue.toDisplayString(__props.allMapSelect ? "\u9000\u51FA\u5730\u56FE\u653E\u5927" : "\u653E\u5927\u5730\u56FE\u70B9\u9009"),
|
|
346
|
+
1
|
|
347
|
+
/* TEXT */
|
|
348
|
+
)
|
|
349
|
+
],
|
|
350
|
+
2
|
|
351
|
+
/* CLASS */
|
|
352
|
+
)
|
|
353
|
+
],
|
|
354
|
+
2
|
|
355
|
+
/* CLASS */
|
|
356
|
+
)
|
|
357
|
+
]);
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
exports.default = _sfc_main;
|
|
@@ -7,6 +7,7 @@ var elementPlus = require('element-plus');
|
|
|
7
7
|
var formItem = require('./cpns/formItem.vue.js');
|
|
8
8
|
var extraItem = require('./cpns/extraItem.vue.js');
|
|
9
9
|
var arrayItem = require('./cpns/arrayItem.vue.js');
|
|
10
|
+
var locationSelect = require('./cpns/locationSelect.vue.js');
|
|
10
11
|
var index = require('./js/index.js');
|
|
11
12
|
var useAppForm = require('./js/useAppForm.js');
|
|
12
13
|
var useLocale = require('../../hooks/useLocale.js');
|
|
@@ -53,7 +54,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
53
54
|
// 'large' | 'default' | 'small'
|
|
54
55
|
}
|
|
55
56
|
},
|
|
56
|
-
|
|
57
|
+
emits: ["on-allMapSelect"],
|
|
58
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
59
|
+
const emit = __emit;
|
|
57
60
|
const props = __props;
|
|
58
61
|
const { t } = useLocale.useLocale();
|
|
59
62
|
const formTemplateRef = vue.useTemplateRef("formTemplateRef");
|
|
@@ -73,6 +76,12 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
73
76
|
gridTemplateColumns: `repeat(${columnNum}, minmax(0, 1fr))`
|
|
74
77
|
};
|
|
75
78
|
});
|
|
79
|
+
const locationSelectRef = vue.useTemplateRef("locationSelectRef");
|
|
80
|
+
const allMapSelect = vue.ref(false);
|
|
81
|
+
function setMapSize() {
|
|
82
|
+
allMapSelect.value = !allMapSelect.value;
|
|
83
|
+
emit("on-allMapSelect", allMapSelect.value);
|
|
84
|
+
}
|
|
76
85
|
__expose({
|
|
77
86
|
validate: async (callback) => {
|
|
78
87
|
await vue.nextTick();
|
|
@@ -104,6 +113,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
104
113
|
getField: async (fields) => {
|
|
105
114
|
await vue.nextTick();
|
|
106
115
|
return vue.unref(formTemplateRef).getField(fields);
|
|
116
|
+
},
|
|
117
|
+
setMarker: (latlng) => {
|
|
118
|
+
if (locationSelectRef.value) {
|
|
119
|
+
is.isArray(locationSelectRef.value) ? locationSelectRef.value.map((item) => item.setMarker(latlng)) : locationSelectRef.value.setMarker(latlng);
|
|
120
|
+
}
|
|
107
121
|
}
|
|
108
122
|
// setInitialValue: async (value) => {
|
|
109
123
|
// await nextTick()
|
|
@@ -125,7 +139,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
125
139
|
vue.createElementVNode(
|
|
126
140
|
"div",
|
|
127
141
|
{
|
|
128
|
-
class: "hy-form-container",
|
|
142
|
+
class: "hy-form-container h-full",
|
|
129
143
|
style: vue.normalizeStyle(containerStyle.value)
|
|
130
144
|
},
|
|
131
145
|
[
|
|
@@ -142,29 +156,40 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
142
156
|
[
|
|
143
157
|
vue.createCommentVNode(" \u6807\u9898 "),
|
|
144
158
|
column.type === "title" ? (vue.openBlock(), vue.createElementBlock(
|
|
145
|
-
|
|
146
|
-
{
|
|
147
|
-
key: 0,
|
|
148
|
-
class: vue.normalizeClass(["w-full flex items-center text-theme whitespace-nowrap relative mb-3 mt-1", [__props.size === "small" ? "text-xs" : "text-sm"]]),
|
|
149
|
-
style: vue.normalizeStyle(vue.unref(index.columnItemStyle)(props, column))
|
|
150
|
-
},
|
|
159
|
+
vue.Fragment,
|
|
160
|
+
{ key: 0 },
|
|
151
161
|
[
|
|
152
|
-
vue.
|
|
153
|
-
"
|
|
154
|
-
{
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
162
|
+
vue.unref(index.columnShowHandler)(props, column) ? (vue.openBlock(), vue.createElementBlock(
|
|
163
|
+
"div",
|
|
164
|
+
{
|
|
165
|
+
key: 0,
|
|
166
|
+
class: vue.normalizeClass(["w-full flex items-center text-theme whitespace-nowrap relative mb-3 mt-1", [
|
|
167
|
+
__props.size === "small" ? "text-xs" : "text-sm",
|
|
168
|
+
allMapSelect.value ? "hidden" : ""
|
|
169
|
+
]]),
|
|
170
|
+
style: vue.normalizeStyle(vue.unref(index.columnItemStyle)(props, column))
|
|
171
|
+
},
|
|
172
|
+
[
|
|
173
|
+
vue.createElementVNode(
|
|
174
|
+
"span",
|
|
175
|
+
{ class: "mr-2" },
|
|
176
|
+
vue.toDisplayString(column.label),
|
|
177
|
+
1
|
|
178
|
+
/* TEXT */
|
|
179
|
+
),
|
|
180
|
+
vue.createVNode(vue.unref(elementPlus.ElDivider), {
|
|
181
|
+
"content-position": "left",
|
|
182
|
+
"border-style": "dashed",
|
|
183
|
+
class: "border-[rgba(var(--hy-theme),0.5)] my-0"
|
|
184
|
+
}),
|
|
185
|
+
vue.createElementVNode("div", { class: "absolute top-1/2 -left-1.5 transform -translate-x-full -translate-y-1/2 w-0.5 h-3 bg-theme" })
|
|
186
|
+
],
|
|
187
|
+
6
|
|
188
|
+
/* CLASS, STYLE */
|
|
189
|
+
)) : vue.createCommentVNode("v-if", true)
|
|
165
190
|
],
|
|
166
|
-
|
|
167
|
-
/*
|
|
191
|
+
64
|
|
192
|
+
/* STABLE_FRAGMENT */
|
|
168
193
|
)) : column.type === "extra" && !_ctx.$slots[column.slot] ? (vue.openBlock(), vue.createElementBlock(
|
|
169
194
|
vue.Fragment,
|
|
170
195
|
{ key: 1 },
|
|
@@ -172,6 +197,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
172
197
|
vue.createCommentVNode(" \u8865\u5145\u4FE1\u606F\u8868\u5355 "),
|
|
173
198
|
vue.unref(index.columnShowHandler)(props, column) ? (vue.openBlock(), vue.createBlock(extraItem.default, {
|
|
174
199
|
key: 0,
|
|
200
|
+
class: vue.normalizeClass([allMapSelect.value ? "hidden" : ""]),
|
|
175
201
|
model: __props.model,
|
|
176
202
|
column,
|
|
177
203
|
rules: __props.rules,
|
|
@@ -192,7 +218,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
192
218
|
])
|
|
193
219
|
};
|
|
194
220
|
})
|
|
195
|
-
]), 1032, ["model", "column", "rules", "columnNum", "loading", "disabled", "readonly", "style"])) : vue.createCommentVNode("v-if", true)
|
|
221
|
+
]), 1032, ["class", "model", "column", "rules", "columnNum", "loading", "disabled", "readonly", "style"])) : vue.createCommentVNode("v-if", true)
|
|
196
222
|
],
|
|
197
223
|
64
|
|
198
224
|
/* STABLE_FRAGMENT */
|
|
@@ -203,6 +229,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
203
229
|
vue.createCommentVNode(" \u8868\u5355\u6570\u7EC4 "),
|
|
204
230
|
vue.unref(index.columnShowHandler)(props, column) ? (vue.openBlock(), vue.createBlock(arrayItem.default, {
|
|
205
231
|
key: 0,
|
|
232
|
+
class: vue.normalizeClass([allMapSelect.value ? "hidden" : ""]),
|
|
206
233
|
model: __props.model,
|
|
207
234
|
column,
|
|
208
235
|
rules: __props.rules,
|
|
@@ -224,16 +251,41 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
224
251
|
])
|
|
225
252
|
};
|
|
226
253
|
})
|
|
227
|
-
]), 1032, ["model", "column", "rules", "columnNum", "loading", "disabled", "readonly", "size", "style"])) : vue.createCommentVNode("v-if", true)
|
|
254
|
+
]), 1032, ["class", "model", "column", "rules", "columnNum", "loading", "disabled", "readonly", "size", "style"])) : vue.createCommentVNode("v-if", true)
|
|
228
255
|
],
|
|
229
256
|
64
|
|
230
257
|
/* STABLE_FRAGMENT */
|
|
231
|
-
)) : (vue.openBlock(), vue.createElementBlock(
|
|
258
|
+
)) : column.type === "location-select" ? (vue.openBlock(), vue.createElementBlock(
|
|
232
259
|
vue.Fragment,
|
|
233
260
|
{ key: 3 },
|
|
261
|
+
[
|
|
262
|
+
vue.unref(index.columnShowHandler)(props, column) ? (vue.openBlock(), vue.createBlock(locationSelect.default, {
|
|
263
|
+
key: 0,
|
|
264
|
+
ref_for: true,
|
|
265
|
+
ref_key: "locationSelectRef",
|
|
266
|
+
ref: locationSelectRef,
|
|
267
|
+
model: __props.model,
|
|
268
|
+
column,
|
|
269
|
+
rules: __props.rules,
|
|
270
|
+
columnNum: __props.columnNum,
|
|
271
|
+
loading: __props.loading,
|
|
272
|
+
disabled: __props.disabled,
|
|
273
|
+
readonly: __props.readonly,
|
|
274
|
+
size: __props.size,
|
|
275
|
+
style: vue.normalizeStyle(vue.unref(index.columnItemStyle)(props, column)),
|
|
276
|
+
allMapSelect: allMapSelect.value,
|
|
277
|
+
onSetMapSize: setMapSize
|
|
278
|
+
}, null, 8, ["model", "column", "rules", "columnNum", "loading", "disabled", "readonly", "size", "style", "allMapSelect"])) : vue.createCommentVNode("v-if", true)
|
|
279
|
+
],
|
|
280
|
+
64
|
|
281
|
+
/* STABLE_FRAGMENT */
|
|
282
|
+
)) : (vue.openBlock(), vue.createElementBlock(
|
|
283
|
+
vue.Fragment,
|
|
284
|
+
{ key: 4 },
|
|
234
285
|
[
|
|
235
286
|
vue.createCommentVNode(" \u8868\u5355 "),
|
|
236
287
|
vue.createVNode(formItem.default, {
|
|
288
|
+
class: vue.normalizeClass([allMapSelect.value ? "hidden" : ""]),
|
|
237
289
|
model: __props.model,
|
|
238
290
|
column,
|
|
239
291
|
rules: __props.rules,
|
|
@@ -252,7 +304,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign(__default__, {
|
|
|
252
304
|
])
|
|
253
305
|
};
|
|
254
306
|
})
|
|
255
|
-
]), 1032, ["model", "column", "rules", "loading", "disabled", "readonly"])
|
|
307
|
+
]), 1032, ["class", "model", "column", "rules", "loading", "disabled", "readonly"])
|
|
256
308
|
],
|
|
257
309
|
64
|
|
258
310
|
/* STABLE_FRAGMENT */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var vue = require('vue');
|
|
4
|
-
var handler = require('../../../utils/handler.js');
|
|
5
4
|
var is = require('../../../utils/is.js');
|
|
5
|
+
var handler = require('../../../utils/handler.js');
|
|
6
6
|
var form = require('../../../utils/form.js');
|
|
7
7
|
var useLocale = require('../../../hooks/useLocale.js');
|
|
8
8
|
|
|
@@ -17,6 +17,7 @@ function columnItemStyle(props, column) {
|
|
|
17
17
|
case "title":
|
|
18
18
|
case "extra":
|
|
19
19
|
case "array":
|
|
20
|
+
case "location-select":
|
|
20
21
|
style["grid-column"] = `span ${props.columnNum}`;
|
|
21
22
|
break;
|
|
22
23
|
}
|
|
@@ -29,6 +30,12 @@ function columnShowHandler(props, column) {
|
|
|
29
30
|
if (is.isFunction(show)) return show(column, props.model);
|
|
30
31
|
return true;
|
|
31
32
|
}
|
|
33
|
+
function columnVisibleHandler(props, column) {
|
|
34
|
+
const visible = vue.unref(column.visible);
|
|
35
|
+
if (is.isBoolean(visible)) return visible;
|
|
36
|
+
if (is.isFunction(visible)) return visible(column, props.model);
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
32
39
|
function columnHelpHandler(props, column) {
|
|
33
40
|
const help = vue.unref(column.help);
|
|
34
41
|
if (is.isString(help)) return help;
|
|
@@ -115,6 +122,7 @@ function optionsHandler(props, column) {
|
|
|
115
122
|
exports.columnHelpHandler = columnHelpHandler;
|
|
116
123
|
exports.columnItemStyle = columnItemStyle;
|
|
117
124
|
exports.columnShowHandler = columnShowHandler;
|
|
125
|
+
exports.columnVisibleHandler = columnVisibleHandler;
|
|
118
126
|
exports.isDisabled = isDisabled;
|
|
119
127
|
exports.isReadonly = isReadonly;
|
|
120
128
|
exports.isRequired = isRequired;
|
|
@@ -4,40 +4,10 @@ var vue = require('vue');
|
|
|
4
4
|
var handler = require('../../../utils/handler.js');
|
|
5
5
|
var is = require('../../../utils/is.js');
|
|
6
6
|
var form = require('../../../utils/form.js');
|
|
7
|
-
var useLocale = require('../../../hooks/useLocale.js');
|
|
8
7
|
|
|
9
|
-
const genDefaultLabel = (config) => {
|
|
10
|
-
if (config.label) return config.label;
|
|
11
|
-
const { t } = useLocale.useLocale();
|
|
12
|
-
switch (config.type) {
|
|
13
|
-
// 部门级联选择框
|
|
14
|
-
case "org-cascader":
|
|
15
|
-
return t("form.department");
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
const genPlaceholderHandler = (config) => {
|
|
19
|
-
const { t } = useLocale.useLocale();
|
|
20
|
-
const { type, label, attrs = {} } = config || {};
|
|
21
|
-
let placeholder = attrs.placeholder, startPlaceholder = attrs.startPlaceholder, endPlaceholder = attrs.endPlaceholder;
|
|
22
|
-
switch (type) {
|
|
23
|
-
case "input":
|
|
24
|
-
case "input-number":
|
|
25
|
-
placeholder = placeholder || t("hy.pleaseEnterPlaceholder", [label]);
|
|
26
|
-
break;
|
|
27
|
-
case "select":
|
|
28
|
-
case "date-picker":
|
|
29
|
-
case "time-picker":
|
|
30
|
-
placeholder = placeholder || t("hy.pleaseSelectPlaceholder", [label]);
|
|
31
|
-
break;
|
|
32
|
-
default:
|
|
33
|
-
placeholder = placeholder || label;
|
|
34
|
-
}
|
|
35
|
-
return { placeholder, startPlaceholder, endPlaceholder };
|
|
36
|
-
};
|
|
37
8
|
function appFormItemHandler(column = {}) {
|
|
38
|
-
const label =
|
|
39
|
-
const
|
|
40
|
-
const attrs = { ...column.attrs || {}, placeholder };
|
|
9
|
+
const label = form.genColumnDefaultLabel(column);
|
|
10
|
+
const attrs = { ...column.attrs || {} };
|
|
41
11
|
column = handler.mergeDeep(
|
|
42
12
|
{ ...column },
|
|
43
13
|
{
|
|
@@ -57,7 +27,7 @@ function appFormItemHandler(column = {}) {
|
|
|
57
27
|
...attrs
|
|
58
28
|
}
|
|
59
29
|
};
|
|
60
|
-
} else if (/^(radio|checkbox|select)$/.test(column.type)) {
|
|
30
|
+
} else if (/^(radio|radio-group|checkbox|select)$/.test(column.type)) {
|
|
61
31
|
return {
|
|
62
32
|
...column,
|
|
63
33
|
attrs: {
|
|
@@ -71,7 +41,7 @@ function appFormItemHandler(column = {}) {
|
|
|
71
41
|
}
|
|
72
42
|
}
|
|
73
43
|
};
|
|
74
|
-
} else if (/^(extra)$/.test(column.type)) {
|
|
44
|
+
} else if (/^(extra)$/.test(column.type) || /^(location-select)$/.test(column.type)) {
|
|
75
45
|
return {
|
|
76
46
|
...column,
|
|
77
47
|
children: (column.children || []).map((item) => appFormItemHandler(item))
|
|
@@ -107,7 +77,7 @@ const resetAppFormValue = (columns = [], obj = {}) => {
|
|
|
107
77
|
const childValue = resetAppFormValue(item.children);
|
|
108
78
|
obj[item.prop] = [childValue];
|
|
109
79
|
}
|
|
110
|
-
} else if (item.type === "extra") {
|
|
80
|
+
} else if (item.type === "extra" || item.type === "location-select") {
|
|
111
81
|
resetAppFormValue(item.children, obj);
|
|
112
82
|
} else if (Array.isArray(item.prop)) {
|
|
113
83
|
for (let i = 0; i < item.prop.length; i++) {
|
|
@@ -20,7 +20,7 @@ const _sfc_main = {
|
|
|
20
20
|
type: Object,
|
|
21
21
|
default: () => ({})
|
|
22
22
|
},
|
|
23
|
-
// 地图类型 gaode
|
|
23
|
+
// 地图类型 gaode leafletjs bugMap
|
|
24
24
|
mapType: {
|
|
25
25
|
type: String,
|
|
26
26
|
default: "gaode"
|
|
@@ -31,7 +31,7 @@ const _sfc_main = {
|
|
|
31
31
|
const props = __props;
|
|
32
32
|
const emits = __emit;
|
|
33
33
|
const mapRef = vue.ref();
|
|
34
|
-
const { newMap } = useMixins.useMixins(
|
|
34
|
+
const { newMap, map, hyMap } = useMixins.useMixins(
|
|
35
35
|
{
|
|
36
36
|
props,
|
|
37
37
|
emits,
|
|
@@ -43,7 +43,7 @@ const _sfc_main = {
|
|
|
43
43
|
newMap(props.mapType);
|
|
44
44
|
});
|
|
45
45
|
return (_ctx, _cache) => {
|
|
46
|
-
return vue.openBlock(), vue.createElementBlock("div", { class: "w-full h-full
|
|
46
|
+
return vue.openBlock(), vue.createElementBlock("div", { class: "w-full h-full box-border border-border border relative" }, [
|
|
47
47
|
vue.createElementVNode(
|
|
48
48
|
"div",
|
|
49
49
|
{
|