Browse Source

手机端框架的整理及图表等组件的使用

yuedefeng 7 years ago
parent
commit
fb91b63aa6
58 changed files with 3639 additions and 8816 deletions
  1. 2 0
      src/dashoo.cn/frontend_app/.gitignore
  2. 1 1
      src/dashoo.cn/frontend_app/common/http/config.js
  3. 52 1
      src/dashoo.cn/frontend_app/common/util.js
  4. 32 0
      src/dashoo.cn/frontend_app/components/uni-load-more/readme.md
  5. 193 0
      src/dashoo.cn/frontend_app/components/uni-load-more/uni-load-more.vue
  6. 187 0
      src/dashoo.cn/frontend_app/components/uni-media-list/uni-media-list.vue
  7. 2103 0
      src/dashoo.cn/frontend_app/components/wx-charts/wxcharts.js
  8. 33 14
      src/dashoo.cn/frontend_app/pages.json
  9. 115 0
      src/dashoo.cn/frontend_app/pages/detail/detail.vue
  10. 7 6
      src/dashoo.cn/frontend_app/pages/main/index.vue
  11. 345 75
      src/dashoo.cn/frontend_app/pages/main/main.vue
  12. 213 0
      src/dashoo.cn/frontend_app/pages/ucenter/ucenter.vue
  13. 356 0
      src/dashoo.cn/frontend_app/pages/wxcharts/wxcharts.vue
  14. 0 676
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappchooselocation.html
  15. 0 283
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappcoverview.html
  16. 0 6
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappes6.js
  17. 0 243
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappmap.html
  18. BIN
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappmarker@3x.png
  19. 0 93
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappopenlocation.html
  20. 0 1
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniapppicker.html
  21. 0 126
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappscan.html
  22. 0 17
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappservice.html
  23. BIN
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappsuccess.png
  24. 0 22
      src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappview.html
  25. 0 1702
      src/dashoo.cn/frontend_app/unpackage/resources/www/app-service.js
  26. 0 5256
      src/dashoo.cn/frontend_app/unpackage/resources/www/app-view.js
  27. 0 1
      src/dashoo.cn/frontend_app/unpackage/resources/www/manifest.json
  28. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportairfoamgenerator/datalist.js
  29. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportairfoamgenerator/dataopera.js
  30. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportatmosvalve/datalist.js
  31. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportatmosvalve/dataopera.js
  32. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportbeampumpingUnits/dataopera.js
  33. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportelecground/datalist.js
  34. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportelecground/dataopera.js
  35. 0 13
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportequipotent/datalist.js
  36. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportequipotent/dataopera.js
  37. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reporthydraulicsafe/datalist.js
  38. 0 13
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reporthydraulicsafe/dataopera.js
  39. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportleakprotect/datalist.js
  40. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportleakprotect/dataopera.js
  41. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportlightprotect/datalist.js
  42. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportlightprotect/dataopera.js
  43. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportnobeampumpingUnits/dataopera.js
  44. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportzuhq/datalist.js
  45. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportzuhq/dataopera.js
  46. 0 13
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/login/login.js
  47. 0 13
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/main/index.js
  48. 0 13
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/main/main.js
  49. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/pwd/pwd.js
  50. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/reg/reg.js
  51. 0 12
      src/dashoo.cn/frontend_app/unpackage/resources/www/pages/user/user.js
  52. BIN
      src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/home.png
  53. BIN
      src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/homeHL.png
  54. BIN
      src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/qq.png
  55. BIN
      src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/sinaweibo.png
  56. BIN
      src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/user.png
  57. BIN
      src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/userHL.png
  58. BIN
      src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/weixin.png

+ 2 - 0
src/dashoo.cn/frontend_app/.gitignore

@@ -9,3 +9,5 @@ npm-debug.log
 
 # Nuxt generate
 dist
+
+unpackage

+ 1 - 1
src/dashoo.cn/frontend_app/common/http/config.js

