空白格 %!s(int64=3) %!d(string=hai) anos
pai
achega
e9c72d85ec
Modificáronse 100 ficheiros con 1133 adicións e 12929 borrados
  1. 1 1
      App.vue
  2. 3 0
      common/apiurl.js
  3. 3 0
      common/config.js
  4. 15 0
      common/http.api.js
  5. 58 0
      common/http.interceptor.js
  6. 0 87
      components/t-table/t-table.vue
  7. 0 69
      components/t-table/t-td.vue
  8. 0 71
      components/t-table/t-th.vue
  9. 0 81
      components/t-table/t-tr.vue
  10. 32 9
      main.js
  11. 6 4
      manifest.json
  12. 39 20
      pages.json
  13. 23 0
      pages/dataOverview/operationalAnalysis/operationalAnalysis.vue
  14. 23 0
      pages/dataOverview/statisticalReport/statisticalReport.vue
  15. 23 0
      pages/dataOverview/todayOverview/todayOverview.vue
  16. 94 0
      pages/index/index.scss
  17. 162 95
      pages/index/index.vue
  18. 18 20
      pages/login/login.scss
  19. 52 52
      pages/login/login.vue
  20. 0 51
      pages/operationOverview/operationOverview.vue
  21. 0 245
      pages/operationOverview/operationOverviewModel/operationOverviewModel.vue
  22. 0 133
      pages/operationOverview/operationalAnalysis/operationalAnalysis.vue
  23. 0 193
      pages/operationOverview/statisticalReport/statisticalReport.vue
  24. 23 0
      pages/orderManagement/arrearageRecord/arrearageRecord.vue
  25. 23 0
      pages/orderManagement/collectionRecord/collectionRecord.vue
  26. 23 0
      pages/orderManagement/feeEvasionRecord/feeEvasionRecord.vue
  27. 23 0
      pages/orderManagement/parkingRecord/parkingRecord.vue
  28. 23 0
      pages/orderManagement/recoveryRecord/recoveryRecord.vue
  29. 23 0
      pages/orderManagement/voidRecord/voidRecord.vue
  30. 0 43
      pages/orderRecords/orderRecords.vue
  31. 0 100
      pages/patrolManagement/abnormalRecords/abnormalRecords.vue
  32. 23 0
      pages/patrolManagement/deviceAbnormalRecords/deviceAbnormalRecords.vue
  33. 0 61
      pages/patrolManagement/patrolManagement.vue
  34. 23 0
      pages/patrolManagement/patrolRecord/patrolRecord.vue
  35. 0 142
      pages/patrolManagement/patrolRecords/patrolRecords.vue
  36. 17 0
      static/icons/arrearage-record-icon.svg
  37. 18 0
      static/icons/collection-record-icon.svg
  38. 17 0
      static/icons/device-error-records-icon.svg
  39. 17 0
      static/icons/fee-evasion-record-icon.svg
  40. 16 0
      static/icons/logout-icon.svg
  41. 24 0
      static/icons/operational-analysis-icon.svg
  42. 17 0
      static/icons/parking-record-icon.svg
  43. 17 0
      static/icons/patrol-manage-icon.svg
  44. 17 0
      static/icons/recovery-record-icon.svg
  45. 23 0
      static/icons/statistical-report-icon.svg
  46. 27 0
      static/icons/today-overview-icon.svg
  47. 17 0
      static/icons/void-record-icon.svg
  48. BIN=BIN
      static/images/1.png
  49. BIN=BIN
      static/images/2.png
  50. BIN=BIN
      static/images/3.png
  51. BIN=BIN
      static/images/index-header-bg.png
  52. BIN=BIN
      static/images/mana-icon.png
  53. BIN=BIN
      static/images/order-icon.png
  54. BIN=BIN
      static/images/parking-info-bg.png
  55. BIN=BIN
      static/images/running-icon.png
  56. BIN=BIN
      static/logo.png
  57. 28 0
      store/$u.mixin.js
  58. 62 0
      store/index.js
  59. 1 78
      uni.scss
  60. 0 177
      uni_modules/qiun-data-charts/changelog.md
  61. 0 1541
      uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue
  62. 0 46
      uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue
  63. 0 162
      uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue
  64. 0 170
      uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue
  65. 0 173
      uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue
  66. 0 222
      uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue
  67. 0 229
      uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue
  68. 0 36
      uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue
  69. 0 422
      uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js
  70. 0 584
      uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js
  71. 0 12
      uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md
  72. 0 6809
      uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js
  73. 0 201
      uni_modules/qiun-data-charts/license.md
  74. 0 84
      uni_modules/qiun-data-charts/package.json
  75. 0 451
      uni_modules/qiun-data-charts/readme.md
  76. 0 23
      uni_modules/qiun-data-charts/static/app-plus/echarts.min.js
  77. 0 23
      uni_modules/qiun-data-charts/static/h5/echarts.min.js
  78. 0 0
      uni_modules/uview-ui/LICENSE
  79. 5 0
      uview-ui/README.md
  80. 53 0
      uview-ui/changelog.md
  81. 0 0
      uni_modules/uview-ui/components/u--form/u--form.vue
  82. 8 1
      uview-ui/components/u--image/u--image.vue
  83. 0 0
      uni_modules/uview-ui/components/u--input/u--input.vue
  84. 0 0
      uni_modules/uview-ui/components/u--text/u--text.vue
  85. 0 0
      uni_modules/uview-ui/components/u--textarea/u--textarea.vue
  86. 0 0
      uni_modules/uview-ui/components/u-action-sheet/props.js
  87. 0 0
      uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
  88. 0 0
      uni_modules/uview-ui/components/u-album/props.js
  89. 2 2
      uview-ui/components/u-album/u-album.vue
  90. 0 0
      uni_modules/uview-ui/components/u-alert/props.js
  91. 0 0
      uni_modules/uview-ui/components/u-alert/u-alert.vue
  92. 0 0
      uni_modules/uview-ui/components/u-avatar-group/props.js
  93. 0 0
      uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue
  94. 0 0
      uni_modules/uview-ui/components/u-avatar/props.js
  95. 11 6
      uview-ui/components/u-avatar/u-avatar.vue
  96. 0 0
      uni_modules/uview-ui/components/u-back-top/props.js
  97. 0 0
      uni_modules/uview-ui/components/u-back-top/u-back-top.vue
  98. 0 0
      uni_modules/uview-ui/components/u-badge/props.js
  99. 0 0
      uni_modules/uview-ui/components/u-badge/u-badge.vue
  100. 0 0
      uview-ui/components/u-button/nvue.scss

+ 1 - 1
App.vue

@@ -15,5 +15,5 @@
 <style lang="scss">
 	/*每个页面公共css */
 	/*每个页面公共css */
-	@import "@/uview-ui/index.scss";
+	@import "@/uni_modules/uview-ui/index.scss";
 </style>

+ 3 - 0
common/apiurl.js

@@ -0,0 +1,3 @@
+export const apiurl = {
+	loginUrl: '/login/login'
+}

+ 3 - 0
common/config.js

@@ -0,0 +1,3 @@
+export const config = {
+	baseUrl: 'http://localhost:8080'
+}

+ 15 - 0
common/http.api.js

@@ -0,0 +1,15 @@
+import {
+	apiurl
+} from "./apiurl.js"
+
+// vm指向this
+const install = (Vue, vm) => {
+	let loginApi = (params = {}) => vm.$u.http.post(apiurl.loginUrl, params);
+	// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
+	vm.$u.api = {
+		loginApi
+	};
+}
+export default {
+	install
+}

+ 58 - 0
common/http.interceptor.js

@@ -0,0 +1,58 @@
+import { config } from '@/common/config.js';
+import store from '@/store/index.js'
+
+// vm指向this
+const install = (Vue, vm) => {
+  uni.$u.http.setConfig({
+    baseURL: config.baseUrl,
+		dataType: 'json',// 设置为json,返回后会对数据进行一次JSON.parse()
+		showLoading: true, // 是否显示请求中的loading
+		loadingText: '请求中...', // 请求loading中的文字提示
+		loadingTime: 500, // 在此时间内,请求还没回来的话,就显示加载中动画,单位ms
+		originalData: false, // 是否在拦截器中返回服务端的原始数据
+		loadingMask: true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透
+		// 配置请求头信息
+		header: {
+			'content-type': 'application/json;charset=UTF-8'
+		}
+  });
+  // 请求拦截,配置Token等参数
+  uni.$u.http.interceptor.request = (config) => {
+    if (vm.vuex_token) {
+      config.header.Authorization = `Bearer ${vm.vuex_token}`;
+    }
+    // url加时间戳
+    config.url = config.url + '?t=' + Date.now()
+    let noTokenList = ['/wechat/h5/user', '/client/auth/verifyCode'];
+    if (noTokenList.includes(config.url)) config.header.noToken = true;
+    return config;
+  }
+  // 响应拦截,判断状态码是否通过
+  uni.$u.http.interceptor.response = (res) => {
+    if (res.code == 200) {
+      return res;
+    } else if (res.msg == "令牌不能为空" || res.code == 401) {
+      const backUrl = location.href
+      const loginUrl = 'phoneLogin'
+      if (backUrl.indexOf(loginUrl) > 0) {} else {
+        localStorage.setItem('backUrl', location.href)
+        store.state.vuex_hasLogin = false;
+        alert('还未登录,即将跳转登录');
+        uni.navigateTo({
+          url: "/pages/phoneLogin/phoneLogin"
+        });
+        return;
+      }
+    } else {
+			uni.showToast({
+				title: res.msg,
+				icon: 'none',
+				duration: 2000
+			})
+		}
+  }
+}
+
+export default {
+  install
+}

+ 0 - 87
components/t-table/t-table.vue

@@ -1,87 +0,0 @@
-<template>
-	<view class="t-table" :style="{ 'border-width': border + 'px', 'border-color': borderColor }">
-		<slot />
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			border: {
-				type: String,
-				default: '1'
-			},
-			borderColor: {
-				type: String,
-				default: '#d0dee5'
-			},
-			isCheck: {
-				type: Boolean,
-				default: false
-			}
-		},
-		provide() {
-			return {
-				table: this
-			};
-		},
-		data() {
-			return {};
-		},
-		created() {
-			this.childrens = [];
-			this.index = 0;
-		},
-		methods: {
-			fire(e, index, len) {
-				let childrens = this.childrens;
-				console.log(childrens);
-				// 全选
-				if (index === 0) {
-					childrens.map((vm, index) => {
-						vm.checkboxData.checked = e;
-						return vm;
-					});
-				} else {
-					let isAll = childrens.find((n, ids) => ids !== 0 && !n.checkboxData.checked);
-					childrens[0].checkboxData.checked = isAll ? false : true;
-				}
-
-				let fireArr = [];
-				for (let i = 0; i < childrens.length; i++) {
-					if (childrens[i].checkboxData.checked && i !== 0) {
-						fireArr.push(childrens[i].checkboxData.value - 1);
-					}
-				}
-				this.$emit('change', {
-					detail: fireArr
-				});
-			}
-		}
-	};
-</script>
-
-<style scoped>
-	.t-table {
-		width: 100%;
-		border: 1px #d0dee5 solid;
-		border-left: none;
-		border-top: none;
-		box-sizing: border-box;
-		overflow-x: scroll;
-	}
-
-	.t-table>>>t-tr {
-		display: flex;
-	}
-
-	.t-table>>>t-tr:nth-child(2n) {
-		background: #f5f5f5;
-	}
-
-	/* #ifdef H5 */
-	.t-table>>>.t-tr:nth-child(2n) {
-		background: #f5f5f5;
-	}
-	/* #endif */
-</style>

+ 0 - 69
components/t-table/t-td.vue

@@ -1,69 +0,0 @@
-<template>
-	<view class="t-td" :style="{ 'border-width': thBorder + 'px','border-color':borderColor ,'font-size':fontSize+'px' ,'color':color,'justify-content':tdAlignCpd}">
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			align: String
-		},
-		data() {
-			return {
-				thBorder: '1',
-				borderColor: '#d0dee5',
-				fontSize: '14',
-				color: '#555c60',
-				tdAlign: 'center'
-			};
-		},
-		inject: ['table', 'tr'],
-
-		created() {
-			this.thBorder = this.table.border;
-			this.borderColor = this.table.borderColor;
-			this.fontSize = this.tr.fontSize;
-			this.color = this.tr.color;
-			if (this.align) {
-				this.tdAlign = this.align;
-			} else {
-				this.tdAlign = this.tr.align
-			}
-		},
-		computed: {
-			tdAlignCpd() {
-				let nameAlign = '';
-				switch (this.tdAlign) {
-					case 'left':
-						nameAlign = 'flex-start'
-						break;
-					case 'center':
-						nameAlign = 'center'
-						break;
-					case 'right':
-						nameAlign = 'flex-end'
-						break;
-					default:
-						nameAlign = 'center'
-						break;
-				}
-				return nameAlign
-			}
-		}
-	};
-</script>
-
-<style>
-	.t-td {
-		display: flex;
-		align-items: center;
-		border-top: 1px #d0dee5 solid;
-		border-left: 1px #d0dee5 solid;
-		text-align: center;
-		color: #555c60;
-		font-size: 28upx;
-		padding: 14rpx 0;
-		font-size: 26rpx;
-	}
-</style>

+ 0 - 71
components/t-table/t-th.vue

@@ -1,71 +0,0 @@
-<template>
-	<view class="t-th" :style="{ 'border-width': thBorder + 'px' ,'border-color':borderColor,'font-size':fontSize+'px' ,'color':color,'justify-content':thAlignCpd}">
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			align: String,
-		},
-		data() {
-			return {
-				thBorder: '1',
-				borderColor: '#d0dee5',
-				fontSize: '15',
-				color: '#3b4246',
-				thAlign: 'center'
-			};
-		},
-		inject: ['table', 'tr'],
-
-		created() {
-			this.thBorder = this.table.border;
-			this.borderColor = this.table.borderColor;
-			this.fontSize = this.tr.fontSize;
-			this.color = this.tr.color;
-			if (this.align) {
-				this.thAlign = this.align;
-			} else {
-				this.thAlign = this.tr.align
-			}
-		},
-
-		computed: {
-			thAlignCpd() {
-				let nameAlign = '';
-				switch (this.thAlign) {
-					case 'left':
-						nameAlign = 'flex-start'
-						break;
-					case 'center':
-						nameAlign = 'center'
-						break;
-					case 'right':
-						nameAlign = 'flex-end'
-						break;
-					default:
-						nameAlign = 'center'
-						break;
-				}
-				return nameAlign
-			}
-		}
-	};
-</script>
-
-<style>
-	.t-th {
-		display: flex;
-		align-items: center;
-		font-size: 30upx;
-		font-weight: bold;
-		text-align: center;
-		color: #101010;
-		border-left: 1px #d0dee5 solid;
-		border-top: 1px #d0dee5 solid;
-		padding: 14rpx 0;
-		font-size: 26rpx;
-	}
-</style>

+ 0 - 81
components/t-table/t-tr.vue

@@ -1,81 +0,0 @@
-<template>
-	<view class="t-tr">
-		<view v-if="isCheck" class="t-check-box" :style="{ 'border-width': thBorder + 'px' ,'border-color':borderColor}">
-			<checkbox-group @change="checkboxChange">
-				<checkbox :value="checkboxData.value + ''" :checked="checkboxData.checked" />
-			</checkbox-group>
-		</view>
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			fontSize: String,
-			color: String,
-			align: String
-		},
-		inject: ['table'],
-		provide() {
-			return {
-				tr: this
-			};
-		},
-		data() {
-			return {
-				isCheck: false,
-				checkboxData: {
-					value: 0,
-					checked: false
-				},
-				checked: false,
-				thBorder: '1',
-				borderColor: '#d0dee5'
-			};
-		},
-		created() {
-			this.thBorder = this.table.border;
-			this.borderColor = this.table.borderColor;
-			this.table.childrens.push(this);
-			this.checkboxData.value = this.table.index++;
-			this.isCheck = this.table.isCheck;
-
-		},
-		methods: {
-			checkboxChange(e) {
-				this.checkboxData.checked = !this.checkboxData.checked;
-				this.table.childrens[this.checkboxData.value] = this;
-				this.table.fire(e.detail.value[0] ? true : false, this.checkboxData.value, this.table.index);
-			}
-		}
-	};
-</script>
-
-<style>
-	.t-tr {
-		width: 100%;
-		display: flex;
-	}
-
-	.t-tr t-th,
-	.t-tr t-td {
-		display: flex;
-		flex: 1;
-	}
-
-	.t-tr .t-check-box {
-		flex-shrink: 0;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		width: 80upx;
-		color: #3b4246;
-		border-left: 1px #d0dee5 solid;
-		border-top: 1px #d0dee5 solid;
-	}
-
-	.t-tr .t-check-box checkbox {
-		transform: scale(0.8);
-	}
-</style>

+ 32 - 9
main.js

@@ -1,22 +1,45 @@
 import App from './App'
-import uView from 'uview-ui'
-Vue.use(uView)
+
 // #ifndef VUE3
 import Vue from 'vue'
 Vue.config.productionTip = false
