UNPKG

@zpc_npm/vue-iclient-common

Version:

KQGIS iClient for Vue.js

600 lines (508 loc) 23.5 kB
/******/ (function() { // webpackBootstrap /******/ "use strict"; /******/ // The require scope /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ !function() { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function() { return module['default']; } : /******/ function() { return module; }; /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ !function() { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = function(exports, definition) { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ !function() { /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } /******/ }(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ !function() { /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ }(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "LayerManagerViewModel": function() { return /* reexport */ LayerManagerViewModel; }, "default": function() { return /* reexport */ LayerManager; } }); ;// CONCATENATED MODULE: external "vue" var external_vue_namespaceObject = require("vue"); ;// CONCATENATED MODULE: external "@zpc_npm/vue-iclient-common/_utils/mitt" var mitt_namespaceObject = require("@zpc_npm/vue-iclient-common/_utils/mitt"); var mitt_default = /*#__PURE__*/__webpack_require__.n(mitt_namespaceObject); ;// CONCATENATED MODULE: external "@zpc_npm/vue-iclient-common/_utils/gis-utils" var gis_utils_namespaceObject = require("@zpc_npm/vue-iclient-common/_utils/gis-utils"); ;// CONCATENATED MODULE: ./src/common/layermanager/LayerManagerViewModel.js /** * Author: ZL * Data: 2022.7.26 * Description: 图层管理组件逻辑类. */ class LayerManagerViewModel extends (mitt_default()) { /** * 绑定地图的target * @param {string} mapTarget * @event refreshData 刷新数据监听事件 */ constructor(mapTarget) { super(); /** * 绑定地图的target * @type {string} * @private */ this._mapTarget = mapTarget; } /** * 从地图管理类获取数据 * @returns {*[]} */ getCheckLayersList() { let nodeVal = gis_utils_namespaceObject.mapLayerUtils.getLayerCheckedList(this._mapTarget); //按索引排序 layerCheckedListSort(nodeVal, "zIndex"); let nodesList = []; for (let i = 0; i < nodeVal.length; i++) { let item = nodeVal[i]; if (item.serverType === "kqserver" || item.serverType === "kqmapping" || item.serverType === "wmts" || item.serverType === "wms") { nodesList.push(nodeVal[i]); } } return nodesList; // 选中的图层列表按属性(zIndex)排序 function layerCheckedListSort(data, property) { data.sort(compare); function compare(a, b) { var value1 = a[property]; var value2 = b[property]; return value2 - value1; } } } /** * 右键菜单点击事件 * @param {string} key menu的节点index * @param {Object} currentSelectedNode 右键操作树节点的数据源 * @fires refreshData */ handleSelectMenu(key, currentSelectedNode) { if (key === "1") { // 缩放至图层 gis_utils_namespaceObject.mapViewUtils.fitBounds(this._mapTarget, currentSelectedNode); } else if (key === "3") { // 置顶 gis_utils_namespaceObject.mapLayerUtils.setLayerBringToFrontById(this._mapTarget, currentSelectedNode.guid, true); let newData = this.getCheckLayersList(); this.fire("refreshData", newData); } else if (key === "4") { // 取消置顶 gis_utils_namespaceObject.mapLayerUtils.setLayerBringToFrontById(this._mapTarget, currentSelectedNode.guid, false); let newData = this.getCheckLayersList(); this.fire("refreshData", newData); } else if (key === "5") { // 图层上移 gis_utils_namespaceObject.mapLayerUtils.raiseLayerByTreeId(this._mapTarget, currentSelectedNode.guid); } else if (key === "6") { // 图层下移 gis_utils_namespaceObject.mapLayerUtils.lowerLayerByTreeId(this._mapTarget, currentSelectedNode.guid); } } /** * 销毁 */ destroy() { this.off(); } } ;// CONCATENATED MODULE: external "@element-plus/icons-vue" var icons_vue_namespaceObject = require("@element-plus/icons-vue"); ;// CONCATENATED MODULE: external "@zpc_npm/vue-iclient-icons" var vue_iclient_icons_namespaceObject = require("@zpc_npm/vue-iclient-icons"); ;// CONCATENATED MODULE: external "@zpc_npm/vue-iclient-common/_utils/util" var util_namespaceObject = require("@zpc_npm/vue-iclient-common/_utils/util"); ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/dist/index.js??ruleSet[0]!./src/common/layermanager/LayerManager.vue?vue&type=script&setup=true&lang=js const _hoisted_1 = { class: "tabs_child" }; const _hoisted_2 = { class: "tabs_child" }; const _hoisted_3 = ["title"]; const _hoisted_4 = { key: 0, class: "to-top-class" }; const _hoisted_5 = /*#__PURE__*/(0,external_vue_namespaceObject.createElementVNode)("span", null, "顶", -1 /* HOISTED */ ); const _hoisted_6 = [_hoisted_5]; // 获取组件传参 const __default__ = { name: "KqLayerManager" }; /* harmony default export */ var LayerManagervue_type_script_setup_true_lang_js = (/*#__PURE__*/Object.assign(__default__, { props: { // 图层树组件的参数 layerTreeProps: Object, // 图层管理列表的节点显示名称 nodeName: { type: String, default: "name" }, // 组件显示位置 position: [String, Object] }, emits: ["openOpacity"], setup(__props, { expose, emit }) { const props = __props; let box_ref = (0,external_vue_namespaceObject.ref)(null); // 图层树tabs的值 let tabActiveName = (0,external_vue_namespaceObject.ref)("ztfx"); // list数据源 let dataList = (0,external_vue_namespaceObject.reactive)({ data: [] }); let viewModel; let layerTree = (0,external_vue_namespaceObject.ref)(null); let menuDropdown = (0,external_vue_namespaceObject.ref)(false); // 是否显示下拉菜单 let dropDownMenu = (0,external_vue_namespaceObject.ref)(null); // 下拉菜单 let currentSelectedNode = null; // 当前选中的节点 (0,external_vue_namespaceObject.onMounted)(() => { (0,util_namespaceObject.updatePosition)(box_ref.value, props); viewModel = new LayerManagerViewModel(props.layerTreeProps ? props.layerTreeProps.mapTarget : null); // 列表数据刷新 viewModel.on("refreshData", _data => { dataList.data.value = _data; }); }); (0,external_vue_namespaceObject.onBeforeUnmount)(() => { viewModel.destroy(); }); expose({ reset }); /** * 重置状态 */ function reset() { hideMenuDropdown(); layerTree.value.reset(); } /** * 切换管理 重新获取数据 * @param tab * @param event */ function handleSwitchTab(tab, event) { if (tab.props.label === "图层管理") { dataList.data.value = viewModel.getCheckLayersList(); } } /** * 打开右建菜单 * @param {Object} node 节点对象 * @param {Object} event click事件 */ function handleJudgeDropdownSH(node, event) { menuDropdown.value = true; let _menuDropdown = dropDownMenu.value.$el; _menuDropdown.style.left = event.clientX - 5 + "px"; _menuDropdown.style.top = event.clientY + 15 + "px"; _menuDropdown.style.width = "40px"; currentSelectedNode = node; document.addEventListener("click", hideMenuDropdown); } /** * 隐藏下拉菜单 */ function hideMenuDropdown() { // 去除选中样式 let selectElement = dropDownMenu.value.$el.querySelector(".is-active"); if (selectElement) { selectElement.classList.remove("is-active"); } menuDropdown.value = false; document.removeEventListener("click", hideMenuDropdown); } /** * 右键菜单点击事件 */ function handleSelectMenu(key) { if (key === "2") { emit("openOpacity", currentSelectedNode); } else { viewModel.handleSelectMenu(key, currentSelectedNode); } } function openOpacity(currentSelectedNode) { emit("openOpacity", currentSelectedNode); } return (_ctx, _cache) => { const _component_kq_tab_pane = (0,external_vue_namespaceObject.resolveComponent)("kq-tab-pane"); const _component_kq_tabs = (0,external_vue_namespaceObject.resolveComponent)("kq-tabs"); const _component_kq_layer_tree = (0,external_vue_namespaceObject.resolveComponent)("kq-layer-tree"); const _component_kq_icon = (0,external_vue_namespaceObject.resolveComponent)("kq-icon"); const _component_kq_menu_item = (0,external_vue_namespaceObject.resolveComponent)("kq-menu-item"); const _component_kq_menu = (0,external_vue_namespaceObject.resolveComponent)("kq-menu"); const _component_kq_scrollbar = (0,external_vue_namespaceObject.resolveComponent)("kq-scrollbar"); const _component_kq_tooltip = (0,external_vue_namespaceObject.resolveComponent)("kq-tooltip"); const _component_kq_divider = (0,external_vue_namespaceObject.resolveComponent)("kq-divider"); return (0,external_vue_namespaceObject.openBlock)(), (0,external_vue_namespaceObject.createElementBlock)("div", { class: "layer-manager", ref_key: "box_ref", ref: box_ref }, [(0,external_vue_namespaceObject.createCommentVNode)(" S 切换tab "), (0,external_vue_namespaceObject.createVNode)(_component_kq_tabs, { modelValue: (0,external_vue_namespaceObject.unref)(tabActiveName), "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (0,external_vue_namespaceObject.isRef)(tabActiveName) ? tabActiveName.value = $event : tabActiveName = $event), onTabClick: handleSwitchTab }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_tab_pane, { label: "服务列表", name: "ztfx" }), (0,external_vue_namespaceObject.createVNode)(_component_kq_tab_pane, { label: "图层管理", name: "zttj" })]), _: 1 /* STABLE */ }, 8 /* PROPS */ , ["modelValue"]), (0,external_vue_namespaceObject.createCommentVNode)(" E 切换tab "), (0,external_vue_namespaceObject.createCommentVNode)(" S 服务列表 "), (0,external_vue_namespaceObject.withDirectives)((0,external_vue_namespaceObject.createElementVNode)("div", _hoisted_1, [(0,external_vue_namespaceObject.createVNode)(_component_kq_layer_tree, (0,external_vue_namespaceObject.mergeProps)({ ref_key: "layerTree", ref: layerTree }, props.layerTreeProps, { class: "layer-tree_child", onOpenOpacity: openOpacity }), null, 16 /* FULL_PROPS */ )], 512 /* NEED_PATCH */ ), [[external_vue_namespaceObject.vShow, (0,external_vue_namespaceObject.unref)(tabActiveName) === 'ztfx']]), (0,external_vue_namespaceObject.createCommentVNode)(" E 服务列表 "), (0,external_vue_namespaceObject.createCommentVNode)(" S 图层管理 "), (0,external_vue_namespaceObject.withDirectives)((0,external_vue_namespaceObject.createElementVNode)("div", _hoisted_2, [(0,external_vue_namespaceObject.createVNode)(_component_kq_scrollbar, { class: "scrollbar-class" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_menu, { class: "layer-list_ul" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [((0,external_vue_namespaceObject.openBlock)(true), (0,external_vue_namespaceObject.createElementBlock)(external_vue_namespaceObject.Fragment, null, (0,external_vue_namespaceObject.renderList)((0,external_vue_namespaceObject.unref)(dataList).data.value, item => { return (0,external_vue_namespaceObject.openBlock)(), (0,external_vue_namespaceObject.createBlock)(_component_kq_menu_item, { index: item.guid, key: item.guid }, { title: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createElementVNode)("span", null, [(0,external_vue_namespaceObject.createVNode)(_component_kq_icon, { class: "tree-node_icon" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [item.rasterLayer ? ((0,external_vue_namespaceObject.openBlock)(), (0,external_vue_namespaceObject.createBlock)((0,external_vue_namespaceObject.unref)(vue_iclient_icons_namespaceObject.IconImage), { key: 0 })) : item.shapeType === 'polyline' ? ((0,external_vue_namespaceObject.openBlock)(), (0,external_vue_namespaceObject.createBlock)((0,external_vue_namespaceObject.unref)(vue_iclient_icons_namespaceObject.IconPolyline), { key: 1 })) : item.shapeType === 'polygon' ? ((0,external_vue_namespaceObject.openBlock)(), (0,external_vue_namespaceObject.createBlock)((0,external_vue_namespaceObject.unref)(vue_iclient_icons_namespaceObject.IconPolygon2), { key: 2 })) : item.shapeType === 'point' ? ((0,external_vue_namespaceObject.openBlock)(), (0,external_vue_namespaceObject.createBlock)((0,external_vue_namespaceObject.unref)(vue_iclient_icons_namespaceObject.IconPoint), { key: 3 })) : (0,external_vue_namespaceObject.createCommentVNode)("v-if", true)]), _: 2 /* DYNAMIC */ }, 1024 /* DYNAMIC_SLOTS */ )]), (0,external_vue_namespaceObject.createElementVNode)("span", { title: item.tilepath, class: "tile-class" }, (0,external_vue_namespaceObject.toDisplayString)(item[props.nodeName]), 9 /* TEXT, PROPS */ , _hoisted_3), (0,external_vue_namespaceObject.createVNode)(_component_kq_icon, { class: "more-icon", onClick: (0,external_vue_namespaceObject.withModifiers)(function f(event) { handleJudgeDropdownSH(item, event); }, ["prevent", "stop"]) }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)((0,external_vue_namespaceObject.unref)(icons_vue_namespaceObject.More))]), _: 2 /* DYNAMIC */ }, 1032 /* PROPS, DYNAMIC_SLOTS */ , ["onClick"]), item.isFront ? ((0,external_vue_namespaceObject.openBlock)(), (0,external_vue_namespaceObject.createElementBlock)("div", _hoisted_4, _hoisted_6)) : (0,external_vue_namespaceObject.createCommentVNode)("v-if", true)]), _: 2 /* DYNAMIC */ }, 1032 /* PROPS, DYNAMIC_SLOTS */ , ["index"]); }), 128 /* KEYED_FRAGMENT */ ))]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ }), (0,external_vue_namespaceObject.withDirectives)((0,external_vue_namespaceObject.createElementVNode)("div", null, [(0,external_vue_namespaceObject.createVNode)(_component_kq_menu, { ref_key: "dropDownMenu", ref: dropDownMenu, class: "tree-menu2", onSelect: handleSelectMenu }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_tooltip, { effect: "light", content: "缩放至图层", placement: "right" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_menu_item, { index: "1" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_icon, null, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)((0,external_vue_namespaceObject.unref)(icons_vue_namespaceObject.FullScreen))]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ }), (0,external_vue_namespaceObject.createVNode)(_component_kq_tooltip, { effect: "light", content: "透明度", placement: "right" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_menu_item, { index: "2" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_icon, null, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)((0,external_vue_namespaceObject.unref)(icons_vue_namespaceObject.MagicStick))]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ }), (0,external_vue_namespaceObject.createVNode)(_component_kq_divider), (0,external_vue_namespaceObject.createVNode)(_component_kq_tooltip, { effect: "light", content: "图层置顶", placement: "right" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_menu_item, { index: "3" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_icon, null, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)((0,external_vue_namespaceObject.unref)(icons_vue_namespaceObject.Download), { class: "layer-top" })]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ }), (0,external_vue_namespaceObject.createVNode)(_component_kq_tooltip, { effect: "light", content: "取消置顶", placement: "right" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_menu_item, { index: "4" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_icon, null, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)((0,external_vue_namespaceObject.unref)(icons_vue_namespaceObject.Download))]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ }), (0,external_vue_namespaceObject.createVNode)(_component_kq_divider), (0,external_vue_namespaceObject.createVNode)(_component_kq_tooltip, { effect: "light", content: "图层上移", placement: "right" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_menu_item, { index: "5" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_icon, null, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)((0,external_vue_namespaceObject.unref)(icons_vue_namespaceObject.Top))]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ }), (0,external_vue_namespaceObject.createVNode)(_component_kq_tooltip, { effect: "light", content: "图层下移", placement: "right" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_menu_item, { index: "6" }, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)(_component_kq_icon, null, { default: (0,external_vue_namespaceObject.withCtx)(() => [(0,external_vue_namespaceObject.createVNode)((0,external_vue_namespaceObject.unref)(icons_vue_namespaceObject.Bottom))]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ })]), _: 1 /* STABLE */ }, 512 /* NEED_PATCH */ )], 512 /* NEED_PATCH */ ), [[external_vue_namespaceObject.vShow, (0,external_vue_namespaceObject.unref)(menuDropdown)]])], 512 /* NEED_PATCH */ ), [[external_vue_namespaceObject.vShow, (0,external_vue_namespaceObject.unref)(tabActiveName) === 'zttj']]), (0,external_vue_namespaceObject.createCommentVNode)(" E 图层管理 ")], 512 /* NEED_PATCH */ ); }; } })); ;// CONCATENATED MODULE: ./src/common/layermanager/LayerManager.vue?vue&type=script&setup=true&lang=js ;// CONCATENATED MODULE: ./src/common/layermanager/LayerManager.vue const __exports__ = LayerManagervue_type_script_setup_true_lang_js; /* harmony default export */ var LayerManager = (__exports__); ;// CONCATENATED MODULE: external "@zpc_npm/vue-iclient-common/init.js" var init_js_namespaceObject = require("@zpc_npm/vue-iclient-common/init.js"); var init_js_default = /*#__PURE__*/__webpack_require__.n(init_js_namespaceObject); ;// CONCATENATED MODULE: ./src/common/layermanager/index.js LayerManager.install = (Vue, opts) => { init_js_default()(Vue, opts); Vue.component(LayerManager.name, LayerManager); }; module.exports = __webpack_exports__; /******/ })() ;