diff --git a/examples/App.vue b/examples/App.vue
index d8d18bb3f2f30a153e5e36bf66b455e711f92cc0..fe5ef379ec4b1a294cc0f33481364498634c5445 100644
--- a/examples/App.vue
+++ b/examples/App.vue
@@ -2,7 +2,7 @@
{{item.name}}
-
+
diff --git a/examples/images/chart-bar-active.png b/examples/images/chart-bar-active.png
new file mode 100644
index 0000000000000000000000000000000000000000..80be708f71f837c32b0be77fbd135f46325f6c94
Binary files /dev/null and b/examples/images/chart-bar-active.png differ
diff --git a/examples/images/chart-bar.png b/examples/images/chart-bar.png
new file mode 100644
index 0000000000000000000000000000000000000000..60802b23a15e63333340ff5e54fec63c564079b9
Binary files /dev/null and b/examples/images/chart-bar.png differ
diff --git a/examples/images/code-active.png b/examples/images/code-active.png
new file mode 100644
index 0000000000000000000000000000000000000000..933f92c1b8a2f94ac744ef9868f1cfed9ef0aaea
Binary files /dev/null and b/examples/images/code-active.png differ
diff --git a/examples/images/code.png b/examples/images/code.png
new file mode 100644
index 0000000000000000000000000000000000000000..7fd94af1a78527832929ad855a015d9b96dfc694
Binary files /dev/null and b/examples/images/code.png differ
diff --git a/examples/images/history-active.png b/examples/images/history-active.png
new file mode 100644
index 0000000000000000000000000000000000000000..139b0ee1643aa0cd83b136b112200c7f5fa70d42
Binary files /dev/null and b/examples/images/history-active.png differ
diff --git a/examples/images/history.png b/examples/images/history.png
new file mode 100644
index 0000000000000000000000000000000000000000..73ae3a9187ef959e9a1e3ac153dc1d06741aac91
Binary files /dev/null and b/examples/images/history.png differ
diff --git a/examples/images/home-active.png b/examples/images/home-active.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b991d6a3687ea115d91e1b82a7414bf65004f23
Binary files /dev/null and b/examples/images/home-active.png differ
diff --git a/examples/images/home.png b/examples/images/home.png
new file mode 100644
index 0000000000000000000000000000000000000000..4274b196f0eae0a6b6dabefbc69de90a7e0e5aaa
Binary files /dev/null and b/examples/images/home.png differ
diff --git a/examples/images/more-active.png b/examples/images/more-active.png
new file mode 100644
index 0000000000000000000000000000000000000000..5258d0d6111a32b42418492235334a6c6f25942b
Binary files /dev/null and b/examples/images/more-active.png differ
diff --git a/examples/images/more.png b/examples/images/more.png
new file mode 100644
index 0000000000000000000000000000000000000000..cc08f40d0e37d203717232c69cf70ab7291b5c8b
Binary files /dev/null and b/examples/images/more.png differ
diff --git a/examples/views/tabBar-views/chart.vue b/examples/views/tabBar-views/chart.vue
new file mode 100644
index 0000000000000000000000000000000000000000..1b8303ac272021135bb4ea3f98ff0de0528981be
--- /dev/null
+++ b/examples/views/tabBar-views/chart.vue
@@ -0,0 +1,13 @@
+
+ 图表
+
+
+
+
+
diff --git a/examples/views/tabBar-views/code.vue b/examples/views/tabBar-views/code.vue
new file mode 100644
index 0000000000000000000000000000000000000000..a272898ce38f65d73a27adad14f0ccb2dfdd0ca9
--- /dev/null
+++ b/examples/views/tabBar-views/code.vue
@@ -0,0 +1,13 @@
+
+ 我爱打代码
+
+
+
+
+
diff --git a/examples/views/tabBar-views/history.vue b/examples/views/tabBar-views/history.vue
new file mode 100644
index 0000000000000000000000000000000000000000..cd5fc0f79fa75ead5e1a81058807dc85d47a4cb9
--- /dev/null
+++ b/examples/views/tabBar-views/history.vue
@@ -0,0 +1,13 @@
+
+ 历史记录
+
+
+
+
+
diff --git a/examples/views/tabBar-views/index.vue b/examples/views/tabBar-views/index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..753da8c7bfc6542119976042639124ef6f09af2e
--- /dev/null
+++ b/examples/views/tabBar-views/index.vue
@@ -0,0 +1,13 @@
+
+ 首页
+
+
+
+
+
diff --git a/examples/views/tabBar-views/more.vue b/examples/views/tabBar-views/more.vue
new file mode 100644
index 0000000000000000000000000000000000000000..e3653b986a8c4b2be37b8d9cb32ed1fd18f47e80
--- /dev/null
+++ b/examples/views/tabBar-views/more.vue
@@ -0,0 +1,13 @@
+
+ 更多
+
+
+
+
+
diff --git a/examples/views/yqm-tabBar-example.vue b/examples/views/yqm-tabBar-example.vue
new file mode 100644
index 0000000000000000000000000000000000000000..ce569cd8a4f94b9daa85e4ceb43ea36420e3781f
--- /dev/null
+++ b/examples/views/yqm-tabBar-example.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/utils/index.js b/packages/utils/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..e914a063a9f1ac924c176e7f65b169653303da8d
--- /dev/null
+++ b/packages/utils/index.js
@@ -0,0 +1,5 @@
+import * as basic from './modules/basic'
+
+export default {
+ ...basic
+}
diff --git a/packages/utils/modules/basic.js b/packages/utils/modules/basic.js
new file mode 100644
index 0000000000000000000000000000000000000000..0cd5ad9fa90a060cfc8cfcc4a484ea3ef34d142b
--- /dev/null
+++ b/packages/utils/modules/basic.js
@@ -0,0 +1,89 @@
+/**
+ * 判断是否为数字
+ * @param n
+ * @returns {boolean}
+ */
+export const isNumber = (n) => !isNaN(parseFloat(n)) && isFinite(n);
+
+/**
+ * 判断是否为数组
+ * @param obj
+ * @returns {boolean}
+ */
+export const isArray = (obj) => Object.prototype.toString().call(obj) === '[object Array]';
+
+/**
+ * 判断是否为空数组
+ * @param arr
+ * @returns {boolean}
+ */
+export const isArrayEmpty = (arr) => !(arr && isArray(arr) && arr.length > 0);
+
+/**
+ * 判断数据类型
+ * @param val - 基本类型数据或者引用类型数据
+ * @returns {string|*|"undefined"|"object"|"boolean"|"number"|"string"|"function"|"symbol"|"bigint"}
+ */
+export const getType = (val) => {
+ //判断数据是null和undefined两种情况
+ if (val == null){
+ return val + '';
+ }
+
+ return typeof(val) === 'object'?Object.prototype.toString().call(val).slice(8,-1).toLowerCase() : typeof(val);
+};
+
+/**
+ * 数字每千位加逗号
+ * @param num
+ * @returns {string}
+ */
+export const commafy = (num) => num && num.toString().replace(/\d+/,s=>s.replace(/(\d)(?=(\d{3})+$)/g,'$1,'));
+
+/**
+ * 解析url中的参数
+ * @param url
+ * @returns {Object}
+ */
+export const parseUrl = url => {
+
+ function getRawUri(url) {
+ const raw = decodeURIComponent(url);
+
+ if (raw === url) {
+ return raw;
+ }
+
+ return getRawUri(raw);
+ }
+
+ const a = document.createElement('a');
+
+ a.href = url;
+ const { hash } = a;
+ const { search } = a;
+ const param = {};
+ let query = '';
+
+ if (hash) {
+ query = hash.replace(/(#.*\?)|(#\/)/g, '');
+ }
+
+ if (search) {
+ query = [query, search.replace(/^\?/g, '')].join(query.length ? '&' : '');
+ }
+
+ if (query) {
+ query.split('&').forEach(item => {
+ const [key, value] = item.split('=');
+
+ if (key && value) {
+ param[getRawUri(key)] = getRawUri(value);
+ }
+ });
+
+ return param;
+ }
+
+ return {};
+};
diff --git a/packages/yqm-tabBar/index.js b/packages/yqm-tabBar/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..f10a7ef6166ec8d954fd6f7cff3abc5e4cdf3939
--- /dev/null
+++ b/packages/yqm-tabBar/index.js
@@ -0,0 +1,7 @@
+import yqmTabBar from './src/yqm-tabBar'
+
+yqmTabBar.install = (Vue) => {
+ Vue.component(yqmTabBar.name, yqmTabBar)
+}
+
+export default yqmTabBar
diff --git a/packages/yqm-tabBar/src/yqm-tabBar.vue b/packages/yqm-tabBar/src/yqm-tabBar.vue
new file mode 100644
index 0000000000000000000000000000000000000000..2596a93deb864e340733f92c8ab992ac2ea7f454
--- /dev/null
+++ b/packages/yqm-tabBar/src/yqm-tabBar.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
![]()
+
![]()
+
+
+ {{item.text}}
+
+
+
+
+
+
+
+