+
+import uView from '@/uni_modules/uview-ui'
+Vue.use(uView)
+
+import config from 'common/config'
+Vue.prototype.config = config;
+
+import store from '@/store';
+
+// 引入uView提供的对vuex的简写法文件
+let vuexStore = require('@/store/$u.mixin.js');
+Vue.mixin(vuexStore);
+
 App.mpType = 'app'
 const app = new Vue({
-    ...App
+	store,
+	...App
 })
+
+// 引入请求封装
+require('./utils/request/index')(app)
+
+// http接口API抽离,免于写url或者一些固定的参数
+import httpApi from '@/common/http.api.js';
+Vue.use(httpApi, app);
+
 app.$mount()
 // #endif
 
 // #ifdef VUE3
-import { createSSRApp } from 'vue'
+import {
+	createSSRApp
+} from 'vue'
 export function createApp() {
-  const app = createSSRApp(App)
-  return {
-    app
-  }
+	const app = createSSRApp(App)
+	return {
+		app
+	}
 }
-// #endif
+// #endif

+ 6 - 4
manifest.json

@@ -1,7 +1,7 @@
 {
-    "name" : "停车运营端",
-    "appid" : "__UNI__C8DDE6B",
-    "description" : "智慧停车运营端",
+    "name" : "智慧停车运营端",
+    "appid" : "__UNI__EC952D7",
+    "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : "100",
     "transformPx" : false,
@@ -43,7 +43,9 @@
             /* ios打包配置 */
             "ios" : {},
             /* SDK配置 */
-            "sdkConfigs" : {}
+            "sdkConfigs" : {
+                "ad" : {}
+            }
         }
     },
     /* 快应用特有相关 */

+ 39 - 20
pages.json

