@fecp/designer 5.5.64 → 5.5.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/designer/package.json.mjs +1 -1
- package/es/designer/src/components/DocumentParam.vue.mjs +1 -1
- package/es/designer/src/components/ParamsConfig.vue2.mjs +1 -1
- package/es/designer/src/layout/aside/HiddenFieldDialog.vue.mjs +1 -1
- package/es/designer/src/packages/advancedFilter/ValueInput.vue2.mjs +1 -1
- package/es/designer/src/packages/dataLinkage/index.vue.mjs +1 -1
- package/es/designer/src/packages/dialogGlobal/index.vue.mjs +1 -1
- package/es/designer/src/packages/eventFlow/dialog/action/RiskSch.vue.mjs +1 -1
- package/es/designer/src/packages/form/property/approvalHistory.vue.mjs +1 -1
- package/es/designer/src/packages/form/property/contract.vue.mjs +1 -1
- package/es/designer/src/packages/form/property/subForm.vue.mjs +1 -1
- package/es/designer/src/packages/prod/index.vue.mjs +1 -1
- package/es/designer/src/packages/table/headerBtn.vue.mjs +1 -1
- package/es/designer.css +554 -23
- package/es/packages/mobile/index.mjs +8 -0
- package/es/packages/mobile/src/api/index.mjs +8 -0
- package/es/packages/mobile/src/components/all.mjs +6 -0
- package/es/packages/mobile/src/components/dataDisplay/cardList/CardList.vue.mjs +18 -4
- package/es/packages/mobile/src/components/dataDisplay/dataStat/DataStat.vue.mjs +14 -0
- package/es/packages/mobile/src/components/dataDisplay/dataStat/index.mjs +10 -0
- package/es/packages/mobile/src/components/dataDisplay/menuGrid/MenuGrid.vue.mjs +123 -0
- package/es/packages/mobile/src/components/dataDisplay/menuGrid/index.mjs +7 -0
- package/es/packages/mobile/src/components/dataDisplay/noticeBar/NoticeBar.vue.mjs +98 -16
- package/es/packages/mobile/src/components/dataDisplay/table/Table.vue.mjs +19 -4
- package/es/packages/mobile/src/components/feedback/quickFilter/QuickFilter.vue.mjs +248 -0
- package/es/packages/mobile/src/components/feedback/quickFilter/index.mjs +10 -0
- package/es/packages/mobile/src/components/form/search/Search.vue.mjs +159 -15
- package/es/packages/mobile/src/components/navigation/actionBar/ActionBar.vue.mjs +1 -1
- package/es/packages/mobile/src/components/navigation/navBar/NavBar.vue.mjs +13 -3
- package/es/packages/mobile/src/components/navigation/navBar/index.mjs +2 -2
- package/es/packages/mobile/src/components/navigation/tabbar/Tabbar.vue.mjs +8 -4
- package/es/packages/mobile/src/components/navigation/tabbar/index.mjs +2 -2
- package/es/packages/mobile/src/index.vue.mjs +138 -0
- package/es/packages/mobile/src/page.vue.mjs +117 -0
- package/es/packages/mobile/src/utils/eventBus.mjs +5 -0
- package/es/packages/mobile/src/utils/pageHistory.mjs +111 -0
- package/es/packages/vue/src/components/details/footer/Footer.vue.mjs +3 -2
- package/es/packages/vue/src/components/forms/cascader/Cascader.vue.mjs +1 -1
- package/es/packages/vue/src/components/forms/form/validation.mjs +1 -1
- package/es/packages/vue/src/utils/parseFilterConfig.mjs +25 -0
- package/lib/designer/package.json.js +1 -1
- package/lib/designer/src/components/DocumentParam.vue.js +1 -1
- package/lib/designer/src/components/ParamsConfig.vue2.js +1 -1
- package/lib/designer/src/layout/aside/HiddenFieldDialog.vue.js +1 -1
- package/lib/designer/src/packages/advancedFilter/ValueInput.vue2.js +1 -1
- package/lib/designer/src/packages/dataLinkage/index.vue.js +1 -1
- package/lib/designer/src/packages/dialogGlobal/index.vue.js +1 -1
- package/lib/designer/src/packages/eventFlow/dialog/action/RiskSch.vue.js +1 -1
- package/lib/designer/src/packages/form/property/approvalHistory.vue.js +1 -1
- package/lib/designer/src/packages/form/property/contract.vue.js +1 -1
- package/lib/designer/src/packages/form/property/subForm.vue.js +1 -1
- package/lib/designer/src/packages/prod/index.vue.js +1 -1
- package/lib/designer/src/packages/table/headerBtn.vue.js +1 -1
- package/lib/designer.css +554 -23
- package/lib/packages/mobile/index.js +94 -86
- package/lib/packages/mobile/src/api/index.js +8 -0
- package/lib/packages/mobile/src/components/all.js +92 -86
- package/lib/packages/mobile/src/components/dataDisplay/cardList/CardList.vue.js +17 -3
- package/lib/packages/mobile/src/components/dataDisplay/dataStat/DataStat.vue.js +14 -0
- package/lib/packages/mobile/src/components/dataDisplay/dataStat/index.js +10 -0
- package/lib/packages/mobile/src/components/dataDisplay/menuGrid/MenuGrid.vue.js +123 -0
- package/lib/packages/mobile/src/components/dataDisplay/menuGrid/index.js +7 -0
- package/lib/packages/mobile/src/components/dataDisplay/noticeBar/NoticeBar.vue.js +97 -15
- package/lib/packages/mobile/src/components/dataDisplay/table/Table.vue.js +18 -3
- package/lib/packages/mobile/src/components/feedback/quickFilter/QuickFilter.vue.js +248 -0
- package/lib/packages/mobile/src/components/feedback/quickFilter/index.js +10 -0
- package/lib/packages/mobile/src/components/form/search/Search.vue.js +158 -14
- package/lib/packages/mobile/src/components/navigation/actionBar/ActionBar.vue.js +1 -1
- package/lib/packages/mobile/src/components/navigation/navBar/NavBar.vue.js +13 -3
- package/lib/packages/mobile/src/components/navigation/tabbar/Tabbar.vue.js +8 -4
- package/lib/packages/mobile/src/index.vue.js +138 -0
- package/lib/packages/mobile/src/page.vue.js +117 -0
- package/lib/packages/mobile/src/utils/eventBus.js +5 -0
- package/lib/packages/mobile/src/utils/pageHistory.js +111 -0
- package/lib/packages/vue/src/components/details/footer/Footer.vue.js +3 -2
- package/lib/packages/vue/src/components/forms/cascader/Cascader.vue.js +1 -1
- package/lib/packages/vue/src/components/forms/form/validation.js +1 -1
- package/lib/packages/vue/src/utils/parseFilterConfig.js +25 -0
- package/package.json +1 -1
|
@@ -6,6 +6,8 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
6
6
|
;/* empty css */
|
|
7
7
|
;/* empty css */
|
|
8
8
|
const Vue = require("vue");
|
|
9
|
+
;/* empty css */
|
|
10
|
+
const _pluginVue_exportHelper = require("../../../../../../_virtual/_plugin-vue_export-helper.js");
|
|
9
11
|
const index = require("../../../../node_modules/vant/es/tabbar/index.js");
|
|
10
12
|
const index$1 = require("../../../../node_modules/vant/es/tabbar-item/index.js");
|
|
11
13
|
const _sfc_main = {
|
|
@@ -44,19 +46,21 @@ const _sfc_main = {
|
|
|
44
46
|
default: Vue.withCtx(() => [
|
|
45
47
|
(Vue.openBlock(true), Vue.createElementBlock(Vue.Fragment, null, Vue.renderList(__props.tabbarOptions, (item) => {
|
|
46
48
|
return Vue.openBlock(), Vue.createBlock(_component_van_tabbar_item, {
|
|
47
|
-
icon: item.icon
|
|
49
|
+
icon: item.icon,
|
|
50
|
+
name: item.pageId
|
|
48
51
|
}, {
|
|
49
52
|
default: Vue.withCtx(() => [
|
|
50
53
|
Vue.createTextVNode(Vue.toDisplayString(item.title), 1)
|
|
51
54
|
]),
|
|
52
55
|
_: 2
|
|
53
|
-
}, 1032, ["icon"]);
|
|
56
|
+
}, 1032, ["icon", "name"]);
|
|
54
57
|
}), 256)),
|
|
55
|
-
Vue.renderSlot(_ctx.$slots, "default")
|
|
58
|
+
Vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
|
|
56
59
|
]),
|
|
57
60
|
_: 3
|
|
58
61
|
}, 16, ["modelValue"]);
|
|
59
62
|
};
|
|
60
63
|
}
|
|
61
64
|
};
|
|
62
|
-
|
|
65
|
+
const _Tabbar = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-04abcf62"]]);
|
|
66
|
+
exports.default = _Tabbar;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
require("../../../node_modules/element-plus/es/index.js");
|
|
4
|
+
;/* empty css */
|
|
5
|
+
;/* empty css */
|
|
6
|
+
;/* empty css */
|
|
7
|
+
;/* empty css */
|
|
8
|
+
;/* empty css */
|
|
9
|
+
;/* empty css */
|
|
10
|
+
;/* empty css */
|
|
11
|
+
;/* empty css */
|
|
12
|
+
const Vue = require("vue");
|
|
13
|
+
const page = require("./page.vue.js");
|
|
14
|
+
const index$2 = require("./api/index.js");
|
|
15
|
+
const eventBus = require("./utils/eventBus.js");
|
|
16
|
+
const pageHistory = require("./utils/pageHistory.js");
|
|
17
|
+
;/* empty css */
|
|
18
|
+
;/* empty css */
|
|
19
|
+
;/* empty css */
|
|
20
|
+
const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.js");
|
|
21
|
+
const index = require("../../../node_modules/element-plus/es/components/container/index.js");
|
|
22
|
+
const index$3 = require("../../../node_modules/element-plus/es/components/message/index.js");
|
|
23
|
+
const index$1 = require("../node_modules/vant/es/empty/index.js");
|
|
24
|
+
const _sfc_main = {
|
|
25
|
+
__name: "index",
|
|
26
|
+
props: {
|
|
27
|
+
appId: {
|
|
28
|
+
type: String,
|
|
29
|
+
default: ""
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
setup(__props) {
|
|
33
|
+
const props = __props;
|
|
34
|
+
const currentInstance = Vue.getCurrentInstance();
|
|
35
|
+
const ctx = currentInstance.proxy;
|
|
36
|
+
const pageList = Vue.ref({});
|
|
37
|
+
const layoutData = Vue.ref([]);
|
|
38
|
+
const configLoading = Vue.ref(true);
|
|
39
|
+
const loadConfig = async () => {
|
|
40
|
+
var _a, _b;
|
|
41
|
+
if (!props.appId) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
configLoading.value = true;
|
|
45
|
+
try {
|
|
46
|
+
let option = await index$2.default.getAppById(ctx.$http, props.appId);
|
|
47
|
+
pageList.value = ((_a = JSON.parse(option.pageConfig)) == null ? void 0 : _a.pageConfig) || [];
|
|
48
|
+
let homePage = pageList.value.find((page2) => page2.isHome);
|
|
49
|
+
if (!homePage) {
|
|
50
|
+
homePage = (_b = pageList.value) == null ? void 0 : _b[0];
|
|
51
|
+
}
|
|
52
|
+
console.log("🚀 ~ pageList ~ pageList.value:", pageList.value);
|
|
53
|
+
loadPage(homePage);
|
|
54
|
+
pageHistory.pageHistory.init(homePage);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error("加载配置失败:", error);
|
|
57
|
+
index$3.ElMessage.error("加载配置失败");
|
|
58
|
+
} finally {
|
|
59
|
+
configLoading.value = false;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const currentPage = Vue.ref({});
|
|
63
|
+
function loadPage(page2) {
|
|
64
|
+
currentPage.value = { ...page2 };
|
|
65
|
+
layoutData.value = [...page2.layoutData].sort((a, b) => {
|
|
66
|
+
if (a.y !== b.y) {
|
|
67
|
+
return a.y - b.y;
|
|
68
|
+
}
|
|
69
|
+
return a.x - b.x;
|
|
70
|
+
});
|
|
71
|
+
layoutData.value.forEach((item) => item.isResizable = false);
|
|
72
|
+
}
|
|
73
|
+
function findPageById(pageList2, pageId) {
|
|
74
|
+
for (const item of pageList2) {
|
|
75
|
+
if (item.id == pageId) {
|
|
76
|
+
return item;
|
|
77
|
+
}
|
|
78
|
+
if (item.children && item.children.length > 0) {
|
|
79
|
+
const found = findPageById(item.children, pageId);
|
|
80
|
+
if (found) {
|
|
81
|
+
found.parentPage = item;
|
|
82
|
+
return found;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const routePage = Vue.ref(null);
|
|
89
|
+
eventBus.default.on("loadPage", (pageId) => {
|
|
90
|
+
var _a;
|
|
91
|
+
if (((_a = currentPage.value) == null ? void 0 : _a.id) == pageId) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const targetPage = findPageById(pageList.value, pageId);
|
|
95
|
+
if (targetPage) {
|
|
96
|
+
if (targetPage.parentPage) {
|
|
97
|
+
currentPage.value = targetPage.parentPage;
|
|
98
|
+
routePage.value = targetPage;
|
|
99
|
+
} else {
|
|
100
|
+
currentPage.value = targetPage;
|
|
101
|
+
routePage.value = null;
|
|
102
|
+
}
|
|
103
|
+
pageHistory.pageHistory.push(targetPage);
|
|
104
|
+
} else {
|
|
105
|
+
currentPage.value = null;
|
|
106
|
+
routePage.value = null;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
Vue.onMounted(() => {
|
|
110
|
+
loadConfig();
|
|
111
|
+
});
|
|
112
|
+
return (_ctx, _cache) => {
|
|
113
|
+
const _component_van_empty = index$1.Empty;
|
|
114
|
+
const _component_el_container = index.ElContainer;
|
|
115
|
+
return !Vue.unref(configLoading) ? (Vue.openBlock(), Vue.createBlock(_component_el_container, {
|
|
116
|
+
key: 0,
|
|
117
|
+
direction: "vertical",
|
|
118
|
+
class: "fec-mobile-app",
|
|
119
|
+
ref: "fecMobileAppRef"
|
|
120
|
+
}, {
|
|
121
|
+
default: Vue.withCtx(() => [
|
|
122
|
+
Vue.unref(currentPage) ? (Vue.openBlock(), Vue.createBlock(Vue.unref(page.default), {
|
|
123
|
+
key: 0,
|
|
124
|
+
currentPage: Vue.unref(currentPage),
|
|
125
|
+
routePage: Vue.unref(routePage)
|
|
126
|
+
}, null, 8, ["currentPage", "routePage"])) : (Vue.openBlock(), Vue.createBlock(_component_van_empty, {
|
|
127
|
+
key: 1,
|
|
128
|
+
image: "search",
|
|
129
|
+
description: "页面找不到了"
|
|
130
|
+
}))
|
|
131
|
+
]),
|
|
132
|
+
_: 1
|
|
133
|
+
}, 512)) : Vue.createCommentVNode("", true);
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const MobileApp = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-78e0cbef"]]);
|
|
138
|
+
exports.default = MobileApp;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const Vue = require("vue");
|
|
4
|
+
require("../../../node_modules/grid-layout-plus/es/index.js");
|
|
5
|
+
const all = require("./components/all.js");
|
|
6
|
+
;/* empty css */
|
|
7
|
+
const _pluginVue_exportHelper = require("../../../_virtual/_plugin-vue_export-helper.js");
|
|
8
|
+
const gridLayout_vue = require("../../../node_modules/grid-layout-plus/es/components/grid-layout.vue.js");
|
|
9
|
+
const _hoisted_1 = { class: "grid-wrapper no-scrollbar" };
|
|
10
|
+
const _hoisted_2 = { class: "component-content" };
|
|
11
|
+
const colNum = 24;
|
|
12
|
+
const rowHeight = 10;
|
|
13
|
+
const _sfc_main = {
|
|
14
|
+
__name: "page",
|
|
15
|
+
props: {
|
|
16
|
+
currentPage: {
|
|
17
|
+
type: Object,
|
|
18
|
+
required: true
|
|
19
|
+
},
|
|
20
|
+
routePage: {
|
|
21
|
+
type: Object
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
setup(__props) {
|
|
25
|
+
const props = __props;
|
|
26
|
+
const formData = Vue.ref({});
|
|
27
|
+
function getComp(type) {
|
|
28
|
+
return all[type];
|
|
29
|
+
}
|
|
30
|
+
const layoutData = Vue.computed(() => {
|
|
31
|
+
var _a;
|
|
32
|
+
if (Array.isArray(props.currentPage.layoutData)) {
|
|
33
|
+
return ((_a = props.currentPage.layoutData) == null ? void 0 : _a.map((item) => {
|
|
34
|
+
item.isResizable = false;
|
|
35
|
+
return item;
|
|
36
|
+
})) || [];
|
|
37
|
+
}
|
|
38
|
+
return props.currentPage.layoutData;
|
|
39
|
+
});
|
|
40
|
+
const tabbarActive = Vue.ref(0);
|
|
41
|
+
const childPage = Vue.ref(null);
|
|
42
|
+
function onTabbarChange(pageId) {
|
|
43
|
+
if (!pageId) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const page = props.currentPage.children.find((item) => item.id == pageId);
|
|
47
|
+
if (!page) ;
|
|
48
|
+
else {
|
|
49
|
+
childPage.value = page;
|
|
50
|
+
}
|
|
51
|
+
console.log("🚀 ~ onTabbarChange ~ page:", page);
|
|
52
|
+
}
|
|
53
|
+
Vue.onMounted(() => {
|
|
54
|
+
if (props.currentPage.footerType == "tabbar") {
|
|
55
|
+
tabbarActive.value = props.currentPage.tabbarConfig.tabbarOptions[0].pageId;
|
|
56
|
+
onTabbarChange(tabbarActive.value);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return (_ctx, _cache) => {
|
|
60
|
+
const _component_FecMobileNavBar = Vue.resolveComponent("FecMobileNavBar");
|
|
61
|
+
const _component_page = Vue.resolveComponent("page", true);
|
|
62
|
+
const _component_FecMobileMenuGrid = Vue.resolveComponent("FecMobileMenuGrid");
|
|
63
|
+
const _component_FecMobileNoticeBar = Vue.resolveComponent("FecMobileNoticeBar");
|
|
64
|
+
const _component_FecMobileDataStat = Vue.resolveComponent("FecMobileDataStat");
|
|
65
|
+
const _component_FecMobileTabbar = Vue.resolveComponent("FecMobileTabbar");
|
|
66
|
+
const _component_FecMobileActionBar = Vue.resolveComponent("FecMobileActionBar");
|
|
67
|
+
return Vue.openBlock(), Vue.createElementBlock(Vue.Fragment, null, [
|
|
68
|
+
__props.currentPage.isNavBar ? (Vue.openBlock(), Vue.createBlock(_component_FecMobileNavBar, Vue.normalizeProps(Vue.mergeProps({ key: 0 }, __props.currentPage.navBarConfig)), null, 16)) : Vue.createCommentVNode("", true),
|
|
69
|
+
Vue.createElementVNode("div", _hoisted_1, [
|
|
70
|
+
__props.currentPage.footerType == "tabbar" ? (Vue.openBlock(), Vue.createElementBlock(Vue.Fragment, { key: 0 }, [
|
|
71
|
+
__props.routePage || Vue.unref(childPage) ? (Vue.openBlock(), Vue.createBlock(_component_page, {
|
|
72
|
+
key: 0,
|
|
73
|
+
currentPage: __props.routePage || Vue.unref(childPage)
|
|
74
|
+
}, null, 8, ["currentPage"])) : Vue.createCommentVNode("", true)
|
|
75
|
+
], 64)) : (Vue.openBlock(), Vue.createElementBlock(Vue.Fragment, { key: 1 }, [
|
|
76
|
+
__props.currentPage.type == "home" ? (Vue.openBlock(), Vue.createElementBlock(Vue.Fragment, { key: 0 }, [
|
|
77
|
+
Vue.createVNode(_component_FecMobileMenuGrid, Vue.normalizeProps(Vue.guardReactiveProps(__props.currentPage.layoutData.menuGridProps)), null, 16),
|
|
78
|
+
Vue.createVNode(_component_FecMobileNoticeBar),
|
|
79
|
+
Vue.createVNode(_component_FecMobileDataStat)
|
|
80
|
+
], 64)) : __props.currentPage.type == "approval" ? (Vue.openBlock(), Vue.createElementBlock(Vue.Fragment, { key: 1 }, [], 64)) : (Vue.openBlock(), Vue.createBlock(Vue.unref(gridLayout_vue.default), {
|
|
81
|
+
key: 2,
|
|
82
|
+
ref: "gridLayout",
|
|
83
|
+
layout: Vue.unref(layoutData),
|
|
84
|
+
"onUpdate:layout": _cache[0] || (_cache[0] = ($event) => Vue.isRef(layoutData) ? layoutData.value = $event : null),
|
|
85
|
+
"row-height": rowHeight,
|
|
86
|
+
margin: [0, 0],
|
|
87
|
+
"col-num": colNum,
|
|
88
|
+
"use-css-transforms": false,
|
|
89
|
+
"is-draggable": false,
|
|
90
|
+
"is-resizable": false,
|
|
91
|
+
style: { "height": "100%" }
|
|
92
|
+
}, {
|
|
93
|
+
item: Vue.withCtx(({ item: { component } }) => [
|
|
94
|
+
Vue.createElementVNode("div", _hoisted_2, [
|
|
95
|
+
(Vue.openBlock(), Vue.createBlock(Vue.resolveDynamicComponent(getComp(component.fieldType)), Vue.mergeProps(component.props, {
|
|
96
|
+
modelValue: Vue.unref(formData)[component.props.fieldName],
|
|
97
|
+
"onUpdate:modelValue": ($event) => Vue.unref(formData)[component.props.fieldName] = $event,
|
|
98
|
+
dataSources: _ctx.dataSources
|
|
99
|
+
}), null, 16, ["modelValue", "onUpdate:modelValue", "dataSources"]))
|
|
100
|
+
])
|
|
101
|
+
]),
|
|
102
|
+
_: 1
|
|
103
|
+
}, 8, ["layout"]))
|
|
104
|
+
], 64))
|
|
105
|
+
]),
|
|
106
|
+
__props.currentPage.footerType == "tabbar" ? (Vue.openBlock(), Vue.createBlock(_component_FecMobileTabbar, Vue.mergeProps({
|
|
107
|
+
key: 1,
|
|
108
|
+
modelValue: Vue.unref(tabbarActive),
|
|
109
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => Vue.isRef(tabbarActive) ? tabbarActive.value = $event : null)
|
|
110
|
+
}, __props.currentPage.tabbarConfig, { onChange: onTabbarChange }), null, 16, ["modelValue"])) : Vue.createCommentVNode("", true),
|
|
111
|
+
__props.currentPage.footerType == "actionBar" ? (Vue.openBlock(), Vue.createBlock(_component_FecMobileActionBar, Vue.normalizeProps(Vue.mergeProps({ key: 2 }, __props.currentPage.actionBarConfig)), null, 16)) : Vue.createCommentVNode("", true)
|
|
112
|
+
], 64);
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const MobilePage = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-08632dac"]]);
|
|
117
|
+
exports.default = MobilePage;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const HISTORY_KEY = "mobile_page_history";
|
|
4
|
+
const MAX_HISTORY_SIZE = 20;
|
|
5
|
+
class PageHistory {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.history = this.loadHistory();
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 从 sessionStorage 加载历史记录
|
|
11
|
+
*/
|
|
12
|
+
loadHistory() {
|
|
13
|
+
try {
|
|
14
|
+
const data = sessionStorage.getItem(HISTORY_KEY);
|
|
15
|
+
return data ? JSON.parse(data) : [];
|
|
16
|
+
} catch (e) {
|
|
17
|
+
console.error("加载页面历史失败:", e);
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 保存历史记录到 sessionStorage
|
|
23
|
+
*/
|
|
24
|
+
saveHistory() {
|
|
25
|
+
try {
|
|
26
|
+
sessionStorage.setItem(HISTORY_KEY, JSON.stringify(this.history));
|
|
27
|
+
} catch (e) {
|
|
28
|
+
console.error("保存页面历史失败:", e);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 添加页面到历史
|
|
33
|
+
* @param {Object} page - 页面配置对象,需包含 id
|
|
34
|
+
*/
|
|
35
|
+
push(page) {
|
|
36
|
+
if (!page || !page.id) {
|
|
37
|
+
console.warn("页面配置无效,无法添加到历史");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (this.history.length > 0 && this.history[this.history.length - 1].id == page.id) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.history.push({
|
|
44
|
+
id: page.id,
|
|
45
|
+
name: page.name || "",
|
|
46
|
+
timestamp: Date.now(),
|
|
47
|
+
data: page
|
|
48
|
+
});
|
|
49
|
+
if (this.history.length > MAX_HISTORY_SIZE) {
|
|
50
|
+
this.history.shift();
|
|
51
|
+
}
|
|
52
|
+
this.saveHistory();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 后退到上一个页面
|
|
56
|
+
* @returns {Object|null} 返回上一个页面的配置,如果无法后退则返回 null
|
|
57
|
+
*/
|
|
58
|
+
back() {
|
|
59
|
+
if (this.history.length <= 1) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
this.history.pop();
|
|
63
|
+
this.saveHistory();
|
|
64
|
+
const prevPage = this.history[this.history.length - 1];
|
|
65
|
+
return prevPage ? prevPage.data : null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 获取当前页面
|
|
69
|
+
* @returns {Object|null}
|
|
70
|
+
*/
|
|
71
|
+
getCurrentPage() {
|
|
72
|
+
if (this.history.length == 0) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return this.history[this.history.length - 1].data;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 判断是否可以后退
|
|
79
|
+
* @returns {Boolean}
|
|
80
|
+
*/
|
|
81
|
+
canBack() {
|
|
82
|
+
return this.history.length > 1;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 获取历史记录数量
|
|
86
|
+
* @returns {Number}
|
|
87
|
+
*/
|
|
88
|
+
getLength() {
|
|
89
|
+
return this.history.length;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 清空历史记录
|
|
93
|
+
*/
|
|
94
|
+
clear() {
|
|
95
|
+
this.history = [];
|
|
96
|
+
this.saveHistory();
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 初始化或重置历史记录(仅包含首页)
|
|
100
|
+
* @param {Object} homePage - 首页配置
|
|
101
|
+
*/
|
|
102
|
+
init(homePage) {
|
|
103
|
+
this.clear();
|
|
104
|
+
if (homePage) {
|
|
105
|
+
this.push(homePage);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const pageHistory = new PageHistory();
|
|
110
|
+
exports.default = pageHistory;
|
|
111
|
+
exports.pageHistory = pageHistory;
|
|
@@ -34,7 +34,8 @@ const _sfc_main = {
|
|
|
34
34
|
};
|
|
35
35
|
const showFooter = Vue.ref(true);
|
|
36
36
|
Vue.onMounted(() => {
|
|
37
|
-
|
|
37
|
+
var _a;
|
|
38
|
+
const layoutDom = (_a = formDetailsFooterRef.value) == null ? void 0 : _a.$el.closest(".fec-layout-row");
|
|
38
39
|
if (layoutDom && props.formMode == "query") {
|
|
39
40
|
showFooter.value = false;
|
|
40
41
|
}
|
|
@@ -75,5 +76,5 @@ const _sfc_main = {
|
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
78
|
};
|
|
78
|
-
const component = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
|
79
|
+
const component = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-deabd2d2"]]);
|
|
79
80
|
exports.default = component;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const parseRouteParams = require("./parseRouteParams.js");
|
|
4
|
+
function isDateString(value) {
|
|
5
|
+
if (typeof value !== "string") return false;
|
|
6
|
+
return /^\d{4}\/\d{2}\/\d{2}$/.test(value);
|
|
7
|
+
}
|
|
8
|
+
function compareDate(a, b) {
|
|
9
|
+
return a.localeCompare(b);
|
|
10
|
+
}
|
|
4
11
|
function checkFilterMatch(filterConfig, data, fields = []) {
|
|
5
12
|
if (!filterConfig || !data) {
|
|
6
13
|
return false;
|
|
@@ -32,21 +39,39 @@ function checkConditionMatch(condition, data, fields) {
|
|
|
32
39
|
const fieldName = (fieldInfo == null ? void 0 : fieldInfo.fieldName) || field;
|
|
33
40
|
const dataValue = data[fieldName];
|
|
34
41
|
const parsedValue = parseRouteParams.parseSingleParamValue(value, data, fields);
|
|
42
|
+
if ("null" == (dataValue ?? "null") || "null" == (parsedValue ?? "null")) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
35
45
|
switch (operator) {
|
|
36
46
|
case "eq":
|
|
37
47
|
return dataValue == parsedValue;
|
|
38
48
|
case "ne":
|
|
39
49
|
return dataValue != parsedValue;
|
|
40
50
|
case "gt":
|
|
51
|
+
if (isDateString(dataValue) && isDateString(parsedValue)) {
|
|
52
|
+
return compareDate(dataValue, parsedValue) > 0;
|
|
53
|
+
}
|
|
41
54
|
return Number(dataValue) > Number(parsedValue);
|
|
42
55
|
case "gte":
|
|
56
|
+
if (isDateString(dataValue) && isDateString(parsedValue)) {
|
|
57
|
+
return compareDate(dataValue, parsedValue) >= 0;
|
|
58
|
+
}
|
|
43
59
|
return Number(dataValue) >= Number(parsedValue);
|
|
44
60
|
case "lt":
|
|
61
|
+
if (isDateString(dataValue) && isDateString(parsedValue)) {
|
|
62
|
+
return compareDate(dataValue, parsedValue) < 0;
|
|
63
|
+
}
|
|
45
64
|
return Number(dataValue) < Number(parsedValue);
|
|
46
65
|
case "lte":
|
|
66
|
+
if (isDateString(dataValue) && isDateString(parsedValue)) {
|
|
67
|
+
return compareDate(dataValue, parsedValue) <= 0;
|
|
68
|
+
}
|
|
47
69
|
return Number(dataValue) <= Number(parsedValue);
|
|
48
70
|
case "range":
|
|
49
71
|
if (!parsedValue || parsedValue.min == null || parsedValue.max == null) return false;
|
|
72
|
+
if (isDateString(dataValue) && isDateString(parsedValue.min) && isDateString(parsedValue.max)) {
|
|
73
|
+
return compareDate(dataValue, parsedValue.min) >= 0 && compareDate(dataValue, parsedValue.max) <= 0;
|
|
74
|
+
}
|
|
50
75
|
const numValue = Number(dataValue);
|
|
51
76
|
return numValue >= Number(parsedValue.min) && numValue <= Number(parsedValue.max);
|
|
52
77
|
case "contains":
|