leisure-core 1.0.2 → 1.0.4
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/index.js +223 -0
- package/le-area/index.js +7 -0
- package/le-area/src/main.vue +112 -0
- package/le-button/index.js +7 -0
- package/le-button/src/main.vue +47 -0
- package/le-button-attach/index.js +6 -0
- package/le-button-attach/src/main.vue +171 -0
- package/le-button-msg/index.js +7 -0
- package/le-button-msg/src/main.vue +65 -0
- package/le-button-qr/index.js +7 -0
- package/le-button-qr/src/main.vue +96 -0
- package/le-date-picker/index.js +7 -0
- package/le-date-picker/src/main.vue +67 -0
- package/le-date-picker-auto/index.js +6 -0
- package/le-date-picker-auto/src/main.vue +131 -0
- package/le-dialog-container/index.js +7 -0
- package/le-dialog-container/src/main.vue +80 -0
- package/le-form/index.js +7 -0
- package/le-form/src/main.vue +13 -0
- package/le-form-item/index.js +7 -0
- package/le-form-item/src/main.vue +13 -0
- package/le-home/index.js +7 -0
- package/le-home/src/LeHeaderMenu.vue +60 -0
- package/le-home/src/main.vue +1307 -0
- package/le-home/src/sub.vue +82 -0
- package/le-image/index.js +7 -0
- package/le-image/src/main.vue +53 -0
- package/le-input/index.js +7 -0
- package/le-input/src/main.vue +15 -0
- package/le-input-advanced/index.js +7 -0
- package/le-input-advanced/src/main.vue +71 -0
- package/le-input-number/index.js +7 -0
- package/le-input-number/src/main.vue +15 -0
- package/le-input-validate/index.js +6 -0
- package/le-input-validate/src/main.vue +469 -0
- package/le-libs/js/drag.js +78 -0
- package/le-libs/js/event.js +3 -0
- package/le-libs/js/hrequest.js +76 -0
- package/le-libs/js/hrequestFile.js +151 -0
- package/le-libs/js/info.js +7 -0
- package/le-libs/js/tokens.js +13 -0
- package/le-libs/mixins/main.js +48 -0
- package/le-list/index.js +7 -0
- package/le-list/src/main.vue +645 -0
- package/le-list-form/index.js +7 -0
- package/le-list-form/src/main.vue +474 -0
- package/le-login/index.js +7 -0
- package/le-login/src/ForgotPassword.vue +613 -0
- package/le-login/src/main.vue +982 -0
- package/le-media/index.js +7 -0
- package/le-media/src/main.vue +298 -0
- package/le-media-list/index.js +7 -0
- package/le-media-list/src/main.vue +178 -0
- package/le-media-upload/index.js +7 -0
- package/le-media-upload/src/main.vue +329 -0
- package/le-menu/index.js +7 -0
- package/le-menu/src/main.vue +248 -0
- package/le-report/index.js +6 -0
- package/le-report/src/main.vue +1747 -0
- package/le-report/src/rmixins.js +30 -0
- package/le-role/index.js +7 -0
- package/le-role/src/main.vue +183 -0
- package/le-role/src/sub.vue +79 -0
- package/le-role-user/index.js +7 -0
- package/le-role-user/src/main.vue +160 -0
- package/le-role-user/src/sub.vue +90 -0
- package/le-select/index.js +7 -0
- package/le-select/src/main.vue +49 -0
- package/le-select-multi/index.js +6 -0
- package/le-select-multi/src/main.vue +816 -0
- package/le-select-option/index.js +7 -0
- package/le-select-option/src/main.vue +69 -0
- package/le-select-search/index.js +7 -0
- package/le-select-search/src/main.vue +46 -0
- package/le-span/index.js +7 -0
- package/le-span/src/main.vue +29 -0
- package/le-table-edit/index.js +6 -0
- package/le-table-edit/src/main.vue +689 -0
- package/le-theme/common/vars.css +131 -0
- package/le-theme/iconfont/iconfont.css +125 -0
- package/le-theme/iconfont/iconfont.ttf +0 -0
- package/le-theme/iconfont/iconfont.woff +0 -0
- package/le-theme/iconfont/iconfont.woff2 +0 -0
- package/le-theme/index.js +189 -0
- package/le-theme/pages/index.css +15 -0
- package/le-upload/index.js +7 -0
- package/le-upload/src/main.vue +134 -0
- package/le-upload-table/index.js +6 -0
- package/le-upload-table/src/main.vue +648 -0
- package/le-url/index.js +7 -0
- package/le-url/src/main.vue +27 -0
- package/le-video/index.js +7 -0
- package/le-video/src/main.vue +42 -0
- package/package.json +1 -6
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<!-- 有子菜单 → 渲染 el-submenu -->
|
|
4
|
+
<el-submenu v-if="hasChildren" :index="getIndex" :key="menuItem.id">
|
|
5
|
+
<template slot="title">
|
|
6
|
+
<i v-if="menuItem.icon" :class="menuItem.icon"></i>
|
|
7
|
+
<span>{{ menuItem.title }}</span>
|
|
8
|
+
</template>
|
|
9
|
+
<!-- 递归渲染子节点 -->
|
|
10
|
+
<menu-node
|
|
11
|
+
v-for="child in menuItem.children"
|
|
12
|
+
:key="child.id"
|
|
13
|
+
:menu-item="child"
|
|
14
|
+
:parent-index="getIndex"
|
|
15
|
+
@menu-click="handleChildClick"
|
|
16
|
+
/>
|
|
17
|
+
</el-submenu>
|
|
18
|
+
|
|
19
|
+
<!-- 叶子菜单 → 渲染 el-menu-item -->
|
|
20
|
+
<el-menu-item
|
|
21
|
+
v-else
|
|
22
|
+
:index="getIndex"
|
|
23
|
+
@click="emitClick"
|
|
24
|
+
:title="shouldShowTooltip ? menuItem.title : ''"
|
|
25
|
+
>
|
|
26
|
+
<span class="menu-item-text">{{ menuItem.title }}</span>
|
|
27
|
+
</el-menu-item>
|
|
28
|
+
</div>
|
|
29
|
+
</template>
|
|
30
|
+
|
|
31
|
+
<script>
|
|
32
|
+
export default {
|
|
33
|
+
name: "MenuNode",
|
|
34
|
+
props: {
|
|
35
|
+
// 当前菜单项数据
|
|
36
|
+
menuItem: {
|
|
37
|
+
type: Object,
|
|
38
|
+
required: true,
|
|
39
|
+
},
|
|
40
|
+
// 父级 index,用于构建唯一层级路径
|
|
41
|
+
parentIndex: {
|
|
42
|
+
type: String,
|
|
43
|
+
default: "",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
computed: {
|
|
47
|
+
// 是否有子菜单(且子菜单未被全部过滤掉)
|
|
48
|
+
hasChildren() {
|
|
49
|
+
return this.menuItem.children && this.menuItem.children.length > 0;
|
|
50
|
+
},
|
|
51
|
+
// 构建唯一 index,使用 id 拼接,避免同名冲突
|
|
52
|
+
getIndex() {
|
|
53
|
+
const base = this.parentIndex ? this.parentIndex + "-" : "";
|
|
54
|
+
return base + this.menuItem.id;
|
|
55
|
+
},
|
|
56
|
+
// 是否显示 tooltip(文字超长)
|
|
57
|
+
shouldShowTooltip() {
|
|
58
|
+
return this.menuItem.title && this.menuItem.title.length > 8;
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
methods: {
|
|
62
|
+
// 点击叶子菜单
|
|
63
|
+
emitClick() {
|
|
64
|
+
this.$emit("menu-click", this.menuItem);
|
|
65
|
+
},
|
|
66
|
+
// 子节点触发点击,向上冒泡
|
|
67
|
+
handleChildClick(item) {
|
|
68
|
+
this.$emit("menu-click", item);
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<style scoped>
|
|
75
|
+
.menu-item-text {
|
|
76
|
+
display: inline-block;
|
|
77
|
+
max-width: calc(100% + 25px);
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
text-overflow: ellipsis;
|
|
80
|
+
white-space: nowrap;
|
|
81
|
+
}
|
|
82
|
+
</style>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-image
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
v-on="$listeners"
|
|
5
|
+
:src="secureSrc"
|
|
6
|
+
:preview-src-list="securePreviewList"
|
|
7
|
+
:class="['customClass', $attrs.class]"
|
|
8
|
+
:style="$attrs.style"
|
|
9
|
+
></el-image>
|
|
10
|
+
</template>
|
|
11
|
+
<script>
|
|
12
|
+
export default {
|
|
13
|
+
name: "le-image",
|
|
14
|
+
props: {
|
|
15
|
+
replaceHttp: {
|
|
16
|
+
type: Boolean,
|
|
17
|
+
default: true, // 标识是否需要替换
|
|
18
|
+
},
|
|
19
|
+
previewList: {
|
|
20
|
+
type: Array,
|
|
21
|
+
default: () => [],
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
computed: {
|
|
25
|
+
secureSrc() {
|
|
26
|
+
let src = this.$attrs.src || "";
|
|
27
|
+
return this.replaceHttp2Https(src);
|
|
28
|
+
},
|
|
29
|
+
securePreviewList() {
|
|
30
|
+
let list = this.previewList || [];
|
|
31
|
+
if (this.replaceHttp && list.length > 0) {
|
|
32
|
+
let temps = list.map((item) => {
|
|
33
|
+
return this.replaceHttp2Https(item);
|
|
34
|
+
});
|
|
35
|
+
return temps;
|
|
36
|
+
}
|
|
37
|
+
return list;
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
methods: {
|
|
41
|
+
replaceHttp2Https(src) {
|
|
42
|
+
if (this.replaceHttp && src.startsWith("http:")) {
|
|
43
|
+
src = src.replace(/^http:/, "https:");
|
|
44
|
+
let portPattern = /:(\d+)/;
|
|
45
|
+
if (src.match(portPattern)) {
|
|
46
|
+
src = src.replace(portPattern, "");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return src;
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
</script>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-input
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
v-on="$listeners"
|
|
5
|
+
:class="['customClass', $attrs.class]"
|
|
6
|
+
:style="$attrs.style"
|
|
7
|
+
clearable
|
|
8
|
+
></el-input>
|
|
9
|
+
</template>
|
|
10
|
+
<script>
|
|
11
|
+
export default {
|
|
12
|
+
name: "le-input",
|
|
13
|
+
inheritAttrs: false,
|
|
14
|
+
};
|
|
15
|
+
</script>
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="le-input-money">
|
|
3
|
+
<el-input-number v-model="displayValue" v-bind="mergedAttrs" :class="['customClass', $attrs.class]"
|
|
4
|
+
:style="$attrs.style" :precision="precision" clearable></el-input-number>
|
|
5
|
+
单位:{{ unit }}
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
<script>
|
|
9
|
+
export default {
|
|
10
|
+
name: "le-input-advanced",
|
|
11
|
+
inheritAttrs: false,
|
|
12
|
+
props: {
|
|
13
|
+
value: {
|
|
14
|
+
type: Number,
|
|
15
|
+
default: 0
|
|
16
|
+
},
|
|
17
|
+
converted: {//是否进行转换
|
|
18
|
+
type: Boolean,
|
|
19
|
+
default: false
|
|
20
|
+
},
|
|
21
|
+
scale: {//转换比例
|
|
22
|
+
type: Number,
|
|
23
|
+
default: 100
|
|
24
|
+
},
|
|
25
|
+
precision: {//小数位数
|
|
26
|
+
type: Number,
|
|
27
|
+
default: 2
|
|
28
|
+
},
|
|
29
|
+
unit: {//单位
|
|
30
|
+
type: String,
|
|
31
|
+
default: '元'
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
computed: {
|
|
35
|
+
displayValue: {
|
|
36
|
+
get() {
|
|
37
|
+
if (this.converted) {
|
|
38
|
+
return this.value / this.scale;
|
|
39
|
+
}
|
|
40
|
+
return this.value;
|
|
41
|
+
},
|
|
42
|
+
set(val) {
|
|
43
|
+
let value = val !== null && val !== undefined ? val : null;
|
|
44
|
+
if (this.converted) {
|
|
45
|
+
value = val !== null && val !== undefined ? Math.round(val * this.scale) : null;
|
|
46
|
+
}
|
|
47
|
+
this.$emit('input', value);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
mergedAttrs() {
|
|
51
|
+
const { value, min, max, step, ...attrs } = this.$attrs;
|
|
52
|
+
const converted = {};
|
|
53
|
+
['min', 'max', 'step'].forEach(attr => {
|
|
54
|
+
if (typeof this.$attrs[attr] === 'number') {
|
|
55
|
+
converted[attr] = this.$attrs[attr] / 100
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
return { ...attrs, ...converted }
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
</script>
|
|
64
|
+
<style lang="scss" scoped>
|
|
65
|
+
.le-input-money {
|
|
66
|
+
width: 100%;
|
|
67
|
+
display: flex;
|
|
68
|
+
display: -webkit-flex;
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
</style>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-input-number
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
v-on="$listeners"
|
|
5
|
+
:class="['customClass', $attrs.class]"
|
|
6
|
+
:style="$attrs.style"
|
|
7
|
+
></el-input-number>
|
|
8
|
+
</template>
|
|
9
|
+
<script>
|
|
10
|
+
export default {
|
|
11
|
+
name: "le-input-number",
|
|
12
|
+
props: {},
|
|
13
|
+
methods: {},
|
|
14
|
+
};
|
|
15
|
+
</script>
|