@@ -1,72 +1,91 @@
 {
-	"easycom": {
-		"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
-	},
-	"pages": [ // pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
 		{
 			"path": "pages/index/index",
 			"style": {
-				"navigationBarTitleText": "停车运营端",
+				"navigationBarTitleText": "首页",
 				"navigationStyle": "custom"
 			}
 		}, {
 			"path": "pages/login/login",
 			"style": {
 				"navigationBarTitleText": "登录",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
+		}, {
+			"path": "pages/dataOverview/todayOverview/todayOverview",
+			"style": {
+				"navigationBarTitleText": "今日概况",
 				"enablePullDownRefresh": false
 			}
 
 		}, {
-			"path": "pages/orderRecords/orderRecords",
+			"path": "pages/dataOverview/operationalAnalysis/operationalAnalysis",
 			"style": {
-				"navigationBarTitleText": "订单记录",
+				"navigationBarTitleText": "运营分析",
 				"enablePullDownRefresh": false
 			}
 
 		}, {
-			"path": "pages/operationOverview/operationOverview",
+			"path": "pages/dataOverview/statisticalReport/statisticalReport",
 			"style": {
-				"navigationBarTitleText": "运营概况",
+				"navigationBarTitleText": "统计报表",
 				"enablePullDownRefresh": false
 			}
 
 		}, {
-			"path": "pages/patrolManagement/patrolManagement",
+			"path": "pages/orderManagement/parkingRecord/parkingRecord",
 			"style": {
-				"navigationBarTitleText": "巡检管理",
+				"navigationBarTitleText": "停车记录",
 				"enablePullDownRefresh": false
 			}
 
 		}, {
-			"path": "pages/operationOverview/operationOverviewModel/operationOverviewModel",
+			"path": "pages/orderManagement/arrearageRecord/arrearageRecord",
 			"style": {
-				"navigationBarTitleText": "运营概况",
+				"navigationBarTitleText": "欠费记录",
 				"enablePullDownRefresh": false
 			}
 
 		}, {
-			"path": "pages/operationOverview/statisticalReport/statisticalReport",
+			"path": "pages/orderManagement/collectionRecord/collectionRecord",
 			"style": {
-				"navigationBarTitleText": "统计报表",
+				"navigationBarTitleText": "收款记录",
 				"enablePullDownRefresh": false
 			}
 
 		}, {
-			"path": "pages/operationOverview/operationalAnalysis/operationalAnalysis",
+			"path": "pages/orderManagement/feeEvasionRecord/feeEvasionRecord",
 			"style": {
-				"navigationBarTitleText": "运营分析",
+				"navigationBarTitleText": "逃费记录",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/orderManagement/voidRecord/voidRecord",
+			"style": {
+				"navigationBarTitleText": "作废记录",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/orderManagement/recoveryRecord/recoveryRecord",
+			"style": {
+				"navigationBarTitleText": "追缴记录",
 				"enablePullDownRefresh": false
 			}
 
 		}, {
-			"path": "pages/patrolManagement/patrolRecords/patrolRecords",
+			"path": "pages/patrolManagement/patrolRecord/patrolRecord",
 			"style": {
 				"navigationBarTitleText": "巡检记录",
 				"enablePullDownRefresh": false
 			}
 
 		}, {
-			"path": "pages/patrolManagement/abnormalRecords/abnormalRecords",
+			"path": "pages/patrolManagement/deviceAbnormalRecords/deviceAbnormalRecords",
 			"style": {
 				"navigationBarTitleText": "设备异常记录",
 				"enablePullDownRefresh": false
@@ -76,7 +95,7 @@
 	],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "uni-app",
+		"navigationBarTitleText": "智慧停车运营端",
 		"navigationBarBackgroundColor": "#F8F8F8",
 		"backgroundColor": "#F8F8F8"
 	}

+ 23 - 0
pages/dataOverview/operationalAnalysis/operationalAnalysis.vue

@@ -0,0 +1,23 @@
+<!-- 运营分析 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 23 - 0
pages/dataOverview/statisticalReport/statisticalReport.vue

@@ -0,0 +1,23 @@
+<!-- 统计报表 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 23 - 0
pages/dataOverview/todayOverview/todayOverview.vue

@@ -0,0 +1,23 @@
+<!-- 今日概况 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 94 - 0
pages/index/index.scss

@@ -0,0 +1,94 @@
+.index {
+	font-family: PingFang SC;
+	&-header {
+		height: 219px;
+		padding: 26px 15px;
+		background: linear-gradient(179deg, #2D82FB 0%, #1635E1 100%);
+		&-box {
+			height: 100%;
+			background-image: url(../../static/images/index-header-bg.png);
+			background-size: 178px 182px;
+			background-position: bottom right;
+			background-repeat: no-repeat;
+			&-1 {
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				font-family: PingFangSC-Heavy, PingFang SC;
+				font-size: 20px;
+				color: #fff;
+				font-weight: bold;
+			}
+			&-2 {
+				margin-top: 24px;
+				line-height: 42px;
+				font-family: PingFangSC-Heavy, PingFang SC;
+				font-size: 30px;
+				color: #fff;
+				font-weight: bold;
+			}
+		}
+	}
+	
+	&-main {
+		padding: 24px 15px;
+		background-color: #EFEFEF;
+		border-radius: 15px;
+		margin-top: -20px;
+		&-menu {
+			&-title {
+				font-size: 18px;
+				font-family: PingFangSC-Regular, PingFang SC;
+			}
+			&-1 {
+				display: flex;
+				justify-content: space-between;
+				.menu-item {
+					width: 30%;
+					height: 96px;
+					text-align: center;
+					background-color: #fff;
+					border-radius: 8px;
+					&-icon {
+						width: 48px;
+						margin: 13px auto 5px;
+					}
+					&-name {
+						color: #787878;
+						font-size: 13px;
+						font-family: PingFangSC-Regular, PingFang SC;
+					}
+				}
+			}
+			
+			&-2 {
+				padding: 16px 15px 0;
+				background-color: #fff;
+				border-radius: 8px;
+				margin-top: 15px;
+				.menu {
+					display: flex;
+					flex-wrap: wrap;
+					padding: 15px 0;
+					&-item {
+						width: 23%;
+						margin-bottom: 24px;
+						text-align: center;
+						margin-right: 2%;
+						&-icon {
+							margin: 0 auto 9px;
+						}
+						&-name {
+							font-size: 12px;
+							color: #787878;
+							font-family: PingFangSC-Regular, PingFang SC;
+						}
+					}
+					&-item:nth-child(4n) {
+						margin-right: 0;
+					}
+				}
+			}
+		}
+	}
+}

+ 162 - 95
pages/index/index.vue

@@ -1,26 +1,67 @@
 <template>
-	<view class="content">
-		<view class="content-header">
-			<view>智慧停车运营系统</view>
-		</view>
-		<view class="content-main">
-			<view class="content-main-item" @click="jumpPage('pages/orderRecords/orderRecords')">
-				<view class="t1">
-					<u-icon name="./../../static/images/order-icon.png" color="#fff" size="65"></u-icon>
+	<view class="index">
+		<view class="index-header">
+			<view class="index-header-box">
+				<view class="index-header-box-1">
+					<view class="left">
+						<text>欢迎你!{{ userInfo.nickname }}</text>
+					</view>
+					<view class="right">
+						<u-icon size="21" name="../../static/icons/logout-icon.svg" @click="logout"></u-icon>
+					</view>
 				</view>
-				<view class="name">订单记录</view>
-			</view>
-			<view class="content-main-item" @click="jumpPage('pages/operationOverview/operationOverview')">
-				<view class="t2">
-					<u-icon name="./../../static/images/running-icon.png" color="#fff" size="65"></u-icon>
+				<view class="index-header-box-2">
+					<text>普定智慧停车<br />运营中心</text>
 				</view>
-				<view class="name">运营概况</view>
 			</view>
-			<view class="content-main-item" @click="jumpPage('pages/patrolManagement/patrolManagement')">
-				<view class="t3">
-					<u-icon name="./../../static/images/mana-icon.png" color="#fff" size="65"></u-icon>
+		</view>
+		<view class="index-main">
+			<view class="index-main-menu">
+				<!-- 数据概览 -->
+				<view class="index-main-menu-1">
+					<view class="menu-item" v-for="(item, index) in analysisMenuList" :key="index" @click="jumpPage(item.url)">
+						<view class="menu-item-icon">
+							<u-icon size="48" :name="item.icon"></u-icon>
+						</view>
+						<view class="menu-item-name">
+							<text>{{ item.name }}</text>
+						</view>
+					</view>
+				</view>
+				<!-- 订单管理 -->
+				<view class="index-main-menu-2">
+					<view class="index-main-menu-title">
+						<text>订单管理</text>
+					</view>
+					<view class="menu">
+						<view class="menu-item" v-for="(item, index) in orderMenuList" :key="index" @click="jumpPage(item.url)">
+							<view class="menu-item-icon" :style="{ width: item.width || '30px' }">
+								<u--image :src="item.icon" :width="item.width || '30px'"
+									:height="item.height || '30px'"></u--image>
+							</view>
+							<view class="menu-item-name">
+								<text>{{ item.name }}</text>
+							</view>
+						</view>
+					</view>
+				</view>
+				<!-- 巡检管理 -->
+				<view class="index-main-menu-2">
+					<view class="index-main-menu-title">
+						<text>巡检管理</text>
+					</view>
+					<view class="menu">
+						<view class="menu-item" v-for="(item, index) in patrolMenuList" :key="index" @click="jumpPage(item.url)">
+							<view class="menu-item-icon" :style="{ width: item.width || '30px' }">
+								<u--image :src="item.icon" :width="item.width || '30px'"
+									:height="item.height || '30px'"></u--image>
+							</view>
+							<view class="menu-item-name">
+								<text>{{ item.name }}</text>
+							</view>
+						</view>
+					</view>
 				</view>
-				<view class="name">巡检管理</view>
 			</view>
 		</view>
 	</view>
@@ -29,93 +70,119 @@
 <script>
 	export default {
 		data() {
-			return {}
-		},
-		onShow() {
-			uni.getStorage({
-				key: 'Token',
-				success: function(res) {
-					console.log(res.data);
-				},
-				error: function(err) {
-					console.log(err)
+			return {
+				userInfo: {
+					nickname: 'XXX'
 				},
-				complete: (e) => {
-					console.log(e)
-					if (e.data) {
-						
-					} else {
-						uni.$u.route({
-							url: 'pages/login/login'
-						})
+				analysisMenuList: [{
+						icon: require('@/static/icons/today-overview-icon.svg'),
+						name: '今日概况',
+						url: 'pages/dataOverview/todayOverview/todayOverview'
+					},
+					{
+						icon: require('@/static/icons/operational-analysis-icon.svg'),
+						name: '运营分析',
+						url: 'pages/dataOverview/operationalAnalysis/operationalAnalysis'
+					},
+					{
+						icon: require('@/static/icons/statistical-report-icon.svg'),
+						name: '统计报表',
+						url: 'pages/dataOverview/statisticalReport/statisticalReport'
 					}
-				}
-			});
+				],
+				// 订单管理
+				orderMenuList: [{
+						icon: require('@/static/icons/parking-record-icon.svg'),
+						name: '停车记录',
+						url: 'pages/orderManagement/parkingRecord/parkingRecord',
+						width: '28px'
+					},
+					{
+						icon: require('@/static/icons/arrearage-record-icon.svg'),
+						name: '欠费记录',
+						url: 'pages/orderManagement/arrearageRecord/arrearageRecord'
+					},
+					{
+						icon: require('@/static/icons/collection-record-icon.svg'),
+						name: '收款记录',
+						url: 'pages/orderManagement/collectionRecord/collectionRecord'
+					},
+					{
+						icon: require('@/static/icons/fee-evasion-record-icon.svg'),
+						name: '逃费记录',
+						url: 'pages/orderManagement/feeEvasionRecord/feeEvasionRecord',
+						width: '33px',
+						height: '26px'
+					},
+					{
+						icon: require('@/static/icons/void-record-icon.svg'),
+						name: '作废记录',
+						url: 'pages/orderManagement/voidRecord/voidRecord',
+						height: '31px'
+					},
+					{
+						icon: require('@/static/icons/recovery-record-icon.svg'),
+						name: '追缴记录',
+						url: 'pages/orderManagement/recoveryRecord/recoveryRecord',
+						height: '32px'
+					}
+				],
+				// 巡检管理
+				patrolMenuList: [{
+						icon: require('@/static/icons/patrol-manage-icon.svg'),
+						name: '巡检记录',
+						url: 'pages/patrolManagement/patrolRecord/patrolRecord',
+						width: '29px',
+						height: '31px'
+					},
+					{
+						icon: require('@/static/icons/device-error-records-icon.svg'),
+						name: '设备异常记录',
+						url: 'pages/patrolManagement/deviceAbnormalRecords/deviceAbnormalRecords',
+						width: '33px',
+						height: '29px'
+					}
+				]
+			}
+		},
+		onLoad() {
+
 		},
 		methods: {
-			jumpPage(url) {
+			/**
+			 * 登出操作
+			 */
+			logout() {
+				uni.showModal({
+					title: '提示',
+					content: '你确认退出登录?',
+					success: (res) => {
+						if (res.confirm) {
+							this.jumpPage('pages/login/login')
+						}
+					}
+				});
+			},
+			/**
+			 * 跳转页面
+			 * @param { String } url
+			 * @param { Object } params
+			 */
+			jumpPage(url, params) {
 				uni.$u.route({
-					url
+					url,
+					params
 				})
 			}
 		}
 	}
 </script>
 
-<style lang="scss" scoped>
-	.content {
-		&-header {
-			height: 400rpx;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			color: #fff;
-			font-size: 64rpx;
-			background: url('../../static/images/parking-info-bg.png') no-repeat center center;
-			background-repeat: no-repeat;
-			background-position: center center;
-			background-size: cover;
-		}
-
-		&-main {
-			padding: 0 54rpx;
-			margin-top: -60rpx;
-
-			&-item {
-				padding: 50rpx 40rpx;
-				border-radius: 20rpx;
-				box-shadow: 0px 1px 30rpx 0px rgba(0, 0, 0, 0.1);
-				background-color: #fff;
-				margin-bottom: 30rpx;
-				display: flex;
-				align-items: center;
-
-				view {
-					&:first-child {
-						width: 130rpx;
-						height: 130rpx;
-						border-radius: 50%;
-						text-align: center;
-						display: flex;
-						justify-content: center;
-						align-items: center;
-					}
-				}
-
-				.name {
-					margin-left: 30rpx;
-				}
-
-				// .t1 {
-				// 	background-color: #436EFD;
-				// }
-				// .t2 {
-				// 	background-color: #62D4A6;
-				// }
-				// .t3 {
-				// 	background-color: #9376F5;
-				// }
-			}
-		}
+<style lang="scss">
+	page {
+		background-color: #EFEFEF;
 	}
 </style>
+<style lang="scss" scoped>
+	@import './index.scss';
+</style>

+ 18 - 20
pages/login/login.scss

@@ -1,31 +1,29 @@
 .login {
-	&-title {
-		margin-bottom: 226rpx;
-		padding: 246rpx 150rpx 0;
-		font-family: 'PingFangSC-bold';
-		color: #50A0FA;
-		font-size: 72rpx;
-		text-align: center;
-		font-weight: bold;
-	}
-	&-form {
-		padding: 0 56rpx;
+	&-box {
 		&-title {
-			font-size: 40rpx;
+			padding: 123px 0 113px;
+			color: #50A0FA;
+			font-size: 36px;
+			text-align: center;
 			font-family: PingFangSC-bold;
-			font-weight: bold;
-			margin-bottom: 50rpx;
 		}
-		&-box {
-			&-button {
-				margin-top: 80rpx;
+		
+		&-form {
+			padding: 0 28px;
+			&-title {
+				font-size: 20px;
+				color: #101010;
+				font-family: PingFangSC-bold;
+				margin-bottom: 25px;
+			}
+			&-btn {
+				margin-top: 43px;
+				margin-bottom: 16px;
 			}
 			&-forget {
-				width: 100%;
 				text-align: right;
-				font-size: 28rpx;
 				color: #999;
-				font-family: PingFangSC-regular;
+				font-size: 14px;
 			}
 		}
 	}

+ 52 - 52
pages/login/login.vue

@@ -1,31 +1,31 @@
-<!-- 登录 -->
 <template>
 	<view class="login">
-		<view class="login-title">智慧停车<br />运营数据系统</view>
-		<view class="login-form">
-			<view class="login-form-title">账号密码登录</view>
-			<view class="login-form-box">
-				<u--form :model="loginForm" :rules="loginRules" ref="loginForm">
-					<u-form-item prop="phoneNumber">
-						<u--input v-model="loginForm.phoneNumber" border="surround" placeholder="请输入手机号码" shape="square"
-							fontSize="30rpx" maxlength="11" type="number" color="#B7B7B7"></u--input>
-					</u-form-item>
-					<u-form-item prop="password">
-						<u--input v-model="loginForm.password" border="surround" :password="true" placeholder="请输入密码"
-							shape="square" fontSize="30rpx" color="#B7B7B7">
-						</u--input>
-					</u-form-item>
-					<u-form-item>
-						<u-button class="login-form-box-button" type="primary" text="登录" @click="handleLogin">
-						</u-button>
-					</u-form-item>
-					<u-form-item>
-						<view class="login-form-box-forget">忘记密码?</view>
-					</u-form-item>
-				</u--form>
+		<view class="login-box">
+			<view class="login-box-title">
+				<text>智慧停车<br />运营数据系统</text>
+			</view>
+			<view class="login-box-form">
+				<view class="login-box-form-title">
+					<text>账号密码登录</text>
+				</view>
+				<view class="login-box-form-box">
+					<u--form :model="form" :rules="rules" ref="uForm">
+						<u-form-item label="" prop="phoneNumber">
+							<u-input v-model="form.phoneNumber" placeholder="请输入手机号" :maxlength="11" type="number"/>
+						</u-form-item>
+						<u-form-item label="" prop="password">
+							<u-input v-model="form.password" placeholder="请输入密码" :password="true"/>
+						</u-form-item>
+					</u--form>
+				</view>
+				<view class="login-box-form-btn">
+					<u-button type="primary" text="登录" :loading="loading" @click="submitLogin"></u-button>
+				</view>
+				<!-- <view class="login-box-form-forget">
+					<text>忘记密码?</text>
+				</view> -->
 			</view>
 		</view>
-		<u-notify ref="uNotify" message="Hi uView"></u-notify>
 	</view>
 </template>
 
@@ -33,54 +33,54 @@
 	export default {
 		data() {
 			return {
-				loginForm: {
-					phoneNumber: '18084288856',
-					password: '123456'
+				form: {
+					phoneNumber: '',
+					password: ''
 				},
-				loginRules: {
-					phoneNumber: [{
+				loading: false,
+				rules: {
+					phoneNumber: [
+						{
 							required: true,
-							message: '请输入手机号码',
-							trigger: ['blur']
+							message: '请输入手机号',
+							trigger: ['change', 'blur']
 						},
 						{
 							validator: (rule, value, callback) => {
 								return uni.$u.test.mobile(value);
 							},
-							message: '手机号不正确',
-							trigger: ['blur']
+							message: '手机号不正确',
+							trigger: ['change', 'blur'],
 						}
 					],
 					password: {
-						type: 'string',
 						required: true,
 						message: '请输入密码',
-						trigger: ['blur']
+						trigger: ['change', 'blur']
 					}
 				}
 			}
 		},
 		methods: {
-			handleLogin() {
-				this.$refs.loginForm.validate().then(res => {
-					uni.setStorage({
-						key: 'Token',
-						data: '456123',
-						success: function() {
-							console.log('success');
-						}
-					});
+			/**
+			 * 登录提交
+			 */
+			submitLogin() {
+				this.$refs.uForm.validate().then(res => {
+					this.loading = true
+					// uni.$u.api.loginApi(this.form).then(res => {
+					// 	console.log(res)
+					// 	uni.$u.route({
+					// 		url: 'pages/index/index'
+					// 	})
+					// }).catch(err => {
+					// 	this.loading = false
+					// })
 					uni.$u.route({
 						url: 'pages/index/index'
 					})
-				}).catch(error => {
-					this.$refs.uNotify.show({
-						top: -1,
-						type: 'warning',
-						message: '请输入手机号/密码',
-						duration: 1000 * 3,
-						fontSize: 20
-					})
+				}).catch(errors => {
+					uni.$u.toast(errors[0].message || '必填项不能为空!')
 				})
 			}
 		}

+ 0 - 51
pages/operationOverview/operationOverview.vue

@@ -1,51 +0,0 @@
-<template>
-	<view class="records">
-		<view class="records-list">
-			<view class="records-list-item" v-for="(item, index) in list" :key="index" @click="jumpPage(item.url)">{{ item.name }}</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				list: [
-					{ name: '运营概况', url: 'pages/operationOverview/operationOverviewModel/operationOverviewModel' },
-					{ name: '统计报表', url: 'pages/operationOverview/statisticalReport/statisticalReport' },
-					{ name: '运营分析', url: 'pages/operationOverview/operationalAnalysis/operationalAnalysis' }
-				]
-			}
-		},
-		methods: {
-			jumpPage(url) {
-				uni.$u.route({
-					url
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-.records {
-	padding: 40rpx 20rpx;
-	&-list {
-		display: flex;
-		flex-wrap: wrap;
-		justify-content: space-between;
-		&-item {
-			width: calc(50% - 18rpx);
-			height: 200rpx;
-			line-height: 200rpx;
-			text-align: center;
-			background-color: #2871FF;
-			border-radius: 10rpx;
-			color: #fff;
-			font-size: 40rpx;
-			font-family: PingFangSC-regular;
-			margin-bottom: 36rpx;
-		}
-	}
-}
-</style>

+ 0 - 245
pages/operationOverview/operationOverviewModel/operationOverviewModel.vue

@@ -1,245 +0,0 @@
-<template>
-	<view class="model">
-		<view class="model-content">
-			<view class="model-content-1">
-				<view class="title">今日营收</view>
-				<view class="total">
-					<view class="total-title">936.67元</view>
-					<view>
-						<u-icon label="" size="53" name="./../../../static/images/1.png"></u-icon>
-					</view>
-				</view>
-			</view>
-			<view class="model-content-2">
-				<view class="model-content-2-item">
-					<view>393 <text>元</text> </view>
-					<view>今日欠费</view>
-				</view>
-				<view class="model-content-2-item">
-					<view>1485 <text>次</text> </view>
-					<view>今日停车</view>
-				</view>
-				<view class="model-content-2-item">
-					<view>85 <text>次</text> </view>
-					<view>今日扫码</view>
-				</view>
-			</view>
-			<view class="model-content-1">
-				<view class="title">路段总数</view>
-				<view class="total">
-					<view class="total-title red">25个</view>
-					<view>
-						<u-icon label="" size="53" name="./../../../static/images/2.png"></u-icon>
-					</view>
-				</view>
-			</view>
-			<view class="model-content-1">
-				<view class="title">泊位总数</view>
-				<view class="total">
-					<view class="total-title orange">1247个</view>
-					<view>
-						<u-icon label="" size="53" name="./../../../static/images/3.png"></u-icon>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="model-line">
-			<view class="report-header">
-				<view class="report-header-left">
-					营收趋势分析
-				</view>
-				<view class="report-header-right">
-					<view class="report-header-right-item" :class="{'current': current === 1}" @click="current = 1">日
-					</view>
-					<view class="report-header-right-item" :class="{'current': current === 2}" @click="current = 2">月
-					</view>
-					<view class="report-header-right-item" :class="{'current': current === 3}" @click="current = 3">年
-					</view>
-				</view>
-			</view>
-			<view class="charts-box">
-				<qiun-data-charts type="line" :chartData="chartData" :opts="opts" />
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				current: 3,
-				chartData: {
-					categories: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
-					series: [{
-						name: '收益',
-						data: [0,
-							0,
-							0,
-							0,
-							0,
-							0,
-							0,
-							0,
-							227834.88,
-							279992.99,
-							284646.33,
-							182900.91
-						]
-					}],
-				},
-				opts: {
-					xAxis: {},
-					yAxis: {
-						showTitle: true,
-						splitNumber: 6,
-						data: [{
-							title: '收益(元)',
-							max: 300000,
-							min: 0
-						}]
-					},
-					legend: {
-						show: false
-					},
-					padding: [10, 0, 10, 0],
-					dataLabel: false
-				}
-			}
-		},
-		methods: {
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.model {
-		padding: 34rpx;
-		font-family: SourceHanSansSC-regular;
-
-		&-content {
-			background-color: #EAE7E7;
-			border-radius: 20rpx;
-			padding: 22rpx 14rpx;
-
-			&-1 {
-				background-color: #fff;
-				border-radius: 16rpx;
-				padding: 46rpx 30rpx;
-				margin-bottom: 24rpx;
-
-				.title {
-					color: #AEAEB2;
-					font-size: 36rpx;
-				}
-
-				.total {
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-
-					&-title {
-						color: #5756D7;
-						font-size: 56rpx;
-						font-family: SourceHanSansSC-bold;
-					}
-
-					.red {
-						color: #FF3A30;
-					}
-
-					.orange {
-						color: #FF9502;
-					}
-				}
-			}
-
-			&-2 {
-				background-color: #fff;
-				border-radius: 16rpx;
-				padding: 52rpx 18rpx;
-				margin-bottom: 24rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-
-				&-item {
-					border-right: solid 1px #bbb;
-					width: 33%;
-					text-align: center;
-
-					&:last-child {
-						border-right: none;
-					}
-
-					view {
-						font-size: 34rpx;
-						color: #AEAEB2;
-
-						&:first-child {
-							font-size: 46rpx;
-							color: #000;
-							font-family: SourceHanSansSC-bold;
-							font-weight: 600;
-							margin-bottom: 20rpx;
-
-							text {
-								font-size: 34rpx;
-							}
-						}
-					}
-				}
-			}
-		}
-
-		&-line {
-			margin-top: 50rpx;
-			.report-header {
-				display: flex;
-				align-items: center;
-
-				&-left {
-					border-left: solid 4px #EC0D0D;
-					padding-left: 10rpx;
-					color: #101010;
-					font-size: 30rpx;
-					margin-right: 40rpx;
-				}
-
-				&-right {
-					display: flex;
-
-					&-item {
-						width: 100rpx;
-						height: 60rpx;
-						line-height: 60rpx;
-						text-align: center;
-						border: solid 1px #008CFF;
-						border-right: none;
-
-						&:last-child {
-							border-radius: 0 8rpx 8rpx 0;
-							border-right: solid 1px #008CFF;
-						}
-
-						&:first-child {
-							border-radius: 8rpx 0 0 8rpx;
-						}
-					}
-
-					.current {
-						background-color: #008CFF;
-						color: #fff;
-					}
-				}
-			}
-
-			.charts-box {
-				margin-top: 30rpx;
-				width: 100%;
-				height: 700rpx;
-			}
-		}
-	}
-</style>

+ 0 - 133
pages/operationOverview/operationalAnalysis/operationalAnalysis.vue

@@ -1,133 +0,0 @@
-<template>
-	<view class="report">
-		<view class="report-header">
-			<view class="report-header-left">
-				营收趋势分析
-			</view>
-			<view class="report-header-right">
-				<view class="report-header-right-item" :class="{'current': current === 1}" @click="current = 1">日</view>
-				<view class="report-header-right-item" :class="{'current': current === 2}" @click="current = 2">月</view>
-				<view class="report-header-right-item" :class="{'current': current === 3}" @click="current = 3">年</view>
-			</view>
-		</view>
-		<view class="charts-box">
-			<qiun-data-charts type="column" :chartData="chartData" :opts="opts" />
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				current: 3,
-				chartData: {
-					categories: ["党固路",
-						"富强路",
-						"玉兔山路",
-						"顺时路",
-						"本杰路",
-						"可处路",
-						"物资路",
-						"桂花苑路",
-						"丰林路",
-						"教育路"
-					],
-					series: [{
-						data: [100,
-							140,
-							230,
-							100,
-							130,
-							100,
-							100,
-							100,
-							100,
-							100
-						]
-					}],
-				},
-				opts: {
-					xAxis: {
-						rotateLabel: true
-					},
-					yAxis: {
-						showTitle: true,
-						splitNumber: 5,
-						data: [
-							{
-								title: '收益(元)',
-								max: 250
-							}
-						]
-					},
-					legend: {
-						show: false
-					},
-					padding: [10, 0, 10, 0],
-					extra: {
-						column: {
-							width: 20
-						}
-					}
-				}
-			}
-		},
-		methods: {
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.report {
-		padding: 28rpx;
-		font-family: PingFangSC-regular;
-
-		&-header {
-			display: flex;
-			align-items: center;
-
-			&-left {
-				border-left: solid 4px #EC0D0D;
-				padding-left: 10rpx;
-				color: #101010;
-				font-size: 30rpx;
-				margin-right: 40rpx;
-			}
-
-			&-right {
-				display: flex;
-
-				&-item {
-					width: 100rpx;
-					height: 60rpx;
-					line-height: 60rpx;
-					text-align: center;
-					border: solid 1px #008CFF;
-					border-right: none;
-
-					&:last-child {
-						border-radius: 0 8rpx 8rpx 0;
-						border-right: solid 1px #008CFF;
-					}
-
-					&:first-child {
-						border-radius: 8rpx 0 0 8rpx;
-					}
-				}
-
-				.current {
-					background-color: #008CFF;
-					color: #fff;
-				}
-			}
-		}
-
-		.charts-box {
-			margin-top: 30rpx;
-			width: 100%;
-			height: 700rpx;
-		}
-	}
-</style>

+ 0 - 193
pages/operationOverview/statisticalReport/statisticalReport.vue

@@ -1,193 +0,0 @@
-<template>
-	<view class="report">
-		<view class="report-header">
-			<view class="report-header-left">
-				收费员业绩统计
-			</view>
-			<view class="report-header-right">
-				<view class="int">
-					<u--input placeholder="开始日期" border="surround" v-model="form.startDate" :readonly="true" @focus="startDateShow = true">
-					</u--input>
-					<u-calendar :show="startDateShow" @confirm="startDateConfirm" @close="startDateShow = false"></u-calendar>
-				</view>至
-				<view class="int">
-					<u--input placeholder="结束日期" border="surround" v-model="form.endDate" :readonly="true" @focus="endDateShow = true"></u--input>
-					<u-calendar :show="endDateShow" @confirm="endDateConfirm" @close="endDateShow = false"></u-calendar>
-				</view>
-			</view>
-		</view>
-		<view class="report-total">
-			<view>应收金额 <text>813013.00</text>元,实收金额 <text>572793.00</text>元,现金收入
-				<text>318.00</text>元,非现金收<text>572475.00</text>元
-			</view>
-		</view>
-		<view class="report-table">
-			<t-table>
-				<t-tr style="width: 1270rpx; background-color: #e6e6e6;">
-					<t-th v-for="(item, index) in table.header" :key="index" style="width: 140rpx;">{{ item }}</t-th>
-				</t-tr>
-				<t-tr style="width: 1270rpx;background-color: #fff;" v-for="(item, index) in table.list" :key="index"
-					:class="{'last-child': index === table.list.length - 1}">
-					<t-td style="width: 140rpx;">{{ item.workNo }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.name }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.roadName }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.shouldMoney }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.realMoney }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.arrearsMoney }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.h5Money }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.pdaMoney }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.cashMoney }}</t-td>
-				</t-tr>
-			</t-table>
-		</view>
-	</view>
-</template>
-
-<script>
-	import tTable from '@/components/t-table/t-table.vue';
-	import tTh from '@/components/t-table/t-th.vue';
-	import tTr from '@/components/t-table/t-tr.vue';
-	import tTd from '@/components/t-table/t-td.vue';
-	export default {
-		components: {
-			tTable,
-			tTh,
-			tTr,
-			tTd
-		},
-		data() {
-			return {
-				form: {
-					startDate: '',
-					endDate: ''
-				},
-				startDateShow: false,
-				endDateShow: false,
-				table: {
-					header: ['工号', '姓名', '所属路段', '应收金额(元)', '实收金额(元)', '欠费金额(元)', '移动端支付(元)', 'PDA扫码收入(元)', '现金收入(元)'],
-					list: [{
-							workNo: '00001',
-							name: '张政林',
-							roadName: '',
-							shouldMoney: '0.00',
-							realMoney: '0.00',
-							arrearsMoney: '0.00',
-							h5Money: '0.00',
-							pdaMoney: '0.00',
-							cashMoney: '0.00'
-						},
-						{
-							workNo: '00008',
-							name: '运维人员',
-							roadName: '书香府邸,文明路,桂花路',
-							shouldMoney: '0.00',
-							realMoney: '0.00',
-							arrearsMoney: '0.00',
-							h5Money: '0.00',
-							pdaMoney: '0.00',
-							cashMoney: '0.00'
-						},
-						{
-							workNo: '00012',
-							name: '园丁路巡查员',
-							roadName: '园丁路',
-							shouldMoney: '0.00',
-							realMoney: '0.00',
-							arrearsMoney: '0.00',
-							h5Money: '0.00',
-							pdaMoney: '0.00',
-							cashMoney: '0.00'
-						},
-						{
-							workNo: '00013',
-							name: '物资路巡查员',
-							roadName: '物资路',
-							shouldMoney: '0.00',
-							realMoney: '0.00',
-							arrearsMoney: '0.00',
-							h5Money: '0.00',
-							pdaMoney: '0.00',
-							cashMoney: '0.00'
-						},
-						{
-							workNo: '00014',
-							name: '丰林路巡查员',
-							roadName: '丰林路',
-							shouldMoney: '0.00',
-							realMoney: '0.00',
-							arrearsMoney: '0.00',
-							h5Money: '0.00',
-							pdaMoney: '0.00',
-							cashMoney: '0.00'
-						},
-						{
-							workNo: '00015',
-							name: '可处路巡查员',
-							roadName: '可处路二段',
-							shouldMoney: '3.00',
-							realMoney: '0.00',
-							arrearsMoney: '0.00',
-							h5Money: '0.00',
-							pdaMoney: '0.00',
-							cashMoney: '3.00'
-						}
-					]
-				}
-			}
-		},
-		methods: {
-			startDateConfirm(val) {
-				console.log(val)
-				this.form.startDate = val[0]
-				this.startDateShow = false
-			},
-			endDateConfirm(val) {
-				console.log(val)
-				this.form.endDate = val[0]
-				this.endDateShow = false
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-
-	.report {
-		padding: 28rpx;
-		font-family: PingFangSC-regular;
-
-		&-header {
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-
-			&-left {
-				border-left: solid 4px #EC0D0D;
-				padding-left: 10rpx;
-				color: #101010;
-				font-size: 30rpx;
-			}
-
-			&-right {
-				display: flex;
-				align-items: center;
-				font-size: 26rpx;
-
-				.int {
-					width: 210rpx;
-				}
-			}
-		}
-
-		&-total {
-			font-size: 28rpx;
-			color: #101010;
-			margin: 40rpx 0;
-			line-height: 40rpx;
-
-			text {
-				color: #FFB253;
-			}
-		}
-	}
-</style>

+ 23 - 0
pages/orderManagement/arrearageRecord/arrearageRecord.vue

@@ -0,0 +1,23 @@
+<!-- 欠费记录 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 23 - 0
pages/orderManagement/collectionRecord/collectionRecord.vue

@@ -0,0 +1,23 @@
+<!-- 收款记录 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 23 - 0
pages/orderManagement/feeEvasionRecord/feeEvasionRecord.vue

@@ -0,0 +1,23 @@
+<!-- 逃费记录 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 23 - 0
pages/orderManagement/parkingRecord/parkingRecord.vue

@@ -0,0 +1,23 @@
+<!-- 停车记录 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 23 - 0
pages/orderManagement/recoveryRecord/recoveryRecord.vue

@@ -0,0 +1,23 @@
+<!-- 追缴记录 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 23 - 0
pages/orderManagement/voidRecord/voidRecord.vue

@@ -0,0 +1,23 @@
+<!-- 作废记录 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 0 - 43
pages/orderRecords/orderRecords.vue

@@ -1,43 +0,0 @@
-<template>
-	<view class="records">
-		<view class="records-list">
-			<view class="records-list-item" v-for="(item, index) in list" :key="index">{{ item }}</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				list: ['停车记录', '欠费记录', '收费记录', '逃费记录', '作废记录', '追缴记录']
-			}
-		},
-		methods: {
-			
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-.records {
-	padding: 40rpx 20rpx;
-	&-list {
-		display: flex;
-		flex-wrap: wrap;
-		justify-content: space-between;
-		&-item {
-			width: calc(50% - 18rpx);
-			height: 200rpx;
-			line-height: 200rpx;
-			text-align: center;
-			background-color: #2871FF;
-			border-radius: 10rpx;
-			color: #fff;
-			font-size: 40rpx;
-			font-family: PingFangSC-regular;
-			margin-bottom: 36rpx;
-		}
-	}
-}
-</style>

+ 0 - 100
pages/patrolManagement/abnormalRecords/abnormalRecords.vue

@@ -1,100 +0,0 @@
-<template>
-	<view class="records">
-		<view class="records-list">
-			<view class="records-list-item" v-for="(item, index) in list" :key="index">
-				<view class="records-list-item-title">
-					<view class="title-left">{{ item.roadName }}</view>
-					<view class="title-right">{{ item.user }}</view>
-				</view>
-				<view class="records-list-item-content">{{ item.content }}</view>
-				<view class="records-list-item-bottom">{{ item.date }}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				list: [{
-						roadName: '可处路-KC001',
-						user: '张三',
-						content: '挡板不见了,二维码被抹掉,挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉',
-						date: '12-20 12:10'
-					},
-					{
-						roadName: '可处路-KC002',
-						user: '王强',
-						content: '挡板不见了,二维码被抹掉,挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉',
-						date: '12-20 12:00'
-					},
-					{
-						roadName: '可处路-KC003',
-						user: '李爱国',
-						content: '挡板不见了,二维码被抹掉,挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉',
-						date: '12-20 11:04'
-					},
-					{
-						roadName: '可处路-KC004',
-						user: '黄三',
-						content: '挡板不见了,二维码被抹掉,挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉挡板不见了,二维码被抹掉',
-						date: '12-20 09:10'
-					}
-				]
-			}
-		},
-		methods: {
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	page {
-		min-height: calc(100vh - 88rpx);
-		background-color: #f8f8f8;
-	}
-
-	.records {
-		font-family: PingFangSC-regular;
-		padding: 34rpx 40rpx;
-
-		&-list {
-			&-item {
-				background-color: #fff;
-				border-radius: 16rpx;
-				margin-bottom: 32rpx;
-
-				&-title {
-					padding: 28rpx;
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					font-size: 28rpx;
-					color: #206FFD;
-
-					.title-left {
-						font-size: 40rpx;
-						color: #101010;
-						font-family: PingFangSC-semiBold;
-					}
-				}
-
-				&-content {
-					font-size: 28rpx;
-					color: #101010;
-					padding: 0 28rpx;
-				}
-
-				&-bottom {
-					margin-top: 20rpx;
-					padding: 14rpx 28rpx;
-					font-size: 28rpx;
-					color: #a2a2a2;
-					border-top: solid 1px #e6e6e6;
-				}
-			}
-		}
-	}
-</style>

+ 23 - 0
pages/patrolManagement/deviceAbnormalRecords/deviceAbnormalRecords.vue

@@ -0,0 +1,23 @@
+<!-- 设备异常记录 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 0 - 61
pages/patrolManagement/patrolManagement.vue

@@ -1,61 +0,0 @@
-<template>
-	<view class="records">
-		<view class="records-list">
-			<view class="records-list-item" v-for="(item, index) in list" :key="index" @click="jumpPage(item.url)">{{ item.name }}</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				list: [{
-						name: '巡检记录',
-						url: 'pages/patrolManagement/patrolRecords/patrolRecords'
-					}, {
-						name: '设备异常记录',
-						url: 'pages/patrolManagement/abnormalRecords/abnormalRecords'
-					}, {
-						name: '巡检处置记录',
-						url: ''
-					}, {
-						name: '应急处置记录',
-						url: ''
-					}]
-			}
-		},
-		methods: {
-			jumpPage(url) {
-				uni.$u.route({
-					url
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.records {
-		padding: 40rpx 20rpx;
-	
-	&-list {
-			display: flex;
-			flex-wrap: wrap;
-			justify-content: space-between;
-
-			&-item {
-				width: calc(50% - 18rpx);
-				height: 200rpx;
-				line-height: 200rpx;
-				text-align: center;
-				background-color: #2871FF;
-				border-radius: 10rpx;
-				color: #fff;
-				font-size: 40rpx;
-				font-family: PingFangSC-regular;
-				margin-bottom: 36rpx;
-			}
-		}
-	}
-</style>

+ 23 - 0
pages/patrolManagement/patrolRecord/patrolRecord.vue

@@ -0,0 +1,23 @@
+<!-- 巡检记录 -->
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 0 - 142
pages/patrolManagement/patrolRecords/patrolRecords.vue

@@ -1,142 +0,0 @@
-<!-- 巡检记录 -->
-<template>
-	<view class="records">
-		<view class="records-search">
-			<view class="int">
-				<u--input placeholder="开始日期" border="surround" v-model="form.startDate" :readonly="true"
-					prefixIcon="clock" @focus="startDateShow = true">
-				</u--input>
-				<u-calendar :show="startDateShow" @confirm="startDateConfirm" @close="startDateShow = false">
-				</u-calendar>
-			</view>
-			<text>至</text>
-			<view class="int">
-				<u--input placeholder="结束日期" border="surround" v-model="form.endDate" :readonly="true"
-					prefixIcon="clock" @focus="endDateShow = true"></u--input>
-				<u-calendar :show="endDateShow" @confirm="endDateConfirm" @close="endDateShow = false"></u-calendar>
-			</view>
-		</view>
-		<view class="records-table">
-			<t-table>
-				<t-tr style="width: 1270rpx; background-color: #e6e6e6;">
-					<t-th v-for="(item, index) in table.header" :key="index" style="width: 140rpx;height: 100rpx;">
-						{{ item }}
-					</t-th>
-				</t-tr>
-				<t-tr style="width: 1270rpx;background-color: #fff;height: 100rpx;" v-for="(item, index) in table.list"
-					:key="index" :class="{'last-child': index === table.list.length - 1}">
-					<t-td style="width: 140rpx;">{{ item.user }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.road }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.device }}</t-td>
-					<t-td style="width: 140rpx;">{{ item.situation }}</t-td>
-					<t-td style="width: 140rpx; color: #008CFF;">评价</t-td>
-				</t-tr>
-			</t-table>
-		</view>
-	</view>
-</template>
-
-<script>
-	import tTable from '@/components/t-table/t-table.vue';
-	import tTh from '@/components/t-table/t-th.vue';
-	import tTr from '@/components/t-table/t-tr.vue';
-	import tTd from '@/components/t-table/t-td.vue';
-	export default {
-		components: {
-			tTable,
-			tTh,
-			tTr,
-			tTd
-		},
-		data() {
-			return {
-				form: {
-					startDate: '',
-					endDate: ''
-				},
-				startDateShow: false,
-				endDateShow: false,
-				table: {
-					header: ['巡检人', '巡检路段', '巡检设备', '巡检情况', '详情'],
-					list: [{
-							user: '张刚',
-							road: '丰林路',
-							device: '日常任务',
-							situation: 'FL001、FL002未巡检'
-						}, {
-							user: '张倩',
-							road: '丰林路',
-							device: '日常任务',
-							situation: 'FL001、FL002未巡检'
-						},
-						{
-							user: '运维人员',
-							road: '丰林路',
-							device: '日常任务',
-							situation: 'FL001、FL002未巡检'
-						},
-						{
-							user: '李明',
-							road: '丰林路',
-							device: '日常任务',
-							situation: 'FL001、FL002未巡检'
-						},
-						{
-							user: '陈静',
-							road: '丰林路',
-							device: '日常任务',
-							situation: 'FL001、FL002未巡检'
-						},
-						{
-							user: '孟大顺',
-							road: '丰林路',
-							device: '日常任务',
-							situation: 'FL001、FL002未巡检'
-						},
-						{
-							user: '张强',
-							road: '丰林路',
-							device: '日常任务',
-							situation: 'FL001、FL002未巡检'
-						}
-					]
-				}
-			}
-		},
-		methods: {
-			startDateConfirm(val) {
-				console.log(val)
-				this.form.startDate = val[0]
-				this.startDateShow = false
-			},
-			endDateConfirm(val) {
-				console.log(val)
-				this.form.endDate = val[0]
-				this.endDateShow = false
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.records {
-		padding: 14rpx;
-
-		&-search {
-			display: flex;
-			align-items: center;
-
-			.int {
-				width: 260rpx;
-			}
-
-			text {
-				padding: 0 10rpx;
-			}
-		}
-
-		&-table {
-			margin-top: 40rpx;
-		}
-	}
-</style>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 17 - 0
static/icons/arrearage-record-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 18 - 0
static/icons/collection-record-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 17 - 0
static/icons/device-error-records-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 17 - 0
static/icons/fee-evasion-record-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 16 - 0
static/icons/logout-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 24 - 0
static/icons/operational-analysis-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 17 - 0
static/icons/parking-record-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 17 - 0
static/icons/patrol-manage-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 17 - 0
static/icons/recovery-record-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 23 - 0
static/icons/statistical-report-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 27 - 0
static/icons/today-overview-icon.svg


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 17 - 0
static/icons/void-record-icon.svg


BIN=BIN
static/images/1.png


BIN=BIN
static/images/2.png


BIN=BIN
static/images/3.png


BIN=BIN
static/images/index-header-bg.png


BIN=BIN
static/images/mana-icon.png


BIN=BIN
static/images/order-icon.png


BIN=BIN
static/images/parking-info-bg.png


BIN=BIN
static/images/running-icon.png


BIN=BIN
static/logo.png


+ 28 - 0
store/$u.mixin.js

@@ -0,0 +1,28 @@
+import {
+	mapState
+} from 'vuex'
+import store from "@/store"
+
+// 尝试将用户在根目录中的store/index.js的vuex的state变量,全部加载到全局变量中
+let $uStoreKey = [];
+try {
+	$uStoreKey = store.state ? Object.keys(store.state) : [];
+} catch (e) {
+
+}
+
+module.exports = {
+	beforeCreate() {
+		// 将vuex方法挂在到$u中
+		uni.$u.vuex = (name, value) => {
+			this.$store.commit('$uStore', {
+				name,
+				value
+			})
+		}
+	},
+	computed: {
+		// 将vuex的state中的所有变量,解构到全局混入的mixin中
+		...mapState($uStoreKey)
+	}
+}

+ 62 - 0
store/index.js

@@ -0,0 +1,62 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+Vue.use(Vuex)
+
+let lifeData = {};
+
+try {
+	// 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
+	lifeData = uni.getStorageSync('lifeData');
+} catch (e) {
+
+}
+
+// 需要永久存储,且下次APP启动需要取出的,在state中的变量名
+
+let saveStateKeys = ['vuex_user', 'vuex_isLogin'];
+
+// 保存变量到本地存储中
+const saveLifeData = function(key, value) {
+	// 判断变量名是否在需要存储的数组中
+	if (saveStateKeys.indexOf(key) != -1) {
+		// 获取本地存储的lifeData对象,将变量添加到对象中
+		let tmp = uni.getStorageSync('lifeData');
+		// 第一次打开APP,不存在lifeData变量,故放一个{}空对象
+		tmp = tmp ? tmp : {};
+		tmp[key] = value;
+		// 执行这一步后,所有需要存储的变量,都挂载在本地的lifeData对象中
+		uni.setStorageSync('lifeData', tmp);
+	}
+}
+const store = new Vuex.Store({
+	state: {
+		// 如果上面从本地获取的lifeData对象下有对应的属性,就赋值给state中对应的变量
+		// 加上vuex_前缀,是防止变量名冲突,也让人一目了然
+		vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {},
+		vuex_isLogin: lifeData.vuex_isLogin ? lifeData.vuex_isLogin : false
+	},
+	mutations: {
+		$uStore(state, payload) {
+			// 判断是否多层级调用,state中为对象存在的情况,诸如user.info.score = 1
+			let nameArr = payload.name.split('.');
+			let saveKey = '';
+			let len = nameArr.length;
+			if (len >= 2) {
+				let obj = state[nameArr[0]];
+				for (let i = 1; i < len - 1; i++) {
+					obj = obj[nameArr[i]];
+				}
+				obj[nameArr[len - 1]] = payload.value;
+				saveKey = nameArr[0];
+			} else {
+				// 单层级变量,在state就是一个普通变量的情况
+				state[payload.name] = payload.value;
+				saveKey = payload.name;
+			}
+			// 保存变量到本地,见顶部函数定义
+			saveLifeData(saveKey, state[saveKey])
+		}
+	}
+})
+
+export default store

+ 1 - 78
uni.scss

@@ -1,78 +1 @@
-/**
- * 这里是uni-app内置的常用样式变量
- *
- * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
- * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
- *
- */
-
-/**
- * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
- *
- * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
- */
-
-/* 颜色变量 */
-
-/* 行为相关颜色 */
-$uni-color-primary: #007aff;
-$uni-color-success: #4cd964;
-$uni-color-warning: #f0ad4e;
-$uni-color-error: #dd524d;
-
-/* 文字基本颜色 */
-$uni-text-color:#333;//基本色
-$uni-text-color-inverse:#fff;//反色
-$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
-$uni-text-color-placeholder: #808080;
-$uni-text-color-disable:#c0c0c0;
-
-/* 背景颜色 */
-$uni-bg-color:#ffffff;
-$uni-bg-color-grey:#f8f8f8;
-$uni-bg-color-hover:#f1f1f1;//点击状态颜色
-$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
-
-/* 边框颜色 */
-$uni-border-color:#c8c7cc;
-
-/* 尺寸变量 */
-
-/* 文字尺寸 */
-$uni-font-size-sm:12px;
-$uni-font-size-base:14px;
-$uni-font-size-lg:16;
-
-/* 图片尺寸 */
-$uni-img-size-sm:20px;
-$uni-img-size-base:26px;
-$uni-img-size-lg:40px;
-
-/* Border Radius */
-$uni-border-radius-sm: 2px;
-$uni-border-radius-base: 3px;
-$uni-border-radius-lg: 6px;
-$uni-border-radius-circle: 50%;
-
-/* 水平间距 */
-$uni-spacing-row-sm: 5px;
-$uni-spacing-row-base: 10px;
-$uni-spacing-row-lg: 15px;
-
-/* 垂直间距 */
-$uni-spacing-col-sm: 4px;
-$uni-spacing-col-base: 8px;
-$uni-spacing-col-lg: 12px;
-
-/* 透明度 */
-$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
-
-/* 文章场景相关 */
-$uni-color-title: #2C405A; // 文章标题颜色
-$uni-font-size-title:20px;
-$uni-color-subtitle: #555555; // 二级标题颜色
-$uni-font-size-subtitle:26px;
-$uni-color-paragraph: #3F536E; // 文章段落颜色
-$uni-font-size-paragraph:15px;
-/* uni.scss */
-@import '@/uview-ui/theme.scss';
+@import '@/uni_modules/uview-ui/theme.scss';

+ 0 - 177
uni_modules/qiun-data-charts/changelog.md

@@ -1,177 +0,0 @@
-## 2.3.6-20211201(2021-12-01)
-- uCharts.js 修复bar条状图开启圆角模式时,值很小时圆角渲染错误的bug
-## 2.3.5-20211014(2021-10-15)
-- uCharts.js 增加vue3的编译支持(仅原生uCharts,qiun-data-charts组件后续会支持,请关注更新)
-## 2.3.4-20211012(2021-10-12)
-- 秋云图表组件 修复 mac os x 系统 mouseover 事件丢失的 bug
-## 2.3.3-20210706(2021-07-06)
-- uCharts.js 增加雷达图开启数据点值(opts.dataLabel)的显示
-## 2.3.2-20210627(2021-06-27)
-- 秋云图表组件 修复tooltipCustom个别情况下传值不正确报错TypeError: Cannot read property 'name' of undefined的bug
-## 2.3.1-20210616(2021-06-16)
-- uCharts.js 修复圆角柱状图使用4角圆角时,当数值过大时不正确的bug
-## 2.3.0-20210612(2021-06-12)
-- uCharts.js 【重要】uCharts增加nvue兼容,可在nvue项目中使用gcanvas组件渲染uCharts,[详见码云uCharts-demo-nvue](https://gitee.com/uCharts/uCharts)
-- 秋云图表组件 增加tapLegend属性,是否开启图例点击交互事件
-- 秋云图表组件 getIndex事件中增加返回uCharts实例中的opts参数,以便在页面中调用参数
-- 示例项目 pages/other/other.vue增加app端自定义tooltip的方法,详见showOptsTooltip方法
-## 2.2.1-20210603(2021-06-03)
-- uCharts.js 修复饼图、圆环图、玫瑰图,当起始角度不为0时,tooltip位置不准确的bug
-- uCharts.js 增加温度计式柱状图开启顶部半圆形的配置
-## 2.2.0-20210529(2021-05-29)
-- uCharts.js 增加条状图type="bar"
-- 示例项目 pages/ucharts/ucharts.vue增加条状图的demo
-## 2.1.7-20210524(2021-05-24)
-- uCharts.js 修复大数据量模式下曲线图不平滑的bug
-## 2.1.6-20210523(2021-05-23)
-- 秋云图表组件 修复小程序端开启滚动条更新数据后滚动条位置不符合预期的bug
-## 2.1.5-2021051702(2021-05-17)
-- uCharts.js 修复自定义Y轴min和max值为0时不能正确显示的bug
-## 2.1.5-20210517(2021-05-17)
-- uCharts.js 修复Y轴自定义min和max时,未按指定的最大值最小值显示坐标轴刻度的bug
-## 2.1.4-20210516(2021-05-16)
-- 秋云图表组件 优化onWindowResize防抖方法
-- 秋云图表组件 修复APP端uCharts更新数据时,清空series显示loading图标后再显示图表,图表抖动的bug
-- uCharts.js 修复开启canvas2d后,x轴、y轴、series自定义字体大小未按比例缩放的bug
-- 示例项目 修复format-e.vue拼写错误导致app端使用uCharts渲染图表
-## 2.1.3-20210513(2021-05-13)
-- 秋云图表组件 修改uCharts变更chartData数据为updateData方法,支持带滚动条的数据动态打点
-- 秋云图表组件 增加onWindowResize防抖方法 fix by ど誓言,如尘般染指流年づ 
-- 秋云图表组件 H5或者APP变更chartData数据显示loading图表时,原数据闪现的bug
-- 秋云图表组件 props增加errorReload禁用错误点击重新加载的方法
-- uCharts.js 增加tooltip显示category(x轴对应点位)标题的功能,opts.extra.tooltip.showCategory,默认为false
-- uCharts.js 修复mix混合图只有柱状图时,tooltip的分割线显示位置不正确的bug
-- uCharts.js 修复开启滚动条,图表在拖动中动态打点,滚动条位置不正确的bug
-- uCharts.js 修复饼图类数据格式为echarts数据格式,series为空数组报错的bug
-- 示例项目 修改uCharts.js更新到v2.1.2版本后,@getIndex方法获取索引值变更为e.currentIndex.index
-- 示例项目 pages/updata/updata.vue增加滚动条拖动更新(数据动态打点)的demo
-- 示例项目 pages/other/other.vue增加errorReload禁用错误点击重新加载的demo
-## 2.1.2-20210509(2021-05-09)
-秋云图表组件 修复APP端初始化时就传入chartData或lacaldata不显示图表的bug
-## 2.1.1-20210509(2021-05-09)
-- 秋云图表组件 变更ECharts的eopts配置在renderjs内执行,支持在config-echarts.js配置文件内写function配置。
-- 秋云图表组件 修复APP端报错Prop being mutated: "onmouse"错误的bug。
-- 秋云图表组件 修复APP端报错Error: Not Found:Page[6][-1,27] at view.umd.min.js:1的bug。
-## 2.1.0-20210507(2021-05-07)
-- 秋云图表组件 修复初始化时就有数据或者数据更新的时候loading加载动画闪动的bug
-- uCharts.js 修复x轴format方法categories为字符串类型时返回NaN的bug
-- uCharts.js 修复series.textColor、legend.fontColor未执行全局默认颜色的bug
-## 2.1.0-20210506(2021-05-06)
-- 秋云图表组件 修复极个别情况下报错item.properties undefined的bug
-- 秋云图表组件 修复极个别情况下关闭加载动画reshow不起作用,无法显示图表的bug
-- 示例项目 pages/ucharts/ucharts.vue 增加时间轴折线图(type="tline")、时间轴区域图(type="tarea")、散点图(type="scatter")、气泡图demo(type="bubble")、倒三角形漏斗图(opts.extra.funnel.type="triangle")、金字塔形漏斗图(opts.extra.funnel.type="pyramid")
-- 示例项目 pages/format-u/format-u.vue 增加X轴format格式化示例
-- uCharts.js 升级至v2.1.0版本
-- uCharts.js 修复 玫瑰图面积模式点击tooltip位置不正确的bug
-- uCharts.js 修复 玫瑰图点击图例,只剩一个类别显示空白的bug
-- uCharts.js 修复 饼图类图点击图例,其他图表tooltip位置某些情况下不准的bug
-- uCharts.js 修复 x轴为矢量轴(时间轴)情况下,点击tooltip位置不正确的bug
-- uCharts.js 修复 词云图获取点击索引偶尔不准的bug
-- uCharts.js 增加 直角坐标系图表X轴format格式化方法(原生uCharts.js用法请使用formatter)
-- uCharts.js 增加 漏斗图扩展配置,倒三角形(opts.extra.funnel.type="triangle"),金字塔形(opts.extra.funnel.type="pyramid")
-- uCharts.js 增加 散点图(opts.type="scatter")、气泡图(opts.type="bubble")
-- 后期计划 完善散点图、气泡图,增加markPoints标记点,增加横向条状图。
-## 2.0.0-20210502(2021-05-02)
-- uCharts.js 修复词云图获取点击索引不正确的bug
-## 2.0.0-20210501(2021-05-01)
-- 秋云图表组件 修复QQ小程序、百度小程序在关闭动画效果情况下,v-for循环使用图表,显示不正确的bug
-## 2.0.0-20210426(2021-04-26)
-- 秋云图表组件 修复QQ小程序不支持canvas2d的bug
-- 秋云图表组件 修复钉钉小程序某些情况点击坐标计算错误的bug
-- uCharts.js 增加 extra.column.categoryGap 参数,柱状图类每个category点位(X轴点)柱子组之间的间距
-- uCharts.js 增加 yAxis.data[i].titleOffsetY 参数,标题纵向偏移距离,负数为向上偏移,正数向下偏移
-- uCharts.js 增加 yAxis.data[i].titleOffsetX 参数,标题横向偏移距离,负数为向左偏移,正数向右偏移
-- uCharts.js 增加 extra.gauge.labelOffset 参数,仪表盘标签文字径向便宜距离,默认13px
-## 2.0.0-20210422-2(2021-04-22)
-秋云图表组件 修复 formatterAssign 未判断 args[key] == null 的情况导致栈溢出的 bug
-## 2.0.0-20210422(2021-04-22)
-- 秋云图表组件 修复H5、APP、支付宝小程序、微信小程序canvas2d模式下横屏模式的bug
-## 2.0.0-20210421(2021-04-21)
-- uCharts.js 修复多行图例的情况下,图例在上方或者下方时,图例float为左侧或者右侧时,第二行及以后的图例对齐方式不正确的bug
-## 2.0.0-20210420(2021-04-20)
-- 秋云图表组件 修复微信小程序开启canvas2d模式后,windows版微信小程序不支持canvas2d模式的bug
-- 秋云图表组件 修改非uni_modules版本为v2.0版本qiun-data-charts组件
-## 2.0.0-20210419(2021-04-19)
-## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。
-## 初次使用如果提示未注册&lt;qiun-data-charts&gt;组件,请重启HBuilderX,如仍不好用,请重启电脑;
-## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。
-## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。
-## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn)
-## <font color=#FF0000> 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! </font> 
-## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
-## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) 
-- uCharts.js 修复混合图中柱状图单独设置颜色不生效的bug
-- uCharts.js 修复多Y轴单独设置fontSize时,开启canvas2d后,未对应放大字体的bug
-## 2.0.0-20210418(2021-04-18)
-- 秋云图表组件 增加directory配置,修复H5端history模式下如果发布到二级目录无法正确加载echarts.min.js的bug
-## 2.0.0-20210416(2021-04-16)
-## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。
-## 初次使用如果提示未注册&lt;qiun-data-charts&gt;组件,请重启HBuilderX,如仍不好用,请重启电脑;
-## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。
-## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。
-## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn)
-## <font color=#FF0000> 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! </font> 
-## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
-## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) 
-- 秋云图表组件 修复APP端某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员
-- 示例项目 修复APP端v-for循环某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员
-- uCharts.js 修复非直角坐标系tooltip提示窗右侧超出未变换方向显示的bug
-## 2.0.0-20210415(2021-04-15)
-- 秋云图表组件 修复H5端发布到二级目录下echarts无法加载的bug
-- 秋云图表组件 修复某些情况下echarts.off('finished')移除监听事件报错的bug
-## 2.0.0-20210414(2021-04-14)
-## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。
-## 初次使用如果提示未注册&lt;qiun-data-charts&gt;组件,请重启HBuilderX,如仍不好用,请重启电脑;
-## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。
-## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。
-## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn)
-## <font color=#FF0000> 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! </font> 
-## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
-## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) 
-- 秋云图表组件 修复H5端在cli项目下ECharts引用地址错误的bug
-- 示例项目 增加ECharts的formatter用法的示例(详见示例项目format-e.vue)
-- uCharts.js 增加圆环图中心背景色的配置extra.ring.centerColor
-- uCharts.js 修复微信小程序安卓端柱状图开启透明色后显示不正确的bug
-## 2.0.0-20210413(2021-04-13)
-- 秋云图表组件 修复百度小程序多个图表真机未能正确获取根元素dom尺寸的bug
-- 秋云图表组件 修复百度小程序横屏模式方向不正确的bug
-- 秋云图表组件 修改ontouch时,@getTouchStart@getTouchMove@getTouchEnd的触发条件
-- uCharts.js 修复饼图类数据格式series属性不生效的bug
-- uCharts.js 增加时序区域图 详见示例项目中ucharts.vue
-## 2.0.0-20210412-2(2021-04-12)
-## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。
-## 初次使用如果提示未注册&lt;qiun-data-charts&gt;组件,请重启HBuilderX。如仍不好用,请重启电脑,此问题已于DCloud官方确认,HBuilderX下个版本会修复。
-## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
-## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) 
-- 秋云图表组件 修复uCharts在APP端横屏模式下不能正确渲染的bug
-- 示例项目 增加ECharts柱状图渐变色、圆角柱状图、横向柱状图(条状图)的示例
-## 2.0.0-20210412(2021-04-12)
-- 秋云图表组件 修复created中判断echarts导致APP端无法识别,改回mounted中判断echarts初始化
-- uCharts.js 修复2d模式下series.textOffset未乘像素比的bug
-## 2.0.0-20210411(2021-04-11)
-## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。
-## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,并清空小程序开发者工具缓存。
-## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
-## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) 
-- uCharts.js 折线图区域图增加connectNulls断点续连的功能,详见示例项目中ucharts.vue
-- 秋云图表组件 变更初始化方法为created,变更type2d默认值为true,优化2d模式下组件初始化后dom获取不到的bug
-- 秋云图表组件 修复左右布局时,右侧图表点击坐标错误的bug,修复tooltip柱状图自定义颜色显示object的bug
-## 2.0.0-20210410(2021-04-10)
-- 修复左右布局时,右侧图表点击坐标错误的bug,修复柱状图自定义颜色tooltip显示object的bug
-- 增加标记线及柱状图自定义颜色的demo
-## 2.0.0-20210409(2021-04-08)
-## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn)
-## 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) 
-- uCharts.js 修复钉钉小程序百度小程序measureText不准确的bug,修复2d模式下饼图类activeRadius为按比例放大的bug
-- 修复组件在支付宝小程序端点击位置不准确的bug
-## 2.0.0-20210408(2021-04-07)
-- 修复组件在支付宝小程序端不能显示的bug(目前支付宝小程不能点击交互,后续修复)
-- uCharts.js 修复高分屏下柱状图类,圆弧进度条 自定义宽度不能按比例放大的bug
-## 2.0.0-20210407(2021-04-06)
-## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn)
-## 增加 通过tofix和unit快速格式化y轴的demo add by `howcode`
-## 增加 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) 
-## 2.0.0-20210406(2021-04-05)
-# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页
-## 2.0.0(2021-04-05)
-# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 1541
uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 46
uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue


+ 0 - 162
uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue

@@ -1,162 +0,0 @@
-<template>
-	 <view class="container loading1">
-		<view class="shape shape1"></view>
-		<view class="shape shape2"></view>
-		<view class="shape shape3"></view>
-		<view class="shape shape4"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'loading1',
-		data() {
-			return {
-				
-			};
-		}
-	}
-</script>
-
-<style scoped="true">
-.container {
-  width: 30px;
-  height: 30px;
-  position: relative;
-}
-.container.loading1 {
-  -webkit-transform: rotate(45deg);
-          transform: rotate(45deg);
-}
-
-.container .shape {
-  position: absolute;
-  width: 10px;
-  height: 10px;
-  border-radius: 1px;
-}
-.container .shape.shape1 {
-  left: 0;
-  background-color: #1890FF;
-}
-.container .shape.shape2 {
-  right: 0;
-  background-color: #91CB74;
-}
-.container .shape.shape3 {
-  bottom: 0;
-  background-color: #FAC858;
-}
-.container .shape.shape4 {
-  bottom: 0;
-  right: 0;
-  background-color: #EE6666;
-}
-
-.loading1 .shape1 {
-  -webkit-animation: animation1shape1 0.5s ease 0s infinite alternate;
-          animation: animation1shape1 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation1shape1 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(16px, 16px);
-            transform: translate(16px, 16px);
-  }
-}
-
-@keyframes animation1shape1 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(16px, 16px);
-            transform: translate(16px, 16px);
-  }
-}
-.loading1 .shape2 {
-  -webkit-animation: animation1shape2 0.5s ease 0s infinite alternate;
-          animation: animation1shape2 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation1shape2 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-16px, 16px);
-            transform: translate(-16px, 16px);
-  }
-}
-
-@keyframes animation1shape2 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-16px, 16px);
-            transform: translate(-16px, 16px);
-  }
-}
-.loading1 .shape3 {
-  -webkit-animation: animation1shape3 0.5s ease 0s infinite alternate;
-          animation: animation1shape3 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation1shape3 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(16px, -16px);
-            transform: translate(16px, -16px);
-  }
-}
-
-@keyframes animation1shape3 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(16px, -16px);
-            transform: translate(16px, -16px);
-  }
-}
-.loading1 .shape4 {
-  -webkit-animation: animation1shape4 0.5s ease 0s infinite alternate;
-          animation: animation1shape4 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation1shape4 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-16px, -16px);
-            transform: translate(-16px, -16px);
-  }
-}
-
-@keyframes animation1shape4 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-16px, -16px);
-            transform: translate(-16px, -16px);
-  }
-}
-
-
-</style>

+ 0 - 170
uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue

@@ -1,170 +0,0 @@
-<template>
-	 <view class="container loading2">
-		<view class="shape shape1"></view>
-		<view class="shape shape2"></view>
-		<view class="shape shape3"></view>
-		<view class="shape shape4"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'loading2',
-		data() {
-			return {
-				
-			};
-		}
-	}
-</script>
-
-<style scoped="true">
-.container {
-  width: 30px;
-  height: 30px;
-  position: relative;
-}
-
-.container.loading2 {
-  -webkit-transform: rotate(10deg);
-          transform: rotate(10deg);
-}
-.container.loading2 .shape {
-  border-radius: 5px;
-}
-.container.loading2{
-  -webkit-animation: rotation 1s infinite;
-          animation: rotation 1s infinite;
-}
-
-.container .shape {
-  position: absolute;
-  width: 10px;
-  height: 10px;
-  border-radius: 1px;
-}
-.container .shape.shape1 {
-  left: 0;
-  background-color: #1890FF;
-}
-.container .shape.shape2 {
-  right: 0;
-  background-color: #91CB74;
-}
-.container .shape.shape3 {
-  bottom: 0;
-  background-color: #FAC858;
-}
-.container .shape.shape4 {
-  bottom: 0;
-  right: 0;
-  background-color: #EE6666;
-}
-
-
-.loading2 .shape1 {
-  -webkit-animation: animation2shape1 0.5s ease 0s infinite alternate;
-          animation: animation2shape1 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation2shape1 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(20px, 20px);
-            transform: translate(20px, 20px);
-  }
-}
-
-@keyframes animation2shape1 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(20px, 20px);
-            transform: translate(20px, 20px);
-  }
-}
-.loading2 .shape2 {
-  -webkit-animation: animation2shape2 0.5s ease 0s infinite alternate;
-          animation: animation2shape2 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation2shape2 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-20px, 20px);
-            transform: translate(-20px, 20px);
-  }
-}
-
-@keyframes animation2shape2 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-20px, 20px);
-            transform: translate(-20px, 20px);
-  }
-}
-.loading2 .shape3 {
-  -webkit-animation: animation2shape3 0.5s ease 0s infinite alternate;
-          animation: animation2shape3 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation2shape3 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(20px, -20px);
-            transform: translate(20px, -20px);
-  }
-}
-
-@keyframes animation2shape3 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(20px, -20px);
-            transform: translate(20px, -20px);
-  }
-}
-.loading2 .shape4 {
-  -webkit-animation: animation2shape4 0.5s ease 0s infinite alternate;
-          animation: animation2shape4 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation2shape4 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-20px, -20px);
-            transform: translate(-20px, -20px);
-  }
-}
-
-@keyframes animation2shape4 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-20px, -20px);
-            transform: translate(-20px, -20px);
-  }
-}
-
-</style>