@@ -2,7 +2,7 @@
 export default {	
     //	开发者服务器接口地址
     url: "http://47.92.212.59:10092/api",
-	// url: "http://127.0.0.1:10091/api",
+	//url: "http://127.0.0.1:10091/api",
     //	请求的参数	
     data: {},
     //	设置请求的 header,header 中不能设置 Referer。

+ 52 - 1
src/dashoo.cn/frontend_app/common/util.js

@@ -84,10 +84,61 @@ var getDate = function(type) {
 	return `${year}-${month}-${day}`;
 }
 
+function friendlyDate(timestamp) {
+	var formats = {
+		'year': '%n% 年前',
+		'month': '%n% 月前',
+		'day': '%n% 天前',
+		'hour': '%n% 小时前',
+		'minute': '%n% 分钟前',
+		'second': '%n% 秒前',
+	};
+
+	var now = Date.now();
+	var seconds = Math.floor((now - timestamp) / 1000);
+	var minutes = Math.floor(seconds / 60);
+	var hours = Math.floor(minutes / 60);
+	var days = Math.floor(hours / 24);
+	var months = Math.floor(days / 30);
+	var years = Math.floor(months / 12);
+
+	var diffType = '';
+	var diffValue = 0;
+	if (years > 0) {
+		diffType = 'year';
+		diffValue = years;
+	} else {
+		if (months > 0) {
+			diffType = 'month';
+			diffValue = months;
+		} else {
+			if (days > 0) {
+				diffType = 'day';
+				diffValue = days;
+			} else {
+				if (hours > 0) {
+					diffType = 'hour';
+					diffValue = hours;
+				} else {
+					if (minutes > 0) {
+						diffType = 'minute';
+						diffValue = minutes;
+					} else {
+						diffType = 'second';
+						diffValue = seconds === 0 ? (seconds = 1) : seconds;
+					}
+				}
+			}
+		}
+	}
+	return formats[diffType].replace('%n%', diffValue);
+}
+
 
 module.exports = {
 	formatTime: formatTime,
 	formatLocation: formatLocation,
 	dateUtils: dateUtils,
-	getDate: getDate
+	getDate: getDate,
+	friendlyDate: friendlyDate
 }

+ 32 - 0
src/dashoo.cn/frontend_app/components/uni-load-more/readme.md

@@ -0,0 +1,32 @@
+### LoadMore 加载更多
+
+用于列表中,做滚动加载使用,展示 loading 的各种状态,组件名:``uni-load-more``,代码块: uLoadMore。
+
+**使用方式:**
+
+在 ``script`` 中引用组件 
+
+```javascript
+import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue"
+export default {
+    components: {uniLoadMore}
+}
+```
+
+在 ``template`` 中使用组件
+
+```html
+<uni-load-more status="loading"></uni-load-more>
+```
+
+实际效果参考:[https://github.com/dcloudio/uni-ui](https://github.com/dcloudio/uni-ui)
+
+**属性说明:**
+
+|属性名		|类型|默认值	|说明|
+|---|----|---|---|
+|status	|String	|more|loading 的状态,可选值:more(loading前)、loading(loading中)、noMore(没有更多了)|
+|show-icon	|Boolean	|true|是否显示 loading 图标|
+|color	|String	|#777777|图标和文字颜色	|
+|content-text	|Object	|```{contentdown: "上拉显示更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"}```|各状态文字说明|
+

+ 193 - 0
src/dashoo.cn/frontend_app/components/uni-load-more/uni-load-more.vue

@@ -0,0 +1,193 @@
+<template>
+	<view class="uni-load-more">
+		<view class="uni-load-more__img" v-show="status === 'loading' && showIcon">
+			<view class="load1">
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+			</view>
+			<view class="load2">
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+			</view>
+			<view class="load3">
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+			</view>
+		</view>
+		<text class="uni-load-more__text" :style="{color:color}">{{status === 'more' ? contentText.contentdown : (status === 'loading' ? contentText.contentrefresh : contentText.contentnomore)}}</text>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "uni-load-more",
+		props: {
+			status: {
+				//上拉的状态:more-loading前;loading-loading中;noMore-没有更多了
+				type: String,
+				default: 'more'
+			},
+			showIcon: {
+				type: Boolean,
+				default: true
+			},
+			color: {
+				type: String,
+				default: "#777777"
+			},
+			contentText: {
+				type: Object,
+				default () {
+					return {
+						contentdown: "上拉显示更多",
+						contentrefresh: "正在加载...",
+						contentnomore: "没有更多数据了"
+					};
+				}
+			}
+		},
+		data() {
+			return {}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.uni-load-more {
+		display: flex;
+		flex-direction: row;
+		height: 80upx;
+		align-items: center;
+		justify-content: center;
+
+		&__text {
+			font-size: 28upx;
+			color: $uni-text-color-grey;
+		}
+
+		&__img {
+			height: 24px;
+			width: 24px;
+			margin-right: 10px;
+
+			&>view {
+				position: absolute;
+
+				view {
+					width: 6px;
+					height: 2px;
+					border-top-left-radius: 1px;
+					border-bottom-left-radius: 1px;
+					background: $uni-text-color-grey;
+					position: absolute;
+					opacity: 0.2;
+					transform-origin: 50%;
+					animation: load 1.56s ease infinite;
+
+					&:nth-child(1) {
+						transform: rotate(90deg);
+						top: 2px;
+						left: 9px;
+					}
+
+					&:nth-child(2) {
+						transform: rotate(180deg);
+						top: 11px;
+						right: 0px;
+					}
+
+					&:nth-child(3) {
+						transform: rotate(270deg);
+						bottom: 2px;
+						left: 9px;
+					}
+
+					&:nth-child(4) {
+						top: 11px;
+						left: 0px;
+					}
+				}
+			}
+		}
+	}
+
+	.load1,
+	.load2,
+	.load3 {
+		height: 24px;
+		width: 24px;
+	}
+
+	.load2 {
+		transform: rotate(30deg);
+	}
+
+	.load3 {
+		transform: rotate(60deg);
+	}
+
+
+	.load1 view:nth-child(1) {
+		animation-delay: 0s;
+	}
+
+	.load2 view:nth-child(1) {
+		animation-delay: 0.13s;
+	}
+
+	.load3 view:nth-child(1) {
+		animation-delay: 0.26s;
+	}
+
+	.load1 view:nth-child(2) {
+		animation-delay: 0.39s;
+	}
+
+	.load2 view:nth-child(2) {
+		animation-delay: 0.52s;
+	}
+
+	.load3 view:nth-child(2) {
+		animation-delay: 0.65s;
+	}
+
+	.load1 view:nth-child(3) {
+		animation-delay: 0.78s;
+	}
+
+	.load2 view:nth-child(3) {
+		animation-delay: 0.91s;
+	}
+
+	.load3 view:nth-child(3) {
+		animation-delay: 1.04s;
+	}
+
+	.load1 view:nth-child(4) {
+		animation-delay: 1.17s;
+	}
+
+	.load2 view:nth-child(4) {
+		animation-delay: 1.30s;
+	}
+
+	.load3 view:nth-child(4) {
+		animation-delay: 1.43s;
+	}
+
+	@-webkit-keyframes load {
+		0% {
+			opacity: 1;
+		}
+
+		100% {
+			opacity: 0.2;
+		}
+	}
+</style>

+ 187 - 0
src/dashoo.cn/frontend_app/components/uni-media-list/uni-media-list.vue

@@ -0,0 +1,187 @@
+<template>
+    <view>
+        <view class="list-cell" hover-class="uni-list-cell-hover" @click="bindClick">
+            <view class="media-list" v-if="data.title">
+                <view :class="[isImgRight?'media-image-right':'',isImgLeft?'media-image-left':'']">
+                    <text :class="['media-title',isImgRight||isImgLeft?'media-title2':'']">{{data.title}}</text>
+                    <view v-if="showImg" :class="['image-section',isImgRight?'image-section-right':'',isImgLeft?'image-section-left':'']">
+                        <image :class="['image-list1',isImgRight||isImgLeft?'image-list2':'']" v-if="data.image_url"
+                            :src="data.image_url"></image>
+                        <image class="image-list3" v-if="data.image_list" :src="source.url" v-for="(source, i) in data.image_list"
+                            :key="i" />
+                    </view>
+                </view>
+                <view class="media-foot">
+                    <view class="media-info">
+                        <text class="info-text">{{data.source}}</text>
+                        <text class="info-text">{{data.comment_count}}条评论</text>
+                        <text class="info-text">{{data.datetime}}</text>
+                    </view>
+                    <view class="max-close-view" @click.stop="close">
+                        <view class="close-view"><text class="close">×</text></view>
+                    </view>
+                </view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+    export default {
+		name: 'uni-media-list',
+        props: {
+            data: {
+                type: Object,
+                default: function(e) {
+                    return {}
+                }
+            }
+        },
+        computed: {
+            isImgRight() {
+                return this.data.article_type === 2
+            },
+            isImgLeft() {
+                return this.data.article_type === 1
+            },
+            showImg() {
+                return this.data.image_list || this.data.image_url
+            }
+        },
+        methods: {
+            close(e) {
+                this.$emit('close');
+            },
+            bindClick() {
+                this.$emit('click');
+            }
+        }
+    }
+</script>
+
+<style>
+    view {
+        display: flex;
+        flex-direction: column;
+        box-sizing: border-box;
+    }
+
+    .list-cell {
+        width: 750upx;
+        padding: 0 30upx;
+    }
+
+    .uni-list-cell-hover {
+        background-color: #eeeeee;
+    }
+
+    .media-list {
+        flex: 1;
+        flex-direction: column;
+        border-bottom-width: 1upx;
+        border-bottom-style: solid;
+        border-bottom-color: #c8c7cc;
+        padding: 20upx 0;
+    }
+
+    .media-image-right {
+        flex-direction: row;
+    }
+
+    .media-image-left {
+        flex-direction: row-reverse;
+    }
+
+    .media-title {
+        flex: 1;
+    }
+
+    .media-title {
+        lines: 3;
+        text-overflow: ellipsis;
+        font-size: 32upx;
+        color: #555555;
+    }
+
+    .media-title2 {
+        flex: 1;
+        margin-top: 6upx;
+        line-height: 40upx;
+    }
+
+    .image-section {
+        margin-top: 20upx;
+        flex-direction: row;
+        justify-content: space-between;
+    }
+
+    .image-section-right {
+        margin-top: 0upx;
+        margin-left: 10upx;
+        width: 225upx;
+        height: 146upx;
+    }
+
+    .image-section-left {
+        margin-top: 0upx;
+        margin-right: 10upx;
+        width: 225upx;
+        height: 146upx;
+    }
+
+    .image-list1 {
+        width: 690upx;
+        height: 481upx;
+    }
+
+    .image-list2 {
+        width: 225upx;
+        height: 146upx;
+    }
+
+    .image-list3 {
+        width: 225upx;
+        height: 146upx;
+    }
+
+    .media-info {
+        flex-direction: row;
+    }
+
+    .info-text {
+        margin-right: 20upx;
+        color: #999999;
+        font-size: 24upx;
+    }
+
+    .media-foot {
+        margin-top: 20upx;
+        flex-direction: row;
+        justify-content: space-between;
+    }
+
+    .max-close-view {
+        align-items: center;
+        justify-content: flex-end;
+        flex-direction: row;
+        height: 40upx;
+        width: 80upx;
+    }
+
+    .close-view {
+        border-style: solid;
+        border-width: 1px;
+        border-color: #999999;
+        border-radius: 10upx;
+        justify-content: center;
+        height: 30upx;
+        width: 40upx;
+        line-height: 30upx;
+    }
+
+    .close {
+        text-align: center;
+        color: #999999;
+        font-size: 28upx;
+    }
+</style>

+ 2103 - 0
src/dashoo.cn/frontend_app/components/wx-charts/wxcharts.js

@@ -0,0 +1,2103 @@
+/*
+ * charts for WeChat small app v1.0
+ *
+ * https://github.com/xiaolin3303/wx-charts
+ * 2016-11-28
+ *
+ * Designed and built with all the love of Web
+ * 
+ * 2019-04-01
+ * 修改为兼容uni-wx-charts
+ * 
+ * 2019-04-12
+ * 支持支付宝小程序(小程序开发者工具会不显示图表,上传代码真机可以显示)
+ * 
+ */
+
+'use strict';
+
+var config = {
+    yAxisWidth: 15,
+    yAxisSplit: 5,
+    xAxisHeight: 15,
+    xAxisLineHeight: 15,
+    legendHeight: 15,
+    yAxisTitleWidth: 15,
+    padding: 12,
+	pixelRatio:1,//适配H5高分屏
+    columePadding: 3,
+    fontSize: 13,
+    //dataPointShape: ['diamond', 'circle', 'triangle', 'rect'],
+	dataPointShape: ['circle', 'circle', 'circle', 'circle'],//仿F2图例样式改为圆点
+    colors: ['#1890ff', '#2fc25b', '#facc14', '#f04864', '#8543e0', '#90ed7d'],
+    pieChartLinePadding: 15,
+    pieChartTextPadding: 5,
+    xAxisTextPadding: 3,
+    titleColor: '#333333',
+    titleFontSize: 20,
+    subtitleColor: '#999999',
+    subtitleFontSize: 15,
+    toolTipPadding: 3,
+    toolTipBackground: '#000000',
+    toolTipOpacity: 0.7,
+    toolTipLineHeight: 20,
+    radarGridCount: 3,
+    radarLabelTextMargin: 15
+};
+
+// Object.assign polyfill
+// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
+function assign(target, varArgs) {
+    if (target == null) {
+        // TypeError if undefined or null
+        throw new TypeError('Cannot convert undefined or null to object');
+    }
+
+    var to = Object(target);
+
+    for (var index = 1; index < arguments.length; index++) {
+        var nextSource = arguments[index];
+
+        if (nextSource != null) {
+            // Skip over if undefined or null
+            for (var nextKey in nextSource) {
+                // Avoid bugs when hasOwnProperty is shadowed
+                if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
+                    to[nextKey] = nextSource[nextKey];
+                }
+            }
+        }
+    }
+    return to;
+}
+
+var util = {
+    toFixed: function toFixed(num, limit) {
+        limit = limit || 2;
+        if (this.isFloat(num)) {
+            num = num.toFixed(limit);
+        }
+        return num;
+    },
+    isFloat: function isFloat(num) {
+        return num % 1 !== 0;
+    },
+    approximatelyEqual: function approximatelyEqual(num1, num2) {
+        return Math.abs(num1 - num2) < 1e-10;
+    },
+    isSameSign: function isSameSign(num1, num2) {
+        return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;
+    },
+    isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {
+        return this.isSameSign(p1.x, p2.x);
+    },
+    isCollision: function isCollision(obj1, obj2) {
+        obj1.end = {};
+        obj1.end.x = obj1.start.x + obj1.width;
+        obj1.end.y = obj1.start.y - obj1.height;
+        obj2.end = {};
+        obj2.end.x = obj2.start.x + obj2.width;
+        obj2.end.y = obj2.start.y - obj2.height;
+        var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;
+
+        return !flag;
+    }
+};
+
+function findRange(num, type, limit) {
+    if (isNaN(num)) {
+        throw new Error('[wxCharts] unvalid series data!');
+    }
+    limit = limit || 10;
+    type = type ? type : 'upper';
+    var multiple = 1;
+    while (limit < 1) {
+        limit *= 10;
+        multiple *= 10;
+    }
+    if (type === 'upper') {
+        num = Math.ceil(num * multiple);
+    } else {
+        num = Math.floor(num * multiple);
+    }
+    while (num % limit !== 0) {
+        if (type === 'upper') {
+            num++;
+        } else {
+            num--;
+        }
+    }
+
+    return num / multiple;
+}
+
+function calValidDistance(distance, chartData, config, opts) {
+
+    var dataChartAreaWidth = opts.width - config.padding - chartData.xAxisPoints[0];
+    var dataChartWidth = chartData.eachSpacing * opts.categories.length;
+    var validDistance = distance;
+    if (distance >= 0) {
+        validDistance = 0;
+    } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {
+        validDistance = dataChartAreaWidth - dataChartWidth;
+    }
+    return validDistance;
+}
+
+function isInAngleRange(angle, startAngle, endAngle) {
+    function adjust(angle) {
+        while (angle < 0) {
+            angle += 2 * Math.PI;
+        }
+        while (angle > 2 * Math.PI) {
+            angle -= 2 * Math.PI;
+        }
+
+        return angle;
+    }
+
+    angle = adjust(angle);
+    startAngle = adjust(startAngle);
+    endAngle = adjust(endAngle);
+    if (startAngle > endAngle) {
+        endAngle += 2 * Math.PI;
+        if (angle < startAngle) {
+            angle += 2 * Math.PI;
+        }
+    }
+
+    return angle >= startAngle && angle <= endAngle;
+}
+
+function calRotateTranslate(x, y, h) {
+    var xv = x;
+    var yv = h - y;
+
+    var transX = xv + (h - yv - xv) / Math.sqrt(2);
+    transX *= -1;
+
+    var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2);
+
+    return {
+        transX: transX,
+        transY: transY
+    };
+}
+
+function createCurveControlPoints(points, i) {
+
+    function isNotMiddlePoint(points, i) {
+        if (points[i - 1] && points[i + 1]) {
+            return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, points[i + 1].y);
+        } else {
+            return false;
+        }
+    }
+
+    var a = 0.2;
+    var b = 0.2;
+    var pAx = null;
+    var pAy = null;
+    var pBx = null;
+    var pBy = null;
+    if (i < 1) {
+        pAx = points[0].x + (points[1].x - points[0].x) * a;
+        pAy = points[0].y + (points[1].y - points[0].y) * a;
+    } else {
+        pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;
+        pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;
+    }
+
+    if (i > points.length - 3) {
+        var last = points.length - 1;
+        pBx = points[last].x - (points[last].x - points[last - 1].x) * b;
+        pBy = points[last].y - (points[last].y - points[last - 1].y) * b;
+    } else {
+        pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;
+        pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;
+    }
+
+    // fix issue https://github.com/xiaolin3303/wx-charts/issues/79
+    if (isNotMiddlePoint(points, i + 1)) {
+        pBy = points[i + 1].y;
+    }
+    if (isNotMiddlePoint(points, i)) {
+        pAy = points[i].y;
+    }
+
+    return {
+        ctrA: { x: pAx, y: pAy },
+        ctrB: { x: pBx, y: pBy }
+    };
+}
+
+function convertCoordinateOrigin(x, y, center) {
+    return {
+        x: center.x + x,
+        y: center.y - y
+    };
+}
+
+function avoidCollision(obj, target) {
+    if (target) {
+        // is collision test
+        while (util.isCollision(obj, target)) {
+            if (obj.start.x > 0) {
+                obj.start.y--;
+            } else if (obj.start.x < 0) {
+                obj.start.y++;
+            } else {
+                if (obj.start.y > 0) {
+                    obj.start.y++;
+                } else {
+                    obj.start.y--;
+                }
+            }
+        }
+    }
+    return obj;
+}
+
+function fillSeriesColor(series, config) {
+    var index = 0;
+    return series.map(function (item) {
+        if (!item.color) {
+            item.color = config.colors[index];
+            index = (index + 1) % config.colors.length;
+        }
+        return item;
+    });
+}
+
+function getDataRange(minData, maxData) {
+    var limit = 0;
+    var range = maxData - minData;
+    if (range >= 10000) {
+        limit = 1000;
+    } else if (range >= 1000) {
+        limit = 100;
+    } else if (range >= 100) {
+        limit = 10;
+    } else if (range >= 10) {
+        limit = 5;
+    } else if (range >= 1) {
+        limit = 1;
+    } else if (range >= 0.1) {
+        limit = 0.1;
+    } else {
+        limit = 0.01;
+    }
+    return {
+        minRange: findRange(minData, 'lower', limit),
+        maxRange: findRange(maxData, 'upper', limit)
+    };
+}
+
+function measureText(text) {
+    var fontSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.fontSize;
+
+    // wx canvas 未实现measureText方法, 此处自行实现
+	// 适配修改初始字体10px为其他大小的方法
+    text = String(text);
+    var text = text.split('');
+    var width = 0;
+    text.forEach(function (item) {
+        if (/[a-zA-Z]/.test(item)) {
+            width += 7;
+        } else if (/[0-9]/.test(item)) {
+            width += 5.5;
+        } else if (/\./.test(item)) {
+            width += 2.7;
+        } else if (/-/.test(item)) {
+            width += 3.25;
+        } else if (/[\u4e00-\u9fa5]/.test(item)) {
+            width += 10;
+        } else if (/\(|\)/.test(item)) {
+            width += 3.73;
+        } else if (/\s/.test(item)) {
+            width += 2.5;
+        } else if (/%/.test(item)) {
+            width += 8;
+        } else {
+            width += 10;
+        }
+    });
+    return width * fontSize / 10 ;
+}
+
+function dataCombine(series) {
+    return series.reduce(function (a, b) {
+        return (a.data ? a.data : a).concat(b.data);
+    }, []);
+}
+
+function getSeriesDataItem(series, index) {
+    var data = [];
+    series.forEach(function (item) {
+        if (item.data[index] !== null && typeof item.data[index] !== 'undefined') {
+            var seriesItem = {};
+            seriesItem.color = item.color;
+            seriesItem.name = item.name;
+            seriesItem.data = item.format ? item.format(item.data[index]) : item.data[index];
+            data.push(seriesItem);
+        }
+    });
+
+    return data;
+}
+
+function getMaxTextListLength(list) {
+    var lengthList = list.map(function (item) {
+        return measureText(item);
+    });
+    return Math.max.apply(null, lengthList);
+}
+
+function getRadarCoordinateSeries(length) {
+    var eachAngle = 2 * Math.PI / length;
+    var CoordinateSeries = [];
+    for (var i = 0; i < length; i++) {
+        CoordinateSeries.push(eachAngle * i);
+    }
+
+    return CoordinateSeries.map(function (item) {
+        return -1 * item + Math.PI / 2;
+    });
+}
+
+function getToolTipData(seriesData, calPoints, index, categories) {
+    var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
+
+    var textList = seriesData.map(function (item) {
+        return {
+            text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data,
+            color: item.color
+        };
+    });
+    var validCalPoints = [];
+    var offset = {
+        x: 0,
+        y: 0
+    };
+    calPoints.forEach(function (points) {
+        if (typeof points[index] !== 'undefined' && points[index] !== null) {
+            validCalPoints.push(points[index]);
+        }
+    });
+    validCalPoints.forEach(function (item) {
+        offset.x = Math.round(item.x);
+        offset.y += item.y;
+    });
+
+    offset.y /= validCalPoints.length;
+    return { textList: textList, offset: offset };
+}
+
+function findCurrentIndex(currentPoints, xAxisPoints, opts, config) {
+    var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+    var currentIndex = -1;
+    if (isInExactChartArea(currentPoints, opts, config)) {
+        xAxisPoints.forEach(function (item, index) {
+            if (currentPoints.x + offset > item) {
+                currentIndex = index;
+            }
+        });
+    }
+
+    return currentIndex;
+}
+
+function isInExactChartArea(currentPoints, opts, config) {
+    return currentPoints.x < opts.width - config.padding && currentPoints.x > config.padding + config.yAxisWidth + config.yAxisTitleWidth && currentPoints.y > config.padding && currentPoints.y < opts.height - config.legendHeight - config.xAxisHeight - config.padding;
+}
+
+function findRadarChartCurrentIndex(currentPoints, radarData, count) {
+    var eachAngleArea = 2 * Math.PI / count;
+    var currentIndex = -1;
+    if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {
+        var fixAngle = function fixAngle(angle) {
+            if (angle < 0) {
+                angle += 2 * Math.PI;
+            }
+            if (angle > 2 * Math.PI) {
+                angle -= 2 * Math.PI;
+            }
+            return angle;
+        };
+
+        var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);
+        angle = -1 * angle;
+        if (angle < 0) {
+            angle += 2 * Math.PI;
+        }
+
+        var angleList = radarData.angleList.map(function (item) {
+            item = fixAngle(-1 * item);
+
+            return item;
+        });
+
+        angleList.forEach(function (item, index) {
+            var rangeStart = fixAngle(item - eachAngleArea / 2);
+            var rangeEnd = fixAngle(item + eachAngleArea / 2);
+            if (rangeEnd < rangeStart) {
+                rangeEnd += 2 * Math.PI;
+            }
+            if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) {
+                currentIndex = index;
+            }
+        });
+    }
+
+    return currentIndex;
+}
+
+function findPieChartCurrentIndex(currentPoints, pieData) {
+    var currentIndex = -1;
+    if (isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
+        var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
+        angle = -angle;
+        for (var i = 0, len = pieData.series.length; i < len; i++) {
+            var item = pieData.series[i];
+            if (isInAngleRange(angle, item._start_, item._start_ + item._proportion_ * 2 * Math.PI)) {
+                currentIndex = i;
+                break;
+            }
+        }
+    }
+
+    return currentIndex;
+}
+
+function isInExactPieChartArea(currentPoints, center, radius) {
+    return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);
+}
+
+function splitPoints(points) {
+    var newPoints = [];
+    var items = [];
+    points.forEach(function (item, index) {
+        if (item !== null) {
+            items.push(item);
+        } else {
+            if (items.length) {
+                newPoints.push(items);
+            }
+            items = [];
+        }
+    });
+    if (items.length) {
+        newPoints.push(items);
+    }
+
+    return newPoints;
+}
+
+function calLegendData(series, opts, config) {
+    if (opts.legend === false) {
+        return {
+            legendList: [],
+            legendHeight: 0
+        };
+    }
+	//适配H5高分屏
+    var padding = 5*opts.pixelRatio;
+    var marginTop = 8*opts.pixelRatio;
+    var shapeWidth = 15*opts.pixelRatio;
+    var legendList = [];
+    var widthCount = 0;
+    var currentRow = [];
+    series.forEach(function (item) {
+        var itemWidth = 3 * padding + shapeWidth + measureText(item.name || 'undefined');
+        if (widthCount + itemWidth > opts.width) {
+            legendList.push(currentRow);
+            widthCount = itemWidth;
+            currentRow = [item];
+        } else {
+            widthCount += itemWidth;
+            currentRow.push(item);
+        }
+    });
+    if (currentRow.length) {
+        legendList.push(currentRow);
+    }
+
+    return {
+        legendList: legendList,
+        legendHeight: legendList.length * (config.fontSize + marginTop) + padding
+    };
+}
+
+function calCategoriesData(categories, opts, config) {
+    var result = {
+        angle: 0,
+        xAxisHeight: config.xAxisHeight
+    };
+
+    var _getXAxisPoints = getXAxisPoints(categories, opts, config),
+        eachSpacing = _getXAxisPoints.eachSpacing;
+
+    // get max length of categories text
+
+
+    var categoriesTextLenth = categories.map(function (item) {
+        return measureText(item);
+    });
+
+    var maxTextLength = Math.max.apply(this, categoriesTextLenth);
+
+    if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {
+        result.angle = 45 * Math.PI / 180;
+        result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);
+    }
+
+    return result;
+}
+
+function getRadarDataPoints(angleList, center, radius, series, opts) {
+    var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+
+    var radarOption = opts.extra.radar || {};
+    radarOption.max = radarOption.max || 0;
+    var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
+
+    var data = [];
+    series.forEach(function (each) {
+        var listItem = {};
+        listItem.color = each.color;
+        listItem.data = [];
+        each.data.forEach(function (item, index) {
+            var tmp = {};
+            tmp.angle = angleList[index];
+
+            tmp.proportion = item / maxData;
+            tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);
+            listItem.data.push(tmp);
+        });
+
+        data.push(listItem);
+    });
+
+    return data;
+}
+
+function getPieDataPoints(series) {
+    var process = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
+
+    var count = 0;
+    var _start_ = 0;
+    series.forEach(function (item) {
+        item.data = item.data === null ? 0 : item.data;
+        count += item.data;
+    });
+    series.forEach(function (item) {
+        item.data = item.data === null ? 0 : item.data;
+        item._proportion_ = item.data / count * process;
+    });
+    series.forEach(function (item) {
+        item._start_ = _start_;
+        _start_ += 2 * item._proportion_ * Math.PI;
+    });
+
+    return series;
+}
+
+function getPieTextMaxLength(series) {
+    series = getPieDataPoints(series);
+    var maxLength = 0;
+    series.forEach(function (item) {
+        var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';
+        maxLength = Math.max(maxLength, measureText(text));
+    });
+
+    return maxLength;
+}
+
+function fixColumeData(points, eachSpacing, columnLen, index, config, opts) {
+    return points.map(function (item) {
+        if (item === null) {
+            return null;
+        }
+        item.width = (eachSpacing - 2 * config.columePadding) / columnLen;
+
+        if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+            // customer column width
+            item.width = Math.min(item.width, +opts.extra.column.width);
+        } else {
+            // default width should less tran 25px
+            // don't ask me why, I don't know
+            item.width = Math.min(item.width, 25);
+        }
+        item.x += (index + 0.5 - columnLen / 2) * item.width;
+
+        return item;
+    });
+}
+
+function getXAxisPoints(categories, opts, config) {
+    var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth;
+    var spacingValid = opts.width - 2 * config.padding - yAxisTotalWidth;
+    var dataCount = opts.enableScroll ? Math.min(5, categories.length) : categories.length;
+    var eachSpacing = spacingValid / dataCount;
+
+    var xAxisPoints = [];
+    var startX = config.padding + yAxisTotalWidth;
+    var endX = opts.width - config.padding;
+    categories.forEach(function (item, index) {
+        xAxisPoints.push(startX + index * eachSpacing);
+    });
+    if (opts.enableScroll === true) {
+        xAxisPoints.push(startX + categories.length * eachSpacing);
+    } else {
+        xAxisPoints.push(endX);
+    }
+
+    return { xAxisPoints: xAxisPoints, startX: startX, endX: endX, eachSpacing: eachSpacing };
+}
+
+function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
+    var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
+
+    var points = [];
+    var validHeight = opts.height - 2 * config.padding - config.xAxisHeight - config.legendHeight;
+    data.forEach(function (item, index) {
+        if (item === null) {
+            points.push(null);
+        } else {
+            var point = {};
+            point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
+            var height = validHeight * (item - minRange) / (maxRange - minRange);
+            height *= process;
+            point.y = opts.height - config.xAxisHeight - config.legendHeight - Math.round(height) - config.padding;
+            points.push(point);
+        }
+    });
+
+    return points;
+}
+
+function getYAxisTextList(series, opts, config) {
+    var data = dataCombine(series);
+    // remove null from data
+    data = data.filter(function (item) {
+        return item !== null;
+    });
+    var minData = Math.min.apply(this, data);
+    var maxData = Math.max.apply(this, data);
+    if (typeof opts.yAxis.min === 'number') {
+        minData = Math.min(opts.yAxis.min, minData);
+    }
+    if (typeof opts.yAxis.max === 'number') {
+        maxData = Math.max(opts.yAxis.max, maxData);
+    }
+
+    // fix issue https://github.com/xiaolin3303/wx-charts/issues/9
+    if (minData === maxData) {
+        var rangeSpan = maxData || 1;
+        minData -= rangeSpan;
+        maxData += rangeSpan;
+    }
+
+    var dataRange = getDataRange(minData, maxData);
+    var minRange = dataRange.minRange;
+    var maxRange = dataRange.maxRange;
+
+    var range = [];
+    var eachRange = (maxRange - minRange) / config.yAxisSplit;
+
+    for (var i = 0; i <= config.yAxisSplit; i++) {
+        range.push(minRange + eachRange * i);
+    }
+    return range.reverse();
+}
+
+function calYAxisData(series, opts, config) {
+
+    var ranges = getYAxisTextList(series, opts, config);
+    var yAxisWidth = config.yAxisWidth;
+    var rangesFormat = ranges.map(function (item) {
+        item = util.toFixed(item, 2);
+        item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item;
+        yAxisWidth = Math.max(yAxisWidth, measureText(item) + 5);
+        return item;
+    });
+    if (opts.yAxis.disabled === true) {
+        yAxisWidth = 0;
+    }
+
+    return { rangesFormat: rangesFormat, ranges: ranges, yAxisWidth: yAxisWidth };
+}
+
+function drawPointShape(points, color, shape, context,opts) {
+    context.beginPath();
+    context.setStrokeStyle("#ffffff");
+    context.setLineWidth(1*opts.pixelRatio);
+    context.setFillStyle(color);
+    if (shape === 'diamond') {
+        points.forEach(function (item, index) {
+            if (item !== null) {
+                context.moveTo(item.x, item.y - 4.5);
+                context.lineTo(item.x - 4.5, item.y);
+                context.lineTo(item.x, item.y + 4.5);
+                context.lineTo(item.x + 4.5, item.y);
+                context.lineTo(item.x, item.y - 4.5);
+            }
+        });
+    } else if (shape === 'circle') {
+        points.forEach(function (item, index) {
+            if (item !== null) {
+                context.moveTo(item.x + 3.5*opts.pixelRatio, item.y);
+                context.arc(item.x, item.y, 4*opts.pixelRatio, 0, 2 * Math.PI, false);
+            }
+        });
+    } else if (shape === 'rect') {
+        points.forEach(function (item, index) {
+            if (item !== null) {
+                context.moveTo(item.x - 3.5, item.y - 3.5);
+                context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
+            }
+        });
+    } else if (shape === 'triangle') {
+        points.forEach(function (item, index) {
+            if (item !== null) {
+                context.moveTo(item.x, item.y - 4.5);
+                context.lineTo(item.x - 4.5, item.y + 4.5);
+                context.lineTo(item.x + 4.5, item.y + 4.5);
+                context.lineTo(item.x, item.y - 4.5);
+            }
+        });
+    }
+	
+   
+    context.closePath();
+    context.fill();
+    context.stroke();
+}
+
+function drawRingTitle(opts, config, context) {
+    var titlefontSize = opts.title.fontSize || config.titleFontSize;
+    var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;
+    var title = opts.title.name || '';
+    var subtitle = opts.subtitle.name || '';
+    var titleFontColor = opts.title.color || config.titleColor;
+    var subtitleFontColor = opts.subtitle.color || config.subtitleColor;
+    var titleHeight = title ? titlefontSize : 0;
+    var subtitleHeight = subtitle ? subtitlefontSize : 0;
+    var margin = 5;
+    if (subtitle) {
+        var textWidth = measureText(subtitle, subtitlefontSize);
+        var startX = (opts.width - textWidth) / 2 + (opts.subtitle.offsetX || 0);
+        var startY = (opts.height - config.legendHeight + subtitlefontSize) / 2;
+        if (title) {
+            startY -= (titleHeight + margin) / 2;
+        }
+        context.beginPath();
+        context.setFontSize(subtitlefontSize);
+        context.setFillStyle(subtitleFontColor);
+        context.fillText(subtitle, startX, startY);
+        context.stroke();
+        context.closePath();
+    }
+    if (title) {
+        var _textWidth = measureText(title, titlefontSize);
+        var _startX = (opts.width - _textWidth) / 2 + (opts.title.offsetX || 0);
+        var _startY = (opts.height - config.legendHeight + titlefontSize) / 2;
+        if (subtitle) {
+            _startY += (subtitleHeight + margin) / 2;
+        }
+        context.beginPath();
+        context.setFontSize(titlefontSize);
+        context.setFillStyle(titleFontColor);
+        context.fillText(title, _startX, _startY);
+        context.stroke();
+        context.closePath();
+    }
+}
+
+function drawPointText(points, series, config, context) {
+    // 绘制数据文案
+    var data = series.data;
+
+    context.beginPath();
+    context.setFontSize(config.fontSize);
+    context.setFillStyle('#666666');
+    points.forEach(function (item, index) {
+        if (item !== null) {
+            var formatVal = series.format ? series.format(data[index]) : data[index];
+            context.fillText(formatVal, item.x - measureText(formatVal) / 2, item.y - 2);
+        }
+    });
+    context.closePath();
+    context.stroke();
+}
+
+function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {
+    var radarOption = opts.extra.radar || {};
+    radius += config.radarLabelTextMargin;
+    context.beginPath();
+    context.setFontSize(config.fontSize);
+    context.setFillStyle(radarOption.labelColor || '#666666');
+    angleList.forEach(function (angle, index) {
+        var pos = {
+            x: radius * Math.cos(angle),
+            y: radius * Math.sin(angle)
+        };
+        var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);
+        var startX = posRelativeCanvas.x;
+        var startY = posRelativeCanvas.y;
+        if (util.approximatelyEqual(pos.x, 0)) {
+            startX -= measureText(opts.categories[index] || '') / 2;
+        } else if (pos.x < 0) {
+            startX -= measureText(opts.categories[index] || '');
+        }
+        context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);
+    });
+    context.stroke();
+    context.closePath();
+}
+
+function drawPieText(series, opts, config, context, radius, center) {
+    var lineRadius = radius + config.pieChartLinePadding;
+    var textObjectCollection = [];
+    var lastTextObject = null;
+
+    var seriesConvert = series.map(function (item) {
+        var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);
+        var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';
+        var color = item.color;
+        return { arc: arc, text: text, color: color };
+    });
+    seriesConvert.forEach(function (item) {
+        // line end
+        var orginX1 = Math.cos(item.arc) * lineRadius;
+        var orginY1 = Math.sin(item.arc) * lineRadius;
+
+        // line start
+        var orginX2 = Math.cos(item.arc) * radius;
+        var orginY2 = Math.sin(item.arc) * radius;
+
+        // text start
+        var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;
+        var orginY3 = orginY1;
+
+        var textWidth = measureText(item.text);
+        var startY = orginY3;
+
+        if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, { x: orginX3 })) {
+            if (orginX3 > 0) {
+                startY = Math.min(orginY3, lastTextObject.start.y);
+            } else if (orginX1 < 0) {
+                startY = Math.max(orginY3, lastTextObject.start.y);
+            } else {
+                if (orginY3 > 0) {
+                    startY = Math.max(orginY3, lastTextObject.start.y);
+                } else {
+                    startY = Math.min(orginY3, lastTextObject.start.y);
+                }
+            }
+        }
+
+        if (orginX3 < 0) {
+            orginX3 -= textWidth;
+        }
+
+        var textObject = {
+            lineStart: {
+                x: orginX2,
+                y: orginY2
+            },
+            lineEnd: {
+                x: orginX1,
+                y: orginY1
+            },
+            start: {
+                x: orginX3,
+                y: startY
+            },
+            width: textWidth,
+            height: config.fontSize,
+            text: item.text,
+            color: item.color
+        };
+
+        lastTextObject = avoidCollision(textObject, lastTextObject);
+        textObjectCollection.push(lastTextObject);
+    });
+
+    textObjectCollection.forEach(function (item) {
+        var lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center);
+        var lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center);
+        var textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center);
+        context.setLineWidth(1*opts.pixelRatio);
+        context.setFontSize(config.fontSize);
+        context.beginPath();
+        context.setStrokeStyle(item.color);
+        context.setFillStyle(item.color);
+        context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
+        var curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x;
+        var textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;
+        context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);
+        context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
+        context.stroke();
+        context.closePath();
+        context.beginPath();
+        context.moveTo(textPosition.x + item.width, textPosition.y);
+        context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI);
+        context.closePath();
+        context.fill();
+        context.beginPath();
+        context.setFillStyle('#666666');
+        context.fillText(item.text, textStartX, textPosition.y + 3);
+        context.closePath();
+        context.stroke();
+
+        context.closePath();
+    });
+}
+
+function drawToolTipSplitLine(offsetX, opts, config, context) {
+    var startY = config.padding;
+    var endY = opts.height - config.padding - config.xAxisHeight - config.legendHeight;
+    context.beginPath();
+    context.setStrokeStyle('#cccccc');
+    context.setLineWidth(1*opts.pixelRatio);
+    context.moveTo(offsetX, startY);
+    context.lineTo(offsetX, endY);
+    context.stroke();
+    context.closePath();
+}
+
+function drawToolTip(textList, offset, opts, config, context) {
+    var legendWidth = 4*opts.pixelRatio;
+    var legendMarginRight = 5*opts.pixelRatio;
+    var arrowWidth = 8*opts.pixelRatio;
+    var isOverRightBorder = false;
+    offset = assign({
+        x: 0,
+        y: 0
+    }, offset);
+    offset.y -= 8*opts.pixelRatio;
+    var textWidth = textList.map(function (item) {
+        return measureText(item.text);
+    });
+
+    var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth);
+    var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight;
+
+    // if beyond the right border
+    if (offset.x - Math.abs(opts._scrollDistance_) + arrowWidth + toolTipWidth > opts.width) {
+        isOverRightBorder = true;
+    }
+
+    // draw background rect
+    context.beginPath();
+    context.setFillStyle(opts.tooltip.option.background || config.toolTipBackground);
+    context.setGlobalAlpha(config.toolTipOpacity);
+    if (isOverRightBorder) {
+        context.moveTo(offset.x, offset.y + 10*opts.pixelRatio);
+        context.lineTo(offset.x - arrowWidth, offset.y + 10*opts.pixelRatio - 5*opts.pixelRatio);
+        context.lineTo(offset.x - arrowWidth, offset.y + 10*opts.pixelRatio + 5*opts.pixelRatio);
+        context.moveTo(offset.x, offset.y + 10*opts.pixelRatio);
+        context.fillRect(offset.x - toolTipWidth - arrowWidth, offset.y, toolTipWidth, toolTipHeight);
+    } else {
+        context.moveTo(offset.x, offset.y + 10*opts.pixelRatio);
+        context.lineTo(offset.x + arrowWidth, offset.y + 10*opts.pixelRatio - 5*opts.pixelRatio);
+        context.lineTo(offset.x + arrowWidth, offset.y + 10*opts.pixelRatio + 5*opts.pixelRatio);
+        context.moveTo(offset.x, offset.y + 10*opts.pixelRatio);
+        context.fillRect(offset.x + arrowWidth, offset.y, toolTipWidth, toolTipHeight);
+    }
+
+    context.closePath();
+    context.fill();
+    context.setGlobalAlpha(1);
+
+    // draw legend
+    textList.forEach(function (item, index) {
+        context.beginPath();
+        context.setFillStyle(item.color);
+        var startX = offset.x + arrowWidth + 2 * config.toolTipPadding;
+        var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding;
+        if (isOverRightBorder) {
+            startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding;
+        }
+        context.fillRect(startX, startY, legendWidth, config.fontSize);
+        context.closePath();
+    });
+
+    // draw text list
+    context.beginPath();
+    context.setFontSize(config.fontSize);
+    context.setFillStyle('#ffffff');
+    textList.forEach(function (item, index) {
+        var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight;
+        if (isOverRightBorder) {
+            startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight;
+        }
+        var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding;
+        context.fillText(item.text, startX, startY + config.fontSize);
+    });
+    context.stroke();
+    context.closePath();
+}
+
+function drawYAxisTitle(title, opts, config, context) {
+    var startX = config.xAxisHeight + (opts.height - config.xAxisHeight - measureText(title)) / 2;
+    context.save();
+    context.beginPath();
+    context.setFontSize(config.fontSize);
+    context.setFillStyle(opts.yAxis.titleFontColor || '#333333');
+    context.translate(0, opts.height);
+    context.rotate(-90 * Math.PI / 180);
+    context.fillText(title, startX, config.padding + 0.5 * config.fontSize);
+    context.stroke();
+    context.closePath();
+    context.restore();
+}
+
+function drawColumnDataPoints(series, opts, config, context) {
+    var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+
+    var _calYAxisData = calYAxisData(series, opts, config),
+        ranges = _calYAxisData.ranges;
+
+    var _getXAxisPoints = getXAxisPoints(opts.categories, opts, config),
+        xAxisPoints = _getXAxisPoints.xAxisPoints,
+        eachSpacing = _getXAxisPoints.eachSpacing;
+
+    var minRange = ranges.pop();
+    var maxRange = ranges.shift();
+    context.save();
+    if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+        context.translate(opts._scrollDistance_, 0);
+    }
+
+    series.forEach(function (eachSeries, seriesIndex) {
+        var data = eachSeries.data;
+        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+        points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
+
+        // 绘制柱状数据图
+        context.beginPath();
+        context.setFillStyle(eachSeries.color);
+        points.forEach(function (item, index) {
+            if (item !== null) {
+                var startX = item.x - item.width / 2 + 1;
+                var height = opts.height - item.y - config.padding - config.xAxisHeight - config.legendHeight;
+                context.moveTo(startX, item.y);
+                context.rect(startX, item.y, item.width - 2, height);
+            }
+        });
+        context.closePath();
+        context.fill();
+    });
+    series.forEach(function (eachSeries, seriesIndex) {
+        var data = eachSeries.data;
+        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+        points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
+        if (opts.dataLabel !== false && process === 1) {
+            drawPointText(points, eachSeries, config, context);
+        }
+    });
+    context.restore();
+    return {
+        xAxisPoints: xAxisPoints,
+        eachSpacing: eachSpacing
+    };
+}
+
+function drawAreaDataPoints(series, opts, config, context) {
+    var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+
+    var _calYAxisData2 = calYAxisData(series, opts, config),
+        ranges = _calYAxisData2.ranges;
+
+    var _getXAxisPoints2 = getXAxisPoints(opts.categories, opts, config),
+        xAxisPoints = _getXAxisPoints2.xAxisPoints,
+        eachSpacing = _getXAxisPoints2.eachSpacing;
+
+    var minRange = ranges.pop();
+    var maxRange = ranges.shift();
+    var endY = opts.height - config.padding - config.xAxisHeight - config.legendHeight;
+    var calPoints = [];
+
+    context.save();
+    if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+        context.translate(opts._scrollDistance_, 0);
+    }
+
+    if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+        drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);
+    }
+	
+	//画连线
+	drawLineDataPoints(series, opts, config, context, process);
+	
+    series.forEach(function (eachSeries, seriesIndex) {
+        var data = eachSeries.data;
+        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+        calPoints.push(points);
+
+        var splitPointList = splitPoints(points);
+
+        splitPointList.forEach(function (points) {
+            // 绘制区域数据
+            context.beginPath();
+            context.setStrokeStyle(eachSeries.color);
+            context.setFillStyle(eachSeries.color);
+            context.setGlobalAlpha(0.2);
+            context.setLineWidth(2*opts.pixelRatio);
+            if (points.length > 1) {
+                var firstPoint = points[0];
+                var lastPoint = points[points.length - 1];
+
+                context.moveTo(firstPoint.x, firstPoint.y);
+                if (opts.extra.lineStyle === 'curve') {
+                    points.forEach(function (item, index) {
+                        if (index > 0) {
+                            var ctrlPoint = createCurveControlPoints(points, index - 1);
+                            context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
+                        }
+                    });
+                } else {
+                    points.forEach(function (item, index) {
+                        if (index > 0) {
+                            context.lineTo(item.x, item.y);
+                        }
+                    });
+                }
+
+                context.lineTo(lastPoint.x, endY);
+                context.lineTo(firstPoint.x, endY);
+                context.lineTo(firstPoint.x, firstPoint.y);
+            } else {
+                var item = points[0];
+                context.moveTo(item.x - eachSpacing / 2, item.y);
+                context.lineTo(item.x + eachSpacing / 2, item.y);
+                context.lineTo(item.x + eachSpacing / 2, endY);
+                context.lineTo(item.x - eachSpacing / 2, endY);
+                context.moveTo(item.x - eachSpacing / 2, item.y);
+            }
+            context.closePath();
+            context.fill();
+            context.setGlobalAlpha(1);
+        });
+
+        if (opts.dataPointShape !== false) {
+            var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length];
+            drawPointShape(points, eachSeries.color, shape, context,opts);
+        }
+    });
+    if (opts.dataLabel !== false && process === 1) {
+        series.forEach(function (eachSeries, seriesIndex) {
+            var data = eachSeries.data;
+            var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+            drawPointText(points, eachSeries, config, context);
+        });
+    }
+
+    context.restore();
+
+    return {
+        xAxisPoints: xAxisPoints,
+        calPoints: calPoints,
+        eachSpacing: eachSpacing
+    };
+}
+
+function drawLineDataPoints(series, opts, config, context) {
+    var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+
+    var _calYAxisData3 = calYAxisData(series, opts, config),
+        ranges = _calYAxisData3.ranges;
+
+    var _getXAxisPoints3 = getXAxisPoints(opts.categories, opts, config),
+        xAxisPoints = _getXAxisPoints3.xAxisPoints,
+        eachSpacing = _getXAxisPoints3.eachSpacing;
+
+    var minRange = ranges.pop();
+    var maxRange = ranges.shift();
+    var calPoints = [];
+
+    context.save();
+    if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+        context.translate(opts._scrollDistance_, 0);
+    }
+
+    if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+        drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);
+    }
+
+    series.forEach(function (eachSeries, seriesIndex) {
+        var data = eachSeries.data;
+        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+        calPoints.push(points);
+        var splitPointList = splitPoints(points);
+
+        splitPointList.forEach(function (points, index) {
+            context.beginPath();
+            context.setStrokeStyle(eachSeries.color);
+            context.setLineWidth(2*opts.pixelRatio);
+            if (points.length === 1) {
+                context.moveTo(points[0].x, points[0].y);
+                context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+            } else {
+                context.moveTo(points[0].x, points[0].y);
+                if (opts.extra.lineStyle === 'curve') {
+                    points.forEach(function (item, index) {
+                        if (index > 0) {
+                            var ctrlPoint = createCurveControlPoints(points, index - 1);
+                            context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
+                        }
+                    });
+                } else {
+                    points.forEach(function (item, index) {
+                        if (index > 0) {
+                            context.lineTo(item.x, item.y);
+                        }
+                    });
+                }
+                context.moveTo(points[0].x, points[0].y);
+            }
+            context.closePath();
+            context.stroke();
+        });
+
+        if (opts.dataPointShape !== false) {
+            var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length];
+            drawPointShape(points, eachSeries.color, shape, context,opts);
+        }
+    });
+    if (opts.dataLabel !== false && process === 1) {
+        series.forEach(function (eachSeries, seriesIndex) {
+            var data = eachSeries.data;
+            var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+            drawPointText(points, eachSeries, config, context);
+        });
+    }
+
+    context.restore();
+
+    return {
+        xAxisPoints: xAxisPoints,
+        calPoints: calPoints,
+        eachSpacing: eachSpacing
+    };
+}
+
+function drawToolTipBridge(opts, config, context, process) {
+    context.save();
+    if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+        context.translate(opts._scrollDistance_, 0);
+    }
+    if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+        drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context);
+    }
+    context.restore();
+}
+
+function drawXAxis(categories, opts, config, context) {
+    var _getXAxisPoints4 = getXAxisPoints(categories, opts, config),
+        xAxisPoints = _getXAxisPoints4.xAxisPoints,
+        startX = _getXAxisPoints4.startX,
+        endX = _getXAxisPoints4.endX,
+        eachSpacing = _getXAxisPoints4.eachSpacing;
+
+    var startY = opts.height - config.padding - config.xAxisHeight - config.legendHeight;
+    var endY = startY + config.xAxisLineHeight;
+
+    context.save();
+    if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
+        context.translate(opts._scrollDistance_, 0);
+    }
+
+    context.beginPath();
+    context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
+
+    if (opts.xAxis.disableGrid !== true) {
+        if (opts.xAxis.type === 'calibration') {
+            xAxisPoints.forEach(function (item, index) {
+                if (index > 0) {
+                    context.moveTo(item - eachSpacing / 2, startY);
+                    context.lineTo(item - eachSpacing / 2, startY + 4);
+                }
+            });
+        } else {
+            xAxisPoints.forEach(function (item, index) {
+                context.moveTo(item, startY);
+                context.lineTo(item, endY);
+            });
+        }
+    }
+    context.closePath();
+    context.stroke();
+
+    // 对X轴列表做抽稀处理
+    var validWidth = opts.width - 2 * config.padding - config.yAxisWidth - config.yAxisTitleWidth;
+    var maxXAxisListLength = Math.min(categories.length, Math.ceil(validWidth / config.fontSize / 1.5));
+    var ratio = Math.ceil(categories.length / maxXAxisListLength);
+
+    categories = categories.map(function (item, index) {
+        return index % ratio !== 0 ? '' : item;
+    });
+
+    if (config._xAxisTextAngle_ === 0) {
+        context.beginPath();
+        context.setFontSize(config.fontSize);
+        context.setFillStyle(opts.xAxis.fontColor || '#666666');
+        categories.forEach(function (item, index) {
+            var offset = eachSpacing / 2 - measureText(item) / 2;
+            context.fillText(item, xAxisPoints[index] + offset, startY + config.fontSize + 5);
+        });
+        context.closePath();
+        context.stroke();
+    } else {
+        categories.forEach(function (item, index) {
+            context.save();
+            context.beginPath();
+            context.setFontSize(config.fontSize);
+            context.setFillStyle(opts.xAxis.fontColor || '#666666');
+            var textWidth = measureText(item);
+            var offset = eachSpacing / 2 - textWidth;
+
+            var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + config.fontSize / 2 + 5, opts.height),
+                transX = _calRotateTranslate.transX,
+                transY = _calRotateTranslate.transY;
+
+            context.rotate(-1 * config._xAxisTextAngle_);
+            context.translate(transX, transY);
+            context.fillText(item, xAxisPoints[index] + offset, startY + config.fontSize + 5);
+            context.closePath();
+            context.stroke();
+            context.restore();
+        });
+    }
+
+    context.restore();
+}
+
+function drawYAxisGrid(opts, config, context) {
+    var spacingValid = opts.height - 2 * config.padding - config.xAxisHeight - config.legendHeight;
+    var eachSpacing = Math.floor(spacingValid / config.yAxisSplit);
+    var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth;
+    var startX = config.padding + yAxisTotalWidth;
+    var endX = opts.width - config.padding;
+
+    var points = [];
+    for (var i = 0; i < config.yAxisSplit; i++) {
+        points.push(config.padding + eachSpacing * i);
+    }
+    points.push(config.padding + eachSpacing * config.yAxisSplit + 2);
+
+    context.beginPath();
+    context.setStrokeStyle(opts.yAxis.gridColor || "#cccccc");
+    context.setLineWidth(1*opts.pixelRatio);
+    points.forEach(function (item, index) {
+        context.moveTo(startX, item);
+        context.lineTo(endX, item);
+    });
+    context.closePath();
+    context.stroke();
+}
+
+function drawYAxis(series, opts, config, context) {
+    if (opts.yAxis.disabled === true) {
+        return;
+    }
+
+    var _calYAxisData4 = calYAxisData(series, opts, config),
+        rangesFormat = _calYAxisData4.rangesFormat;
+
+    var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth;
+
+    var spacingValid = opts.height - 2 * config.padding - config.xAxisHeight - config.legendHeight;
+    var eachSpacing = Math.floor(spacingValid / config.yAxisSplit);
+    var startX = config.padding + yAxisTotalWidth;
+    var endX = opts.width - config.padding;
+    var endY = opts.height - config.padding - config.xAxisHeight - config.legendHeight;
+
+    // set YAxis background
+    context.setFillStyle(opts.background || '#ffffff');
+    if (opts._scrollDistance_ < 0) {
+        context.fillRect(0, 0, startX, endY + config.xAxisHeight + 5);
+    }
+    context.fillRect(endX, 0, opts.width, endY + config.xAxisHeight + 5);
+
+    var points = [];
+    for (var i = 0; i <= config.yAxisSplit; i++) {
+        points.push(config.padding + eachSpacing * i);
+    }
+
+    context.stroke();
+    context.beginPath();
+    context.setFontSize(config.fontSize);
+    context.setFillStyle(opts.yAxis.fontColor || '#666666');
+    rangesFormat.forEach(function (item, index) {
+        var pos = points[index] ? points[index] : endY;
+        context.fillText(item, config.padding + config.yAxisTitleWidth, pos + config.fontSize / 2);
+    });
+    context.closePath();
+    context.stroke();
+
+    if (opts.yAxis.title) {
+        drawYAxisTitle(opts.yAxis.title, opts, config, context);
+    }
+}
+
+function drawLegend(series, opts, config, context) {
+    if (!opts.legend) {
+        return;
+    }
+    // each legend shape width 15px
+    // the spacing between shape and text in each legend is the `padding`
+    // each legend spacing is the `padding`
+    // legend margin top `config.padding`
+
+    var _calLegendData = calLegendData(series, opts, config),
+        legendList = _calLegendData.legendList;
+
+    var padding = 5*opts.pixelRatio;
+    var marginTop = 10*opts.pixelRatio;
+    var shapeWidth = 15*opts.pixelRatio;
+    legendList.forEach(function (itemList, listIndex) {
+        var width = 0;
+        itemList.forEach(function (item) {
+            item.name = item.name || 'undefined';
+            width += 3 * padding + measureText(item.name) + shapeWidth;
+        });
+        var startX = (opts.width - width) / 2 + padding;
+        var startY = opts.height - config.padding - config.legendHeight + listIndex * (config.fontSize + marginTop) + padding + marginTop;
+
+        context.setFontSize(config.fontSize);
+        itemList.forEach(function (item) {
+            switch (opts.type) {
+                case 'line':
+                    context.beginPath();
+					/*
+                    context.setLineWidth(1*opts.pixelRatio);
+                    context.setStrokeStyle(item.color);
+                    context.moveTo(startX - 2, startY + 5);
+                    context.lineTo(startX + 17, startY + 5);
+                    context.stroke();
+                    context.closePath();
+                    context.beginPath();
+					*/
+                    context.setLineWidth(1*opts.pixelRatio);
+                    context.setStrokeStyle(item.color);
+                    context.setFillStyle(item.color);
+                    context.moveTo(startX + 7.5, startY + 5);
+                    context.arc(startX + 7.5, startY + 5, 6*opts.pixelRatio, 0, 2 * Math.PI);
+                    context.fill();
+                    context.stroke();
+                    context.closePath();
+                    break;
+                case 'pie':
+					context.beginPath();
+					context.setLineWidth(1*opts.pixelRatio);
+					context.setStrokeStyle(item.color);
+					context.setFillStyle(item.color);
+					context.moveTo(startX + 7.5, startY + 5);
+					context.arc(startX + 7.5, startY + 5, 6*opts.pixelRatio, 0, 2 * Math.PI);
+					context.fill();
+					context.stroke();
+					context.closePath();
+					break;
+                case 'ring':
+                    context.beginPath();
+                    context.setLineWidth(1*opts.pixelRatio);
+                    context.setStrokeStyle(item.color);
+                    context.setFillStyle(item.color);
+                    context.moveTo(startX + 7.5, startY + 5);
+                    context.arc(startX + 7.5, startY + 5, 6*opts.pixelRatio, 0, 2 * Math.PI);
+                    context.fill();
+                    context.stroke();
+                    context.closePath();
+                    break;
+                default:
+                    context.beginPath();
+                    context.setFillStyle(item.color);
+                    context.moveTo(startX, startY);
+                    context.rect(startX, startY-(opts.pixelRatio-1)*6, 15*opts.pixelRatio, 10*opts.pixelRatio);
+                    context.closePath();
+                    context.fill();
+            }
+            startX += padding + shapeWidth;
+            context.beginPath();
+            context.setFillStyle(opts.extra.legendTextColor || '#333333');
+            context.fillText(item.name, startX, startY + 6+3*opts.pixelRatio);
+            context.closePath();
+            context.stroke();
+            startX += measureText(item.name) + 2 * padding;
+        });
+    });
+}
+
+function drawPieDataPoints(series, opts, config, context) {
+    var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+
+    var pieOption = opts.extra.pie || {};
+    series = getPieDataPoints(series, process);
+    var centerPosition = {
+        x: opts.width / 2,
+        y: (opts.height - config.legendHeight) / 2
+    };
+    var radius = Math.min(centerPosition.x - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, centerPosition.y - config.pieChartLinePadding - config.pieChartTextPadding);
+    if (opts.dataLabel) {
+        radius -= 10;
+    } else {
+        radius -= 2 * config.padding;
+    }
+    series = series.map(function (eachSeries) {
+        eachSeries._start_ += (pieOption.offsetAngle || 0) * Math.PI / 180;
+        return eachSeries;
+    });
+    series.forEach(function (eachSeries) {
+        context.beginPath();
+        context.setLineWidth(2*opts.pixelRatio);
+        context.setStrokeStyle('#ffffff');
+        context.setFillStyle(eachSeries.color);
+        context.moveTo(centerPosition.x, centerPosition.y);
+        context.arc(centerPosition.x, centerPosition.y, radius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
+        context.closePath();
+        context.fill();
+        if (opts.disablePieStroke !== true) {
+            context.stroke();
+        }
+    });
+
+    if (opts.type === 'ring') {
+        var innerPieWidth = radius * 0.6;
+        if (typeof opts.extra.ringWidth === 'number' && opts.extra.ringWidth > 0) {
+            innerPieWidth = Math.max(0, radius - opts.extra.ringWidth);
+        }
+        context.beginPath();
+        context.setFillStyle(opts.background || '#ffffff');
+        context.moveTo(centerPosition.x, centerPosition.y);
+        context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);
+        context.closePath();
+        context.fill();
+    }
+
+    if (opts.dataLabel !== false && process === 1) {
+        // fix https://github.com/xiaolin3303/wx-charts/issues/132
+        var valid = false;
+        for (var i = 0, len = series.length; i < len; i++) {
+            if (series[i].data > 0) {
+                valid = true;
+                break;
+            }
+        }
+
+        if (valid) {
+            drawPieText(series, opts, config, context, radius, centerPosition);
+        }
+    }
+
+    if (process === 1 && opts.type === 'ring') {
+        drawRingTitle(opts, config, context);
+    }
+
+    return {
+        center: centerPosition,
+        radius: radius,
+        series: series
+    };
+}
+
+function drawRadarDataPoints(series, opts, config, context) {
+    var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+
+    var radarOption = opts.extra.radar || {};
+    var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);
+    var centerPosition = {
+        x: opts.width / 2,
+        y: (opts.height - config.legendHeight) / 2
+    };
+
+    var radius = Math.min(centerPosition.x - (getMaxTextListLength(opts.categories) + config.radarLabelTextMargin), centerPosition.y - config.radarLabelTextMargin);
+
+    radius -= config.padding;
+
+    // draw grid
+    context.beginPath();
+    context.setLineWidth(1*opts.pixelRatio);
+    context.setStrokeStyle(radarOption.gridColor || "#cccccc");
+    coordinateAngle.forEach(function (angle) {
+        var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);
+        context.moveTo(centerPosition.x, centerPosition.y);
+        context.lineTo(pos.x, pos.y);
+    });
+    context.stroke();
+    context.closePath();
+
+    // draw split line grid
+
+    var _loop = function _loop(i) {
+        var startPos = {};
+        context.beginPath();
+        context.setLineWidth(1*opts.pixelRatio);
+        context.setStrokeStyle(radarOption.gridColor || "#cccccc");
+        coordinateAngle.forEach(function (angle, index) {
+            var pos = convertCoordinateOrigin(radius / config.radarGridCount * i * Math.cos(angle), radius / config.radarGridCount * i * Math.sin(angle), centerPosition);
+            if (index === 0) {
+                startPos = pos;
+                context.moveTo(pos.x, pos.y);
+            } else {
+                context.lineTo(pos.x, pos.y);
+            }
+        });
+        context.lineTo(startPos.x, startPos.y);
+        context.stroke();
+        context.closePath();
+    };
+
+    for (var i = 1; i <= config.radarGridCount; i++) {
+        _loop(i);
+    }
+
+    var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);
+	
+    radarDataPoints.forEach(function (eachSeries, seriesIndex) {
+        // 绘制区域数据
+        context.beginPath();
+        context.setFillStyle(eachSeries.color);
+        context.setGlobalAlpha(0.3);
+        eachSeries.data.forEach(function (item, index) {
+            if (index === 0) {
+                context.moveTo(item.position.x, item.position.y);
+            } else {
+                context.lineTo(item.position.x, item.position.y);
+            }
+        });
+        context.closePath();
+        context.fill();
+        context.setGlobalAlpha(1);
+
+        if (opts.dataPointShape !== false) {
+            var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length];
+            var points = eachSeries.data.map(function (item) {
+                return item.position;
+            });
+            drawPointShape(points, eachSeries.color, shape, context,opts);
+        }
+    });
+    // draw label text
+    drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);
+
+    return {
+        center: centerPosition,
+        radius: radius,
+        angleList: coordinateAngle
+    };
+}
+
+function drawCanvas(opts, context) {
+    context.draw();
+}
+
+var Timing = {
+    easeIn: function easeIn(pos) {
+        return Math.pow(pos, 3);
+    },
+
+    easeOut: function easeOut(pos) {
+        return Math.pow(pos - 1, 3) + 1;
+    },
+
+    easeInOut: function easeInOut(pos) {
+        if ((pos /= 0.5) < 1) {
+            return 0.5 * Math.pow(pos, 3);
+        } else {
+            return 0.5 * (Math.pow(pos - 2, 3) + 2);
+        }
+    },
+
+    linear: function linear(pos) {
+        return pos;
+    }
+};
+
+function Animation(opts) {
+    this.isStop = false;
+    opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;
+    opts.timing = opts.timing || 'linear';
+
+    var delay = 17;
+
+    var createAnimationFrame = function createAnimationFrame() {
+		
+        if (typeof requestAnimationFrame !== 'undefined') {
+			return requestAnimationFrame;
+        } else if (typeof setTimeout !== 'undefined') {
+			
+            return function (step, delay) {
+                setTimeout(function () {
+                    var timeStamp = +new Date();
+                    step(timeStamp);
+                }, delay);
+            };
+        } else {
+			
+            return function (step) {
+                step(null);
+            };
+        }
+    };
+    var animationFrame = createAnimationFrame();
+    var startTimeStamp = null;
+	
+    var _step = function step(timestamp) {
+		
+        if (timestamp === null || this.isStop === true) {
+            opts.onProcess && opts.onProcess(1);
+            opts.onAnimationFinish && opts.onAnimationFinish();
+            return;
+        }
+        if (startTimeStamp === null) {
+            startTimeStamp = timestamp;
+        }
+        if (timestamp - startTimeStamp < opts.duration) {
+            var process = (timestamp - startTimeStamp) / opts.duration;
+            var timingFunction = Timing[opts.timing];
+            process = timingFunction(process);
+			
+            opts.onProcess && opts.onProcess(process);
+            animationFrame(_step, delay);
+        } else {
+            opts.onProcess && opts.onProcess(1);
+            opts.onAnimationFinish && opts.onAnimationFinish();
+        }
+    };
+    _step = _step.bind(this);
+    animationFrame(_step, delay);
+}
+
+// stop animation immediately
+// and tigger onAnimationFinish
+Animation.prototype.stop = function () {
+    this.isStop = true;
+};
+
+function drawCharts(type, opts, config, context) {
+    var _this = this;
+
+    var series = opts.series;
+    var categories = opts.categories;
+    series = fillSeriesColor(series, config);
+
+    var _calLegendData = calLegendData(series, opts, config),
+        legendHeight = _calLegendData.legendHeight;
+
+    config.legendHeight = legendHeight;
+
+    var _calYAxisData = calYAxisData(series, opts, config),
+        yAxisWidth = _calYAxisData.yAxisWidth;
+
+    config.yAxisWidth = yAxisWidth;
+    if (categories && categories.length) {
+        var _calCategoriesData = calCategoriesData(categories, opts, config),
+            xAxisHeight = _calCategoriesData.xAxisHeight,
+            angle = _calCategoriesData.angle;
+
+        config.xAxisHeight = xAxisHeight;
+        config._xAxisTextAngle_ = angle;
+    }
+    if (type === 'pie' || type === 'ring') {
+        config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(series);
+    }
+
+    var duration = opts.animation ? 1000 : 0;
+    this.animationInstance && this.animationInstance.stop();
+    switch (type) {
+        case 'line':
+            this.animationInstance = new Animation({
+                timing: 'easeIn',
+                duration: duration,
+                onProcess: function onProcess(process) {
+                    drawYAxisGrid(opts, config, context);
+
+                    var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),
+                        xAxisPoints = _drawLineDataPoints.xAxisPoints,
+                        calPoints = _drawLineDataPoints.calPoints,
+                        eachSpacing = _drawLineDataPoints.eachSpacing;
+
+                    _this.chartData.xAxisPoints = xAxisPoints;
+                    _this.chartData.calPoints = calPoints;
+                    _this.chartData.eachSpacing = eachSpacing;
+                    drawXAxis(categories, opts, config, context);
+                    drawLegend(opts.series, opts, config, context);
+                    drawYAxis(series, opts, config, context);
+                    drawToolTipBridge(opts, config, context, process);
+                    drawCanvas(opts, context);
+                },
+                onAnimationFinish: function onAnimationFinish() {
+                    _this.event.trigger('renderComplete');
+                }
+            });
+            break;
+        case 'column':
+		    this.animationInstance = new Animation({
+                timing: 'easeIn',
+                duration: duration,
+                onProcess: function onProcess(process) {
+                    drawYAxisGrid(opts, config, context);
+                    var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),
+                        xAxisPoints = _drawColumnDataPoints.xAxisPoints,
+                        eachSpacing = _drawColumnDataPoints.eachSpacing;
+
+                    _this.chartData.xAxisPoints = xAxisPoints;
+                    _this.chartData.eachSpacing = eachSpacing;
+                    drawXAxis(categories, opts, config, context);
+                    drawLegend(opts.series, opts, config, context);
+                    drawYAxis(series, opts, config, context);
+                    drawCanvas(opts, context);
+                },
+                onAnimationFinish: function onAnimationFinish() {
+                    _this.event.trigger('renderComplete');
+                }
+            });
+            break;
+        case 'area':
+            this.animationInstance = new Animation({
+                timing: 'easeIn',
+                duration: duration,
+                onProcess: function onProcess(process) {
+                    drawYAxisGrid(opts, config, context);
+
+                    var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),
+                        xAxisPoints = _drawAreaDataPoints.xAxisPoints,
+                        calPoints = _drawAreaDataPoints.calPoints,
+                        eachSpacing = _drawAreaDataPoints.eachSpacing;
+
+                    _this.chartData.xAxisPoints = xAxisPoints;
+                    _this.chartData.calPoints = calPoints;
+                    _this.chartData.eachSpacing = eachSpacing;
+                    drawXAxis(categories, opts, config, context);
+                    drawLegend(opts.series, opts, config, context);
+                    drawYAxis(series, opts, config, context);
+                    drawToolTipBridge(opts, config, context, process);
+                    drawCanvas(opts, context);
+                },
+                onAnimationFinish: function onAnimationFinish() {
+                    _this.event.trigger('renderComplete');
+                }
+            });
+            break;
+        case 'ring':
+        case 'pie':
+            this.animationInstance = new Animation({
+                timing: 'easeInOut',
+                duration: duration,
+                onProcess: function onProcess(process) {
+                    _this.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);
+                    drawLegend(opts.series, opts, config, context);
+                    drawCanvas(opts, context);
+                },
+                onAnimationFinish: function onAnimationFinish() {
+                    _this.event.trigger('renderComplete');
+                }
+            });
+            break;
+        case 'radar':
+            this.animationInstance = new Animation({
+                timing: 'easeInOut',
+                duration: duration,
+                onProcess: function onProcess(process) {
+                    _this.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);
+                    drawLegend(opts.series, opts, config, context);
+                    drawCanvas(opts, context);
+                },
+                onAnimationFinish: function onAnimationFinish() {
+                    _this.event.trigger('renderComplete');
+                }
+            });
+            break;
+    }
+}
+
+// simple event implement
+
+function Event() {
+	this.events = {};
+}
+
+Event.prototype.addEventListener = function (type, listener) {
+	this.events[type] = this.events[type] || [];
+	this.events[type].push(listener);
+};
+
+Event.prototype.trigger = function () {
+	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+		args[_key] = arguments[_key];
+	}
+
+	var type = args[0];
+	var params = args.slice(1);
+	if (!!this.events[type]) {
+		this.events[type].forEach(function (listener) {
+			try {
+				listener.apply(null, params);
+			} catch (e) {
+				console.error(e);
+			}
+		});
+	}
+};
+
+var Charts = function Charts(opts) {
+	opts.fontSize=opts.fontSize ? opts.fontSize*opts.pixelRatio : 10*opts.pixelRatio;
+    opts.title = opts.title || {};
+    opts.subtitle = opts.subtitle || {};
+    opts.yAxis = opts.yAxis || {};
+    opts.xAxis = opts.xAxis || {};
+    opts.extra = opts.extra || {};
+    opts.legend = opts.legend === false ? false : true;
+    opts.animation = opts.animation === false ? false : true;
+    var config$$1 = assign({}, config);
+    config$$1.yAxisTitleWidth = opts.yAxis.disabled !== true && opts.yAxis.title ? config$$1.yAxisTitleWidth : 0;
+    config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : config$$1.pieChartLinePadding*opts.pixelRatio;
+    config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding*opts.pixelRatio;
+	
+	//适配H5高分屏
+	
+	config$$1.yAxisWidth=config.yAxisWidth*opts.pixelRatio;
+	config$$1.xAxisHeight=config.xAxisHeight*opts.pixelRatio;
+	config$$1.xAxisLineHeight=config.xAxisLineHeight*opts.pixelRatio;
+	config$$1.legendHeight=config.legendHeight*opts.pixelRatio;
+	//config$$1.yAxisTitleWidth=config.yAxisTitleWidth*opts.pixelRatio;
+	config$$1.padding=config.padding*opts.pixelRatio;
+	config$$1.fontSize=opts.fontSize;
+	config$$1.titleFontSize=config.titleFontSize*opts.pixelRatio;
+	config$$1.subtitleFontSize=config.subtitleFontSize*opts.pixelRatio;
+	//config$$1.toolTipPadding=config.toolTipPadding*opts.pixelRatio;
+	config$$1.toolTipLineHeight=config.toolTipLineHeight*opts.pixelRatio;
+	config$$1.columePadding=config.columePadding*opts.pixelRatio;
+	//config$$1.xAxisTextPadding=config.xAxisTextPadding*opts.pixelRatio;
+	
+	//向配置中传入当前pixelRatio及字体大小
+	config.pixelRatio=opts.pixelRatio;
+	config.fontSize=opts.fontSize;
+	
+    this.opts = opts;
+    this.config = config$$1;
+    this.context = uni.createCanvasContext(opts.canvasId);
+    // store calcuated chart data
+    // such as chart point coordinate
+    this.chartData = {};
+    this.event = new Event();
+    this.scrollOption = {
+        currentOffset: 0,
+        startTouchX: 0,
+        distance: 0
+    };
+
+    drawCharts.call(this, opts.type, opts, config$$1, this.context);
+};
+
+Charts.prototype.updateData = function () {
+    var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+    this.opts.series = data.series || this.opts.series;
+    this.opts.categories = data.categories || this.opts.categories;
+
+    this.opts.title = assign({}, this.opts.title, data.title || {});
+    this.opts.subtitle = assign({}, this.opts.subtitle, data.subtitle || {});
+
+    drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+};
+
+Charts.prototype.stopAnimation = function () {
+    this.animationInstance && this.animationInstance.stop();
+};
+
+Charts.prototype.addEventListener = function (type, listener) {
+    this.event.addEventListener(type, listener);
+};
+
+Charts.prototype.getCurrentDataIndex = function (e) {
+    var touches = e.mp.touches[e.mp.touches.length-1];
+    if (touches) {
+		
+        var _touches$= touches,x,y;
+			//适配H5高分屏
+			if(_touches$.clientX){
+				x = _touches$.clientX*this.opts.pixelRatio;
+				y = (_touches$.pageY-e.mp.currentTarget.offsetTop-(this.opts.height/this.opts.pixelRatio/2)*(this.opts.pixelRatio-1))*this.opts.pixelRatio;
+			}else{
+				x = _touches$.x*this.opts.pixelRatio;
+				y = _touches$.y;
+			}
+        if (this.opts.type === 'pie' || this.opts.type === 'ring') {
+            return findPieChartCurrentIndex({ x: x, y: y }, this.chartData.pieData);
+        } else if (this.opts.type === 'radar') {
+            return findRadarChartCurrentIndex({ x: x, y: y }, this.chartData.radarData, this.opts.categories.length);
+        } else {
+            return findCurrentIndex({ x: x, y: y }, this.chartData.xAxisPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
+        }
+    }
+    return -1;
+};
+
+Charts.prototype.showToolTip = function (e) {
+    var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+    if (this.opts.type === 'line' || this.opts.type === 'area') {
+        var index = this.getCurrentDataIndex(e);
+        var currentOffset = this.scrollOption.currentOffset;
+
+        var opts = assign({}, this.opts, {
+            _scrollDistance_: currentOffset,
+            animation: false
+        });
+        if (index > -1) {
+            var seriesData = getSeriesDataItem(this.opts.series, index);
+            if (seriesData.length !== 0) {
+                var _getToolTipData = getToolTipData(seriesData, this.chartData.calPoints, index, this.opts.categories, option),
+                    textList = _getToolTipData.textList,
+                    offset = _getToolTipData.offset;
+
+                opts.tooltip = {
+                    textList: textList,
+                    offset: offset,
+                    option: option
+                };
+            }
+        }
+        drawCharts.call(this, opts.type, opts, this.config, this.context);
+    }
+};
+
+Charts.prototype.scrollStart = function (e) {
+    if (e.touches[0] && this.opts.enableScroll === true) {
+        this.scrollOption.startTouchX = e.touches[0].x;
+    }
+};
+
+Charts.prototype.scroll = function (e) {
+    // TODO throtting...
+    if (e.touches[0] && this.opts.enableScroll === true) {
+        var _distance = e.touches[0].x - this.scrollOption.startTouchX;
+        var currentOffset = this.scrollOption.currentOffset;
+
+        var validDistance = calValidDistance(currentOffset + _distance, this.chartData, this.config, this.opts);
+
+        this.scrollOption.distance = _distance = validDistance - currentOffset;
+        var opts = assign({}, this.opts, {
+            _scrollDistance_: currentOffset + _distance,
+            animation: false
+        });
+
+        drawCharts.call(this, opts.type, opts, this.config, this.context);
+    }
+};
+
+Charts.prototype.scrollEnd = function (e) {
+    if (this.opts.enableScroll === true) {
+        var _scrollOption = this.scrollOption,
+            currentOffset = _scrollOption.currentOffset,
+            distance = _scrollOption.distance;
+
+        this.scrollOption.currentOffset = currentOffset + distance;
+        this.scrollOption.distance = 0;
+    }
+};
+
+module.exports = Charts;

+ 33 - 14
src/dashoo.cn/frontend_app/pages.json

@@ -4,13 +4,13 @@
         {
             "path" : "pages/main/main",
             "style" : {
-                "navigationBarTitleText" : "登录模板"
+                "navigationBarTitleText" : "检测评价系统"
             }
         },
         {
             "path" : "pages/login/login",
             "style" : {
-                "navigationBarTitleText" : "登录"
+                "navigationBarTitleText" : "检测评价系统"
             }
         },
         {
@@ -28,13 +28,25 @@
         {
             "path" : "pages/user/user",
             "style" : {
-                "navigationBarTitleText" : "我的"
+                "navigationBarTitleText" : "检测评价系统"
             }
         },
+		{
+			"path": "pages/detail/detail",
+			"style": {
+				"navigationBarTitleText" : "检测评价系统"
+			}
+		},
+		{
+			"path": "pages/ucenter/ucenter",
+			"style": {
+				"navigationBarTitleText": "个人中心"
+			}
+		},
         {
             "path" : "pages/main/index",
             "style" : {
-                "navigationBarTitleText" : "首页",
+                "navigationBarTitleText" : "检测评价系统",
 				"enablePullDownRefresh": true
             }
         },
@@ -48,13 +60,15 @@
         {
             "path" : "pages/lims/reportelecground/dataopera",
             "style": {
-				"enablePullDownRefresh": true
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText" : "数据录入"
 			}
         },
         {
             "path" : "pages/lims/reportleakprotect/datalist",
             "style": {
-				"enablePullDownRefresh": true
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText" : "数据录入"
 			}
         },
         {
@@ -67,7 +81,8 @@
         {
             "path" : "pages/lims/reportlightprotect/datalist",
             "style": {
-				"enablePullDownRefresh": true
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText" : "数据录入"
 			}
         },
         {
@@ -80,7 +95,8 @@
         {
             "path" : "pages/lims/reportequipotent/datalist",
             "style": {
-				"enablePullDownRefresh": true
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText" : "数据录入"
 			}
         },
         {
@@ -100,7 +116,8 @@
 		{
 		    "path" : "pages/lims/reportzuhq/datalist",
 		    "style" : {
-				"enablePullDownRefresh": true
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText" : "数据录入"
 			}
 		},
         {
@@ -113,8 +130,8 @@
 		{
             "path" : "pages/lims/reporthydraulicsafe/datalist",
             "style" : {
-				"navigationBarTitleText" : "",
-				"enablePullDownRefresh": true
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText" : "数据录入"
 			}
         },
         {
@@ -140,7 +157,8 @@
 		{
 		    "path" : "pages/lims/reportatmosvalve/datalist",
 		    "style" : {
-				"enablePullDownRefresh": true
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText" : "数据录入"
 			}
 		},
 		{
@@ -153,7 +171,8 @@
 		{
 		    "path" : "pages/lims/reportairfoamgenerator/datalist",
 		    "style" : {
-				"enablePullDownRefresh": true
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText" : "数据录入"
 			}
 		}
     ],
@@ -169,7 +188,7 @@
                 "selectedIconPath" : "static/img/homeHL.png"
             },
             {
-                "pagePath" : "pages/user/user",
+                "pagePath" : "pages/ucenter/ucenter",
                 "text" : "我的",
                 "iconPath" : "static/img/user.png",
                 "selectedIconPath" : "static/img/userHL.png"

+ 115 - 0
src/dashoo.cn/frontend_app/pages/detail/detail.vue

@@ -0,0 +1,115 @@
+<template>
+	<view>
+		<view class="banner">
+			<image class="banner-img" :src="banner.image_url"></image>
+			<view class="banner-title">{{banner.title}}</view>
+		</view>
+		<view class="article-meta">
+			<text class="article-author">{{banner.source}}</text>
+			<text class="article-text">发表于</text>
+			<text class="article-time">{{banner.datetime}}</text>
+		</view>
+		<view class="article-content">
+			<rich-text :nodes="content"></rich-text>
+		</view>
+		<view class="comment-wrap"></view>
+	</view>
+</template>
+
+<script>
+	const FAIL_CONTENT = '<p>获取信息失败</p>';
+	export default {
+		data() {
+			return {
+				banner: {},
+				content: ''
+			}
+		},
+		onShareAppMessage() {
+			return {
+				title: this.banner.title,
+				path: '/pages/detail/detail?query=' + JSON.stringify(this.banner)
+			}
+		},
+		onLoad(event) {
+			// 目前在某些平台参数会被主动 decode,暂时这样处理。
+			try {
+				this.banner = JSON.parse(decodeURIComponent(event.query));
+			} catch (error) {
+				this.banner = JSON.parse(event.query);
+			}
+
+			this.getDetail();
+			uni.setNavigationBarTitle({
+				title: this.banner.title
+			});
+		},
+		methods: {
+			getDetail() {
+				uni.request({
+					url: 'https://unidemo.dcloud.net.cn/api/news/36kr/' + this.banner.post_id,
+					success: (result) => {
+						if (result.statusCode == 200) {
+							this.content = result.data.content;
+						} else {
+							this.content = FAIL_CONTENT;
+						}
+					}
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+	.banner {
+		height: 360upx;
+		overflow: hidden;
+		position: relative;
+		background-color: #ccc;
+	}
+
+	.banner-img {
+		width: 100%;
+	}
+
+	.banner-title {
+		max-height: 84upx;
+		overflow: hidden;
+		position: absolute;
+		left: 30upx;
+		bottom: 30upx;
+		width: 90%;
+		font-size: 32upx;
+		font-weight: 400;
+		line-height: 42upx;
+		color: white;
+		z-index: 11;
+	}
+
+	.article-meta {
+		padding: 20upx 40upx;
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		color: gray;
+	}
+
+	.article-text {
+		font-size: 26upx;
+		line-height: 50upx;
+		margin: 0 20upx;
+	}
+
+	.article-author,
+	.article-time {
+		font-size: 30upx;
+	}
+
+	.article-content {
+		padding: 0 30upx;
+		overflow: hidden;
+		font-size: 30upx;
+		margin-bottom: 30upx;
+	}
+</style>

+ 7 - 6
src/dashoo.cn/frontend_app/pages/main/index.vue

@@ -1,6 +1,6 @@
 <template>
     <view class="page">
-		<view class="uni-padding-wrap uni-common-mt">
+		<view>
 			<view class="uni-card" v-for="item in List" :key="item.Id" @tap="opendocentry(item)">
 				<view class="uni-card-header">{{item.DataEntryCode}}</view>
 				<view class="uni-card-content">
@@ -22,9 +22,9 @@
 					</view>
 				</view>
 			</view>
-			<uni-load-more :loadingType="loadingType" :contentText="contentText"></uni-load-more>
+			<!-- <uni-load-more :loadingType="loadingType" :contentText="contentText"></uni-load-more> -->
 		</view>
-		<view style="height:80upx;"></view>
+		<!-- <view style="height:80upx;"></view> -->
     </view>
 </template>
 
@@ -32,6 +32,7 @@
 	import uniLoadMore from '../../components/uni-load-more.vue'
 	import api from '@/common/http/limsApi/docTemplateApi.js'
     export default {
+		name: 'dataIndex',
 		components: {
 			uniLoadMore
 		},
@@ -56,7 +57,7 @@
 				}
             }
         },
-		onLoad() {
+		created() {
 			this.initData()
 			this.getDictList()
 		},
@@ -223,11 +224,11 @@
 <style>
 	
 	.uni-card{
-		margin-top:50upx;
+		margin-top:10upx;
 	}
 	
     .page {
-        padding-top: 60upx; background: #efeff4;
+        padding-top: 5upx; background: #efeff4;
     }
 	
     .image-view {

+ 345 - 75
src/dashoo.cn/frontend_app/pages/main/main.vue

@@ -1,91 +1,361 @@
 <template>
-    <view class="content">
-        <view v-if="hasLogin" class="hello">
-            <view class="title">
-                您好 {{userName}},您已成功登录。
-            </view>
-            <view class="ul">
-                <view>这是 uni-app 带登录模板的示例App首页。</view>
-                <view>在 “我的” 中点击 “退出” 可以 “注销当前账户”</view>
-				<button type="primary" plain="true" @click="bindkq">数据录入</button>
-            </view>
-        </view>
-        <view v-if="!hasLogin" class="hello">
-            <view class="title">
-                您好 游客。
-            </view>
-            <view class="ul">
-                <view>这是 uni-app 带登录模板的示例App首页。</view>
-                <view>在 “我的” 中点击 “登录” 可以 “登录您的账户”</view>
-            </view>
-        </view>
-    </view>
+	<view class="uni-tab-bar">
+		<scroll-view id="tab-bar" class="uni-swiper-tab" scroll-x :scroll-left="scrollLeft">
+			<view v-for="(tab, index) in tabBars" :key="tab.ref" :class="['swiper-tab-list',tabIndex==index ? 'active' : '']"
+			 :id="tab.ref" :data-current="index" @click="tapTab(index)">{{tab.name}}</view>
+		</scroll-view>
+		
+		<template v-if="tabIndex!=1 && tabIndex!=0">
+			<!-- #ifndef MP-BAIDU -->
+			<scroll-view class="list" v-for="(tabItem, idx) in newsList" :key="idx" v-if="tabIndex === idx" scroll-y
+			 @scrolltolower="loadMore(idx)">
+				<block v-for="(newsItem, newsIndex) in tabItem.data" :key="newsIndex">
+					<uni-media-list :data="newsItem" @close="dislike(idx, newsIndex)" @click="goDetail(newsItem)"></uni-media-list>
+				</block>
+				<view class="uni-tab-bar-loading">
+					<view class="loading-more">{{loadingText}}</view>
+				</view>
+			</scroll-view>
+			<!-- #endif -->
+			<!-- #ifdef MP-BAIDU -->
+			<view class="scroll-wrap" v-for="(tabItem, idx) in newsList" :key="idx">
+				<scroll-view class="list" v-if="tabIndex === idx" scroll-y @scrolltolower="loadMore(idx)" :style="scrollViewHeight">
+					<block v-for="(newsItem, newsIndex) in tabItem.data" :key="newsIndex">
+						<uni-media-list :data="newsItem" @close="dislike(idx, newsIndex)" @click="goDetail(newsItem)"></uni-media-list>
+					</block>
+					<view class="uni-tab-bar-loading">
+						<view class="loading-more">{{loadingText}}</view>
+					</view>
+				</scroll-view>
+			</view>
+			<!-- #endif -->
+		</template>
+		
+		<scroll-view v-if="tabIndex==0" scroll-y :style="scrollViewHeight2">
+			<wxcharts></wxcharts>
+		</scroll-view>
+		
+		<scroll-view v-if="tabIndex==1" class="list" scroll-y :style="scrollViewHeight2" @scrolltolower="loadMoreDataIndex">
+			<data-index ref="dataIndex"></data-index>
+			<view class="uni-tab-bar-loading">
+				<view class="loading-more">{{loadingText}}</view>
+			</view>
+		</scroll-view>
+	</view>
 </template>
-
 <script>
-    import {
+	import {
         mapState
-    } from 'vuex'
+    } from 'vuex';
+	
+	import uniMediaList from '@/components/uni-media-list/uni-media-list.vue';
+	import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	import dataIndex from './index.vue';
+	import wxcharts from '../wxcharts/wxcharts.vue';
 
-    export default {
-        computed: mapState(['forcedLogin', 'hasLogin', 'userName']),
-		methods: {
-			bindkq() {
-				uni.navigateTo({
-					url: 'index'
-				})
+	import {
+		friendlyDate
+	} from '@/common/util.js';
+
+	export default {
+		components: {
+			uniMediaList,
+			uniLoadMore,
+			dataIndex,
+			wxcharts
+		},
+		
+		computed: {
+			...mapState(['forcedLogin', 'hasLogin', 'userName']),
+			scrollViewHeight() {
+				return 'height:' + (uni.getSystemInfoSync().windowHeight) + 'px';
+			},
+			scrollViewHeight2() {
+				return 'height:' + (uni.getSystemInfoSync().windowHeight-50) + 'px';
+			},
+		},
+		
+		data() {
+			return {
+				loadingText: {
+					contentdown: '上拉加载更多',
+					contentrefresh: '正在加载...',
+					contentnomore: '没有更多数据了'
+				},
+				scrollLeft: 0,
+				refreshing: false,
+				refreshText: '下拉可以刷新',
+				newsList: [],
+				tabIndex: 0,
+				tabBars: [{
+					name: '首页',
+					id: 0,
+					ref: 'main'
+				}, {
+					name: '待录入',
+					id: 1,
+					ref: 'need'
+				}/* , {
+					name: '已录入',
+					id: 23,
+					ref: 'finish'
+				}, {
+					name: '通知',
+					id: 223,
+					ref: 'notice'
+				} */],
+				
 			}
 		},
-        onLoad() {
-            if (!this.hasLogin) {
-                uni.showModal({
-                    title: '未登录',
-                    content: '您未登录,需要登录后才能继续',
-                    /**
-                     * 如果需要强制登录,不显示取消按钮
-                     */
-                    showCancel: !this.forcedLogin,
-                    success: (res) => {
-                        if (res.confirm) {
+        
+		onLoad: function() {
+			if (!this.hasLogin) {
+			    uni.showModal({
+			        title: '这是大港油田检测监督评价系统',
+			        content: '您未登录,需要登录后才能继续',
+			        /**
+			         * 如果需要强制登录,不显示取消按钮
+			         */
+			        showCancel: !this.forcedLogin,
+			        success: (res) => {
+			            if (res.confirm) {
 							/**
 							 * 如果需要强制登录,使用reLaunch方式
 							 */
-                            if (this.forcedLogin) {
-                                uni.reLaunch({
-                                    url: '../login/login'
-                                });
-                            } else {
-                                uni.navigateTo({
-                                    url: '../login/login'
-                                });
-                            }
-                        }
-                    }
-                });
-            }
-        }
-    }
-</script>
+			                if (this.forcedLogin) {
+			                    uni.reLaunch({
+			                        url: '../login/login'
+			                    });
+			                } else {
+			                    uni.navigateTo({
+			                        url: '../login/login'
+			                    });
+			                }
+			            }
+			        }
+			    });
+			} else {
+				// 初始化列表信息
+				this.tabBars.forEach((tabBar) => {
+					this.newsList.push({
+						data: [],
+						requestParams: {
+							columnId: tabBar.id,
+							minId: 0,
+							pageSize: 10,
+							column: 'id,post_id,title,author_name,cover,published_at,comments_count'
+						},
+						loadingText: '加载中...'
+					});
+				});
+				this.getList();
+			}
+			
+		},
+		methods: {
+			bindkq() {
+				uni.redirectTo({
+					url: 'index'
+				})
+			},
+			getList(action = 1) {
+				let activeTab = this.newsList[this.tabIndex];
+				activeTab.requestParams.time = new Date().getTime() + '';
+				if (action === 1) {
+					activeTab.requestParams.minId = 0;
+				}
+				this.loadingText = '加载中...';
+				uni.request({
+					url: 'https://unidemo.dcloud.net.cn/api/news',
+					data: activeTab.requestParams,
+					success: (result) => {
+						if (result.statusCode == 200) {
+							const data = result.data.map((news) => {
+								return {
+									id: news.id,
+									article_type: 1,
+									datetime: friendlyDate(new Date(news.published_at.replace(/\-/g, '/')).getTime()),
+									title: news.title,
+									image_url: news.cover,
+									source: news.author_name,
+									comment_count: news.comments_count,
+									post_id: news.post_id
+								};
+							});
+							if (action === 1) {
+								activeTab.data = data;
+								this.refreshing = false;
+							} else {
+								data.forEach((news) => {
+									activeTab.data.push(news);
+								});
+							}
+							activeTab.requestParams.minId = data[data.length - 1].id;
+						}
+					}
+				});
+			},
+			goDetail(detail) {
+				uni.navigateTo({
+					url: '/pages/detail/detail?query=' + encodeURIComponent(JSON.stringify(detail))
+				});
+			},
+			dislike(tabIndex, newsIndex) {
+				uni.showModal({
+					content: '不感兴趣?',
+					success: (res) => {
+						if (res.confirm) {
+							this.newsList[tabIndex].data.splice(newsIndex, 1);
+						}
+					}
+				})
+			},
+			loadMore() {
+				console.log('load more');
+				this.getList(2);
+			},
+			loadMoreDataIndex() {
+				console.log(this.$refs['dataIndex'].loadingType)
+				if(this.$refs['dataIndex'].loadingType == 3) {
+					this.loadingText = "没有更多数据了"
+				}
+				this.$refs['dataIndex'].loadMoreData()
+				
+				//this.getList(2);
+			},
+			async changeTab(event) {
+				let index = event.detail.current;
+				if (this.isClickChange) {
+					this.tabIndex = index;
+					this.isClickChange = false;
+					return;
+				}
+				let tabBar = await this.getElSize('tab-bar');
+				let tabBarScrollLeft = tabBar.scrollLeft;
+				let width = 0;
 
+				for (let i = 0; i < index; i++) {
+					let result = await this.getElSize(this.tabBars[i].ref);
+					width += result.width;
+				}
+				let winWidth = uni.getSystemInfoSync().windowWidth,
+					nowElement = await this.getElSize(this.tabBars[index].ref),
+					nowWidth = nowElement.width;
+				if (width + nowWidth - tabBarScrollLeft > winWidth) {
+					this.scrollLeft = width + nowWidth - winWidth;
+				}
+				if (width < tabBarScrollLeft) {
+					this.scrollLeft = width;
+				}
+				this.isClickChange = false;
+				this.tabIndex = index;
+
+				// 首次切换后加载数据
+				const activeTab = this.newsList[this.tabIndex];
+				if (activeTab.data.length === 0) {
+					this.getList();
+				}
+			},
+			getNodeSize(node) {
+				return new Promise((resolve, reject) => {
+					dom.getComponentRect(node, (result) => {
+						resolve(result.size);
+					});
+				});
+			},
+			onRefresh(event) {
+				this.refreshText = '正在刷新...';
+				this.refreshing = true;
+				this.getList();
+			},
+			getElSize(id) { //得到元素的size
+				return new Promise((res, rej) => {
+					uni.createSelectorQuery().select('#' + id).fields({
+						size: true,
+						scrollOffset: true
+					}, (data) => {
+						res(data);
+					}).exec();
+				});
+			},
+			async tapTab(index) { //点击tab-bar
+				if (this.tabIndex === index) {
+					return false;
+				} else {
+					// 					let tabBar = await this.getElSize('tab-bar'),
+					// 						tabBarScrollLeft = tabBar.scrollLeft; //点击的时候记录并设置scrollLeft
+					// 					this.scrollLeft = tabBarScrollLeft;
+					// 					this.isClickChange = true;
+					console.log('ssss')
+					this.tabIndex = index;
+					// 首次切换后加载数据
+					const activeTab = this.newsList[this.tabIndex];
+					if (activeTab.data.length === 0) {
+						this.getList();
+					}
+				}
+			},
+		}
+	}
+</script>
 <style>
-    .hello {
-        display: flex;
-        flex: 1;
-        flex-direction: column;
-    }
+	page {
+		background-color: #FFFFFF;
+		height: 100%;
+		font-size: 11px;
+		line-height: 1.8;
+	}
+
+	.uni-tab-bar {
+		display: flex;
+		flex: 1;
+		flex-direction: column;
+		overflow: hidden;
+		height: 100%;
+	}
+
+	.uni-tab-bar .list {
+		width: 750upx;
+		height: calc(100% - 100upx);
+		margin-top: 100upx;
+	}
+
+	.uni-swiper-tab {
+		width: 100%;
+		white-space: nowrap;
+		line-height: 100upx;
+		height: 100upx;
+		border-bottom: 1px solid #c8c7cc;
+		position: fixed;
+		background: #FFFFFF;
+		z-index: 999;
+		top: var(--window-top);
+		left: 0;
+	}
+
+	.swiper-tab-list {
+		font-size: 30upx;
+		width: 150upx;
+		display: inline-block;
+		text-align: center;
+		color: #555;
+	}
 
-    .title {
-        color: #8f8f94;
-        margin-top: 50upx;
-    }
+	.uni-tab-bar .active {
+		color: #007AFF;
+	}
 
-    .ul {
-        font-size: 30upx;
-        color: #8f8f94;
-        margin-top: 50upx;
-    }
+	.uni-tab-bar .swiper-box {
+		flex: 1;
+		width: 100%;
+		height: calc(100% - 100upx);
+		overflow: scroll;
+	}
 
-    .ul>view {
-        line-height: 50upx;
-    }
+	.uni-tab-bar-loading {
+		text-align: center;
+		padding: 20upx 0;
+		font-size: 14px;
+		color: #CCCCCC;
+	}
 </style>

+ 213 - 0
src/dashoo.cn/frontend_app/pages/ucenter/ucenter.vue

@@ -0,0 +1,213 @@
+<template>
+	<view class="center">
+		<view class="logo" @click="goLogin" :hover-class="!hasLogin ? 'logo-hover' : ''">
+			<image class="logo-img" :src="hasLogin ? uerInfo.avatarUrl :avatarUrl"></image>
+			<view class="logo-title">
+				<text class="uer-name">Hi,{{hasLogin ? uerInfo.name : '您未登录'}}</text>
+				<text class="go-login navigat-arrow" v-if="!hasLogin">&#xe65e;</text>
+			</view>
+		</view>
+		<view class="center-list">
+			<view class="center-list-item border-bottom">
+				<text class="list-icon">&#xe60f;</text>
+				<text class="list-text">账号管理</text>
+				<text class="navigat-arrow">&#xe65e;</text>
+			</view>
+			<view class="center-list-item">
+				<text class="list-icon">&#xe639;</text>
+				<text class="list-text">新消息通知</text>
+				<text class="navigat-arrow">&#xe65e;</text>
+			</view>
+		</view>
+		<view class="center-list">
+			<view class="center-list-item border-bottom">
+				<text class="list-icon">&#xe60b;</text>
+				<text class="list-text">帮助与反馈</text>
+				<text class="navigat-arrow">&#xe65e;</text>
+			</view>
+			<view class="center-list-item">
+				<text class="list-icon">&#xe65f;</text>
+				<text class="list-text">服务条款及隐私</text>
+				<text class="navigat-arrow">&#xe65e;</text>
+			</view>
+		</view>
+		<view class="center-list">
+			<view class="center-list-item">
+				<text class="list-icon">&#xe614;</text>
+				<text class="list-text">关于应用</text>
+				<text class="navigat-arrow">&#xe65e;</text>
+			</view>
+		</view>
+		
+		<view class="btn-row">
+		    <button v-if="!hasLogin" type="primary" class="primary" @tap="bindLogin">登录</button>
+		    <button v-if="hasLogin" type="default" @tap="bindLogout">退出登录</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+	    mapState,
+	    mapMutations
+	} from 'vuex'
+	
+	export default {
+		computed: {
+		    ...mapState(['hasLogin', 'forcedLogin'])
+		},
+		data() {
+			return {
+				login: false,
+				avatarUrl: '/static/logo.png',
+				uerInfo: {}
+			}
+		},
+		methods: {
+			...mapMutations(['logout']),
+			goLogin() {
+				if (!this.login) {
+					console.log('点击前往登录');
+				}
+			},			
+			bindLogin() {
+			    uni.navigateTo({
+			        url: '../login/login',
+			    });
+			},
+			bindLogout() {
+			    this.logout();
+			    /**
+			     * 如果需要强制登录跳转回登录页面
+			     */
+			    if (this.forcedLogin) {
+			        uni.reLaunch({
+			            url: '../login/login',
+			        });
+			    }
+			}
+		}
+	}
+</script>
+
+<style>
+	@font-face {
+		font-family: texticons;
+		font-weight: normal;
+		font-style: normal;
+		src: url('https://at.alicdn.com/t/font_984210_5cs13ndgqsn.ttf') format('truetype');
+	}
+
+	page,
+	view {
+		display: flex;
+	}
+
+	page {
+		background-color: #f8f8f8;
+	}
+
+	.center {
+		flex-direction: column;
+	}
+
+	.logo {
+		width: 750upx;
+		height: 240upx;
+		padding: 20upx;
+		box-sizing: border-box;
+		background-color: #2F85FC;
+		flex-direction: row;
+		align-items: center;
+	}
+
+	.logo-hover {
+		opacity: 0.8;
+	}
+
+	.logo-img {
+		width: 150upx;
+		height: 150upx;
+		border-radius: 150upx;
+	}
+
+	.logo-title {
+		height: 150upx;
+		flex: 1;
+		align-items: center;
+		justify-content: space-between;
+		flex-direction: row;
+		margin-left: 20upx;
+	}
+
+	.uer-name {
+		height: 60upx;
+		line-height: 60upx;
+		font-size: 38upx;
+		color: #FFFFFF;
+	}
+
+	.go-login.navigat-arrow {
+		font-size: 38upx;
+		color: #FFFFFF;
+	}
+
+	.login-title {
+		height: 150upx;
+		align-items: self-start;
+		justify-content: center;
+		flex-direction: column;
+		margin-left: 20upx;
+	}
+
+	.center-list {
+		background-color: #FFFFFF;
+		margin-top: 20upx;
+		width: 750upx;
+		flex-direction: column;
+	}
+
+	.center-list-item {
+		height: 90upx;
+		width: 750upx;
+		box-sizing: border-box;
+		flex-direction: row;
+		padding: 0upx 20upx;
+	}
+
+	.border-bottom {
+		border-bottom-width: 1upx;
+		border-color: #c8c7cc;
+		border-bottom-style: solid;
+	}
+
+	.list-icon {
+		width: 40upx;
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 34upx;
+		color: #2F85FC;
+		text-align: center;
+		font-family: texticons;
+		margin-right: 20upx;
+	}
+
+	.list-text {
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 34upx;
+		color: #555;
+		flex: 1;
+		text-align: left;
+	}
+
+	.navigat-arrow {
+		height: 90upx;
+		width: 40upx;
+		line-height: 90upx;
+		font-size: 34upx;
+		color: #555;
+		text-align: right;
+		font-family: texticons;
+	}
+</style>

+ 356 - 0
src/dashoo.cn/frontend_app/pages/wxcharts/wxcharts.vue

@@ -0,0 +1,356 @@
+<template>
+	<view class="qiun-columns">
+		<view class="qiun-padding" style="font-size: 32upx; margin-top: 45px;">
+			<text>工作情况统计分析</text>
+		</view>
+		
+        <view class="qiun-bg-white qiun-title-bar" >
+        	<view class="qiun-title-dot-light">设备检测数据</view>
+        </view>
+        <view class="qiun-charts">
+        	<!--#ifdef H5 || MP-ALIPAY -->
+        	<canvas canvasId="canvasColumn" id="canvasColumn" class="charts" :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
+        	<!--#endif-->
+        	<!--#ifdef MP-WEIXIN || APP-PLUS -->
+        	<canvas canvasId="canvasColumn" id="canvasColumn" class="charts"></canvas>
+        	<!--#endif-->
+        </view>
+		<view class="qiun-bg-white qiun-title-bar qiun-common-mt" >
+			<view class="qiun-title-dot-light">数据录入条数</view>
+		</view>
+		<view class="qiun-charts">
+			<!--#ifdef H5 || MP-ALIPAY -->
+			<canvas canvasId="canvasLineA" id="canvasLineA" class="charts" :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}" @touchstart="touchLineA"></canvas>
+			<!--#endif-->
+			<!--#ifdef MP-WEIXIN || APP-PLUS -->
+			<canvas canvasId="canvasLineA" id="canvasLineA" class="charts" @touchstart="touchLineA"></canvas>
+			<!--#endif-->
+		</view>
+		<view class="qiun-bg-white qiun-title-bar qiun-common-mt" >
+			<view class="qiun-title-dot-light">生成报告条数</view>
+		</view>
+		<view class="qiun-charts">
+			<!--#ifdef H5 || MP-ALIPAY -->
+			<canvas canvasId="canvasLineB" id="canvasLineB" class="charts" :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}" @touchstart="touchLineB"></canvas>
+			<!--#endif-->
+			<!--#ifdef MP-WEIXIN || APP-PLUS -->
+			<canvas canvasId="canvasLineB" id="canvasLineB" class="charts" @touchstart="touchLineB"></canvas>
+			<!--#endif-->
+		</view>
+		<view class="qiun-bg-white qiun-title-bar qiun-common-mt" >
+			<view class="qiun-title-dot-light">分布区域</view>
+		</view>
+		<view class="qiun-charts">
+			<!--#ifdef H5 || MP-ALIPAY -->
+			<canvas canvasId="canvasArea" id="canvasArea" class="charts" :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}" @touchstart="touchArea"></canvas>
+			<!--#endif-->
+			<!--#ifdef MP-WEIXIN || APP-PLUS -->
+			<canvas canvasId="canvasArea" id="canvasArea" class="charts" @touchstart="touchArea"></canvas>
+			<!--#endif-->
+		</view>
+		<view class="qiun-bg-white qiun-title-bar qiun-common-mt" >
+			<view class="qiun-title-dot-light">饼状图</view>
+		</view>
+		<view class="qiun-charts">
+			<!--#ifdef H5 || MP-ALIPAY -->
+			<canvas canvasId="canvasPie" id="canvasPie" class="charts" :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
+			<!--#endif-->
+			<!--#ifdef MP-WEIXIN || APP-PLUS -->
+			<canvas canvasId="canvasPie" id="canvasPie" class="charts"></canvas>
+			<!--#endif-->
+		</view>
+		<view class="qiun-bg-white qiun-title-bar qiun-common-mt" >
+			<view class="qiun-title-dot-light">环形图</view>
+		</view>
+		<view class="qiun-charts">
+			<!--#ifdef H5 || MP-ALIPAY -->
+			<canvas canvasId="canvasRing" id="canvasRing" class="charts" :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
+			<!--#endif-->
+			<!--#ifdef MP-WEIXIN || APP-PLUS -->
+			<canvas canvasId="canvasRing" id="canvasRing" class="charts"></canvas>
+			<!--#endif-->
+		</view>
+		<view class="qiun-bg-white qiun-title-bar qiun-common-mt" >
+			<view class="qiun-title-dot-light">雷达图</view>
+		</view>
+		<view class="qiun-charts">
+			<!--#ifdef H5 || MP-ALIPAY -->
+			<canvas canvasId="canvasRadar" id="canvasRadar" class="charts" :style="{'width':cWidth*pixelRatio+'px','height':cHeight*pixelRatio+'px', 'transform': 'scale('+(1/pixelRatio)+')','margin-left':-cWidth*(pixelRatio-1)/2+'px','margin-top':-cHeight*(pixelRatio-1)/2+'px'}"></canvas>
+			<!--#endif-->
+			<!--#ifdef MP-WEIXIN || APP-PLUS -->
+			<canvas canvasId="canvasRadar" id="canvasRadar" class="charts"></canvas>
+			<!--#endif-->
+		</view>
+	</view>
+</template>
+
+<script>
+	import wxCharts from '../../components/wx-charts/wxcharts.js';
+	var _self;
+	var canvaColumn=null;
+	var canvaLineA=null;
+	var canvaLineB=null;
+	var canvaArea=null;
+	var Data={
+		Column:{categories:['2012', '2013', '2014', '2015', '2016', '2017'],series:[{name: '成交量1',data:[15, 20, 45, 37, 43, 34]},{name: '成交量2',data:[30, 40, 25, 14, 34, 18]}]},
+		ColumnB:{categories:['2013', '2014', '2015', '2016', '2017', '2018'],series:[{name: '新成交量3',data:[35, 36, 31, 33, 13, 34]},{name: '新成交量4',data:[18, 27, 21, 34, 14, 38]}]},
+		LineA:{categories:['2012', '2013', '2014', '2015', '2016', '2017'],series:[{name: '成交量A',data:[35, 20, 25, 37, 4, 20]},{name: '成交量B',data:[70, 40, 65, 100, 44, 68]},{name: '成交量C',data:[100, 80, 95, 150, 112, 132]}]},
+		LineB:{categories:['2012', '2013', '2014', '2015', '2016', '2017'],series:[{name: '成交量A',data:[35, 20, 25, 37, 4, 20]},{name: '成交量B',data:[70, 40, 65, 100, 44, 68]},{name: '成交量C',data:[100, 80, 95, 150, 112, 132]}]},
+		Area:{categories:['2012', '2013', '2014', '2015', '2016', '2017'],series:[{name: '成交量A',data:[35, 20, 25, 37, 4, 20]},{name: '成交量B',data:[70, 40, 65, 100, 44, 68]},{name: '成交量C',data:[100, 80, 95, 150, 112, 132]}]},
+		Pie:{series:[{ name: '一班', data: 50 }, { name: '二班', data: 30 }, { name: '三班', data: 20 }, { name: '四班', data: 18 }, { name: '五班', data: 8 }]},
+		Ring:{series:[{ name: '一班', data: 50 }, { name: '二班', data: 30 }, { name: '三班', data: 20 }, { name: '四班', data: 18 }, { name: '五班', data: 8 }]},
+		Radar:{categories: ['维度1', '维度2', '维度3', '维度4', '维度5', '维度6'],series:[{name: '成交量1',data: [90, 110, 165, 195, 187, 172]}, {name: '成交量2',data: [190, 210, 105, 35, 27, 102]}]}
+		}
+	
+	export default {
+		data() {
+			return {
+				cWidth:'',
+				cHeight:'',
+				pixelRatio:1
+			}
+		},
+		onLoad() {
+			_self = this;
+			//#ifdef H5 || MP-ALIPAY
+			uni.getSystemInfo({
+				success: function (res) {
+					if(res.pixelRatio>1){
+						//正常这里给2就行,如果pixelRatio=3性能会降低一点
+						//_self.pixelRatio =res.pixelRatio;
+						_self.pixelRatio =2;
+					}
+				}
+			});
+			//#endif
+			this.cWidth=uni.upx2px(750);
+			this.cHeight=uni.upx2px(500);
+			
+		},
+		onReady() {
+			this.showColumn("canvasColumn",Data.Column);
+			this.showLineA("canvasLineA",Data.LineA);
+			this.showLineB("canvasLineB",Data.LineB);
+			this.showArea("canvasArea",Data.Area);
+			this.showPie("canvasPie",Data.Pie);
+			this.showRing("canvasRing",Data.Ring);
+			this.showRadar("canvasRadar",Data.Radar);
+		},
+		methods: {
+			showColumn(canvasId,chartData){
+				canvaColumn=new wxCharts({
+					canvasId: canvasId,
+					type: 'column',
+					legend:true,
+					fontSize:11,
+					background:'#FFFFFF',
+					pixelRatio:_self.pixelRatio,
+					animation: true,
+					categories: chartData.categories,
+					series: chartData.series,
+					xAxis: {
+						disableGrid:true
+					},
+					yAxis: {
+						//disabled:true
+					},
+					dataLabel: true,
+					width: _self.cWidth*_self.pixelRatio,
+					height: _self.cHeight*_self.pixelRatio,
+					extra: {
+						column: {
+						  width: _self.cWidth*_self.pixelRatio*0.45/chartData.categories.length
+						}
+					  }
+				});
+				
+			},
+			showLineA(canvasId,chartData){
+				canvaLineA=new wxCharts({
+					canvasId: canvasId,
+					type: 'line',
+					fontSize:11,
+					legend:true,
+					background:'#FFFFFF',
+					pixelRatio:_self.pixelRatio,
+					categories: chartData.categories,
+					animation: false,
+					series: chartData.series,
+					xAxis: {
+						disableGrid:true,
+					},
+					yAxis: {
+						//disabled:true
+					},
+					width: _self.cWidth*_self.pixelRatio,
+					height: _self.cHeight*_self.pixelRatio,
+					dataLabel: true,
+					dataPointShape: true,
+					extra: {
+						lineStyle: 'straight'
+					},
+				});
+				
+			},
+			showLineB(canvasId,chartData){
+				canvaLineB=new wxCharts({
+					canvasId: canvasId,
+					type: 'line',
+					fontSize:11,
+					legend:true,
+					background:'#FFFFFF',
+					pixelRatio:_self.pixelRatio,
+					categories: chartData.categories,
+					animation: true,
+					series: chartData.series,
+					xAxis: {
+						disableGrid:true,
+					},
+					yAxis: {
+						//disabled:true
+					},
+					width: _self.cWidth*_self.pixelRatio,
+					height: _self.cHeight*_self.pixelRatio,
+					dataLabel: true,
+					dataPointShape: true,
+					extra: {
+						lineStyle: 'curve'
+					},
+				});
+			},
+			showArea(canvasId,chartData){
+				canvaArea=new wxCharts({
+					canvasId: canvasId,
+					type: 'area',
+					fontSize:11,
+					legend:true,
+					background:'#FFFFFF',
+					pixelRatio:_self.pixelRatio,
+					categories: chartData.categories,
+					animation: true,
+					series: chartData.series,
+					xAxis: {
+						disableGrid:true,
+					},
+					yAxis: {
+						//disabled:true
+					},
+					width: _self.cWidth*_self.pixelRatio,
+					height: _self.cHeight*_self.pixelRatio,
+					dataLabel: true,
+					dataPointShape: true,
+				});
+			},
+			showPie(canvasId,chartData){
+				new wxCharts({
+					canvasId: canvasId,
+					type: 'pie',
+					fontSize:11,
+					legend:true,
+					background:'#FFFFFF',
+					pixelRatio:_self.pixelRatio,
+					series: chartData.series,
+					animation: true,
+					width: _self.cWidth*_self.pixelRatio,
+					height: _self.cHeight*_self.pixelRatio,
+					dataLabel: true,
+				   });
+			},
+			showRing(canvasId,chartData){
+				new wxCharts({
+					canvasId: canvasId,
+					type: 'ring',
+					fontSize:11,
+					legend:true,
+					title: {
+						name: '70%',
+						color: '#7cb5ec',
+						fontSize: 25*_self.pixelRatio
+					},
+					subtitle: {
+						name: '收益率',
+						color: '#666666',
+						fontSize: 15*_self.pixelRatio
+					},
+					extra: {
+						ringWidth: 40*_self.pixelRatio,//圆环的宽度
+						pie: {
+						  offsetAngle: -45//圆环的角度
+						}
+					},
+					background:'#FFFFFF',
+					pixelRatio:_self.pixelRatio,
+					series: chartData.series,
+					animation: true,
+					width: _self.cWidth*_self.pixelRatio,
+					height: _self.cHeight*_self.pixelRatio,
+					disablePieStroke: true,
+					dataLabel: true,
+				});
+				
+			},
+			showRadar(canvasId,chartData){
+				new wxCharts({
+					canvasId: canvasId,
+					type: 'radar',
+					fontSize:11,
+					legend:true,
+					background:'#FFFFFF',
+					pixelRatio:_self.pixelRatio,
+					animation: true,
+					categories: chartData.categories,
+					series: chartData.series,
+					width: _self.cWidth*_self.pixelRatio,
+					height: _self.cHeight*_self.pixelRatio,
+					extra: {
+						radar: {
+							max: 200//雷达数值的最大值
+						}
+					}
+				});
+			},
+			changeData(){
+				//这里只做了柱状图数据动态更新,其他图表同理。
+				canvaColumn.updateData({
+					series: Data.ColumnB.series,
+					categories: Data.ColumnB.categories
+				});
+			},
+			touchLineA(e){
+				canvaLineA.showToolTip(e, {
+					format: function (item, category) {
+						return category + ' ' + item.name + ':' + item.data 
+					}
+				});
+			},
+			touchLineB(e){
+				canvaLineB.showToolTip(e, {
+					format: function (item, category) {
+						return category + ' ' + item.name + ':' + item.data 
+					}
+				});
+			},
+			touchArea(e){
+				canvaArea.showToolTip(e, {
+					format: function (item, category) {
+						return category + ' ' + item.name + ':' + item.data 
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+page{background:#F2F2F2;}
+.qiun-padding{padding:2%; width:96%;}
+.qiun-wrap{display:flex; flex-wrap:wrap;}
+.qiun-columns{display:flex; flex-direction:column !important;}
+.qiun-common-mt{margin-top:10upx;}
+.qiun-bg-white{background:#FFFFFF;}
+.qiun-title-bar{width:96%; padding:10upx 2%; flex-wrap:nowrap;}
+.qiun-title-dot-light{border-left: 10upx solid #0ea391; padding-left: 10upx; font-size: 32upx;color: #000000}
+.qiun-charts{width: 750upx; height:500upx;background-color: #FFFFFF;}
+.charts{width: 750upx; height:500upx;background-color: #FFFFFF;}
+.qiun-tip {display:block; width:auto; overflow:hidden; padding:15upx; height:30upx; line-height:30upx; margin:10upx; background:#ff9933; font-size:30upx; border-radius:8upx;justify-content:center; text-align:center;border: 1px solid #dc7004;color: #FFFFFF;}
+</style>

+ 0 - 676
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappchooselocation.html

@@ -1,676 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN">
-
-  <head>
-    <meta charset="UTF-8" />
-    <script>
-      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
-      document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
-    </script>
-    <title></title>
-    <style>
-        html,
-        body {
-            margin: 0;
-            padding: 0;
-            position: absolute;
-            left: 0;
-            top: 0;
-            right: 0;
-            bottom: 0;
-            background: #ffffff;
-        }
-
-		*{
-			margin:0;
-			padding:0;
-		}
-        button,
-        input,
-        input[type=button],
-        input[type=reset],
-        input[type=search],
-        input[type=submit],
-        select {
-            outline: none;
-            -webkit-tap-highlight-color: transparent;
-            -webkit-appearance: none;
-            font-family: inherit;
-            border: none;
-        }
-
-        .hide {
-            display: none;
-        }
-
-        .search-wrap {
-            position: absolute;
-            left: 0;
-            right: 0;
-            top: 0;
-            padding: 8px 60px 8px 15px;
-            background-color: #fff;
-            border-bottom: 1px solid #d3d3d3;
-            z-index: 100;
-        }
-
-        .search-wrap.init-status {
-            padding-right: 15px;
-        }
-
-        .search-wrap .search-bar {
-            display: block;
-            height: 30px;
-            background-color: #ebebeb;
-            padding-left: 10px;
-            padding-right: 10px;
-            color: #b4b4b4;
-            font-size: 15px;
-            line-height: 31px;
-            border-radius: 5px;
-            overflow: hidden;
-            white-space: nowrap;
-            text-overflow: ellipsis;
-        }
-
-        .search-wrap .cancel,
-        .search-wrap .submit {
-            position: absolute;
-            top: 0;
-            right: 0;
-            width: 55px;
-            height: 46px;
-            line-height: 46px;
-            text-align: center;
-            font-size: 16px;
-            color: #0079ff;
-            background-color: #fff;
-        }
-
-        .search-wrap .clear-input {
-            top: 11px;
-            right: 60px;
-            width: 34px;
-            height: 26px;
-            line-height: 26px;
-            background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAPFBMVEUAAACZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlr8OySAAAAE3RSTlMANO/H574Jw5g/soF2LxKbQCgmvcJ4rgAAAKFJREFUOMu9k1sSgyAMRcNLwbfe/e+1HZLa0DKTP8+PztwTDRDoWa4lRSCm5erGZcTNWP7iIaMhD22+BfwQtqae89bQ39jRYVf9ocu3U+5/cp4D7yZeCwkrKo7Y8O8XVFYRZilkgx+VWYQEZagcSYQIZagcUQRAGZwLpmD+wmzSXKa5UdZWW4d10E1Gh2wPjD1y9tBqSlDlB/U4PxfnpEd5AeZAIGebfob2AAAAAElFTkSuQmCC) no-repeat center center;
-            background-color: #ededed;
-            background-size: 18px 18px;
-            position: absolute;
-            padding: 0;
-            border: 0;
-            font-size: 14px;
-            border-radius: 4px;
-            text-align: center;
-            z-index: 2;
-        }
-
-        .search-wrap.init-status .cancel,
-        .search-wrap.init-status .clear-input,
-        .search-wrap.init-status .submit {
-            display: none;
-        }
-
-        .search-wrap .search-bar .keyword {
-            display: block;
-            width: 100%;
-            padding-top: 6px;
-            padding-bottom: 6px;
-            border: 0;
-            font-size: 14px;
-            line-height: 18px;
-            background: 0 0;
-        }
-
-        .search-wrap.init-status .search-bar .keyword {
-            text-align: left;
-        }
-
-        .search-wrap .search-bar .keyword::-webkit-input-placeholder {
-            background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAAgCAMAAACioYPHAAAAaVBMVEUAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxWbJ4AAAAInRSTlMAv39AEB/f758wYFDQj3CvDPflh9qpJBYEyEc3sn1om1t4LqRQpwAABAhJREFUWMPtlumS0zAQhD26TzvXsiwsC/T7PySK5Fi+Q2Cpoij6R2w5lvSpPTNS86+Jc1kbLbfrb7WxXT4U44Y1jK/1tI3cmPnwzYTT6dK1chcQCLVB2ABk8GtdXW1IKLHWk9Ct452PuOlJ7gLexk1shGYLcGFPfbujLs0Aut+z6vMJuJw/2Q+8JeD4tg0YyizCE0gQGs+TvCjIRIZlEW43RAvAmJx8ENAfofwQBQScNwEJZQ4gdDI1kNXHJ6AoSyFQFoAFYGLYAzTspki29++I10NT9QVo9wEZ2r4h82XPh0cBAw3qRzkovH6cJiFg7wDy2vgtQPsTPc9Qh9mjJ7yswUXGFBgzloEvHYyR3USjD2XcNWn7lLJyBCi8UbgPeNDLmvB8XLMARKRBpDhDEl2npBqDBLpJ0aAAluftxQZARYDSPwH4DZcly1d8vRODnPtrw3LOw/xLO7Ba2fM9d9fXeLpcO7MYAN21dtSnMzPvzS1IzVrOfoJ6IAZngBHKiTFg7So86xSArgVNF0WYqu4IL2tV/wAcfhFQ0A3JRzEHtABULgFLwEVA9TdqNWM15CZgmzwKVAKyXIpxlKm04gU0Ako2kvExQvR5dX8SUBJc7NhVCv12MbzLCZ0ocahB/m6ZIboPGPBpyfEREBuAWrdbg0qNKkoY7wL4hO8rmzNOq3xOwyRyMR1UDL7TtRZ6pqFcalr/HoBva0X5jKflQ9kqACspx6ZHRsp4+TX3DoDPwOe94l35rigB2UimFe/loEfRIJzKeKUR4OaAYgwoQJtlpv5l8PJxYeBleFQVOjks1NfqUddiXQdow3nLskwA3ATQEauAjnQ1P4BPVSuxPOI8L9Np0qXEtBqXV1qYuoFUBUrqGNPaVsCogbYCCmgzmE803/QSex34y4TvuIzAZahQntohDHNIYi3ndrKj8v5oL/yVrnOi/zMbZJsdCTY5AL7KevoHcPpwF1AE7ZrY81Wx7sZgcyw6eUVXAEIrapJIxqYVIBdNx/NWFEvkmTrq2xFH458THT9rwIRKuASshAhzPkmA6Rm8wlDBg4py/cBCUZSYprSkkjkKmTOMj82WkHTUSLr45jkTbgPWmHPTk66GkQODYEMFkmOPx50kIPocyb+2hEVm0pOVfI4XJJ2efMrfQrgP6Agwk/3MKSg+MclWE6ssgpc9nlMwJdW6UcYZuOKqFtP9TcrDcGS9rBIKjTywT2ggmZ1X0dsCgyhmX1EQ9CIVIkYikZkLioQuF9XUMNyQvEDNFs+INFQOkiRTGFwAyjix2Cc6otHHMWZlbM+yPOclxYd9QYGXTrIsTza7hGFmH6BMqSKdq+bbGMo0ohqUUvkR8VtJ8fKBXvJly2Cx3882//UX6QfMclqph21gcgAAAABJRU5ErkJggg==);
-            background-repeat: no-repeat;
-            background-position: left center;
-            background-size: 80px 16px;
-            color: gray
-        }
-
-        .search-wrap.init-status .search-bar .keyword::-webkit-input-placeholder {
-            background-position: center center;
-        }
-
-        .suggestion-wrap {
-            position: absolute;
-            top: 46px;
-            bottom: 0;
-            z-index: 7;
-            width: 100%;
-            background: #f6f6f6;
-            overflow: scroll;
-            -webkit-overflow-scrolling: touch;
-        }
-
-        .map-wrap {
-            height: 45%;
-            position: relative;
-            top: 46px;
-            width: 100%;
-        }
-
-        .list-wrap {
-            width: 100%;
-            position: absolute;
-            background-color: #fff;
-            z-index: 1;
-            bottom: 0;
-            left: 0;
-            overflow: hidden;
-			border-top: 1px solid #d3d3d3;
-			overflow-y: scroll;
-            padding-bottom: 0;
-            padding-bottom: constant(safe-area-inset-bottom);
-            padding-bottom: env(safe-area-inset-bottom);
-            -webkit-overflow-scrolling: touch;
-        }
-
-        .poi-list ul {
-            list-style: none;
-            width: 100%;
-            text-align: left;
-			padding: 0 0 65px;
-        }
-
-        .suggestion-wrap li,
-        .active-pos,
-		.poi-list li{
-            position: relative;
-            display: block;
-            padding-left: 15px;
-            border: none;
-            height: 58px;
-			padding-top: 6px;
-			margin: 0;
-        }
-
-        .poi-list li * {
-            pointer-events: none;
-        }
-
-        .poi-list li p,
-        .active-pos div p {
-            padding-bottom: 10px;
-            border-bottom: 1px solid #d3d3d3;
-        }
-
-        .poi-title {
-            font-size: 14px;
-            line-height: 27px;
-            color: #333;
-            font-weight: 400;
-            display: block;
-            width: 92%;
-            text-overflow: ellipsis;
-            white-space: nowrap;
-            overflow: hidden;
-        }
-
-        .poi-address {
-            font-size: 12px;
-            color: gray;
-            height: 20px;
-            line-height: 20px;
-            margin: 0;
-            width: 92%;
-            text-overflow: ellipsis;
-            white-space: nowrap;
-            overflow: hidden;
-            display: block;
-        }
-
-        .poi-city,
-        .poi-latlng {
-            line-height: 22px;
-            display: none;
-        }
-
-        .no-more-results,
-        .no-results {
-            color: gray;
-            padding: 20px 0;
-            line-height: 24px;
-            text-align: center;
-        }
-
-        .no-more-results p,
-        .no-results p {
-            padding: 0;
-            margin: 0;
-        }
-		
-		.list-wrap i {
-			width: 16px;
-			height: 16px;
-			display: none;
-			background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAaVBMVEUAAAAAef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef8Aef84EEEWAAAAInRSTlMA+QQY6izG8NO6TphC3JReWSMoDLOfgXajf29lZEs7Hcep1l5DEAAAAPxJREFUOMuFU9cSgyAQBDSUgCVgSS/8/0cGc8E5FQdeOGaXud0rBB9mzdFYRtKnGDkVkktB+VgkYE27poCw6aheUxpxPqHn6SyaRe66NKsfpqyRll6+Njlfsp/jS1WkRFeXf/QUh6Stg3iCAHndMX6VPxltlaiMNdPXqp1iftviR+qHcN34ZJm6FO4/4XY0FOeuknhpp0jdCamHJA7GhjqQ2n2ctCpofPw8K+22OHm8I+HjvXIYj4SYYvSBwTAeU0SROjA6hnEQCTYjg2McbEKhZgbGoVC41HqJQ6lxs1iP8blZuN3WrdudG5jcyGWHNj/2+cXJr15+ebPr/wWbNBG/n/A0GgAAAABJRU5ErkJggg==) no-repeat right center;
-			background-size: 16px 16px;
-			position: absolute;
-			right: 15px;
-			top: 50%;
-			margin-top: -8px;
-		}
-		.list-wrap i.active {
-			right: 30px;
-			display: inline-block;
-		}
-    </style>
-  </head>
-
-  <body>
-    <div class="search-wrap init-status">
-      <div class="search-bar">
-        <form name="poi-search" id="poiSearch" onsubmit="return false;">
-          <input type="search" class="keyword" id="searchword" placeholder=" ">
-          <button type="reset" class="clear-input hide"></button>
-          <button type="submit" class="submit hide">搜索</button>
-        </form>
-        <a class="cancel">取消</a>
-      </div>
-    </div>
-    <div class="suggestion-wrap hide">
-      <div class="poi-list">
-        <ul>
-
-        </ul>
-      </div>
-      <div class="no-results hide">
-        <p>对不起,没有搜索到相关数据!</p>
-      </div>
-      <div class="no-more-results hide">
-        <p>亲,没有更多了~</p>
-      </div>
-    </div>
-    <div id="map" class="map-wrap"></div>
-    <div class="list-wrap">
-      <div class="active-pos">
-
-      </div>
-      <div class="poi-list">
-        <ul>
-
-        </ul>
-        <div class="no-results hide">
-          <p>对不起,没有搜索到相关数据!</p>
-        </div>
-      </div>
-    </div>
-    <script>
-      var loc;
-      var serviceWebview;
-      var back = function() {
-        var webview = plus.webview.currentWebview()
-        console.log('webview.__uniapp_statusbar_style:::' + webview.__uniapp_statusbar_style)
-        if (webview.__uniapp_statusbar_style === 'dark') {
-          plus.navigator.setStatusBarStyle('dark')
-        }
-        webview.close('auto');
-      };
-      window.__chooseLocationConfirm__ = function() {
-        if (!loc) {
-          plus.nativeUI.alert('您尚未选择位置!');
-          return;
-        }
-        serviceWebview.evalJS(
-          'window.__chooseLocationCallback__&&__chooseLocationCallback__(' + JSON
-          .stringify(
-            loc) + ')');
-        back();
-      }
-      var searchWrapElem = document.querySelector('.search-wrap');
-      var searchWordElem = document.getElementById('searchword');
-      var resetElem = document.querySelector('[type="reset"]');
-      var cancelElem = document.querySelector('.cancel');
-
-      var suggestionWrapElem = document.querySelector('.suggestion-wrap');
-      var mapElem = document.getElementById('map');
-      var listWrapElem = document.querySelector('.list-wrap');
-
-      var suggestionPoiListElem = suggestionWrapElem.querySelector('.poi-list ul');
-      var suggestionPoiNoResultsElem = suggestionWrapElem.querySelector('.no-results');
-      var suggestionPoiNoMoreResultsElem = suggestionWrapElem.querySelector(
-        '.no-more-results');
-
-      var activePosElem = document.querySelector('.active-pos');
-      var nearbyPoiListElem = listWrapElem.querySelector('.poi-list ul');
-      var nearbyPoiNoResultsElem = listWrapElem.querySelector('.no-results');
-
-      listWrapElem.style.top = mapElem.offsetHeight + 47 + 'px';
-
-
-      var debounce = function(func, wait, immediate) {
-        var timeout, result;
-        return function() {
-          var context = this,
-            args = arguments,
-            later, callNow;
-          later = function() {
-            timeout = null;
-            if (!immediate) {
-              result = func.apply(context, args);
-            }
-          };
-          callNow = immediate && !timeout;
-          clearTimeout(timeout);
-          timeout = setTimeout(later, wait);
-          if (callNow) {
-            result = func.apply(context, args);
-          }
-          return result;
-        };
-      };
-
-
-      // document.addEventListener('plusready', function() {});
-      var plusReady = function(callback) {
-        if (window.plus) {
-          callback()
-        } else {
-          document.addEventListener('plusready', callback)
-        }
-      }
-      var ZOOM = 13
-      window.__chooseLocation__ = function(params) {
-        plusReady(function() {
-          serviceWebview = plus.webview.getWebviewById('__W2A_CONTEXT_') ||
-            plus.webview
-            .getLaunchWebview();
-          plus.key.addEventListener('backbutton', back);
-
-          var nativeMarker = false;
-
-          var nativeMap = new plus.maps.Map('map', {
-            zoom: ZOOM
-          });
-
-
-          var centerPoint = false
-
-          var reverseGeocode = debounce(function(point) {
-            plus.maps.Map.reverseGeocode(point, {}, function(res) {
-              activePosElem.innerHTML =
-                '<div data-name="' + (res.address || '') +
-                '" data-address="' + (res.address || '') +
-                '" data-lat="' + res.coord.getLat() +
-                '" data-lng="' + res.coord.getLng() +
-                '"><h2 class="poi-title">地图位置</h2><p><span class="poi-address">' +
-                (res.address ||
-                  '') +
-                '</span><span class="poi-latlng">' +
-                res.coord
-                .getLat() +
-                ',' + res.coord.getLng() +
-                '</span><i></i></p></div>';
-            }, function(err) {
-              console.log(err);
-            });
-            searchNearbyPoi.poiSearchNearBy('', point, 1000);
-          }, 10)
-
-
-          nativeMap.getUserLocation(function(state, point) { //获取当前用户坐标
-            if (state === 0) {
-              nativeMarker = new plus.maps.Marker(point);
-              nativeMarker.setIcon('__uniappmarker@3x.png');
-              nativeMap.addOverlay(nativeMarker);
-              centerPoint = point;
-              nativeMap.showUserLocation(true);
-              if(plus.os.name!=='Android'){
-                nativeMap.setCenter(point);
-              }
-              // reverseGeocode(centerPoint);
-            } else {
-              console.log('获取用户坐标失败');
-            }
-
-          });
-
-
-
-          nativeMap.onstatuschanged = function(evt) { //切换坐标中心
-            if (!centerPoint) {
-              return;
-            }
-            if (centerPoint && evt.center) {
-              if (centerPoint.latitude === evt.center.latitude &&
-                centerPoint.longitude === evt.center.longitude) {
-                return;
-              }
-            }
-            console.log('onstatuschanged:centerPoint', centerPoint, evt
-              .center)
-            centerPoint = evt.center
-            if (nativeMarker) {
-              nativeMarker.setPoint(centerPoint);
-            }
-            reverseGeocode(centerPoint);
-          };
-
-          plus.webview.currentWebview().append(nativeMap);
-
-          var searchPoi = new plus.maps.Search(nativeMap);
-          var searchNearbyPoi = new plus.maps.Search(nativeMap);
-
-          var showMap = function(centerPoint) {
-            nativeMap.show();
-            if (centerPoint) {
-              if (nativeMarker) {
-                nativeMarker.setPoint(centerPoint);
-              }
-              nativeMap.setCenter(centerPoint);
-//               setTimeout(function() {
-//                 nativeMap.setZoom(ZOOM);
-//               }, 150);
-              // reverseGeocode(centerPoint);
-            }
-            searchWordElem.value = '';
-            cancelElem.className = 'cancel hide';
-            searchWrapElem.className = 'search-wrap init-status';
-            suggestionWrapElem.className = 'suggestion-wrap hide';
-            resetSuggestionPoiList();
-          }
-
-          var resetSuggestionPoiList = function() {
-            suggestionPoiListElem.innerHTML = '';
-            suggestionPoiNoResultsElem.className = 'no-results hide';
-            suggestionPoiNoMoreResultsElem.className =
-              'no-more-results hide';
-          }
-
-          var showSuggestionPoiList = function() {
-            nativeMap.hide();
-            resetSuggestionPoiList();
-          }
-
-          var showSuggestionPoiNoResults = function() {
-            suggestionPoiListElem.innerHTML = '';
-            suggestionPoiNoResultsElem.className = 'no-results';
-            suggestionPoiNoMoreResultsElem.className =
-              'no-more-results hide';
-          }
-
-          var renderPoiResults = function(poiList) {
-            var html = [];
-            for (var i = 0; i < poiList.length; i++) {
-              var poi = poiList[i];
-              if (poi.point) {
-                html.push('<li data-name="' + (poi.name || '') +
-                  '" data-address="' + (poi.address || '') +
-                  '" data-lat="' + poi.point.getLat() +
-                  '" data-lng="' + poi.point.getLng() +
-                  '"><p><span class="poi-title">' + poi.name +
-                  '</span><span class="poi-address">' + (poi.address ||
-                    '') +
-                  '</span><span class="poi-latlng">' + poi.point
-                  .getLat() +
-                  ',' + poi.point.getLng() +
-                  '</span><span class="poi-city">' + poi.city +
-                  '</span></p><i></i></li>');
-              }
-            }
-            return html.join('');
-          }
-          var showNearbyPoiNoResults = function() {
-            nearbyPoiListElem.innerHTML = '';
-            nearbyPoiNoResultsElem.className = 'no-results';
-          }
-          var showNearbyPoiResults = function(poiList) {
-            var html = renderPoiResults(poiList);
-            if (html) {
-              nearbyPoiListElem.innerHTML = html;
-              nearbyPoiNoResultsElem.className = 'no-results hide';
-            } else {
-              showNearbyPoiNoResults();
-            }
-          }
-          var showSuggestionPoiResults = function(poiList) {
-            var html = renderPoiResults(poiList);
-            if (html) {
-              suggestionPoiListElem.innerHTML = html;
-              suggestionPoiNoResultsElem.className =
-                'no-results hide';
-              suggestionPoiNoMoreResultsElem.className =
-                'no-more-results';
-            } else {
-              showSuggestionPoiNoResults();
-            }
-          }
-
-          searchPoi.onPoiSearchComplete = function(state, res) {
-            if (state === 0) {
-              if (res.poiList.length) {
-                showSuggestionPoiResults(res.poiList);
-              } else {
-                showSuggestionPoiNoResults();
-              }
-            } else {
-              showSuggestionPoiNoResults();
-            }
-            console.log(JSON.stringify({
-              state:state,
-              res:res
-            }));
-          };
-
-          searchNearbyPoi.onPoiSearchComplete = function(state, res) {
-            if (state === 0) {
-              if (res.poiList.length) {
-                showNearbyPoiResults(res.poiList);
-              } else {
-                showNearbyPoiNoResults();
-              }
-            } else {
-              showNearbyPoiNoResults();
-            }
-            console.log(state, res);
-          };
-
-          var getSuggestion = debounce(function(q) {
-            if (q.trim()) {
-              searchPoi.poiSearchNearBy(q, centerPoint, 50000)
-            } else {
-              console.log('清空')
-            }
-          }, 10);
-
-          suggestionPoiListElem.addEventListener('click', function(evt) {
-            var target = evt.target;
-            for (; target && target !== suggestionPoiListElem; target =
-              target.parentNode) {
-              if (target && target.tagName === 'LI') {
-                var laglng = target.querySelector('.poi-latlng')
-                  .innerText
-                  .split(',');
-                centerPoint = new plus.maps.Point(Number(laglng[1]), Number(laglng[0]));
-                showMap(centerPoint);
-                reverseGeocode(centerPoint);
-                break;
-              }
-            }
-          });
-
-          searchWordElem.addEventListener('click', function() {
-            searchWrapElem.className = 'search-wrap';
-            suggestionWrapElem.className = 'suggestion-wrap';
-            cancelElem.className = 'cancel';
-            showSuggestionPoiList();
-          });
-
-          var oldHasValue = false;
-
-          var setInputState = function(hasValue) {
-            if (hasValue !== oldHasValue) {
-              if (hasValue) {
-                resetElem.className = 'clear-input'
-              } else {
-                resetElem.className = 'clear-input hide'
-              }
-              oldHasValue = hasValue;
-            }
-          }
-
-          searchWordElem.addEventListener('input', function() {
-            var value = this.value.replace(/^\s+|\s+$/g, '');
-            setInputState(!!value);
-            getSuggestion(value);
-          });
-
-          resetElem.addEventListener('click', function(e) {
-            setInputState(false);
-            setTimeout(function() {
-              searchWordElem.focus();
-            }, 0);
-          });
-          cancelElem.addEventListener('click', function() {
-            showMap();
-          });
-
-          listWrapElem.addEventListener('click', function(e) {
-            var target = e.target;
-            for (; target && target !== listWrapElem; target =
-              target.parentNode) {
-              if (target.className === 'active-pos' || target.tagName ===
-                'LI') {
-                var lastActiveElem = listWrapElem.querySelector(
-                  'i.active');
-                if (lastActiveElem) {
-                  lastActiveElem.className = '';
-                }
-                if(target.className === 'active-pos'){
-                    target = target.children[0]
-                }
-                target.querySelector('i').className = 'active';
-                loc = {
-                  poiname: target.getAttribute('data-name'),
-                  poiaddress: target.getAttribute(
-                    'data-address'),
-                  latlng: {
-                    lat: target.getAttribute(
-                      'data-lat'),
-                    lng: target.getAttribute(
-                      'data-lng'),
-                  }
-                }
-                if (nativeMarker) {
-                  nativeMarker.setPoint(new plus.maps.Point(
-                    loc.latlng.lng, loc.latlng.lat));
-                }
-                break;
-              }
-            }
-          })
-
-
-        });
-      };
-    </script>
-  </body>
-
-</html>

+ 0 - 283
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappcoverview.html

@@ -1,283 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN">
-
-	<head>
-		<meta charset="UTF-8" />
-		<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
-		<title></title>
-		<style>
-			* {
-				margin: 0;
-				-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-				-webkit-tap-highlight-color: transparent;
-			}
-
-			html {
-				-webkit-user-select: none;
-				user-select: none;
-				height: 100%;
-				width: 100%;
-				background: transparent;
-			}
-
-			body {
-				-webkit-user-select: none;
-				user-select: none;
-				width: 100%;
-				overflow-x: hidden;
-				background: transparent;
-			}
-		</style>
-	</head>
-
-	<body>
-		<div id="container" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden;">
-
-		</div>
-
-		<script>
-			var containerElem = document.getElementById('container')
-
-			function plusReady(callback) {
-				if (window.plus && window.plus.isReady) {
-					callback()
-				} else {
-					document.addEventListener('plusready', callback)
-				}
-			}
-
-			var UniPlusBridge = {
-				subscribe: function(eventType, args, callbackId) {
-					console.log(eventType, args)
-					switch (eventType) {
-						case 'insertScrollView':
-							insertScrollView(args, callbackId)
-							break
-						case 'updateScrollView':
-							updateScrollView(args, callbackId)
-							break
-						case 'insertTextView':
-							insertTextView(args, callbackId)
-							break
-						case 'updateTextView':
-							updateTextView(args, callbackId)
-							break
-						case 'insertImageView':
-							insertImageView(args, callbackId)
-							break
-						case 'updateImageView':
-							updateImageView(args, callbackId)
-							break
-						case 'animateCoverView':
-							animateCoverView(args, callbackId)
-							break
-						case 'removeScrollView':
-						case 'removeTextView':
-						case 'removeImageView':
-							removeCoverView(eventType, args, callbackId)
-							break
-					}
-				},
-				publish: function(eventType, args) {
-					plusReady(function() {
-						plus.webview.currentWebview().parent().evalJS(
-							"PlusJSBridge.subscribeHandler(" + eventType + ", " + JSON.stringify(args) + ")")
-					})
-				},
-				invoke: function(callbackId, args) {
-					plusReady(function() {
-						plus.webview.currentWebview().parent().evalJS(
-							"PlusJSBridge.invokeCallbackHandler(" + callbackId + ", " + JSON.stringify(args) + ")")
-					})
-				}
-			}
-
-			function hexToRgba(hex) {
-				var r,
-					g,
-					b,
-					a;
-				hex = hex.replace('#', '');
-				if (8 === hex.length) {
-					r = hex.substring(0, 2);
-					g = hex.substring(2, 4);
-					b = hex.substring(4, 6);
-					a = hex.substring(6, 8);
-				} else {
-					return '';
-				}
-				if ('undefined' === typeof a) {
-					a = 'ff';
-				}
-				if (1 === r.length) {
-					r += r;
-				}
-				if (1 === g.length) {
-					g += g;
-				}
-				if (1 === b.length) {
-					b += b;
-				}
-				if (1 === a.length) {
-					a += a;
-				}
-				r = parseInt(r, 16);
-				g = parseInt(g, 16);
-				b = parseInt(b, 16);
-				a = parseInt(a, 16) / 255;
-				return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
-			}
-
-			function updatePosition(elem, position) {
-				elem.style.left = position.left + 'px'
-				elem.style.top = position.top + 'px'
-				elem.style.width = position.width + 'px'
-				elem.style.height = position.height + 'px'
-			}
-
-			var pxProps = ['left', 'top', 'width', 'height', 'borderRadius', 'borderWidth', 'fontSize', 'lineHeight']
-
-			var hexProps = ['bgColor', 'borderColor', 'color']
-
-			function updateStyle(elem, styles) {
-				styles = styles || {}
-				var elemStyle = elem.style
-				for (var name in styles) {
-					if (styles.hasOwnProperty(name)) {
-						if (pxProps.indexOf(name) !== -1) {
-							elemStyle[name] = styles[name] + 'px'
-						} else if (hexProps.indexOf(name) !== -1) {
-							elemStyle[name === 'bgColor' ? 'backgroundColor' : name] = hexToRgba(styles[name])
-						} else if (name === 'fixed') {
-							if (styles['fixed']) {
-								elemStyle.position = 'fixed'
-							} else {
-								elemStyle.position = 'absolute'
-							}
-						} else if (name === 'padding') {
-							elemStyle.padding = styles['padding'].join('px ') + 'px'
-						} else if (name === 'content') {
-							elem.innerText = styles[name]
-						} else {
-							elemStyle[name] = styles[name]
-						}
-					}
-				}
-			}
-
-			function removeCoverView(eventType, args, callbackId) {
-				var viewId = args.viewId
-				var coverViewElem = document.querySelector('#cover-view-' + viewId)
-				if (coverViewElem) {
-					coverViewElem.parentNode && coverViewElem.parentNode.removeChild(coverViewElem)
-					UniPlusBridge.invoke(callbackId, {
-						errMsg: eventType + ':ok'
-					})
-				} else {
-					UniPlusBridge.invoke(callbackId, {
-						errMsg: eventType + ':fail'
-					})
-				}
-			}
-
-			function insertScrollView(args, callbackId) {
-
-			}
-
-			function updateScrollView(args, callbackId) {
-
-			}
-
-			function insertTextView(args, callbackId) {
-				var viewId = args.viewId
-				var parentId = args.parentId
-
-				var coverViewElem = document.createElement('div')
-				var labelElem = document.createElement('div')
-				coverViewElem.id = 'cover-view-' + viewId
-				labelElem.id = 'cover-view-label-' + viewId
-				updateStyle(coverViewElem, args.position)
-				updateStyle(coverViewElem, args.style)
-				updateStyle(labelElem, args.label)
-
-				coverViewElem.appendChild(labelElem)
-
-				var parentElem = document.querySelector('#cover-view-' + parentId) || document.querySelector('#container')
-
-				parentElem.appendChild(coverViewElem)
-
-				UniPlusBridge.invoke(callbackId, {
-					errMsg: 'insertTextView:ok'
-				})
-			}
-
-			function updateTextView(args, callbackId) {
-				var viewId = args.viewId
-				var coverViewElem = document.querySelector('#cover-view-' + viewId)
-				if (coverViewElem) {
-					labelElem = coverViewElem.querySelector('#cover-view-label-' + viewId)
-					updateStyle(coverViewElem, args.position)
-					updateStyle(coverViewElem, args.style)
-					updateStyle(labelElem, args.label)
-					UniPlusBridge.invoke(callbackId, {
-						errMsg: 'updateTextView:ok'
-					})
-				} else {
-					UniPlusBridge.invoke(callbackId, {
-						errMsg: 'updateTextView:fail'
-					})
-				}
-			}
-
-			function insertImageView(args, callbackId) {
-				var viewId = args.viewId
-				var parentId = args.parentId
-
-				var coverViewElem = document.createElement('div')
-				var coverImageElem = document.createElement('img')
-				coverViewElem.id = 'cover-view-' + viewId
-				coverImageElem.id = 'cover-view-image-' + viewId
-				updateStyle(coverViewElem, args.position)
-				updateStyle(coverViewElem, args.style)
-                
-				if (args.iconPath) {
-					coverImageElem.src = args.iconPath
-				}
-				coverViewElem.appendChild(coverImageElem)
-
-				var parentElem = document.querySelector('#cover-view-' + parentId) || document.querySelector('#container')
-
-				parentElem.appendChild(coverViewElem)
-
-				UniPlusBridge.invoke(callbackId, {
-					errMsg: 'insertImageView:ok'
-				})
-			}
-
-			function updateImageView(args, callbackId) {
-				var viewId = args.viewId
-				var coverViewElem = document.querySelector('#cover-view-' + viewId)
-				if (coverViewElem) {
-					coverImageElem = coverViewElem.querySelector('#cover-view-image-' + viewId)
-					updateStyle(coverViewElem, args.position)
-					updateStyle(coverViewElem, args.style)
-					if (args.iconPath) {
-						coverImageElem.src = args.iconPath
-					}
-					UniPlusBridge.invoke(callbackId, {
-						errMsg: 'updateImageView:ok'
-					})
-				} else {
-					UniPlusBridge.invoke(callbackId, {
-						errMsg: 'updateImageView:fail'
-					})
-				}
-			}
-
-			function animateCoverView(args, callbackId) {
-
-			}
-		</script>
-	</body>
-
-</html>

File diff suppressed because it is too large
+ 0 - 6
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappes6.js


+ 0 - 243
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappmap.html

@@ -1,243 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN">
-
-<head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
-    <title></title>
-    <style>
-        html,
-        body,
-        .container {
-            margin: 0;
-            padding: 0;
-            position: absolute;
-            left: 0;
-            top: 0;
-            right: 0;
-            bottom: 0;
-            background: #000000;
-        }
-
-        iframe {
-            width: 100%;
-            height: 100%;
-            display: block;
-        }
-
-        .actTonav {
-            display: none;
-            position: absolute;
-            right: 16px;
-            bottom: 56px;
-            width: 60px;
-            height: 60px;
-            border-radius: 60px;
-        }
-    </style>
-</head>
-
-<body>
-    <div id="container" class="container">
-        <iframe id="map" allow="geolocation" seamless sandbox="allow-scripts allow-same-origin allow-forms" frameborder="0"></iframe>
-        <!-- 去这里 -->
-        <div id="actTonav" class="actTonav"></div>
-    </div>
-    <script>
-        var loc;
-        var serviceWebview;
-        var back = function () {
-            var webview = plus.webview.currentWebview()
-            if (webview.__uniapp_dark) {
-                plus.navigator.setStatusBarStyle('dark')
-            }
-            webview.close('auto');
-        };
-        var isIos = !!navigator.userAgent.match(/iPhone|iPad|iPod/i);
-        /**
-         * 调用系统第三方程序进行导航
-         */
-        function openSysMap(lat, lng, title) {
-            /**
-             * 网页版地图源
-             */
-            var mapsSourceWeb = [{
-                    title: '腾讯地图网页版',
-                    getUrl: function () {
-                        var url
-                        url = 'https://apis.map.qq.com/uri/v1/routeplan?type=drive' + '&to=' +
-                            encodeURIComponent(title) + '&tocoord=' + encodeURIComponent(lat + ',' + lng) +
-                            '&referer=APP'
-                        return url
-                    }
-                },
-                {
-                    title: '谷歌地图网页版',
-                    getUrl: function () {
-                        var url
-                        url = 'https://maps.google.cn/?daddr=' + encodeURIComponent(title) + '&sll=' +
-                            encodeURIComponent(lat + ',' + lng)
-                        return url
-                    }
-                }
-            ]
-            /**
-             * APP版地图源
-             */
-            var mapsSource = [{
-                    title: '高德地图',
-                    pname: 'com.autonavi.minimap',
-                    action: !isIos ? 'amapuri://' : 'iosamap://',
-                    getUrl: function () {
-                        var url
-                        if (!isIos) {
-                            url = 'amapuri://route/plan/'
-                        } else {
-                            url = 'iosamap://path'
-                        }
-                        url += '?sourceApplication=APP&dname=' + encodeURIComponent(title) + '&dlat=' + lat +
-                            '&dlon=' + lng + '&dev=0'
-                        return url
-                    }
-                },
-                {
-                    title: '百度地图',
-                    pname: 'com.baidu.BaiduMap',
-                    action: 'baidumap://',
-                    getUrl: function () {
-                        var url
-                        url = 'baidumap://map/direction?destination=' + encodeURIComponent('latlng:' + lat +
-                            ',' + lng + '|name:' + title) + '&mode=driving&src=APP'
-                        return url
-                    }
-                },
-                {
-                    title: '腾讯地图',
-                    pname: 'com.tencent.map',
-                    action: 'qqmap://',
-                    getUrl: function () {
-                        var url
-                        url = 'qqmap://map/routeplan?type=drive' + (isIos ? ('&from=' + encodeURIComponent(
-                                '我的位置')) : '') + '&to=' + encodeURIComponent(title) + '&tocoord=' +
-                            encodeURIComponent(lat + ',' + lng) + '&referer=APP'
-                        return url
-                    }
-                },
-                {
-                    title: '谷歌地图',
-                    pname: 'com.google.android.apps.maps',
-                    action: 'comgooglemapsurl://',
-                    getUrl: function () {
-                        var url
-                        if (!isIos) {
-                            url = 'https://maps.google.com/'
-                        } else {
-                            url = 'comgooglemapsurl://maps.google.com/'
-                        }
-                        url += '?daddr=' + encodeURIComponent(title) + '&sll=' + encodeURIComponent(lat + ',' +
-                            lng)
-                        return url
-                    }
-                },
-            ]
-            var maps = []
-            mapsSource.forEach(function (mapsSource) {
-                var installed = plus.runtime.isApplicationExist({
-                    pname: mapsSource.pname,
-                    action: mapsSource.action,
-                })
-                if (installed) {
-                    maps.push(mapsSource)
-                }
-            })
-            if (isIos) {
-                maps.unshift({
-                    title: 'Apple 地图',
-                    getUrl: function () {
-                        var url
-                        url = 'https://maps.apple.com/?daddr=' + encodeURIComponent(title) + '&sll=' +
-                            encodeURIComponent(lat + ',' + lng)
-                        return url
-                    }
-                })
-            }
-            if (maps.length === 0) {
-                maps = maps.concat(mapsSourceWeb)
-            }
-            plus.nativeUI.actionSheet({
-                title: '导航方式',
-                cancel: '取消',
-                buttons: maps,
-            }, function (res) {
-                var index = res.index
-                var map
-                if (index > 0) {
-                    map = maps[index - 1]
-                    plus.runtime.openURL(map.getUrl(), function () {}, map.pname)
-                }
-            })
-        }
-
-        window.__chooseLocationConfirm__ = function () {
-            if (!loc) {
-                plus.nativeUI.alert('您尚未选择位置!');
-                return;
-            }
-            serviceWebview.evalJS('window.__chooseLocationCallback__&&__chooseLocationCallback__(' + JSON.stringify(
-                loc) + ')');
-            back();
-        }
-        document.addEventListener('plusready', function () {
-            serviceWebview = plus.webview.getWebviewById('__W2A_CONTEXT_') || plus.webview.getLaunchWebview();
-            plus.key.addEventListener('backbutton', back);
-        })
-
-        var mapElem = document.getElementById('map');
-        var defaultReferer = 'wxdevtools';
-        var defaultKey = 'JMRBZ-R4HCD-X674O-PXLN4-B7CLH-42BSB';
-        window.__openLocation__ = function (params) {
-            var key = params.key || defaultKey;
-            var referer = params.referer = defaultReferer;
-            var latitude = params.latitude;
-            var longitude = params.longitude;
-            var scale = params.scale;
-            var name = params.name;
-            var address = params.address;
-            var marker = 'coord:' + latitude + ',' + longitude;
-            if (name) {
-                marker += ';title:' + encodeURIComponent(name);
-            }
-            if (address) {
-                marker += ';addr:' + encodeURIComponent(address);
-            }
-            var url = 'http://apis.map.qq.com/tools/poimarker?type=0&marker=' + marker + '&key=' + defaultKey +
-                '&referer=' + referer;
-            mapElem.src = url;
-            var actTonav = document.getElementById('actTonav')
-            actTonav.style.display = 'block';
-            actTonav.onclick = function () {
-                openSysMap(latitude, longitude, name)
-            }
-        };
-        window.__chooseLocation__ = function (params) {
-            var params = params || {};
-            var key = params.key || defaultKey;
-            var referer = params.referer = defaultReferer;
-            var coord = params.coord || {};
-            var lat = coord.lat;
-            var lng = coord.lng;
-            var coordtype = coord.type || 5;
-            var url = 'http://apis.map.qq.com/tools/locpicker?type=1&search=1&coord=' + (lat && lng ? (lat + ',' +
-                lng) : '') + '&coordtype=' + coordtype + '&key=' + defaultKey + '&referer=' + referer;
-            mapElem.src = url;
-        };
-        window.addEventListener('message', function (event) {
-            var _loc = event.data;
-            if (_loc && _loc.module == 'locationPicker') {
-                loc = _loc;
-            }
-        }, false);
-    </script>
-</body>
-
-</html>

BIN
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappmarker@3x.png


File diff suppressed because it is too large
+ 0 - 93
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappopenlocation.html


File diff suppressed because it is too large
+ 0 - 1
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniapppicker.html


+ 0 - 126
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappscan.html

@@ -1,126 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN">
-
-<head>
-    <meta charset="UTF-8" />
-    <script>
-        var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
-        document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
-    </script>
-    <title>扫码</title>
-    <style>
-        html,
-        body,
-        .container {
-            margin: 0;
-            padding: 0;
-            position: absolute;
-            left: 0;
-            top: 0;
-            right: 0;
-            bottom: 0;
-            background: #000000;
-        }
-    </style>
-</head>
-
-<body>
-    <div id="scan" class="container">
-    </div>
-    <script>
-        var scan;
-        var lightImg;
-        var lightView;
-        var back = function () {
-            lightImg && lightImg.clear();
-            lightView && lightView.clear();
-            scan && scan.close();
-            var webview = plus.webview.currentWebview();
-            if (webview.__uniapp_dark) {
-                plus.navigator.setStatusBarStyle('dark');
-            }
-            webview.close('auto');
-        }
-        /**
-         * 绘制照亮开关
-         */
-        function drawLight() {
-            var offImg =
-                'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABjklEQVRoQ+1ZbVHEQAx9TwE4ABTcOQAknANQAKcAUAAOAAXgAHAACsDCKQiTmbYDzJZtNt2bFrJ/m6+Xl2yyU2LmhzOPH/8PgIjcADirxNyapNoffMwMiMgzgMPBHmyCLySPLCoBwJKtAbJbYaBmD1yRvBwAtBMxl5DF+DZkiwCIyBLAzsgBbki+Wm2WAlCaL6zOMvKnJO+sNksB7ALQbO1ZHfbIv5FUVs2nCIB6EZETALdmj2mFY5I6X8ynGEADQllYmL1+VzBfnV/VvQB0aj45ARyQ/Ci14QLQsOBZLe5JaikWnzEA7AN4L4hgA2Dpyb76dANwsOCq/TZhASAYKGie0a7R1lDPI0ebtF0NUi+4yfdAtxr3PEMnD6BbD0QkNfACQO05EAwMuaBqDrIVycdmTpwDuP4R0OR7QFftVRP0g+49cwOQq4DJMxAAchmofY3m/EcJBQOZbTRKKJeBKKEoIePvpFRJ1VzmciUccyCa+C81cerBkuuB7sGTE/zt+yhN7AnAqxsAvBn06n8CkyPwMZKwm+UAAAAASUVORK5CYII=';
-            var onImg =
-                'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAB4klEQVRoQ+1ZQU7CUBCdaWVBLFETqUtxB7iQG4hH4AZ4AvUE4gnkBuoJ9AbiDXAhZadby4IQICaS9psqJBVLy5/fkhKHbefPzPvzZv6bgLDmP1zz/OH/ARjZpSYAniVSORQXRt5qyviWrsDQLrUQ8FgmyLK2AsRTzrSqy9p7dgxA5raibFdSgSR7QAi4yu11GlFA/d+lKSTjfBW2JAAj+7Cio7MVZ4KO0AeG+dKW9UkCMHwvNxDhUjZYuL17apjdW1mfJACiX9gef2bbgLgvG3CB/bNhdioUXyQAXqCRXawDaDeUoPNnBLonuXy3RfFFBvADouxx9ogSeHaGMjpjm0LDXrGKQntUAaBn3IPsTveN6kOpAl5QNWkh7gzTqlOTJ0mJ+WAf/WLBmWivskkIEIONjKio3H4sAKhVUOX+7MKUKcQAZLk3Z88VWEQhr0kRYCoN/m5wqe8BvzQOkuDpB+CTB0EPHgOYNnNiTewXaFyBkFGbWAVQE7XNXevhW7X2Sucg8NqfR+p7AADaesateUk7E+0eAH4tLOsAIPSNZQBJT6EoicMV4Ar4OEJZK5lCTCGmkPy/MUGjOTEtxO9A1A1wE3MTp6iJgxaWKAr7F54o27DvsUwhlQRUzzIA1RtUPf8FRKRYQOI+9hQAAAAASUVORK5CYII=';
-            var onText = '轻触照亮';
-            var offText = '轻触关闭';
-            var on = false;
-            var viewWidth = 48;
-            var fontSize = 12;
-            var imgWidth = 30;
-
-            function changeType() {
-                lightView.reset();
-                lightImg.loadBase64Data(on ? onImg : offImg, function () {
-                    lightView.drawBitmap(lightImg, {}, {
-                        top: 0,
-                        left: (viewWidth - imgWidth) / 2 + 'px',
-                        width: imgWidth + 'px',
-                        height: imgWidth + 'px'
-                    });
-                });
-                lightView.drawText(on ? offText : onText, {
-                    top: imgWidth + 'px',
-                    left: '0px',
-                    width: '100%',
-                    height: fontSize + 'px'
-                }, {
-                    color: '#ffffff',
-                    size: fontSize + 'px'
-                });
-                scan.setFlash(on);
-                on = !on;
-            }
-            lightImg = new plus.nativeObj.Bitmap('lightImg');
-            lightView = new plus.nativeObj.View('lightView', {
-                width: viewWidth + 'px',
-                height: viewWidth + 'px',
-                top: window.innerHeight / 2 + 50 + 'px',
-                left: (window.innerWidth - viewWidth) / 2 + 'px',
-                position: 'static'
-            });
-            lightView.addEventListener('click', function () {
-                changeType();
-            });
-            plus.webview.currentWebview().append(lightView);
-            changeType();
-        }
-        document.addEventListener('plusready', function () {
-            var serviceWebview = plus.webview.getWebviewById('__W2A_CONTEXT_') || plus.webview.getLaunchWebview();
-            plus.key.addEventListener('backbutton', back);
-            setTimeout(function () {
-                var webview = plus.webview.currentWebview();
-                scan = new plus.barcode.Barcode('scan', webview.__uniapp_scan_type, {
-                    frameColor: '#118CE9',
-                    scanbarColor: '#118CE9'
-                });
-                scan.onmarked = function (type, code, file) {
-                    var res = {
-                        type: type,
-                        code: code
-                    };
-                    back()
-                    serviceWebview.evalJS('window.__scanCodeCallback__&&__scanCodeCallback__(' +
-                        JSON.stringify(res) + ')');
-                };
-                scan.onerror = function (error) {
-                    back()
-                    serviceWebview.evalJS(
-                        'window.__scanCodeCallback__&&__scanCodeCallback__(false)');
-                };
-
-                scan.start();
-                drawLight();
-            }, 500)
-        })
-    </script>
-</body>
-
-</html>

File diff suppressed because it is too large
+ 0 - 17
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappservice.html


BIN
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappsuccess.png


File diff suppressed because it is too large
+ 0 - 22
src/dashoo.cn/frontend_app/unpackage/resources/www/__uniappview.html


File diff suppressed because it is too large
+ 0 - 1702
src/dashoo.cn/frontend_app/unpackage/resources/www/app-service.js


File diff suppressed because it is too large
+ 0 - 5256
src/dashoo.cn/frontend_app/unpackage/resources/www/app-view.js


+ 0 - 1
src/dashoo.cn/frontend_app/unpackage/resources/www/manifest.json

@@ -1 +0,0 @@
-{"@platforms":["android","iPhone","iPad"],"id":"","name":"lims-app","version":{"name":"1.0.0","code":"100"},"description":"登录模板","launch_path":"__uniappservice.html","developer":{"name":"","email":"","url":""},"permissions":{},"plus":{"useragent":{"value":"uni-app appservice","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always"},"statusbar":{"immersed":"supportedDevice","style":"light","background":"#0faeff"},"arguments":"{\"name\":\"\",\"path\":\"\",\"query\":\"\"}","allowsInlineMediaPlayback":true,"safearea":{"background":"#ffffff","bottom":{"offset":"auto"}}}}

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportairfoamgenerator/datalist.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportairfoamgenerator/datalist.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportairfoamgenerator/dataopera.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportairfoamgenerator/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportatmosvalve/datalist.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportatmosvalve/datalist.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportatmosvalve/dataopera.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportatmosvalve/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportbeampumpingUnits/dataopera.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportbeampumpingUnits/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportelecground/datalist.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportelecground/datalist.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportelecground/dataopera.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportelecground/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 13
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportequipotent/datalist.js

@@ -1,13 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          setCssToHead([".",[1],"uni-tag, .",[1],"uni-tag-default { -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0px ",[0,32],"; height: ",[0,60],"; line-height: calc(",[0,60]," - 2px); font-size: ",[0,28],"; display: inline-block; color: #666; border-radius: ",[0,8],"; background-color: #F1F1F1; border: 1px solid #F1F1F1; }\n.",[1],"uni-tag-circle{ border-radius: ",[0,30],"; }\n.",[1],"uni-tag-small{ height: ",[0,40],"; padding: 0px ",[0,16],"; line-height: calc(",[0,40]," - 2px); font-size: ",[0,20],"; }\n.",[1],"uni-tag-disabled{ opacity: 0.5; }\n.",[1],"uni-tag.",[1],"uni-tag-inverted { color: #666; background-color: #FFFFFF; border: 1px solid # F1F1F1; }\n.",[1],"uni-tag-primary { color: #fff; background-color: #007aff; border: 1px solid #007aff; }\n.",[1],"uni-tag-primary.",[1],"uni-tag-inverted { color: #007aff; background-color: #FFFFFF; border: 1px solid #007aff; }\n.",[1],"uni-tag-success { color: #fff; background-color: #4cd964; border: 1px solid #4cd964; }\n.",[1],"uni-tag-success.",[1],"uni-tag-inverted { color: #4cd964; background-color: #FFFFFF; border: 1px solid #4cd964; }\n.",[1],"uni-tag-warning { color: #fff; background-color: #f0ad4e; border: 1px solid #f0ad4e; }\n.",[1],"uni-tag-warning.",[1],"uni-tag-inverted{ color: #f0ad4e; background-color: #FFFFFF; border: 1px solid #f0ad4e; }\n.",[1],"uni-tag-danger{ color: #fff; background-color: #dd524d; border: 1px solid #dd524d; }\n.",[1],"uni-tag-danger.",[1],"uni-tag-inverted { color: #dd524d; background-color: #FFFFFF; border: 1px solid #dd524d; }\n.",[1],"uni-tag-royal { color: #fff; background-color: #8a6de9; border: 1px solid #8a6de9; }\n.",[1],"uni-tag-royal.",[1],"uni-tag-inverted { color: #8a6de9; background-color: #FFFFFF; border: 1px solid #8a6de9; }\n",],undefined,{path:"./pages/lims/reportequipotent/datalist.wxss"})();
-document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportequipotent/datalist.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportequipotent/dataopera.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportequipotent/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reporthydraulicsafe/datalist.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reporthydraulicsafe/datalist.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 13
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reporthydraulicsafe/dataopera.js

@@ -1,13 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          setCssToHead([".",[1],"tag-view { margin: ",[0,10]," ",[0,20],"; display: inline-block; }\n",],undefined,{path:"./pages/lims/reporthydraulicsafe/dataopera.wxss"})();
-document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reporthydraulicsafe/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportleakprotect/datalist.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportleakprotect/datalist.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportleakprotect/dataopera.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportleakprotect/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportlightprotect/datalist.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportlightprotect/datalist.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportlightprotect/dataopera.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportlightprotect/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportnobeampumpingUnits/dataopera.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportnobeampumpingUnits/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportzuhq/datalist.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportzuhq/datalist.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/lims/reportzuhq/dataopera.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/lims/reportzuhq/dataopera.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 13
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/login/login.js

@@ -1,13 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          setCssToHead([".",[1],"action-row { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; }\n.",[1],"action-row wx-navigator { color: #007aff; padding: 0 ",[0,20],"; }\n.",[1],"oauth-row { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; position: absolute; top: 0; left: 0; width: 100%; }\n.",[1],"oauth-image { width: ",[0,100],"; height: ",[0,100],"; border: ",[0,1]," solid #dddddd; border-radius: ",[0,100],"; margin: 0 ",[0,40],"; background-color: #ffffff; }\n.",[1],"oauth-image wx-image { width: ",[0,60],"; height: ",[0,60],"; margin: ",[0,20],"; }\n",],undefined,{path:"./pages/login/login.wxss"})();
-document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/login/login.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 13
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/main/index.js

@@ -1,13 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          setCssToHead([".",[1],"uni-card{ margin-top:",[0,50],"; }\n.",[1],"page { padding-top: ",[0,60],"; background: #efeff4; }\n.",[1],"image-view { height: ",[0,480],"; overflow: hidden; }\n.",[1],"image { width: 100%; }\n.",[1],"text { font-size: ",[0,35],"; }\n",],undefined,{path:"./pages/main/index.wxss"})();
-document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/main/index.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 13
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/main/main.js

@@ -1,13 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          setCssToHead([".",[1],"hello { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; }\n.",[1],"title { color: #8f8f94; margin-top: ",[0,50],"; }\n.",[1],"ul { font-size: ",[0,30],"; color: #8f8f94; margin-top: ",[0,50],"; }\n.",[1],"ul\x3ewx-view { line-height: ",[0,50],"; }\n",],undefined,{path:"./pages/main/main.wxss"})();
-document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/main/main.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/pwd/pwd.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/pwd/pwd.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/reg/reg.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/reg/reg.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

+ 0 - 12
src/dashoo.cn/frontend_app/unpackage/resources/www/pages/user/user.js

@@ -1,12 +0,0 @@
-
-      !(function(){
-        var uniAppViewReadyCallback = function(){
-          document.dispatchEvent(new CustomEvent("generateFuncReady", { detail: { generateFunc: $gwx('./pages/user/user.wxml') } }));
-        }
-        if(window.__uniAppViewReady__){
-          uniAppViewReadyCallback()
-        }else{
-          document.addEventListener('uniAppViewReady',uniAppViewReadyCallback)
-        }
-      })();
-      

BIN
src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/home.png


BIN
src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/homeHL.png


BIN
src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/qq.png


BIN
src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/sinaweibo.png


BIN
src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/user.png


BIN
src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/userHL.png


BIN
src/dashoo.cn/frontend_app/unpackage/resources/www/static/img/weixin.png


Some files were not shown because too many files changed in this diff