xianniu-ui 0.1.1
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/README.md +1 -0
- package/lib/demo.html +10 -0
- package/lib/style/index.css +1 -0
- package/lib/style/page.css +1 -0
- package/lib/style/table.css +1 -0
- package/lib/xn-ui.common.js +20159 -0
- package/lib/xn-ui.umd.js +20169 -0
- package/lib/xn-ui.umd.min.js +9 -0
- package/package.json +62 -0
- package/packages/dialog/index.js +7 -0
- package/packages/dialog/main.vue +123 -0
- package/packages/page/index.js +7 -0
- package/packages/page/main.vue +100 -0
- package/packages/style/lib/index.css +1 -0
- package/packages/style/lib/page.css +1 -0
- package/packages/style/lib/table.css +1 -0
- package/packages/style/package.json +22 -0
- package/packages/style/src/index.scss +2 -0
- package/packages/style/src/page.scss +7 -0
- package/packages/style/src/table.scss +9 -0
- package/packages/table/column.vue +111 -0
- package/packages/table/index.js +7 -0
- package/packages/table/main.vue +104 -0
- package/public/favicon.ico +0 -0
- package/public/index.html +18 -0
- package/src/area/index.js +12890 -0
- package/src/index.js +44 -0
- package/src/plugins/index.js +6 -0
- package/src/theme/element-variables.scss +28 -0
- package/src/theme/index.scss +1 -0
- package/src/theme/mixin.scss +270 -0
- package/src/theme/sidebar.scss +271 -0
- package/src/theme/transition.scss +52 -0
- package/src/theme/variables.scss +36 -0
- package/src/utils/dayjs.js +2 -0
- package/src/utils/format.js +122 -0
- package/src/utils/index.js +21 -0
- package/src/utils/lodash.js +2 -0
- package/src/utils/package.json +8 -0
- package/src/utils/reg.js +8 -0
- package/src/utils/scroll-to.js +59 -0
- package/src/utils/storage.js +2 -0
- package/src/utils/utils.js +20 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "xn-ui-style",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "lib/index.css",
|
|
6
|
+
"style": "lib/index.css",
|
|
7
|
+
"files": [
|
|
8
|
+
"lib",
|
|
9
|
+
"src"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"style": "gulp"
|
|
13
|
+
},
|
|
14
|
+
"author": "",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"gulp": "^4.0.2",
|
|
18
|
+
"gulp-autoprefixer": "^8.0.0",
|
|
19
|
+
"gulp-cssmin": "^0.2.0",
|
|
20
|
+
"gulp-sass": "^5.1.0"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-table-column v-bind="$attrs" v-if="isShowColumn($attrs)">
|
|
3
|
+
<template v-if="$attrs.labelMsg">
|
|
4
|
+
<template slot="header">
|
|
5
|
+
<el-tooltip
|
|
6
|
+
class="item"
|
|
7
|
+
effect="dark"
|
|
8
|
+
:content="$attrs.labelMsg"
|
|
9
|
+
placement="right"
|
|
10
|
+
>
|
|
11
|
+
<span>{{ $attrs.label }} <i class="el-icon-question"></i></span>
|
|
12
|
+
</el-tooltip>
|
|
13
|
+
</template>
|
|
14
|
+
</template>
|
|
15
|
+
<template slot-scope="{ row, $index }">
|
|
16
|
+
<expandDom
|
|
17
|
+
v-if="$attrs.render"
|
|
18
|
+
:column="item"
|
|
19
|
+
:row="row"
|
|
20
|
+
:render="$attrs.render"
|
|
21
|
+
:index="$index"
|
|
22
|
+
></expandDom>
|
|
23
|
+
<template v-else>
|
|
24
|
+
{{ row[$attrs.prop] }}
|
|
25
|
+
</template>
|
|
26
|
+
<!-- 更多操作 -->
|
|
27
|
+
<template v-if="$attrs.more && $attrs.more.options.length">
|
|
28
|
+
<template v-for="(itemBtn, idxBtn) in $attrs.more.options">
|
|
29
|
+
<expand-dom
|
|
30
|
+
v-if="itemBtn.render"
|
|
31
|
+
:key="idxBtn"
|
|
32
|
+
:column="itemBtn"
|
|
33
|
+
:row="row"
|
|
34
|
+
:render="itemBtn.render"
|
|
35
|
+
:index="idxBtn"
|
|
36
|
+
/>
|
|
37
|
+
<template v-else>
|
|
38
|
+
<el-button
|
|
39
|
+
v-if="itemBtn.show ? itemBtn.show(row) : true"
|
|
40
|
+
:key="idxBtn"
|
|
41
|
+
:disabled="itemBtn.disabled ? itemBtn.disabled(row) : false"
|
|
42
|
+
:type="itemBtn.type || 'text'"
|
|
43
|
+
:size="itemBtn.size || 'mini'"
|
|
44
|
+
:icon="itemBtn.icon"
|
|
45
|
+
:plain="itemBtn.plain"
|
|
46
|
+
@click="handleClick(itemBtn.method, row, $index)"
|
|
47
|
+
>{{
|
|
48
|
+
typeof itemBtn.label === "function"
|
|
49
|
+
? itemBtn.label(row)
|
|
50
|
+
: itemBtn.label
|
|
51
|
+
}}</el-button
|
|
52
|
+
>
|
|
53
|
+
</template>
|
|
54
|
+
</template>
|
|
55
|
+
</template>
|
|
56
|
+
</template>
|
|
57
|
+
</el-table-column>
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
<script>
|
|
61
|
+
export default {
|
|
62
|
+
components: {
|
|
63
|
+
expandDom: {
|
|
64
|
+
functional: true,
|
|
65
|
+
props: {
|
|
66
|
+
row: Object,
|
|
67
|
+
render: Function,
|
|
68
|
+
index: Number,
|
|
69
|
+
column: {
|
|
70
|
+
type: Object,
|
|
71
|
+
default: null,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
render: (h, ctx) => {
|
|
75
|
+
const params = {
|
|
76
|
+
row: ctx.props.row,
|
|
77
|
+
index: ctx.props.index,
|
|
78
|
+
};
|
|
79
|
+
if (ctx.props.column) params.column = ctx.props.column;
|
|
80
|
+
return ctx.props.render(h, params);
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
computed: {
|
|
85
|
+
isShowColumn() {
|
|
86
|
+
return (row) => {
|
|
87
|
+
if (row.show !== undefined) {
|
|
88
|
+
if (typeof row.show === "function") {
|
|
89
|
+
return row.show();
|
|
90
|
+
} else {
|
|
91
|
+
return row.show;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
};
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
watch: {},
|
|
100
|
+
methods: {
|
|
101
|
+
handleClick(method, row, index) {
|
|
102
|
+
if(this.$parent){
|
|
103
|
+
this.$parent.$emit("on-buttons", { method, row, index });
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
</script>
|
|
109
|
+
|
|
110
|
+
<style>
|
|
111
|
+
</style>
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="xn-table-box">
|
|
3
|
+
<div
|
|
4
|
+
class="xn-table-box-tools"
|
|
5
|
+
v-if="isTools"
|
|
6
|
+
:class="{ 'is-border': !border }"
|
|
7
|
+
>
|
|
8
|
+
<slot name="tools">
|
|
9
|
+
<el-button
|
|
10
|
+
circle
|
|
11
|
+
size="mini"
|
|
12
|
+
@click="$emit('on-refresh')"
|
|
13
|
+
icon="el-icon-refresh"
|
|
14
|
+
></el-button>
|
|
15
|
+
</slot>
|
|
16
|
+
</div>
|
|
17
|
+
<el-table
|
|
18
|
+
:data="data"
|
|
19
|
+
v-on="$listeners"
|
|
20
|
+
v-bind="$attrs"
|
|
21
|
+
:border="border"
|
|
22
|
+
:stripe="stripe"
|
|
23
|
+
>
|
|
24
|
+
<el-table-column
|
|
25
|
+
v-if="selection && data.length"
|
|
26
|
+
v-bind="$attrs"
|
|
27
|
+
type="selection"
|
|
28
|
+
width="50px"
|
|
29
|
+
align="center"
|
|
30
|
+
></el-table-column>
|
|
31
|
+
<el-table-column
|
|
32
|
+
width="50px"
|
|
33
|
+
label="序号"
|
|
34
|
+
v-if="index && data.length"
|
|
35
|
+
type="index"
|
|
36
|
+
></el-table-column>
|
|
37
|
+
<slot name="column">
|
|
38
|
+
<column
|
|
39
|
+
v-for="(item, idx) in columns"
|
|
40
|
+
:key="idx"
|
|
41
|
+
v-bind="item"
|
|
42
|
+
></column>
|
|
43
|
+
</slot>
|
|
44
|
+
</el-table>
|
|
45
|
+
<xn-page
|
|
46
|
+
:hidden="!showPage"
|
|
47
|
+
:total="pageConfig.total"
|
|
48
|
+
:page.sync="pageConfig.pageNum"
|
|
49
|
+
:limit.sync="pageConfig.pageSize"
|
|
50
|
+
@pagination="getList"
|
|
51
|
+
layout="total, prev, pager, next, jumper"
|
|
52
|
+
></xn-page>
|
|
53
|
+
</div>
|
|
54
|
+
</template>
|
|
55
|
+
|
|
56
|
+
<script>
|
|
57
|
+
import column from "./column.vue";
|
|
58
|
+
export default {
|
|
59
|
+
name: "XnTable",
|
|
60
|
+
components: { column },
|
|
61
|
+
props: {
|
|
62
|
+
data: {
|
|
63
|
+
type: Array,
|
|
64
|
+
default: () => {},
|
|
65
|
+
},
|
|
66
|
+
border: {
|
|
67
|
+
type: Boolean,
|
|
68
|
+
default: false,
|
|
69
|
+
},
|
|
70
|
+
columns: {
|
|
71
|
+
type: Array,
|
|
72
|
+
default: () => {},
|
|
73
|
+
},
|
|
74
|
+
stripe: Boolean,
|
|
75
|
+
selection: Boolean,
|
|
76
|
+
showPage: Boolean,
|
|
77
|
+
pageConfig: {
|
|
78
|
+
type: Object,
|
|
79
|
+
default: () => {
|
|
80
|
+
return {
|
|
81
|
+
pageSize: 15,
|
|
82
|
+
pageNum: 1,
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
index: Boolean,
|
|
87
|
+
expand: Boolean,
|
|
88
|
+
isTools: Boolean,
|
|
89
|
+
},
|
|
90
|
+
computed: {
|
|
91
|
+
isObj() {
|
|
92
|
+
return typeof this.pageConfig === "object";
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
methods: {
|
|
96
|
+
getList(val) {
|
|
97
|
+
this.$emit("on-page", val);
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
</script>
|
|
102
|
+
|
|
103
|
+
<style>
|
|
104
|
+
</style>
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
7
|
+
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
|
8
|
+
<title><%= htmlWebpackPlugin.options.title %></title>
|
|
9
|
+
<link rel="stylesheet" href="//shadow.elemecdn.com/npm/highlight.js@9.3.0/styles/color-brewer.css">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<noscript>
|
|
13
|
+
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
|
14
|
+
</noscript>
|
|
15
|
+
<div id="app"></div>
|
|
16
|
+
<!-- built files will be auto injected -->
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|