+ 0 - 173
uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue

@@ -1,173 +0,0 @@
-<template>
-	 <view class="container loading3">
-		<view class="shape shape1"></view>
-		<view class="shape shape2"></view>
-		<view class="shape shape3"></view>
-		<view class="shape shape4"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'loading3',
-		data() {
-			return {
-				
-			};
-		}
-	}
-</script>
-
-<style scoped="true">
-.container {
-  width: 30px;
-  height: 30px;
-  position: relative;
-}
-
- .container.loading3 {
-  -webkit-animation: rotation 1s infinite;
-          animation: rotation 1s infinite;
-}
-.container.loading3 .shape1 {
-  border-top-left-radius: 10px;
-}
-.container.loading3 .shape2 {
-  border-top-right-radius: 10px;
-}
-.container.loading3 .shape3 {
-  border-bottom-left-radius: 10px;
-}
-.container.loading3 .shape4 {
-  border-bottom-right-radius: 10px;
-}
-
-.container .shape {
-  position: absolute;
-  width: 10px;
-  height: 10px;
-  border-radius: 1px;
-}
-.container .shape.shape1 {
-  left: 0;
-  background-color: #1890FF;
-}
-.container .shape.shape2 {
-  right: 0;
-  background-color: #91CB74;
-}
-.container .shape.shape3 {
-  bottom: 0;
-  background-color: #FAC858;
-}
-.container .shape.shape4 {
-  bottom: 0;
-  right: 0;
-  background-color: #EE6666;
-}
-
-.loading3 .shape1 {
-  -webkit-animation: animation3shape1 0.5s ease 0s infinite alternate;
-          animation: animation3shape1 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation3shape1 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(5px, 5px);
-            transform: translate(5px, 5px);
-  }
-}
-
-@keyframes animation3shape1 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(5px, 5px);
-            transform: translate(5px, 5px);
-  }
-}
-.loading3 .shape2 {
-  -webkit-animation: animation3shape2 0.5s ease 0s infinite alternate;
-          animation: animation3shape2 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation3shape2 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-5px, 5px);
-            transform: translate(-5px, 5px);
-  }
-}
-
-@keyframes animation3shape2 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-5px, 5px);
-            transform: translate(-5px, 5px);
-  }
-}
-.loading3 .shape3 {
-  -webkit-animation: animation3shape3 0.5s ease 0s infinite alternate;
-          animation: animation3shape3 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation3shape3 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(5px, -5px);
-            transform: translate(5px, -5px);
-  }
-}
-
-@keyframes animation3shape3 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(5px, -5px);
-            transform: translate(5px, -5px);
-  }
-}
-.loading3 .shape4 {
-  -webkit-animation: animation3shape4 0.5s ease 0s infinite alternate;
-          animation: animation3shape4 0.5s ease 0s infinite alternate;
-}
-
-@-webkit-keyframes animation3shape4 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-5px, -5px);
-            transform: translate(-5px, -5px);
-  }
-}
-
-@keyframes animation3shape4 {
-  from {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  to {
-    -webkit-transform: translate(-5px, -5px);
-            transform: translate(-5px, -5px);
-  }
-}
-</style>

+ 0 - 222
uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue

@@ -1,222 +0,0 @@
-<template>
-	 <view class="container loading5">
-		<view class="shape shape1"></view>
-		<view class="shape shape2"></view>
-		<view class="shape shape3"></view>
-		<view class="shape shape4"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'loading5',
-		data() {
-			return {
-				
-			};
-		}
-	}
-</script>
-
-<style scoped="true">
-.container {
-  width: 30px;
-  height: 30px;
-  position: relative;
-}
-
-.container.loading5 .shape {
-  width: 15px;
-  height: 15px;
-}
-
-.container .shape {
-  position: absolute;
-  width: 10px;
-  height: 10px;
-  border-radius: 1px;
-}
-.container .shape.shape1 {
-  left: 0;
-  background-color: #1890FF;
-}
-.container .shape.shape2 {
-  right: 0;
-  background-color: #91CB74;
-}
-.container .shape.shape3 {
-  bottom: 0;
-  background-color: #FAC858;
-}
-.container .shape.shape4 {
-  bottom: 0;
-  right: 0;
-  background-color: #EE6666;
-}
-
-.loading5 .shape1 {
-  animation: animation5shape1 2s ease 0s infinite reverse;
-}
-
-@-webkit-keyframes animation5shape1 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(0, 15px);
-            transform: translate(0, 15px);
-  }
-  50% {
-    -webkit-transform: translate(15px, 15px);
-            transform: translate(15px, 15px);
-  }
-  75% {
-    -webkit-transform: translate(15px, 0);
-            transform: translate(15px, 0);
-  }
-}
-
-@keyframes animation5shape1 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(0, 15px);
-            transform: translate(0, 15px);
-  }
-  50% {
-    -webkit-transform: translate(15px, 15px);
-            transform: translate(15px, 15px);
-  }
-  75% {
-    -webkit-transform: translate(15px, 0);
-            transform: translate(15px, 0);
-  }
-}
-.loading5 .shape2 {
-  animation: animation5shape2 2s ease 0s infinite reverse;
-}
-
-@-webkit-keyframes animation5shape2 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(-15px, 0);
-            transform: translate(-15px, 0);
-  }
-  50% {
-    -webkit-transform: translate(-15px, 15px);
-            transform: translate(-15px, 15px);
-  }
-  75% {
-    -webkit-transform: translate(0, 15px);
-            transform: translate(0, 15px);
-  }
-}
-
-@keyframes animation5shape2 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(-15px, 0);
-            transform: translate(-15px, 0);
-  }
-  50% {
-    -webkit-transform: translate(-15px, 15px);
-            transform: translate(-15px, 15px);
-  }
-  75% {
-    -webkit-transform: translate(0, 15px);
-            transform: translate(0, 15px);
-  }
-}
-.loading5 .shape3 {
-  animation: animation5shape3 2s ease 0s infinite reverse;
-}
-
-@-webkit-keyframes animation5shape3 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(15px, 0);
-            transform: translate(15px, 0);
-  }
-  50% {
-    -webkit-transform: translate(15px, -15px);
-            transform: translate(15px, -15px);
-  }
-  75% {
-    -webkit-transform: translate(0, -15px);
-            transform: translate(0, -15px);
-  }
-}
-
-@keyframes animation5shape3 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(15px, 0);
-            transform: translate(15px, 0);
-  }
-  50% {
-    -webkit-transform: translate(15px, -15px);
-            transform: translate(15px, -15px);
-  }
-  75% {
-    -webkit-transform: translate(0, -15px);
-            transform: translate(0, -15px);
-  }
-}
-.loading5 .shape4 {
-  animation: animation5shape4 2s ease 0s infinite reverse;
-}
-
-@-webkit-keyframes animation5shape4 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(0, -15px);
-            transform: translate(0, -15px);
-  }
-  50% {
-    -webkit-transform: translate(-15px, -15px);
-            transform: translate(-15px, -15px);
-  }
-  75% {
-    -webkit-transform: translate(-15px, 0);
-            transform: translate(-15px, 0);
-  }
-}
-
-@keyframes animation5shape4 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(0, -15px);
-            transform: translate(0, -15px);
-  }
-  50% {
-    -webkit-transform: translate(-15px, -15px);
-            transform: translate(-15px, -15px);
-  }
-  75% {
-    -webkit-transform: translate(-15px, 0);
-            transform: translate(-15px, 0);
-  }
-}
-
-</style>

+ 0 - 229
uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue

@@ -1,229 +0,0 @@
-<template>
-	 <view class="container loading6">
-		<view class="shape shape1"></view>
-		<view class="shape shape2"></view>
-		<view class="shape shape3"></view>
-		<view class="shape shape4"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'loading6',
-		data() {
-			return {
-				
-			};
-		}
-	}
-</script>
-<style scoped="true">
-.container {
-  width: 30px;
-  height: 30px;
-  position: relative;
-}
-
-.container.loading6 {
-  -webkit-animation: rotation 1s infinite;
-          animation: rotation 1s infinite;
-}
-.container.loading6 .shape {
-  width: 12px;
-  height: 12px;
-  border-radius: 2px;
-}
-.container .shape {
-  position: absolute;
-  width: 10px;
-  height: 10px;
-  border-radius: 1px;
-}
-.container .shape.shape1 {
-  left: 0;
-  background-color: #1890FF;
-}
-.container .shape.shape2 {
-  right: 0;
-  background-color: #91CB74;
-}
-.container .shape.shape3 {
-  bottom: 0;
-  background-color: #FAC858;
-}
-.container .shape.shape4 {
-  bottom: 0;
-  right: 0;
-  background-color: #EE6666;
-}
-
-
-.loading6 .shape1 {
-  -webkit-animation: animation6shape1 2s linear 0s infinite normal;
-          animation: animation6shape1 2s linear 0s infinite normal;
-}
-
-@-webkit-keyframes animation6shape1 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(0, 18px);
-            transform: translate(0, 18px);
-  }
-  50% {
-    -webkit-transform: translate(18px, 18px);
-            transform: translate(18px, 18px);
-  }
-  75% {
-    -webkit-transform: translate(18px, 0);
-            transform: translate(18px, 0);
-  }
-}
-
-@keyframes animation6shape1 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(0, 18px);
-            transform: translate(0, 18px);
-  }
-  50% {
-    -webkit-transform: translate(18px, 18px);
-            transform: translate(18px, 18px);
-  }
-  75% {
-    -webkit-transform: translate(18px, 0);
-            transform: translate(18px, 0);
-  }
-}
-.loading6 .shape2 {
-  -webkit-animation: animation6shape2 2s linear 0s infinite normal;
-          animation: animation6shape2 2s linear 0s infinite normal;
-}
-
-@-webkit-keyframes animation6shape2 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(-18px, 0);
-            transform: translate(-18px, 0);
-  }
-  50% {
-    -webkit-transform: translate(-18px, 18px);
-            transform: translate(-18px, 18px);
-  }
-  75% {
-    -webkit-transform: translate(0, 18px);
-            transform: translate(0, 18px);
-  }
-}
-
-@keyframes animation6shape2 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(-18px, 0);
-            transform: translate(-18px, 0);
-  }
-  50% {
-    -webkit-transform: translate(-18px, 18px);
-            transform: translate(-18px, 18px);
-  }
-  75% {
-    -webkit-transform: translate(0, 18px);
-            transform: translate(0, 18px);
-  }
-}
-.loading6 .shape3 {
-  -webkit-animation: animation6shape3 2s linear 0s infinite normal;
-          animation: animation6shape3 2s linear 0s infinite normal;
-}
-
-@-webkit-keyframes animation6shape3 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(18px, 0);
-            transform: translate(18px, 0);
-  }
-  50% {
-    -webkit-transform: translate(18px, -18px);
-            transform: translate(18px, -18px);
-  }
-  75% {
-    -webkit-transform: translate(0, -18px);
-            transform: translate(0, -18px);
-  }
-}
-
-@keyframes animation6shape3 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(18px, 0);
-            transform: translate(18px, 0);
-  }
-  50% {
-    -webkit-transform: translate(18px, -18px);
-            transform: translate(18px, -18px);
-  }
-  75% {
-    -webkit-transform: translate(0, -18px);
-            transform: translate(0, -18px);
-  }
-}
-.loading6 .shape4 {
-  -webkit-animation: animation6shape4 2s linear 0s infinite normal;
-          animation: animation6shape4 2s linear 0s infinite normal;
-}
-
-@-webkit-keyframes animation6shape4 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(0, -18px);
-            transform: translate(0, -18px);
-  }
-  50% {
-    -webkit-transform: translate(-18px, -18px);
-            transform: translate(-18px, -18px);
-  }
-  75% {
-    -webkit-transform: translate(-18px, 0);
-            transform: translate(-18px, 0);
-  }
-}
-
-@keyframes animation6shape4 {
-  0% {
-    -webkit-transform: translate(0, 0);
-            transform: translate(0, 0);
-  }
-  25% {
-    -webkit-transform: translate(0, -18px);
-            transform: translate(0, -18px);
-  }
-  50% {
-    -webkit-transform: translate(-18px, -18px);
-            transform: translate(-18px, -18px);
-  }
-  75% {
-    -webkit-transform: translate(-18px, 0);
-            transform: translate(-18px, 0);
-  }
-}
-</style>

+ 0 - 36
uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue

@@ -1,36 +0,0 @@
-<template>
-	<view>
-	 <Loading1 v-if="loadingType==1"/>
-	 <Loading2 v-if="loadingType==2"/>
-	 <Loading3 v-if="loadingType==3"/>
-	 <Loading4 v-if="loadingType==4"/>
-	 <Loading5 v-if="loadingType==5"/>
-	</view>
-</template>
-
-<script>
-	import Loading1 from "./loading1.vue";
-	import Loading2 from "./loading2.vue";
-	import Loading3 from "./loading3.vue";
-	import Loading4 from "./loading4.vue";
-	import Loading5 from "./loading5.vue";
-	export default {
-		components:{Loading1,Loading2,Loading3,Loading4,Loading5},
-		name: 'qiun-loading',
-		props: {
-			loadingType: {
-				type: Number,
-				default: 2
-			},
-		},
-		data() {
-			return {
-				
-			};
-		},
-	}
-</script>
-
-<style>
-
-</style>

+ 0 - 422
uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js

@@ -1,422 +0,0 @@
-/*
- * uCharts®
- * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台
- * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.
- * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- * 复制使用请保留本段注释,感谢支持开源!
- * 
- * uCharts®官方网站
- * https://www.uCharts.cn
- * 
- * 开源地址:
- * https://gitee.com/uCharts/uCharts
- * 
- * uni-app插件市场地址:
- * http://ext.dcloud.net.cn/plugin?id=271
- * 
- */
-
-// 通用配置项
-
-// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性
-const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];
-
-const cfe = {
-  //demotype为自定义图表类型
-	"type": ["pie", "ring", "rose", "funnel", "line", "column", "area", "radar", "gauge","candle","demotype"],
-  //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的"demotype"
-	"categories": ["line", "column", "area", "radar", "gauge", "candle","demotype"],
-  //instance为实例变量承载属性,option为eopts承载属性,不要删除
-	"instance": {},
-	"option": {},
-  //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
-  "formatter":{
-    "tooltipDemo1":function(res){
-      let result = ''
-      for (let i in res) {
-      	if (i == 0) {
-      		result += res[i].axisValueLabel + '年销售额'
-      	}
-      	let value = '--'
-      	if (res[i].data !== null) {
-      		value = res[i].data
-      	}
-      	// #ifdef H5
-      	result += '\n' + res[i].seriesName + ':' + value + ' 万元'
-      	// #endif
-      	
-      	// #ifdef APP-PLUS
-      	result += '<br/>' + res[i].marker + res[i].seriesName + ':' + value + ' 万元'
-      	// #endif
-      }
-      return result;
-    },
-    legendFormat:function(name){
-      return "自定义图例+"+name;
-    },
-    yAxisFormatDemo:function (value, index) {
-      return value + '元';
-    },
-    seriesFormatDemo:function(res){
-      return res.name + '年' + res.value + '元';
-    }
-  },
-  //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。
-  "demotype":{
-    "color": color,
-    //在这里填写echarts的option即可
-    
-  },
-  //下面是自定义配置,请添加项目所需的通用配置
-	"column": {
-		"color": color,
-		"title": {
-			"text": ''
-		},
-		"tooltip": {
-			"trigger": 'axis'
-		},
-		"grid": {
-			"top": 30,
-			"bottom": 50,
-			"right": 15,
-			"left": 40
-		},
-		"legend": {
-			"bottom": 'left',
-		},
-		"toolbox": {
-			"show": false,
-		},
-		"xAxis": {
-			"type": 'category',
-			"axisLabel": {
-				"color": '#666666'
-			},
-			"axisLine": {
-				"lineStyle": {
-					"color": '#CCCCCC'
-				}
-			},
-			"boundaryGap": true,
-			"data": []
-		},
-		"yAxis": {
-			"type": 'value',
-			"axisTick": {
-				"show": false,
-			},
-			"axisLabel": {
-				"color": '#666666'
-			},
-			"axisLine": {
-				"lineStyle": {
-					"color": '#CCCCCC'
-				}
-			},
-		},
-		"seriesTemplate": {
-			"name": '',
-			"type": 'bar',
-			"data": [],
-			"barwidth": 20,
-			"label": {
-				"show": true,
-        "color": "#666666",
-				"position": 'top',
-			},
-		},
-	},
-	"line": {
-		"color": color,
-		"title": {
-			"text": ''
-		},
-		"tooltip": {
-			"trigger": 'axis'
-		},
-		"grid": {
-			"top": 30,
-			"bottom": 50,
-			"right": 15,
-			"left": 40
-		},
-		"legend": {
-			"bottom": 'left',
-		},
-		"toolbox": {
-			"show": false,
-		},
-		"xAxis": {
-			"type": 'category',
-			"axisLabel": {
-				"color": '#666666'
-			},
-			"axisLine": {
-				"lineStyle": {
-					"color": '#CCCCCC'
-				}
-			},
-			"boundaryGap": true,
-			"data": []
-		},
-		"yAxis": {
-			"type": 'value',
-			"axisTick": {
-				"show": false,
-			},
-			"axisLabel": {
-				"color": '#666666'
-			},
-			"axisLine": {
-				"lineStyle": {
-					"color": '#CCCCCC'
-				}
-			},
-		},
-		"seriesTemplate": {
-			"name": '',
-			"type": 'line',
-			"data": [],
-			"barwidth": 20,
-			"label": {
-				"show": true,
-        "color": "#666666",
-				"position": 'top',
-			},
-		},
-	},
-	"area": {
-		"color": color,
-		"title": {
-			"text": ''
-		},
-		"tooltip": {
-			"trigger": 'axis'
-		},
-		"grid": {
-			"top": 30,
-			"bottom": 50,
-			"right": 15,
-			"left": 40
-		},
-		"legend": {
-			"bottom": 'left',
-		},
-		"toolbox": {
-			"show": false,
-		},
-		"xAxis": {
-			"type": 'category',
-			"axisLabel": {
-				"color": '#666666'
-			},
-			"axisLine": {
-				"lineStyle": {
-					"color": '#CCCCCC'
-				}
-			},
-			"boundaryGap": true,
-			"data": []
-		},
-		"yAxis": {
-			"type": 'value',
-			"axisTick": {
-				"show": false,
-			},
-			"axisLabel": {
-				"color": '#666666'
-			},
-			"axisLine": {
-				"lineStyle": {
-					"color": '#CCCCCC'
-				}
-			},
-		},
-		"seriesTemplate": {
-			"name": '',
-			"type": 'line',
-			"data": [],
-			"areaStyle": {},
-			"label": {
-				"show": true,
-        "color": "#666666",
-				"position": 'top',
-			},
-		},
-	},
-	"pie": {
-		"color": color,
-		"title": {
-			"text": ''
-		},
-		"tooltip": {
-			"trigger": 'item'
-		},
-		"grid": {
-			"top": 40,
-			"bottom": 30,
-			"right": 15,
-			"left": 15
-		},
-		"legend": {
-			"bottom": 'left',
-		},
-		"seriesTemplate": {
-			"name": '',
-			"type": 'pie',
-			"data": [],
-			"radius": '50%',
-			"label": {
-				"show": true,
-        "color": "#666666",
-				"position": 'top',
-			},
-		},
-	},
-	"ring": {
-		"color": color,
-		"title": {
-			"text": ''
-		},
-		"tooltip": {
-			"trigger": 'item'
-		},
-		"grid": {
-			"top": 40,
-			"bottom": 30,
-			"right": 15,
-			"left": 15
-		},
-		"legend": {
-			"bottom": 'left',
-		},
-		"seriesTemplate": {
-			"name": '',
-			"type": 'pie',
-			"data": [],
-			"radius": ['40%', '70%'],
-			"avoidLabelOverlap": false,
-			"label": {
-				"show": true,
-        "color": "#666666",
-				"position": 'top',
-			},
-			"labelLine": {
-				"show": true
-			},
-		},
-	},
-	"rose": {
-		"color": color,
-		"title": {
-			"text": ''
-		},
-		"tooltip": {
-			"trigger": 'item'
-		},
-		"legend": {
-			"top": 'bottom'
-		},
-		"seriesTemplate": {
-			"name": '',
-			"type": 'pie',
-			"data": [],
-			"radius": "55%",
-			"center": ['50%', '50%'],
-			"rosetype": 'area',
-		},
-	},
-	"funnel": {
-		"color": color,
-		"title": {
-			"text": ''
-		},
-		"tooltip": {
-			"trigger": 'item',
-			"formatter": "{b} : {c}%"
-		},
-		"legend": {
-			"top": 'bottom'
-		},
-		"seriesTemplate": {
-			"name": '',
-			"type": 'funnel',
-			"left": '10%',
-			"top": 60,
-			"bottom": 60,
-			"width": '80%',
-			"min": 0,
-			"max": 100,
-			"minSize": '0%',
-			"maxSize": '100%',
-			"sort": 'descending',
-			"gap": 2,
-			"label": {
-				"show": true,
-				"position": 'inside'
-			},
-			"labelLine": {
-				"length": 10,
-				"lineStyle": {
-					"width": 1,
-					"type": 'solid'
-				}
-			},
-			"itemStyle": {
-				"bordercolor": '#fff',
-				"borderwidth": 1
-			},
-			"emphasis": {
-				"label": {
-					"fontSize": 20
-				}
-			},
-			"data": [],
-		},
-	},
-	"gauge": {
-		"color": color,
-		"tooltip": {
-        "formatter": '{a} <br/>{b} : {c}%'
-    },
-		"seriesTemplate": {
-			"name": '业务指标',
-      "type": 'gauge',
-      "detail": {"formatter": '{value}%'},
-      "data": [{"value": 50, "name": '完成率'}]
-		},
-	},
-	"candle": {
-		"xAxis": {
-			"data": []
-		},
-		"yAxis": {},
-		"color": color,
-		"title": {
-			"text": ''
-		},
-		"dataZoom": [{
-				"type": 'inside',
-				"xAxisIndex": [0, 1],
-				"start": 10,
-				"end": 100
-			},
-			{
-				"show": true,
-				"xAxisIndex": [0, 1],
-				"type": 'slider',
-				"bottom": 10,
-				"start": 10,
-				"end": 100
-			}
-		],
-		"seriesTemplate": {
-			"name": '',
-			"type": 'k',
-			"data": [],
-		},
-	}
-}
-
-export default cfe;

+ 0 - 584
uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js

@@ -1,584 +0,0 @@
-/*
- * uCharts®
- * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台
- * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.
- * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- * 复制使用请保留本段注释,感谢支持开源!
- * 
- * uCharts®官方网站
- * https://www.uCharts.cn
- * 
- * 开源地址:
- * https://gitee.com/uCharts/uCharts
- * 
- * uni-app插件市场地址:
- * http://ext.dcloud.net.cn/plugin?id=271
- * 
- */
-
-// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性
-const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];
-
-//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改
-const formatDateTime = (timeStamp, returnType)=>{
-  var date = new Date();
-  date.setTime(timeStamp * 1000);
-  var y = date.getFullYear();
-  var m = date.getMonth() + 1;
-  m = m < 10 ? ('0' + m) : m;
-  var d = date.getDate();
-  d = d < 10 ? ('0' + d) : d;
-  var h = date.getHours();
-  h = h < 10 ? ('0' + h) : h;
-  var minute = date.getMinutes();
-  var second = date.getSeconds();
-  minute = minute < 10 ? ('0' + minute) : minute;
-  second = second < 10 ? ('0' + second) : second;
-  if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;}
-  if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;}
-  if(returnType == 'h:m'){return  h +':' + minute;}
-  if(returnType == 'h:m:s'){return  h +':' + minute +':' + second;}
-  return [y, m, d, h, minute, second];
-}
-
-const cfu = {
-  //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可
-	"type":["pie","ring","rose","word","funnel","map","arcbar","line","column","bar","area","radar","gauge","candle","mix","tline","tarea","scatter","bubble","demotype"],
-	"range":["饼状图","圆环图","玫瑰图","词云图","漏斗图","地图","圆弧进度条","折线图","柱状图","条状图","区域图","雷达图","仪表盘","K线图","混合图","时间轴折线","时间轴区域","散点图","气泡图","自定义类型"],
-  //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype"
-  //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories
-	"categories":["line","column","bar","area","radar","gauge","candle","mix","demotype"],
-  //instance为实例变量承载属性,不要删除
-  "instance":{},
-  //option为opts及eopts承载属性,不要删除
-  "option":{},
-  //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
-  "formatter":{
-    "yAxisDemo1":function(val){return val+'元'},
-    "yAxisDemo2":function(val){return val.toFixed(2)},
-    "xAxisDemo1":function(val){return val+'年'},
-    "xAxisDemo2":function(val){return formatDateTime(val,'h:m')},
-    "seriesDemo1":function(val){return val+'元'},
-    "tooltipDemo1":function(item, category, index, opts){
-      if(index==0){
-      	return '随便用'+item.data+'年'
-      }else{
-      	return '其他我没改'+item.data+'天'
-      }
-    },
-    "pieDemo":function(val, index, series){
-      if(index !== undefined){
-        return series[index].name+':'+series[index].data+'元'
-      }
-    },
-  },
-  //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。
-  "demotype":{
-    //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置
-    "type": "line",
-    "color": color,
-    "padding": [15,10,0,15],
-    "xAxis": {
-      "disableGrid": true,
-    },
-    "yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-    },
-    "legend": {
-    },
-    "extra": {
-    	"line": {
-    		"type": "curve",
-    		"width": 2
-    	},
-    }
-  },
-  //下面是自定义配置,请添加项目所需的通用配置
-	"pie":{
-		"type": "pie",
-    "color": color,
-		"padding": [5,5,5,5],
-		"extra": {
-			"pie": {
-				"activeOpacity": 0.5,
-				"activeRadius": 10,
-				"offsetAngle": 0,
-				"labelWidth": 15,
-				"border": true,
-				"borderWidth": 3,
-				"borderColor": "#FFFFFF"
-			},
-		}
-	},
-	"ring":{
-		"type": "ring",
-    "color": color,
-		"padding": [5,5,5,5],
-		"rotate": false,
-		"dataLabel": true,
-		"legend": {
-			"show": true,
-			"position": "right",
-      "lineHeight": 25,
-		},
-		"title": {
-			"name": "收益率",
-			"fontSize": 15,
-			"color": "#666666"
-		},
-		"subtitle": {
-			"name": "70%",
-			"fontSize": 25,
-			"color": "#7cb5ec"
-		},
-		"extra": {
-			"ring": {
-				"ringWidth":30,
-				"activeOpacity": 0.5,
-				"activeRadius": 10,
-				"offsetAngle": 0,
-				"labelWidth": 15,
-				"border": true,
-				"borderWidth": 3,
-				"borderColor": "#FFFFFF"
-			},
-		},
-	},
-	"rose":{
-		"type": "rose",
-    "color": color,
-		"padding": [5,5,5,5],
-		"legend": {
-			"show": true,
-			"position": "left",
-      "lineHeight": 25,
-		},
-		"extra": {
-			"rose": {
-				"type": "area",
-				"minRadius": 50,
-				"activeOpacity": 0.5,
-				"activeRadius": 10,
-				"offsetAngle": 0,
-				"labelWidth": 15,
-				"border": false,
-				"borderWidth": 2,
-				"borderColor": "#FFFFFF"
-			},
-		}
-	},
-	"word":{
-		"type": "word",
-    "color": color,
-		"extra": {
-			"word": {
-				"type": "normal",
-				"autoColors": false
-			}
-		}
-	},
-	"funnel":{
-		"type": "funnel",
-    "color": color,
-		"padding": [15,15,0,15],
-		"extra": {
-			"funnel": {
-				"activeOpacity": 0.3,
-				"activeWidth": 10,
-				"border": true,
-				"borderWidth": 2,
-				"borderColor": "#FFFFFF",
-				"fillOpacity": 1,
-				"labelAlign": "right"
-			},
-		}
-	},
-	"map":{
-		"type": "map",
-    "color": color,
-		"padding": [0,0,0,0],
-    "dataLabel": true,
-		"extra": {
-			"map": {
-				"border": true,
-				"borderWidth": 1,
-				"borderColor": "#666666",
-				"fillOpacity": 0.6,
-				"activeBorderColor": "#F04864",
-				"activeFillColor": "#FACC14",
-				"activeFillOpacity": 1
-			},
-		}
-	},
-	"arcbar":{
-		"type": "arcbar",
-    "color": color,
-		"title": {
-			"name": "百分比",
-			"fontSize": 25,
-			"color": "#00FF00"
-		},
-		"subtitle": {
-			"name": "默认标题",
-			"fontSize": 15,
-			"color": "#666666"
-		},
-		"extra": {
-			"arcbar": {
-				"type": "default",
-				"width": 12,
-				"backgroundColor": "#E9E9E9",
-				"startAngle": 0.75,
-				"endAngle": 0.25,
-				"gap": 2
-			}
-		}
-	},
-	"line":{
-		"type": "line",
-    "color": color,
-		"padding": [15,10,0,15],
-		"xAxis": {
-      "disableGrid": true,
-		},
-		"yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-		},
-		"legend": {
-		},
-		"extra": {
-			"line": {
-				"type": "straight",
-				"width": 2
-			},
-		}
-	},
-  "tline":{
-  	"type": "line",
-    "color": color,
-  	"padding": [15,10,0,15],
-  	"xAxis": {
-      "disableGrid": false,
-      "boundaryGap":"justify",
-  	},
-  	"yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-      "data":[
-        {
-          "min":0,
-          "max":80
-        }
-      ]
-  	},
-  	"legend": {
-  	},
-  	"extra": {
-  		"line": {
-  			"type": "curve",
-  			"width": 2
-  		},
-  	}
-  },
-  "tarea":{
-  	"type": "area",
-    "color": color,
-  	"padding": [15,10,0,15],
-  	"xAxis": {
-      "disableGrid": true,
-      "boundaryGap":"justify",
-  	},
-  	"yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-      "data":[
-        {
-          "min":0,
-          "max":80
-        }
-      ]
-  	},
-  	"legend": {
-  	},
-  	"extra": {
-  		"area": {
-  			"type": "curve",
-  			"opacity": 0.2,
-  			"addLine": true,
-  			"width": 2,
-  			"gradient": true
-  		},
-  	}
-  },
-	"column":{
-		"type": "column",
-    "color": color,
-		"padding": [15,15,0,5],
-		"xAxis": {
-      "disableGrid": true,
-		},
-		"yAxis": {
-      "data":[{"min":0}]
-		},
-		"legend": {
-		},
-		"extra": {
-			"column": {
-				"type": "group",
-				"width": 30,
-				"meterBorde": 1,
-				"meterFillColor": "#FFFFFF",
-				"activeBgColor": "#000000",
-				"activeBgOpacity": 0.08
-			},
-		}
-	},
-  "bar":{
-  	"type": "bar",
-    "color": color,
-  	"padding": [15,30,0,5],
-  	"xAxis": {
-      "boundaryGap":"justify",
-      "disableGrid":false,
-      "min":0,
-      "axisLine":false
-  	},
-  	"yAxis": {
-  	},
-  	"legend": {
-  	},
-  	"extra": {
-  		"bar": {
-  			"type": "group",
-  			"width": 30,
-  			"meterBorde": 1,
-  			"meterFillColor": "#FFFFFF",
-  			"activeBgColor": "#000000",
-  			"activeBgOpacity": 0.08
-  		},
-  	}
-  },
-	"area":{
-		"type": "area",
-		"color": color,
-		"padding": [15,15,0,15],
-		"xAxis": {
-      "disableGrid": true,
-		},
-		"yAxis": {
-      "gridType": "dash",
-      "dashLength": 2,
-		},
-		"legend": {
-		},
-		"extra": {
-			"area": {
-				"type": "straight",
-				"opacity": 0.2,
-				"addLine": true,
-				"width": 2,
-				"gradient": false
-			},
-		}
-	},
-	"radar":{
-		"type": "radar",
-		"color": color,
-		"padding": [5,5,5,5],
-    "dataLabel": false,
-		"legend": {
-			"show": true,
-			"position": "right",
-      "lineHeight": 25,
-		},
-		"extra": {
-			"radar": {
-				"gridType": "radar",
-				"gridColor": "#CCCCCC",
-				"gridCount": 3,
-				"opacity": 0.2,
-				"max": 200
-			},
-		}
-	},
-	"gauge":{
-		"type": "gauge",
-		"color": color,
-		"title": {
-			"name": "66Km/H",
-			"fontSize": 25,
-			"color": "#2fc25b",
-			"offsetY": 50
-		},
-		"subtitle": {
-			"name": "实时速度",
-			"fontSize": 15,
-			"color": "#1890ff",
-			"offsetY": -50
-		},
-		"extra": {
-			"gauge": {
-				"type": "default",
-				"width": 30,
-				"labelColor": "#666666",
-				"startAngle": 0.75,
-				"endAngle": 0.25,
-				"startNumber": 0,
-				"endNumber": 100,
-				"labelFormat": "",
-				"splitLine": {
-					"fixRadius": 0,
-					"splitNumber": 10,
-					"width": 30,
-					"color": "#FFFFFF",
-					"childNumber": 5,
-					"childWidth": 12
-				},
-				"pointer": {
-					"width": 24,
-					"color": "auto"
-				}
-			}
-		}
-	},
-	"candle":{
-		"type": "candle",
-		"color": color,
-		"padding": [15,15,0,15],
-		"enableScroll": true,
-		"enableMarkLine": true,
-		"dataLabel": false,
-		"xAxis": {
-			"labelCount": 4,
-			"itemCount": 40,
-			"disableGrid": true,
-			"gridColor": "#CCCCCC",
-			"gridType": "solid",
-			"dashLength": 4,
-			"scrollShow": true,
-			"scrollAlign": "left",
-			"scrollColor": "#A6A6A6",
-			"scrollBackgroundColor": "#EFEBEF"
-		},
-		"yAxis": {
-		},
-		"legend": {
-		},
-		"extra": {
-			"candle": {
-				"color": {
-					"upLine": "#f04864",
-					"upFill": "#f04864",
-					"downLine": "#2fc25b",
-					"downFill": "#2fc25b"
-				},
-				"average": {
-					"show": true,
-					"name": ["MA5","MA10","MA30"],
-					"day": [5,10,20],
-					"color": ["#1890ff","#2fc25b","#facc14"]
-				}
-			},
-			"markLine": {
-				"type": "dash",
-				"dashLength": 5,
-				"data": [
-					{
-						"value": 2150,
-						"lineColor": "#f04864",
-						"showLabel": true
-					},
-					{
-						"value": 2350,
-						"lineColor": "#f04864",
-						"showLabel": true
-					}
-				]
-			}
-		}
-	},
-	"mix":{
-		"type": "mix",
-		"color": color,
-		"padding": [15,15,0,15],
-		"xAxis": {
-      "disableGrid": true,
-		},
-		"yAxis": {
-			"disabled": false,
-			"disableGrid": false,
-			"splitNumber": 5,
-			"gridType": "dash",
-			"dashLength": 4,
-			"gridColor": "#CCCCCC",
-			"padding": 10,
-			"showTitle": true,
-			"data": []
-		},
-		"legend": {
-		},
-		"extra": {
-			"mix": {
-				"column": {
-					"width": 20
-				}
-			},
-		}
-	},
-	"scatter":{
-		"type": "scatter",
-		"color":color,
-		"padding":[15,15,0,15],
-    "dataLabel":false,
-    "xAxis": {
-      "disableGrid": false,
-      "gridType":"dash",
-      "splitNumber":5,
-      "boundaryGap":"justify",
-      "min":0
-    },
-    "yAxis": {
-      "disableGrid": false,
-      "gridType":"dash",
-    },
-    "legend": {
-    },
-    "extra": {
-    	"scatter": {
-    	},
-    }
-	},
-	"bubble":{
-		"type": "bubble",
-		"color":color,
-		"padding":[15,15,0,15],
-    "xAxis": {
-      "disableGrid": false,
-      "gridType":"dash",
-      "splitNumber":5,
-      "boundaryGap":"justify",
-      "min":0,
-      "max":250
-    },
-    "yAxis": {
-      "disableGrid": false,
-      "gridType":"dash",
-      "data":[{
-        "min":0,
-        "max":150
-      }]
-    },
-    "legend": {
-    },
-    "extra": {
-    	"bubble": {
-        "border":2,
-        "opacity": 0.5,
-    	},
-    }
-	}
-}
-
-export default cfu;

+ 0 - 12
uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md

@@ -1,12 +0,0 @@
-# uCharts JSSDK说明
-1、如不使用uCharts组件,可直接引用u-charts.js,打包编译后会`自动压缩`,压缩后体积约为`98kb`。
-2、如果100kb的体积仍需压缩,请手动删除u-charts.js内您不需要的图表类型,如k线图candle。
-3、config-ucharts.js为uCharts组件的用户配置文件,升级前请`自行备份config-ucharts.js`文件,以免被强制覆盖。
-3、config-echarts.js为ECharts组件的用户配置文件,升级前请`自行备份config-echarts.js`文件,以免被强制覆盖。
-
-# v1.0转v2.0注意事项
-1、opts.colors变更为opts.color
-2、ring圆环图的扩展配置由extra.pie变更为extra.ring
-3、混合图借用的扩展配置由extra.column变更为extra.mix.column
-4、全部涉及到format的格式化属性变更为formatter
-5、不需要再传canvasId及$this参数,如果通过uChats获取context,可能会导致this实例混乱,导致小程序开发者工具报错。如果不使用qiun-data-charts官方组件,需要在new uCharts()实例化之前,自行获取canvas的上下文context(ctx),并传入new中的context(opts.context)。为了能跨更多的端,给您带来的不便敬请谅解。

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 6809
uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js


+ 0 - 201
uni_modules/qiun-data-charts/license.md

@@ -1,201 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 84
uni_modules/qiun-data-charts/package.json

@@ -1,84 +0,0 @@
-{
-  "id": "qiun-data-charts",
-  "displayName": "秋云 ucharts echarts 高性能跨全端图表组件",
-  "version": "2.3.6-20211201",
-  "description": "uCharts v2.3上线,支持nvue!全新官方图表组件,支持H5及APP用ECharts渲染图表,uniapp可视化首选组件",
-  "keywords": [
-    "ucharts",
-    "echarts",
-    "f2",
-    "图表",
-    "可视化"
-],
-  "repository": "https://gitee.com/uCharts/uCharts",
-  "engines": {
-    "HBuilderX": "^3.1.0"
-  },
-  "dcloudext": {
-    "category": [
-        "前端组件",
-        "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": "474119"
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "插件不采集任何数据",
-      "permissions": "无"
-    },
-    "npmurl": ""
-  },
-  "uni_modules": {
-    "dependencies": [],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "y",
-          "联盟": "y"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 451
uni_modules/qiun-data-charts/readme.md


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 23
uni_modules/qiun-data-charts/static/app-plus/echarts.min.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 23
uni_modules/qiun-data-charts/static/h5/echarts.min.js


uview-ui/LICENSE → uni_modules/uview-ui/LICENSE


+ 5 - 0
uview-ui/README.md

@@ -4,6 +4,11 @@
 <h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView</h3>
 <h3 align="center">多平台快速开发的UI框架</h3>
 
+## 一起推动uView发展
+
+uView正在参与开源中国的“年度最佳项目”评选,目前投票进入了最后一个阶段(之前投过票的现在也可以投票),
+我们不分昼夜的努力,恳请同学们能为我们投一票,uView来源于社区,也希望社区能一起推动它的发展,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
 
 ## 说明
 

+ 53 - 0
uview-ui/changelog.md

@@ -1,3 +1,56 @@
+## 2.0.19(2021-12-29)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化微信小程序包体积可在微信中预览,请升级HbuilderX3.3.4,同时在“运行->运行到小程序模拟器”中勾选“运行时是否压缩代码”
+2. 优化微信小程序setData性能,处理某些方法如$u.route()无法在模板中使用的问题
+3. navbar添加autoBack参数
+4. 允许avatar组件的事件冒泡
+5. 修复cell组件报错问题
+6. 其他修复
+## 2.0.18(2021-12-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复app端编译报错问题
+2. 重新处理微信小程序端setData过大的性能问题
+3. 修复边框问题
+4. 修复最大最小月份不大于0则没有数据出现的问题
+5. 修复SwipeAction微信小程序端无法上下滑动问题
+6. 修复input的placeholder在小程序端默认显示为true问题
+7. 修复divider组件click事件无效问题
+8. 修复u-code-input maxlength 属性值为 String 类型时显示异常
+9. 修复当 grid只有 1到2时 在小程序端algin设置无效的问题
+10. 处理form-item的label为top时,取消错误提示的左边距
+11. 其他修复
+## 2.0.17(2021-12-26)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 解决HBuilderX3.3.3.20211225版本导致的样式问题
+2. calendar日历添加monthNum参数
+3. navbar添加center slot
+## 2.0.16(2021-12-25)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 解决微信小程序setData性能问题
+2. 修复count-down组件change事件不触发问题
+## 2.0.15(2021-12-21)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复Cell单元格titleWidth无效
+2. 修复cheakbox组件ischecked不更新
+3. 修复keyboard是否显示"."按键默认值问题
+4. 修复number-keyboard是否显示键盘的"."符号问题
+5. 修复Input输入框 readonly无效
+6. 修复u-avatar 导致打包app、H5时候报错问题
+7. 修复Upload上传deletable无效
+8. 修复upload当设置maxSize时无效的问题
+9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题
+10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星
 ## 2.0.13(2021-12-14)
 ## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
 

uview-ui/components/u--form/u--form.vue → uni_modules/uview-ui/components/u--form/u--form.vue


+ 8 - 1
uview-ui/components/u--image/u--image.vue

@@ -20,7 +20,14 @@
 		@click="$emit('click')"
 		@error="$emit('error')"
 		@load="$emit('load')"
-	></uvImage>
+	>
+		<template v-slot:loading>
+			<slot name="loading"></slot>
+		</template>
+		<template v-slot:error>
+			<slot name="error"></slot>
+		</template>
+	</uvImage>
 </template>
 
 <script>

uview-ui/components/u--input/u--input.vue → uni_modules/uview-ui/components/u--input/u--input.vue


uview-ui/components/u--text/u--text.vue → uni_modules/uview-ui/components/u--text/u--text.vue


uview-ui/components/u--textarea/u--textarea.vue → uni_modules/uview-ui/components/u--textarea/u--textarea.vue


uview-ui/components/u-action-sheet/props.js → uni_modules/uview-ui/components/u-action-sheet/props.js


uview-ui/components/u-action-sheet/u-action-sheet.vue → uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue


uview-ui/components/u-album/props.js → uni_modules/uview-ui/components/u-album/props.js


+ 2 - 2
uview-ui/components/u-album/u-album.vue

@@ -143,12 +143,12 @@ export default {
             return arr
         },
         imageWidth() {
-            return this.$u.addUnit(
+            return uni.$u.addUnit(
                 this.urls.length === 1 ? this.singleWidth : this.multipleSize
             )
         },
         imageHeight() {
-            return this.$u.addUnit(
+            return uni.$u.addUnit(
                 this.urls.length === 1 ? this.singleHeight : this.multipleSize
             )
         },

uview-ui/components/u-alert/props.js → uni_modules/uview-ui/components/u-alert/props.js


uview-ui/components/u-alert/u-alert.vue → uni_modules/uview-ui/components/u-alert/u-alert.vue


uview-ui/components/u-avatar-group/props.js → uni_modules/uview-ui/components/u-avatar-group/props.js


uview-ui/components/u-avatar-group/u-avatar-group.vue → uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue


uview-ui/components/u-avatar/props.js → uni_modules/uview-ui/components/u-avatar/props.js


+ 11 - 6
uview-ui/components/u-avatar/u-avatar.vue

@@ -10,6 +10,7 @@
 		@tap.stop="clickHandler"
 	>
 		<slot>
+			<!-- #ifdef MP-WEIXIN || MP-QQ || MP-BAIDU  -->
 			<open-data
 				v-if="mpAvatar && allowMp"
 				type="userAvatarUrl"
@@ -18,6 +19,10 @@
 					height: $u.addUnit(size)
 				}]"
 			/>
+			<!-- #endif -->
+			<!-- #ifndef MP-WEIXIN && MP-QQ && MP-BAIDU  -->
+			<template v-if="mpAvatar && allowMp"></template>
+			<!-- #endif -->
 			<u-icon
 				v-else-if="icon"
 				:name="icon"
@@ -56,8 +61,8 @@
 	 * Avatar  头像
 	 * @description 本组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所。
 	 * @tutorial https://www.uviewui.com/components/avatar.html
-	 * 
-	 * @property {String}			src				头像路径,如加载失败,将会显示默认头像(不能为相对路径) 
+	 *
+	 * @property {String}			src				头像路径,如加载失败,将会显示默认头像(不能为相对路径)
 	 * @property {String}			shape			头像形状  ( circle (默认) | square)
 	 * @property {String | Number}	size			头像尺寸,可以为指定字符串(large, default, mini),或者数值 (默认 40 )
 	 * @property {String}			mode			头像图片的裁剪类型,与uni的image组件的mode参数一致,如效果达不到需求,可尝试传widthFix值 (默认 'scaleToFill' )
@@ -65,14 +70,14 @@
 	 * @property {String}			bgColor			背景颜色,一般显示文字时用 (默认 '#c0c4cc' )
 	 * @property {String}			color			文字颜色 (默认 '#ffffff' )
 	 * @property {String | Number}	fontSize		文字大小  (默认 18 )
-	 * @property {String}			icon			显示的图标 
+	 * @property {String}			icon			显示的图标
 	 * @property {Boolean}			mpAvatar		显示小程序头像,只对百度,微信,QQ小程序有效  (默认 false )
 	 * @property {Boolean}			randomBgColor	是否使用随机背景色  (默认 false )
-	 * @property {String}			defaultUrl		加载失败的默认头像(组件有内置默认图片)  
-	 * @property {String | Number}	colorIndex		如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 
+	 * @property {String}			defaultUrl		加载失败的默认头像(组件有内置默认图片)
+	 * @property {String | Number}	colorIndex		如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间
 	 * @property {String}			name			组件标识符  (默认 'level' )
 	 * @property {Object}			customStyle		定义需要用到的外部样式
-	 * 
+	 *
 	 * @event    {Function}        click       点击组件时触发   index: 用户传递的标识符
 	 * @example  <u-avatar :src="src" mode="square"></u-avatar>
 	 */

uview-ui/components/u-back-top/props.js → uni_modules/uview-ui/components/u-back-top/props.js


uview-ui/components/u-back-top/u-back-top.vue → uni_modules/uview-ui/components/u-back-top/u-back-top.vue


uview-ui/components/u-badge/props.js → uni_modules/uview-ui/components/u-badge/props.js


uview-ui/components/u-badge/u-badge.vue → uni_modules/uview-ui/components/u-badge/u-badge.vue


+ 0 - 0
uview-ui/components/u-button/nvue.scss


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio