@ -0,0 +1,16 @@
					 | 
				
			||||
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ | 
				
			||||
  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 | 
				
			||||
    "version": "0.0", | 
				
			||||
    "configurations": [{ | 
				
			||||
     	"default" :  | 
				
			||||
     	{ | 
				
			||||
     		"launchtype" : "local" | 
				
			||||
     	}, | 
				
			||||
     	"mp-weixin" :  | 
				
			||||
     	{ | 
				
			||||
     		"launchtype" : "local" | 
				
			||||
     	}, | 
				
			||||
     	"type" : "uniCloud" | 
				
			||||
     } | 
				
			||||
    ] | 
				
			||||
} | 
				
			||||
@ -0,0 +1,31 @@
					 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		onLaunch: function(options) { | 
				
			||||
			 | 
				
			||||
			this.$auth.getLocalUserInfo() | 
				
			||||
			this.$store.commit('savePath', options.path); //打开时访问的链接 | 
				
			||||
		}, | 
				
			||||
		onShow: function() { | 
				
			||||
			console.log('-------------- 小程序显示 --------------') | 
				
			||||
		}, | 
				
			||||
		onHide: function() { | 
				
			||||
			console.log('-------------- bye bye --------------') | 
				
			||||
		}, | 
				
			||||
		 | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style> | 
				
			||||
	/*每个页面公共css */ | 
				
			||||
	.page { | 
				
			||||
		box-sizing: border-box; | 
				
			||||
		width: 100vw; | 
				
			||||
		height: 100vh; | 
				
			||||
		background: #efefef; | 
				
			||||
		overflow: auto; | 
				
			||||
		color: #100F19; | 
				
			||||
	} | 
				
			||||
	checkbox{ | 
				
			||||
		border: #4963F4; | 
				
			||||
	} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,47 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view class="content"> | 
				
			||||
		<view class="content_item"> | 
				
			||||
			<view class=""> | 
				
			||||
				<text>*</text>任务名称 | 
				
			||||
			</view> | 
				
			||||
			<view class=""> | 
				
			||||
				<input type="text"> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
		<view class="content_item"> | 
				
			||||
			<view class=""> | 
				
			||||
				<text>*</text>单位名称 | 
				
			||||
			</view> | 
				
			||||
			<view class=""> | 
				
			||||
				123 | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
		<view class="content_item"> | 
				
			||||
			<view class=""> | 
				
			||||
				<text>*</text>协助机构 | 
				
			||||
			</view> | 
				
			||||
			<view class=""> | 
				
			||||
				123 | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				data1:["熟悉演练"], | 
				
			||||
				data2:["双随机","联络指导"] | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style lang="scss"> | 
				
			||||
	.content { | 
				
			||||
		.content_item { | 
				
			||||
			display: flex; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,11 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view class=""> | 
				
			||||
		456 | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style> | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,12 @@
					 | 
				
			||||
const api = 'https://fx.anxincloud.cn'; | 
				
			||||
const domain = 'https://fx.anxincloud.cn'; | 
				
			||||
 | 
				
			||||
const devApi = 'https://121.36.37.70:8204'; | 
				
			||||
const devDomain = 'https://121.36.37.70:8204'; | 
				
			||||
 | 
				
			||||
const online = true; //是否线上模式
 | 
				
			||||
 | 
				
			||||
export default { | 
				
			||||
  domain: online ? domain : devDomain, | 
				
			||||
  api: online ? api : devApi | 
				
			||||
} | 
				
			||||
@ -0,0 +1,20 @@
					 | 
				
			||||
<!DOCTYPE html> | 
				
			||||
<html lang="en"> | 
				
			||||
  <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> | 
				
			||||
    <!--preload-links--> | 
				
			||||
    <!--app-context--> | 
				
			||||
  </head> | 
				
			||||
  <body> | 
				
			||||
    <div id="app"><!--app-html--></div> | 
				
			||||
    <script type="module" src="/main.js"></script> | 
				
			||||
  </body> | 
				
			||||
</html> | 
				
			||||
@ -0,0 +1,54 @@
					 | 
				
			||||
const alert = { | 
				
			||||
  // 显示等待对话框
 | 
				
			||||
  showLoading: function(msg) { | 
				
			||||
    uni.showToast({ | 
				
			||||
      title: msg, | 
				
			||||
      icon: "loading", | 
				
			||||
      duration: 100000 | 
				
			||||
    }); | 
				
			||||
  }, | 
				
			||||
  // 隐藏等待对话框
 | 
				
			||||
  hideLoading: function(msg) { | 
				
			||||
    uni.hideToast(); | 
				
			||||
  }, | 
				
			||||
  // 成功
 | 
				
			||||
  showSuccess: function(msg) { | 
				
			||||
    uni.showToast({ | 
				
			||||
      title: msg, | 
				
			||||
      icon: "success", | 
				
			||||
      duration: 2000 | 
				
			||||
    }); | 
				
			||||
  }, | 
				
			||||
  //显示警告
 | 
				
			||||
  showWarning: function(msg) { | 
				
			||||
    uni.showToast({ | 
				
			||||
      title: msg, | 
				
			||||
      icon: "none", | 
				
			||||
      duration: 2000 | 
				
			||||
    }); | 
				
			||||
  }, | 
				
			||||
 | 
				
			||||
  showError: function(msg) { | 
				
			||||
    uni.showToast({ | 
				
			||||
      title: msg, | 
				
			||||
      icon: "none", | 
				
			||||
      duration: 2000 | 
				
			||||
    }); | 
				
			||||
  }, | 
				
			||||
  askLogin: function () { | 
				
			||||
    uni.showModal({ | 
				
			||||
      title: '尚未登录', | 
				
			||||
      content: '前往授权登录页面吗?', | 
				
			||||
      success(res) { | 
				
			||||
        console.log(res) | 
				
			||||
        if (res.confirm) { | 
				
			||||
          uni.redirectTo({ | 
				
			||||
            url: '/pages/login/login' | 
				
			||||
          }) | 
				
			||||
        } | 
				
			||||
      } | 
				
			||||
    }) | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
export default alert | 
				
			||||
@ -0,0 +1,148 @@
					 | 
				
			||||
import store from "../store.js" | 
				
			||||
import request from './request.js' | 
				
			||||
import alert from './alert.js' | 
				
			||||
 | 
				
			||||
const login = { | 
				
			||||
	checkAuth(callback) { | 
				
			||||
		console.log(1); | 
				
			||||
		if (this.getLocalUserInfo()) { | 
				
			||||
			console.log(2); | 
				
			||||
			callback(true) | 
				
			||||
		} else { | 
				
			||||
			console.log(3); | 
				
			||||
			callback(false); | 
				
			||||
			console.log('未获取到用户本地数据,去获取授权设置', 22222222) | 
				
			||||
			this.askLogin() | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
 | 
				
			||||
	getLocalUserInfo() { | 
				
			||||
		const user = uni.getStorageSync("token"); | 
				
			||||
		console.log('从本地存储中获取用户数据', user, 11111111); | 
				
			||||
		if (!user) return false; | 
				
			||||
		if (!user.token) return false; | 
				
			||||
		store.commit('saveToken', user); | 
				
			||||
		return true | 
				
			||||
	}, | 
				
			||||
 | 
				
			||||
	noCase() { | 
				
			||||
		alert.showError('案件不存在'); | 
				
			||||
		setTimeout(() => { | 
				
			||||
			uni.switchTab({ | 
				
			||||
				url: '/pages/case/caseList/caseList' | 
				
			||||
			}); | 
				
			||||
		}, 1500); | 
				
			||||
	}, | 
				
			||||
 | 
				
			||||
	askLogin() { | 
				
			||||
		uni.showModal({ | 
				
			||||
			title: '尚未登录', | 
				
			||||
			content: '前往授权登录页面吗?', | 
				
			||||
			success(res) { | 
				
			||||
				console.log(res) | 
				
			||||
				if (res.confirm) { | 
				
			||||
					uni.navigateTo({ | 
				
			||||
						url: '/pages/login/login' | 
				
			||||
					}) | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		}) | 
				
			||||
	}, | 
				
			||||
 | 
				
			||||
	getUserProfile(data) { | 
				
			||||
		const that = this; | 
				
			||||
		// console.log(data);
 | 
				
			||||
		wx.getUserProfile({ | 
				
			||||
			lang: 'zh_CN', | 
				
			||||
			desc: '用于完善会员资料', | 
				
			||||
		  success (res) { | 
				
			||||
				that.login(data,res) | 
				
			||||
		  }, | 
				
			||||
			fail (e) { | 
				
			||||
				console.error('获取用户身份信息失败了', e); | 
				
			||||
				alert.showError('获取失败') | 
				
			||||
			} | 
				
			||||
		}) | 
				
			||||
	}, | 
				
			||||
 | 
				
			||||
	login(data,userInfo) { | 
				
			||||
		const that = this; | 
				
			||||
		uni.showLoading({ | 
				
			||||
			title: '登录中', | 
				
			||||
		}); | 
				
			||||
		
 | 
				
			||||
		console.log(userInfo, 1111) | 
				
			||||
 | 
				
			||||
		wx.login({ | 
				
			||||
			success: res => { | 
				
			||||
				console.log(res, '----------- login获取的 -----------') | 
				
			||||
				const code = res.code; | 
				
			||||
				request.post('/login', { | 
				
			||||
					code, | 
				
			||||
					encryptedData: userInfo.encryptedData, | 
				
			||||
					iv: userInfo.iv | 
				
			||||
				}, function(data, res) { | 
				
			||||
					
 | 
				
			||||
					console.log(data, res ,'----------后端传回来的----------') | 
				
			||||
					return | 
				
			||||
					const user = { | 
				
			||||
						token: data.token, | 
				
			||||
						who: data.lawyerInfo.who, | 
				
			||||
						expires_at: data.expires_at, | 
				
			||||
						lawyerInfo: data.lawyerInfo, | 
				
			||||
						clientInfo: data.clientInfo, | 
				
			||||
						info: res.userInfo, | 
				
			||||
						login_type: 0 | 
				
			||||
					}; | 
				
			||||
 | 
				
			||||
					store.commit('saveUser', user) | 
				
			||||
					uni.setStorageSync('user', user); | 
				
			||||
					
 | 
				
			||||
					uni.hideLoading(); | 
				
			||||
 | 
				
			||||
					if (store.state.path) { | 
				
			||||
						let path = store.state.path; | 
				
			||||
						console.log(path.startsWith('/')) | 
				
			||||
						// 判断是否path前面有/
 | 
				
			||||
						if (!path.startsWith('/')) { | 
				
			||||
							path = '/' + path | 
				
			||||
						} | 
				
			||||
 | 
				
			||||
						uni.reLaunch({ | 
				
			||||
							url: path, | 
				
			||||
							success: function(res) { | 
				
			||||
								console.log(res) | 
				
			||||
							}, | 
				
			||||
							fail: function(res) { | 
				
			||||
								console.log(res) | 
				
			||||
							} | 
				
			||||
						}); | 
				
			||||
					} | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			fail: err => { | 
				
			||||
				console.error(err, 8877897) | 
				
			||||
			} | 
				
			||||
		}) | 
				
			||||
	}, | 
				
			||||
 | 
				
			||||
	logout() { | 
				
			||||
		store.state.user = { | 
				
			||||
			user: null, | 
				
			||||
			path: '/pages/index/index' | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		store.commit('saveUser', null); | 
				
			||||
		uni.clearStorage(); | 
				
			||||
		uni.reLaunch({ | 
				
			||||
			url: '/pages/index/index' | 
				
			||||
		}) | 
				
			||||
			
 | 
				
			||||
		console.log('退出登录。。。', this.user) | 
				
			||||
	}, | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
} | 
				
			||||
 | 
				
			||||
export default login | 
				
			||||
@ -0,0 +1,207 @@
					 | 
				
			||||
import config from '../config.js' | 
				
			||||
import common from './alert.js' | 
				
			||||
import store from '../store.js' | 
				
			||||
 | 
				
			||||
const request = { | 
				
			||||
	getToken(){ | 
				
			||||
		let user=store.state.token | 
				
			||||
		// console.log(user);
 | 
				
			||||
		if(user){ | 
				
			||||
			this.post("/api/Accounts/RefreshToken",{token:user.token,refreshToken:user.refreshToken},(data,res)=>{ | 
				
			||||
				store.commit('saveToken', res) | 
				
			||||
				uni.setStorageSync("token", res) | 
				
			||||
				// console.log(store.state.token,88888);
 | 
				
			||||
				return | 
				
			||||
			}) | 
				
			||||
		}else{ | 
				
			||||
			return | 
				
			||||
		} | 
				
			||||
		
 | 
				
			||||
	}, | 
				
			||||
	uploadFile(filePath, callback) { | 
				
			||||
		const user = store.state.user || {}; | 
				
			||||
		if(!user.lawyerInfo) return common.askLogin(); | 
				
			||||
		console.log(filePath, callback,2222222); | 
				
			||||
		uni.uploadFile({ | 
				
			||||
			url: config.domain + '/file/upload2', | 
				
			||||
			filePath: filePath, | 
				
			||||
			name: 'file', | 
				
			||||
			header: { | 
				
			||||
				'token': user.lawyerInfo.token || '', | 
				
			||||
				'login_type': user.login_type || 0, | 
				
			||||
				'who': user.who | 
				
			||||
			}, | 
				
			||||
			success (res) { | 
				
			||||
				console.log(res,333333); | 
				
			||||
				const data = JSON.parse(res.data); | 
				
			||||
				if (data.status == -100) { | 
				
			||||
					common.askLogin() | 
				
			||||
				} else if (data.status == -1) { | 
				
			||||
					common.showError(data.msg) | 
				
			||||
				} else { | 
				
			||||
					callback(data.data, data) | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		}) | 
				
			||||
	}, | 
				
			||||
	
 | 
				
			||||
	uploadFile2(filePath, formdata, callback) { | 
				
			||||
		const user = store.state.user || {}; | 
				
			||||
		if(!user.lawyerInfo) return common.askLogin(); | 
				
			||||
		console.log('1111111111111'+filePath) | 
				
			||||
		console.log('2222222222222'+formdata) | 
				
			||||
		console.log('3333333333333'+callback) | 
				
			||||
		uni.uploadFile({ | 
				
			||||
			url: config.domain + '/file/uploadFile2', | 
				
			||||
			filePath: filePath, | 
				
			||||
			name: 'file', | 
				
			||||
			formData: formdata, | 
				
			||||
			header: { | 
				
			||||
				'token': user.lawyerInfo.token || '', | 
				
			||||
				'login_type': user.login_type || 0, | 
				
			||||
				'who': user.who | 
				
			||||
			}, | 
				
			||||
			success (res) { | 
				
			||||
				console.log(res) | 
				
			||||
				const data = JSON.parse(res.data); | 
				
			||||
				if (data.status == -100) { | 
				
			||||
					common.askLogin() | 
				
			||||
				} else if (data.status == -1) { | 
				
			||||
					common.showError(data.msg) | 
				
			||||
				} else { | 
				
			||||
					callback(data.data, data) | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		}) | 
				
			||||
	}, | 
				
			||||
 | 
				
			||||
	get(url, data, callback) { | 
				
			||||
		const user = store.state.token || {}; | 
				
			||||
		console.log(data,8080); | 
				
			||||
		this.getToken() | 
				
			||||
		uni.request({ | 
				
			||||
			url: config.api + url, // 仅为示例,并非真实的接口地址
 | 
				
			||||
			method: 'GET', | 
				
			||||
			data: data, | 
				
			||||
			header: { | 
				
			||||
				'Authorization': "Bearer "+ user.token || '', | 
				
			||||
				
 | 
				
			||||
			}, | 
				
			||||
			success(res) { | 
				
			||||
				const data = res.data; | 
				
			||||
				// console.log(data, '请求返回的数据', 1000000000000000)
 | 
				
			||||
				if (data.status == -100) { | 
				
			||||
					console.log('没有登录'); | 
				
			||||
					common.askLogin() | 
				
			||||
				} else if (data.status == -1) { | 
				
			||||
					common.showError(data.msg) | 
				
			||||
				} else { | 
				
			||||
					callback(data.data, data) | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		}) | 
				
			||||
	}, | 
				
			||||
	post(url, data, callback) { | 
				
			||||
		const user = store.state.token || {}; | 
				
			||||
		if(url!="/api/Accounts/RefreshToken"&&user!={}){ | 
				
			||||
			this.getToken() | 
				
			||||
		} | 
				
			||||
		try { | 
				
			||||
			uni.request({ | 
				
			||||
				url: config.api + url, // 仅为示例,并非真实的接口地址
 | 
				
			||||
				method: 'POST', | 
				
			||||
				data: data, | 
				
			||||
				header: { | 
				
			||||
					'Authorization': "Bearer "+ user.token || '', | 
				
			||||
				}, | 
				
			||||
				success(res) { | 
				
			||||
					const data = res.data; | 
				
			||||
					console.log(res, '------------- 请求返回的数据 -------------') | 
				
			||||
					if (data.status == -100) { | 
				
			||||
						console.log('没有登录'); | 
				
			||||
						common.askLogin() | 
				
			||||
					} else if (data.status == -1) { | 
				
			||||
						common.showError(data.msg) | 
				
			||||
						callback(data.data, data) | 
				
			||||
					} else { | 
				
			||||
						// 第一个参数是data,第二个是全部数据,有时候会用到msg之类的数据,
 | 
				
			||||
						// 默认只要第一个值即可获取数据
 | 
				
			||||
						callback(data.data, data) | 
				
			||||
					} | 
				
			||||
				}, | 
				
			||||
				fail: err => { | 
				
			||||
					console.error(err, 8877897) | 
				
			||||
				} | 
				
			||||
			}) | 
				
			||||
		} catch (e) { | 
				
			||||
			console.log(e) | 
				
			||||
			//TODO handle the exception
 | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	
 | 
				
			||||
	get2(url, data, callback) { | 
				
			||||
		const user = store.state.user || {}; | 
				
			||||
		uni.request({ | 
				
			||||
			url: config.domain + url, // 仅为示例,并非真实的接口地址
 | 
				
			||||
			method: 'GET', | 
				
			||||
			data: data, | 
				
			||||
			header: { | 
				
			||||
				'token': user.token || '', | 
				
			||||
				'login_type': user.login_type || 0 | 
				
			||||
			}, | 
				
			||||
			success(res) { | 
				
			||||
				const data = res.data; | 
				
			||||
				// console.log(data, '请求返回的数据', 1000000000000000)
 | 
				
			||||
				if (data.status == -100) { | 
				
			||||
					console.log('没有登录'); | 
				
			||||
					common.askLogin() | 
				
			||||
				} else if (data.status == -1) { | 
				
			||||
					common.showError(data.msg) | 
				
			||||
				} else { | 
				
			||||
					callback(data.data, data) | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		}) | 
				
			||||
	}, | 
				
			||||
	
 | 
				
			||||
	post2(url, data, callback) { | 
				
			||||
		const user = store.state.user || {}; | 
				
			||||
		try { | 
				
			||||
			uni.request({ | 
				
			||||
				url: config.domain + url, // 仅为示例,并非真实的接口地址
 | 
				
			||||
				method: 'POST', | 
				
			||||
				data: data, | 
				
			||||
				header: { | 
				
			||||
					'token': user.lawyerInfo.token || '', | 
				
			||||
					'login_type': user.login_type || 0, | 
				
			||||
					'who': user.who | 
				
			||||
				}, | 
				
			||||
				success(res) { | 
				
			||||
					const data = res.data; | 
				
			||||
					console.log(data, '------------- 请求返回的数据 -------------') | 
				
			||||
					if (data.status == -100) { | 
				
			||||
						console.log('没有登录'); | 
				
			||||
						common.askLogin() | 
				
			||||
					} else if (data.status == -1) { | 
				
			||||
						common.showError(data.msg) | 
				
			||||
						callback(data.data, data) | 
				
			||||
					} else { | 
				
			||||
						// 第一个参数是data,第二个是全部数据,有时候会用到msg之类的数据,
 | 
				
			||||
						// 默认只要第一个值即可获取数据
 | 
				
			||||
						callback(data.data, data) | 
				
			||||
					} | 
				
			||||
				}, | 
				
			||||
				fail: err => { | 
				
			||||
					console.error(err, 8877897) | 
				
			||||
				} | 
				
			||||
			}) | 
				
			||||
		} catch (e) { | 
				
			||||
			console.log(e) | 
				
			||||
			//TODO handle the exception
 | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	
 | 
				
			||||
	
 | 
				
			||||
} | 
				
			||||
 | 
				
			||||
export default request | 
				
			||||
@ -0,0 +1,30 @@
					 | 
				
			||||
import App from './App' | 
				
			||||
import auth from './libs/auth.js' | 
				
			||||
import alert from './libs/alert.js' | 
				
			||||
import request from './libs/request.js' | 
				
			||||
import config from './config.js' | 
				
			||||
import store from './store.js' | 
				
			||||
// #ifndef VUE3
 | 
				
			||||
import Vue from 'vue' | 
				
			||||
Vue.config.productionTip = false | 
				
			||||
App.mpType = 'app' | 
				
			||||
Vue.prototype.$auth = auth | 
				
			||||
Vue.prototype.$alert = alert | 
				
			||||
Vue.prototype.$request = request | 
				
			||||
Vue.prototype.$config = config | 
				
			||||
const app = new Vue({ | 
				
			||||
    ...App, | 
				
			||||
	store | 
				
			||||
}) | 
				
			||||
app.$mount() | 
				
			||||
// #endif
 | 
				
			||||
 | 
				
			||||
// #ifdef VUE3
 | 
				
			||||
import { createSSRApp } from 'vue' | 
				
			||||
export function createApp() { | 
				
			||||
  const app = createSSRApp(App) | 
				
			||||
  return { | 
				
			||||
    app | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
// #endif
 | 
				
			||||
@ -0,0 +1,74 @@
					 | 
				
			||||
{ | 
				
			||||
    "name" : "Jinan_app", | 
				
			||||
    "appid" : "__UNI__915967A", | 
				
			||||
    "description" : "", | 
				
			||||
    "versionName" : "1.0.0", | 
				
			||||
    "versionCode" : "100", | 
				
			||||
    "transformPx" : false, | 
				
			||||
    /* 5+App特有相关 */ | 
				
			||||
    "app-plus" : { | 
				
			||||
        "usingComponents" : true, | 
				
			||||
        "nvueStyleCompiler" : "uni-app", | 
				
			||||
        "compilerVersion" : 3, | 
				
			||||
        "splashscreen" : { | 
				
			||||
            "alwaysShowBeforeRender" : true, | 
				
			||||
            "waiting" : true, | 
				
			||||
            "autoclose" : true, | 
				
			||||
            "delay" : 0 | 
				
			||||
        }, | 
				
			||||
        /* 模块配置 */ | 
				
			||||
        "modules" : {}, | 
				
			||||
        /* 应用发布信息 */ | 
				
			||||
        "distribute" : { | 
				
			||||
            /* android打包配置 */ | 
				
			||||
            "android" : { | 
				
			||||
                "permissions" : [ | 
				
			||||
                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | 
				
			||||
                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.CAMERA\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | 
				
			||||
                    "<uses-feature android:name=\"android.hardware.camera\"/>", | 
				
			||||
                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | 
				
			||||
                ] | 
				
			||||
            }, | 
				
			||||
            /* ios打包配置 */ | 
				
			||||
            "ios" : {}, | 
				
			||||
            /* SDK配置 */ | 
				
			||||
            "sdkConfigs" : { | 
				
			||||
                "ad" : {} | 
				
			||||
            } | 
				
			||||
        } | 
				
			||||
    }, | 
				
			||||
    /* 快应用特有相关 */ | 
				
			||||
    "quickapp" : {}, | 
				
			||||
    /* 小程序特有相关 */ | 
				
			||||
    "mp-weixin" : { | 
				
			||||
        "appid" : "wx28f5586f494c2103", | 
				
			||||
        "setting" : { | 
				
			||||
            "urlCheck" : false | 
				
			||||
        }, | 
				
			||||
        "usingComponents" : true | 
				
			||||
    }, | 
				
			||||
    "mp-alipay" : { | 
				
			||||
        "usingComponents" : true | 
				
			||||
    }, | 
				
			||||
    "mp-baidu" : { | 
				
			||||
        "usingComponents" : true | 
				
			||||
    }, | 
				
			||||
    "mp-toutiao" : { | 
				
			||||
        "usingComponents" : true | 
				
			||||
    }, | 
				
			||||
    "uniStatistics" : { | 
				
			||||
        "enable" : false | 
				
			||||
    }, | 
				
			||||
    "vueVersion" : "2" | 
				
			||||
} | 
				
			||||
@ -0,0 +1,116 @@
					 | 
				
			||||
{ | 
				
			||||
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages | 
				
			||||
 | 
				
			||||
		 | 
				
			||||
		{ | 
				
			||||
			"path": "pages/login/login", | 
				
			||||
			"style": { | 
				
			||||
				"backgroundTextStyle": "light", | 
				
			||||
				"navigationBarBackgroundColor": "#317AFF", | 
				
			||||
				"navigationBarTitleText": "消防一体化综合治理平台", | 
				
			||||
				"navigationBarTextStyle": "white" | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		{ | 
				
			||||
			"path": "pages/task/details", | 
				
			||||
			"style": { | 
				
			||||
				"backgroundTextStyle": "light", | 
				
			||||
				"navigationBarBackgroundColor": "#57B5FF", | 
				
			||||
				"navigationBarTitleText": "消防一体化综合治理平台", | 
				
			||||
				"navigationBarTextStyle": "white" | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		{ | 
				
			||||
			"path": "pages/task/taskreceive", | 
				
			||||
			"style": { | 
				
			||||
				"backgroundTextStyle": "light", | 
				
			||||
				"navigationBarBackgroundColor": "#57B5FF", | 
				
			||||
				"navigationBarTitleText": "消防一体化综合治理平台", | 
				
			||||
				"navigationBarTextStyle": "white" | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		{ | 
				
			||||
			"path": "pages/index/index", | 
				
			||||
			"style": { | 
				
			||||
				"backgroundTextStyle": "light", | 
				
			||||
				"navigationBarBackgroundColor": "#57B5FF", | 
				
			||||
				"navigationBarTitleText": "消防一体化综合治理平台", | 
				
			||||
				"navigationBarTextStyle": "white" | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		 | 
				
			||||
		{ | 
				
			||||
			"path": "pages/user/user", | 
				
			||||
			"style": { | 
				
			||||
				"backgroundTextStyle": "light", | 
				
			||||
				"navigationBarBackgroundColor": "#317AFF", | 
				
			||||
				"navigationBarTitleText": "", | 
				
			||||
				"navigationBarTextStyle": "white" | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		{ | 
				
			||||
			"path": "pages/dadui/jiancha/jiancha", | 
				
			||||
			"style": { | 
				
			||||
				"backgroundTextStyle": "light", | 
				
			||||
				"navigationBarBackgroundColor": "#57B5FF", | 
				
			||||
				"navigationBarTitleText": "消防一体化综合治理平台", | 
				
			||||
				"navigationBarTextStyle": "white" | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		{ | 
				
			||||
			"path": "pages/dadui/jiuyuan/jiuyuan", | 
				
			||||
			"style": { | 
				
			||||
				"backgroundTextStyle": "light", | 
				
			||||
				"navigationBarBackgroundColor": "#57B5FF", | 
				
			||||
				"navigationBarTitleText": "消防一体化综合治理平台", | 
				
			||||
				"navigationBarTextStyle": "white" | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		{ | 
				
			||||
			"path": "pages/task/taskapply", | 
				
			||||
			"style": { | 
				
			||||
				"backgroundTextStyle": "light", | 
				
			||||
				"navigationBarBackgroundColor": "#57B5FF", | 
				
			||||
				"navigationBarTitleText": "消防一体化综合治理平台", | 
				
			||||
				"navigationBarTextStyle": "white" | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	], | 
				
			||||
	"globalStyle": { | 
				
			||||
		"navigationBarTextStyle": "black", | 
				
			||||
		"navigationBarTitleText": "uni-app", | 
				
			||||
		"navigationBarBackgroundColor": "#F8F8F8", | 
				
			||||
		"backgroundColor": "#F8F8F8" | 
				
			||||
	}, | 
				
			||||
	"tabBar": { | 
				
			||||
		"color": "#353535", | 
				
			||||
		"selectedColor": "#5187FF", | 
				
			||||
		"list": [{ | 
				
			||||
				"pagePath": "pages/index/index", | 
				
			||||
				"iconPath": "static/tab/43251.png", | 
				
			||||
				"selectedIconPath": "static/tab/4325.png", | 
				
			||||
				"text": "工作任务" | 
				
			||||
			}, | 
				
			||||
			{ | 
				
			||||
				"pagePath": "pages/task/taskapply", | 
				
			||||
				"iconPath": "static/tab/43281.png", | 
				
			||||
				"selectedIconPath": "static/tab/4328.png", | 
				
			||||
				"text": "申请" | 
				
			||||
			}, | 
				
			||||
			{ | 
				
			||||
				"pagePath": "pages/task/taskreceive", | 
				
			||||
				"iconPath": "static/tab/43281.png", | 
				
			||||
				"selectedIconPath": "static/tab/4328.png", | 
				
			||||
				"text": "领取" | 
				
			||||
			}, | 
				
			||||
			{ | 
				
			||||
				"pagePath": "pages/user/user", | 
				
			||||
				"iconPath": "static/tab/user.png", | 
				
			||||
				"selectedIconPath": "static/tab/user1.png", | 
				
			||||
				"text": "我的" | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
		] | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -0,0 +1,564 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view class="page"> | 
				
			||||
		<view class=""> | 
				
			||||
			<view class="pure_top"> | 
				
			||||
				 | 
				
			||||
			</view> | 
				
			||||
			<view class="calendar"> | 
				
			||||
				<view class="dates"> | 
				
			||||
					<picker mode="date" fields="year"  @change="date($event)"> | 
				
			||||
						<view>{{year}}</view> | 
				
			||||
					</picker> | 
				
			||||
					<text>|</text> | 
				
			||||
					<view class=""> | 
				
			||||
						8.25 | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="monthbox" > | 
				
			||||
					<view class="month" v-for="(item,key) in month" :key="key"> | 
				
			||||
						{{item}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
		<view class="taskbox"> | 
				
			||||
			<view class="itembox"> | 
				
			||||
				<view class="top"> | 
				
			||||
					<view class="left"> | 
				
			||||
						<img src="@/static/4412.png" alt=""> | 
				
			||||
						<view class=""> | 
				
			||||
							<text>xx救援站任务总数</text><text>20</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						<view style="margin-right: 10rpx;">完成率</view> | 
				
			||||
						 | 
				
			||||
						<view class=""> | 
				
			||||
							60% | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="charts-box" style="display: flex;"> | 
				
			||||
					<img src="@/static/dadui/10.png" alt=""> | 
				
			||||
					<view style="width: 50%;"> | 
				
			||||
						<qiun-data-charts type="ring" :opts="opts" :chartData="chartData" /> | 
				
			||||
					</view> | 
				
			||||
					<view style="width: 50%; display: flex;justify-content: center;align-items: center;flex-direction: column;"> | 
				
			||||
						<view class="tagbox"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[0]+';'"> | 
				
			||||
								 | 
				
			||||
							</view> | 
				
			||||
							<text>上级指派-------9个</text> | 
				
			||||
						</view> | 
				
			||||
						<view class="tagbox"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[1]+';'"> | 
				
			||||
								 | 
				
			||||
							</view> | 
				
			||||
							<text>上级指派-------9个</text> | 
				
			||||
						</view> | 
				
			||||
						<view class="tagbox"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[2]+';'"> | 
				
			||||
								 | 
				
			||||
							</view> | 
				
			||||
							<text>上级指派-------9个</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			<view class="itembox"> | 
				
			||||
				<view class="top"> | 
				
			||||
					<view class="left"> | 
				
			||||
						<img src="@/static/4412.png" alt=""> | 
				
			||||
						<view class=""> | 
				
			||||
							<text>xx救援站任务总数</text><text>20</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						<view style="margin-right: 10rpx;">完成率</view> | 
				
			||||
						 | 
				
			||||
						<view class=""> | 
				
			||||
							60% | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="charts-box" style="display: flex;"> | 
				
			||||
					<img src="@/static/dadui/11.png" alt=""> | 
				
			||||
					<view style="width: 50%;"> | 
				
			||||
						<qiun-data-charts type="ring" :opts="opts" :chartData="chartData" /> | 
				
			||||
					</view> | 
				
			||||
					<view style="width: 50%; display: flex;justify-content: center;align-items: center;flex-direction: column;"> | 
				
			||||
						<view class="tagbox"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[0]+';'"> | 
				
			||||
								 | 
				
			||||
							</view> | 
				
			||||
							<text>上级指派-------9个</text> | 
				
			||||
						</view> | 
				
			||||
						<view class="tagbox"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[1]+';'"> | 
				
			||||
								 | 
				
			||||
							</view> | 
				
			||||
							<text>上级指派-------9个</text> | 
				
			||||
						</view> | 
				
			||||
						<view class="tagbox"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[2]+';'"> | 
				
			||||
								 | 
				
			||||
							</view> | 
				
			||||
							<text>上级指派-------9个</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			<view class="itembox"> | 
				
			||||
				<view class="top"> | 
				
			||||
					<view class="left"> | 
				
			||||
						<img src="@/static/4412.png" alt=""> | 
				
			||||
						<view class=""> | 
				
			||||
							<text>xx救援站任务总数</text><text>20</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						<view style="margin-right: 10rpx;">完成率</view> | 
				
			||||
						 | 
				
			||||
						<view class=""> | 
				
			||||
							60% | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="charts-box" style="display: flex;"> | 
				
			||||
					<img src="@/static/dadui/9.png" alt=""> | 
				
			||||
					<view style="width: 40%;"> | 
				
			||||
						<qiun-data-charts type="ring" :opts="opts" :chartData="chartData" /> | 
				
			||||
					</view> | 
				
			||||
					<view style="width: 50%; display: flex;justify-content: center;align-items: center;flex-direction: column;"> | 
				
			||||
						<view class="tagbox"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[0]+';'"> | 
				
			||||
								 | 
				
			||||
							</view> | 
				
			||||
							<text>上级指派-------9个</text> | 
				
			||||
						</view> | 
				
			||||
						<view class="tagbox"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[1]+';'"> | 
				
			||||
								 | 
				
			||||
							</view> | 
				
			||||
							<text>上级指派-------9个</text> | 
				
			||||
						</view> | 
				
			||||
						<view class="tagbox"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[2]+';'"> | 
				
			||||
								 | 
				
			||||
							</view> | 
				
			||||
							<text>上级指派-------9个</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			<!-- <view class="listbox"> | 
				
			||||
				<view class="item" v-for="(item,key) in list" :key="key"> | 
				
			||||
					<view class="namebox"> | 
				
			||||
						<view class="name"> | 
				
			||||
							{{item.name}} | 
				
			||||
						</view> | 
				
			||||
						<view style=" width: 30%; padding-left:20rpx;"> | 
				
			||||
							<view class="tag"> | 
				
			||||
								{{item.tag.text}} | 
				
			||||
							</view> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="typebox"> | 
				
			||||
						<view class="type"> | 
				
			||||
							{{item.type}} | 
				
			||||
						</view> | 
				
			||||
						<view class="result"> | 
				
			||||
							<text>{{item.result}}</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="staffbox"> | 
				
			||||
						<view class="staff"> | 
				
			||||
							<view>人员:</view> | 
				
			||||
							<view><img style="height: 40rpx; width: 40rpx; vertical-align:middle" src="../../static/447.png" | 
				
			||||
									alt="">张三</view> | 
				
			||||
							<view><img style="height: 40rpx; width: 40rpx; vertical-align:middle" src="../../static/446.png" | 
				
			||||
									alt="">李四</view> | 
				
			||||
						</view> | 
				
			||||
						<view class="implement"> | 
				
			||||
							<button>执行</button> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> --> | 
				
			||||
		</view> | 
				
			||||
		<!-- <view class="login-box" v-if="!identity"> | 
				
			||||
			<view class="login-text"> | 
				
			||||
				登录平台,在线处理业务 | 
				
			||||
			</view> | 
				
			||||
			<view class="login-button" > | 
				
			||||
				<button @tap="login()">登录</button> | 
				
			||||
			</view> | 
				
			||||
		</view> --> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				title: 'Hello', | 
				
			||||
				identity: 0, | 
				
			||||
				progressNub:60, | 
				
			||||
				chartData: {}, | 
				
			||||
				year:2022, | 
				
			||||
				opts: { | 
				
			||||
					rotate: false, | 
				
			||||
					rotateLock: false, | 
				
			||||
					color: ["#FACE15","#04F1C9", "#3990F1"], | 
				
			||||
					 | 
				
			||||
					padding: [5, 5, 5, 5], | 
				
			||||
					dataLabel: false, | 
				
			||||
					legend: { | 
				
			||||
						show: false, | 
				
			||||
						fontColor: "#fff", | 
				
			||||
						position: "right", | 
				
			||||
						lineHeight: 20 | 
				
			||||
					}, | 
				
			||||
					title: { | 
				
			||||
						name: "任务总数", | 
				
			||||
						fontSize: 15, | 
				
			||||
						color: "#fff" | 
				
			||||
					}, | 
				
			||||
					subtitle: { | 
				
			||||
						name: "20", | 
				
			||||
						fontSize: 25, | 
				
			||||
						color: "#fff" | 
				
			||||
					}, | 
				
			||||
					extra: { | 
				
			||||
						ring: { | 
				
			||||
							width: 50, | 
				
			||||
							height:50, | 
				
			||||
							ringWidth: 10, | 
				
			||||
							activeOpacity: 0.5, | 
				
			||||
							activeRadius: 10, | 
				
			||||
							offsetAngle: 0, | 
				
			||||
							labelWidth: 15, | 
				
			||||
							border: false, | 
				
			||||
							customRadius: 60, | 
				
			||||
							borderWidth: 3, | 
				
			||||
							borderColor: "#FFFFFF", | 
				
			||||
							centerColor: "#57B5FF", | 
				
			||||
							linearType: "none" | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				}, | 
				
			||||
				list: [{ | 
				
			||||
					name: "上海雅特有限公司", | 
				
			||||
					tag: { | 
				
			||||
						class: "", | 
				
			||||
						text: "重点单位" | 
				
			||||
					}, | 
				
			||||
					type: "双随机", | 
				
			||||
					result: "责令限期整改" | 
				
			||||
 | 
				
			||||
				}], | 
				
			||||
				month:[1,2,3,4,5,6,7,8,9,10,11,12] | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onLoad() { | 
				
			||||
			let a = uni.getStorageSync("user"); | 
				
			||||
 | 
				
			||||
			if (a) { | 
				
			||||
				this.identity = 1 | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onReady() { | 
				
			||||
			this.getServerData(); | 
				
			||||
		}, | 
				
			||||
		methods: { | 
				
			||||
			getServerData() { | 
				
			||||
				//模拟从服务器获取数据时的延时 | 
				
			||||
				setTimeout(() => { | 
				
			||||
					//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接 | 
				
			||||
					let res = { | 
				
			||||
						series: [{ | 
				
			||||
							data: [{ | 
				
			||||
								"name": "一班", | 
				
			||||
								"value": 50 | 
				
			||||
							}, { | 
				
			||||
								"name": "二班", | 
				
			||||
								"value": 30 | 
				
			||||
							}, { | 
				
			||||
								"name": "三班", | 
				
			||||
								"value": 20 | 
				
			||||
							},  | 
				
			||||
							] | 
				
			||||
						}] | 
				
			||||
					}; | 
				
			||||
					this.chartData = JSON.parse(JSON.stringify(res)); | 
				
			||||
				}, 500); | 
				
			||||
			}, | 
				
			||||
			date(e){ | 
				
			||||
				console.log(e); | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style lang="scss"> | 
				
			||||
	 | 
				
			||||
	.pure_top { | 
				
			||||
		width: 100%; | 
				
			||||
		height: 220rpx; | 
				
			||||
		position: relative; | 
				
			||||
		z-index: 0; | 
				
			||||
		overflow: hidden; | 
				
			||||
		 | 
				
			||||
	} | 
				
			||||
	.pure_top::after { | 
				
			||||
		content:""; | 
				
			||||
		width: 100%; | 
				
			||||
		height: 220rpx; | 
				
			||||
		position: absolute; | 
				
			||||
		left: 0; | 
				
			||||
		top:0; | 
				
			||||
		z-index: -1; | 
				
			||||
		border-radius: 0 0 100% 100%; | 
				
			||||
		background: linear-gradient(180deg, #57B5FF 0%, #616DFD 100%); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	.calendar{ | 
				
			||||
		z-index: 1; | 
				
			||||
		position: absolute; | 
				
			||||
		left: 74rpx; | 
				
			||||
		top: 20rpx; | 
				
			||||
		width: 80%; | 
				
			||||
		height: 120rpx; | 
				
			||||
		border-radius: 10rpx; | 
				
			||||
		box-shadow: 0px 0px 20px 1px #C1D7FF; | 
				
			||||
		background: #fff; | 
				
			||||
		view{ | 
				
			||||
			height: 60rpx; | 
				
			||||
		} | 
				
			||||
		.dates{ | 
				
			||||
			display: flex; | 
				
			||||
		} | 
				
			||||
		.monthbox{ | 
				
			||||
			display: flex; | 
				
			||||
			justify-content: center; | 
				
			||||
			align-items: center; | 
				
			||||
			flex-direction: row; | 
				
			||||
		} | 
				
			||||
		.month{ | 
				
			||||
			 | 
				
			||||
			width: 48rpx; | 
				
			||||
			height: 48rpx; | 
				
			||||
			border-radius: 48rpx; | 
				
			||||
			text-align: center; | 
				
			||||
			// background: #327AFE; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
	button { | 
				
			||||
		width: 200rpx; | 
				
			||||
		height: 80rpx; | 
				
			||||
		color: #fff; | 
				
			||||
		border-radius: 40rpx; | 
				
			||||
		line-height: 80rpx; | 
				
			||||
		background-color: #327AFE; | 
				
			||||
	} | 
				
			||||
	.taskbox{ | 
				
			||||
		width: 90%; | 
				
			||||
		margin: -60rpx auto 0 auto; | 
				
			||||
		border-radius: 20rpx; | 
				
			||||
		background-color: #fff; | 
				
			||||
		padding: 20rpx; | 
				
			||||
		position: absolute; | 
				
			||||
		left: 16rpx; | 
				
			||||
		z-index: 10; | 
				
			||||
		.itembox{ | 
				
			||||
			margin-top: 30rpx; | 
				
			||||
			.top{ | 
				
			||||
				margin-top: 30rpx; | 
				
			||||
				height: 60rpx; | 
				
			||||
				display: flex; | 
				
			||||
				.left{ | 
				
			||||
					display: flex; | 
				
			||||
					flex: 1; | 
				
			||||
					img{ | 
				
			||||
						width: 50rpx; | 
				
			||||
						height: 50rpx; | 
				
			||||
					} | 
				
			||||
					text{ | 
				
			||||
						margin-right: 10rpx; | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
				.right{ | 
				
			||||
					color: #909090; | 
				
			||||
					 | 
				
			||||
					display: flex; | 
				
			||||
					.progress{ | 
				
			||||
						margin-top: 6rpx; | 
				
			||||
						margin-right: 10rpx; | 
				
			||||
						height: 34rpx; | 
				
			||||
						flex: 1; | 
				
			||||
						background: #E4E7EC; | 
				
			||||
						.color{ | 
				
			||||
							height: 100%; | 
				
			||||
							background-color: #14B389; | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
	.charts-box { | 
				
			||||
		// background-color: #5687fd; | 
				
			||||
		height: 250rpx; | 
				
			||||
		position: relative; | 
				
			||||
		img{ | 
				
			||||
			width: 100%; | 
				
			||||
			height: 100%; | 
				
			||||
			position: absolute; | 
				
			||||
			top: 0; | 
				
			||||
			left: 0; | 
				
			||||
			z-index: -1; | 
				
			||||
		} | 
				
			||||
		display: flex; | 
				
			||||
		justify-content: center; | 
				
			||||
		align-items: center; | 
				
			||||
		 | 
				
			||||
		.tagbox{ | 
				
			||||
			color: #FFFFFF; | 
				
			||||
			display: flex; | 
				
			||||
			justify-content: center; | 
				
			||||
			align-items: center; | 
				
			||||
			margin: 10rpx 0; | 
				
			||||
			font-size: 32rpx; | 
				
			||||
			.tag{ | 
				
			||||
				width: 20rpx; | 
				
			||||
				height: 20rpx; | 
				
			||||
				border-radius: 20rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.logo { | 
				
			||||
		height: 200rpx; | 
				
			||||
		width: 200rpx; | 
				
			||||
		margin-top: 200rpx; | 
				
			||||
		margin-left: auto; | 
				
			||||
		margin-right: auto; | 
				
			||||
		margin-bottom: 50rpx; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.text-area { | 
				
			||||
		display: flex; | 
				
			||||
		justify-content: center; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.title { | 
				
			||||
		font-size: 36rpx; | 
				
			||||
		color: #8f8f94; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.login-box { | 
				
			||||
		display: flex; | 
				
			||||
		background: #8f8f94; | 
				
			||||
		width: 100%; | 
				
			||||
		height: 120rpx; | 
				
			||||
		position: fixed; | 
				
			||||
		bottom: 0; | 
				
			||||
		left: 0; | 
				
			||||
 | 
				
			||||
		.login-text { | 
				
			||||
			color: #fff; | 
				
			||||
			width: 60%; | 
				
			||||
			display: flex; | 
				
			||||
			font-size: 36rpx; | 
				
			||||
			padding-left: 40rpx; | 
				
			||||
			align-items: center; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.login-button { | 
				
			||||
			flex: 1; | 
				
			||||
			text-align: center; | 
				
			||||
			margin-top: 20rpx; | 
				
			||||
 | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.listbox { | 
				
			||||
		width: 100%; | 
				
			||||
 | 
				
			||||
		.item { | 
				
			||||
			background-color: #fff; | 
				
			||||
			margin: 20rpx 0; | 
				
			||||
			padding: 20rpx; | 
				
			||||
 | 
				
			||||
			.namebox { | 
				
			||||
				display: flex; | 
				
			||||
				margin-bottom: 30rpx; | 
				
			||||
 | 
				
			||||
				.name { | 
				
			||||
					font-weight: 600; | 
				
			||||
					font-size: 36rpx; | 
				
			||||
					width: 70%; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.tag { | 
				
			||||
					text-align: center; | 
				
			||||
					width: 200rpx; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
					color: #FF6F51; | 
				
			||||
					border: 1px solid #FF6F51; | 
				
			||||
					background: rgba(255, 111, 81, 0.2400); | 
				
			||||
					border-radius: 40rpx 40rpx 40rpx 40rpx; | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.typebox { | 
				
			||||
		display: flex; | 
				
			||||
		margin: 30rpx 0; | 
				
			||||
 | 
				
			||||
		.type { | 
				
			||||
			width: 50%; | 
				
			||||
			border-left: #327AFE 6rpx solid; | 
				
			||||
			font-size: 30rpx; | 
				
			||||
			font-weight: 600; | 
				
			||||
			padding-left: 10rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.result { | 
				
			||||
			width: 50%; | 
				
			||||
			text-align: right; | 
				
			||||
			color: #FF6F51; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.staffbox { | 
				
			||||
		display: flex; | 
				
			||||
 | 
				
			||||
		.staff { | 
				
			||||
			display: flex; | 
				
			||||
 | 
				
			||||
			view { | 
				
			||||
				margin-right: 20rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.implement { | 
				
			||||
 | 
				
			||||
			flex: 1; | 
				
			||||
			margin-bottom: 10rpx; | 
				
			||||
 | 
				
			||||
			button { | 
				
			||||
				float: right; | 
				
			||||
				width: 120rpx; | 
				
			||||
				height: 60rpx; | 
				
			||||
				line-height: 60rpx; | 
				
			||||
				font-size: 32rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,8 @@
					 | 
				
			||||
<template> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style> | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,710 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view class="page"> | 
				
			||||
		<view class="top"> | 
				
			||||
			<view class="pure_top"> | 
				
			||||
 | 
				
			||||
			</view> | 
				
			||||
			<view class="calendar"> | 
				
			||||
				<view class="date_year"> | 
				
			||||
					<view style="display: flex;"> | 
				
			||||
						<picker :value="dates.year" mode="date" fields="year" @change="dateYear($event)"> | 
				
			||||
							<view>{{dates.year}}</view> | 
				
			||||
						</picker> | 
				
			||||
						<img src="../../static/down.png" style="width: 30rpx;height: 30rpx; margin:10rpx 0 0 10rpx;" alt=""> | 
				
			||||
					</view> | 
				
			||||
					<view style="margin: 0 10rpx;">|</view> | 
				
			||||
					<view class=""> | 
				
			||||
						{{today.month}}.{{dates.day}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="monthbox"> | 
				
			||||
					<view :class="{month_color : item==dates.month}" class="month_class" v-for="(item,key) in months" | 
				
			||||
						:key="key" @tap="dateMonth(item)"> | 
				
			||||
						<text>{{item}}</text> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
		<view class="taskbox"> | 
				
			||||
			<view class="itembox" v-for="(item,key) in user" :key="key"> | 
				
			||||
				<view class="top"> | 
				
			||||
					<view class="left"> | 
				
			||||
						<img src="@/static/4412.png" alt=""> | 
				
			||||
						<view class=""> | 
				
			||||
							<text>{{item.name}}任务总数</text><text>{{nub}}</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						<view v-if="nub" style="margin-right: 10rpx;">完成</view> | 
				
			||||
 | 
				
			||||
						<view class=""> | 
				
			||||
							<text v-if="nub">{{item.tasknub+'/'+nub}}件</text> | 
				
			||||
							<text v-else>暂无任务</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="charts-box" style="display: flex;"> | 
				
			||||
					<img src="@/static/dadui/10.png" alt=""> | 
				
			||||
					<view  v-if="identity" style="width: 50%;"> | 
				
			||||
						<qiun-data-charts type="ring" :opts="opts" :chartData="chartData" /> | 
				
			||||
					</view> | 
				
			||||
					<view | 
				
			||||
						style="width: 50%; display: flex;justify-content: center;align-items: center;flex-direction: column;"> | 
				
			||||
						<view class="tagbox" v-for="(item,key) in chartData.series[0].data" :key="key"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[key]+';'"> | 
				
			||||
 | 
				
			||||
							</view> | 
				
			||||
							<text>{{item.name}}-------{{item.value}}个</text> | 
				
			||||
						</view> | 
				
			||||
 | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			 | 
				
			||||
		</view> | 
				
			||||
		<view class="listbox"> | 
				
			||||
			<view class="item" v-for="(item,key) in list" :key="key"> | 
				
			||||
				<view class="typebox"> | 
				
			||||
					<view | 
				
			||||
						style="width: 12rpx; height: 34rpx; margin-top: 6rpx; background-color: #9D80FF; color: #9D80FF ;"> | 
				
			||||
						1 | 
				
			||||
					</view> | 
				
			||||
					<view class="type"> | 
				
			||||
						{{item.taskType}} | 
				
			||||
					</view> | 
				
			||||
 | 
				
			||||
				</view> | 
				
			||||
				<view class="namebox"> | 
				
			||||
					<view class="name"> | 
				
			||||
						{{item.company.companyName}} | 
				
			||||
					</view> | 
				
			||||
					<view style=" width: 30%; padding-left:20rpx;"> | 
				
			||||
						<view v-if="item.company.useNature=='重点单位'" class="tag" style=""> | 
				
			||||
							{{item.company.useNature}} | 
				
			||||
						</view> | 
				
			||||
						<view v-else class="tag2"> | 
				
			||||
							{{item.company.useNature}} | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
 | 
				
			||||
				<view class="staffbox"> | 
				
			||||
					<view class="staff" style="flex: 1;"> | 
				
			||||
						<view>主负责人:</view> | 
				
			||||
						<view class="zhu">{{item.organization.name}}</view> | 
				
			||||
 | 
				
			||||
					</view> | 
				
			||||
					<view class="jiancha"> | 
				
			||||
						待检查 | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view style="display: flex;"> | 
				
			||||
					<view style="flex:1"> | 
				
			||||
						<view class="staffbox"> | 
				
			||||
							<view class="staff"> | 
				
			||||
								<view>协助人员:</view> | 
				
			||||
								<view v-for="(i,k) in item.supervisors" :key="k" | 
				
			||||
									style="display: flex;justify-content: center;align-items: center;"> | 
				
			||||
									<img v-if="i.posts && i.posts[0] == '主查人员'" src="../../static/447.png" alt=""> | 
				
			||||
									<img v-if="i.posts && i.posts[0] == '协查人员'" src="../../static/446.png" alt=""> | 
				
			||||
									{{i.name}} | 
				
			||||
								</view> | 
				
			||||
 | 
				
			||||
							</view> | 
				
			||||
							<!-- <view class="implement"> | 
				
			||||
								<button>执行</button> | 
				
			||||
							</view> --> | 
				
			||||
						</view> | 
				
			||||
						<view class="staffbox"> | 
				
			||||
							<view class="staff"> | 
				
			||||
								<view>检查时间:</view> | 
				
			||||
								<view>{{item.checkTime}}</view> | 
				
			||||
 | 
				
			||||
							</view> | 
				
			||||
							<!--  --> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="implement"> | 
				
			||||
						<view class="button"> | 
				
			||||
							<button @tap="start(item)">执行</button> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
	</view> | 
				
			||||
	<!-- <view class="login-box" v-if="!identity"> | 
				
			||||
			<view class="login-text"> | 
				
			||||
				登录平台,在线处理业务 | 
				
			||||
			</view> | 
				
			||||
			<view class="login-button" > | 
				
			||||
				<button @tap="login()">登录</button> | 
				
			||||
			</view> | 
				
			||||
		</view> --> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				title: 'Hello', | 
				
			||||
				identity: 0, | 
				
			||||
				progressNub: 60, | 
				
			||||
				chartData: { | 
				
			||||
					series: [{ | 
				
			||||
						data: [{ | 
				
			||||
							name: "上级指派", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "自主任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "申领任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, ] | 
				
			||||
					}] | 
				
			||||
				}, | 
				
			||||
				dates: { | 
				
			||||
					year: 2022, | 
				
			||||
					month: 8, | 
				
			||||
					day: 0, | 
				
			||||
				}, | 
				
			||||
				today:{ | 
				
			||||
					month: 8, | 
				
			||||
				}, | 
				
			||||
				opts: { | 
				
			||||
					rotate: false, | 
				
			||||
					rotateLock: false, | 
				
			||||
					color: ["#FACE15", "#04F1C9", "#3990F1"], | 
				
			||||
 | 
				
			||||
					padding: [5, 5, 5, 5], | 
				
			||||
					dataLabel: false, | 
				
			||||
					legend: { | 
				
			||||
						show: false, | 
				
			||||
						fontColor: "#fff", | 
				
			||||
						position: "right", | 
				
			||||
						lineHeight: 20 | 
				
			||||
					}, | 
				
			||||
					title: { | 
				
			||||
						name: "任务总数", | 
				
			||||
						fontSize: 15, | 
				
			||||
						color: "#fff" | 
				
			||||
					}, | 
				
			||||
					subtitle: { | 
				
			||||
						name: "0", | 
				
			||||
						fontSize: 25, | 
				
			||||
						color: "#fff" | 
				
			||||
					}, | 
				
			||||
					 | 
				
			||||
					extra: { | 
				
			||||
						ring: { | 
				
			||||
							width: 50, | 
				
			||||
							height: 50, | 
				
			||||
							ringWidth: 10, | 
				
			||||
							activeOpacity: 0.5, | 
				
			||||
							activeRadius: 10, | 
				
			||||
							offsetAngle: 0, | 
				
			||||
							labelWidth: 15, | 
				
			||||
							border: false, | 
				
			||||
							customRadius: 60, | 
				
			||||
							borderWidth: 3, | 
				
			||||
							borderColor: "#FFFFFF", | 
				
			||||
							centerColor: "#57B5FF", | 
				
			||||
							linearType: "none" | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				}, | 
				
			||||
				user: [ | 
				
			||||
					{ | 
				
			||||
						tasknub:0 | 
				
			||||
					} | 
				
			||||
				], | 
				
			||||
				isSupervisor:false, | 
				
			||||
				list: [], | 
				
			||||
				nub: 0, | 
				
			||||
				months: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onLoad() { | 
				
			||||
			let a = uni.getStorageSync("user"); | 
				
			||||
			let date = new Date() | 
				
			||||
			this.dates.month = date.getMonth() + 1 | 
				
			||||
			this.today.month=date.getMonth() + 1 | 
				
			||||
			this.dates.year=date.getFullYear() | 
				
			||||
			this.dates.day=date.getDate() | 
				
			||||
			// this.getOrganizations() | 
				
			||||
			 | 
				
			||||
				 | 
				
			||||
			 | 
				
			||||
		}, | 
				
			||||
		onReady() { | 
				
			||||
 | 
				
			||||
			this.getOrganizations() | 
				
			||||
		}, | 
				
			||||
		methods: { | 
				
			||||
			getOrganizations() { | 
				
			||||
				const that = this | 
				
			||||
				let selectedTime = this.dates.year + '-' + this.dates.month + '-' + '01' | 
				
			||||
				let userId = uni.getStorageSync("user").id | 
				
			||||
				let roles=uni.getStorageSync("user").roles | 
				
			||||
				console.log(uni.getStorageSync("user")); | 
				
			||||
				let isSupervisor = roles.find(item => { | 
				
			||||
				      return item.name.indexOf('检查') != -1 | 
				
			||||
				    }) | 
				
			||||
					isSupervisor ? this.isSupervisor = true : this.isSupervisor = false | 
				
			||||
					 | 
				
			||||
				let params = { | 
				
			||||
					ContainsChildren: true, | 
				
			||||
					pageSize: 9999 | 
				
			||||
				} | 
				
			||||
				this.$request.get("/api/Organizations", params, (data, res) => { | 
				
			||||
					console.log(res); | 
				
			||||
					if(!this.isSupervisor){ | 
				
			||||
						this.user = res.items | 
				
			||||
						for (let i=0;i<this.user.length;i++) { | 
				
			||||
							this.user[i]["tasknub"]=0 | 
				
			||||
							this.user[i]["rate"]=0 | 
				
			||||
						} | 
				
			||||
					}else{ | 
				
			||||
						this.getSupervisor() | 
				
			||||
					} | 
				
			||||
					this.getTaskListOfStation(userId) | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			getSupervisor(){ | 
				
			||||
				this.$request.get("/api/Users/Inspectors",{}, (data, res) => { | 
				
			||||
					console.log(res); | 
				
			||||
					let userName = uni.getStorageSync("user").roles[0].name; | 
				
			||||
					// console.log(uni.getStorageSync("user").roles); | 
				
			||||
					for (let i=0;i<res.length;i++) { | 
				
			||||
						if(res[i].userName=userName){ | 
				
			||||
							 | 
				
			||||
							this.user = [res[i]] | 
				
			||||
							console.log(this.user,8070); | 
				
			||||
							for (let i=0;i<this.user.length;i++) { | 
				
			||||
								this.user[i]["tasknub"]=0 | 
				
			||||
								this.user[i]["rate"]=0 | 
				
			||||
								 | 
				
			||||
							} | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			getTaskListOfStation(item) { | 
				
			||||
				console.log(item); | 
				
			||||
				const that = this | 
				
			||||
				let selectedTime = this.dates.year + '-' + this.dates.month + '-' + '01' | 
				
			||||
				let params = { | 
				
			||||
					Month: selectedTime, | 
				
			||||
					SupervisorId: item, | 
				
			||||
					PageNumber: 1, | 
				
			||||
					approvalStatus: '通过', | 
				
			||||
					PageSize: 9999 | 
				
			||||
				} | 
				
			||||
				this.$request.get("/api/PlanTasks", params, (data, res) => { | 
				
			||||
					console.log(res); | 
				
			||||
					this.list = res.items | 
				
			||||
					this.list["tasknub"]=0 | 
				
			||||
					for (let e=0;e<this.user.length;e++) { | 
				
			||||
						for (let i = 0; i < that.list.length; i++) { | 
				
			||||
							 | 
				
			||||
							if(that.list[i].checkTime){ | 
				
			||||
								let text = that.list[i].checkTime.substring(0, 10) | 
				
			||||
								that.list[i].checkTime = text | 
				
			||||
							} | 
				
			||||
							 | 
				
			||||
							if(that.list[i].inspectionResult!='待检查'){ | 
				
			||||
								this.user[e].tasknub+=1 | 
				
			||||
							} | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
					console.log(this.list); | 
				
			||||
					this.getServerData(); | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			getServerData() { | 
				
			||||
				//模拟从服务器获取数据时的延时 | 
				
			||||
				this.nub = 0 | 
				
			||||
				this.chartData = { | 
				
			||||
					series: [{ | 
				
			||||
						data: [{ | 
				
			||||
							name: "上级指派", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "自主任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "申领任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, ] | 
				
			||||
					}] | 
				
			||||
				} | 
				
			||||
				for (let i = 0; i < this.list.length; i++) { | 
				
			||||
 | 
				
			||||
					for (let e = 0; e < this.chartData.series[0].data.length; e++) { | 
				
			||||
 | 
				
			||||
						if (this.chartData.series[0].data[e].name == this.list[i].creationType) { | 
				
			||||
							this.chartData.series[0].data[e].value += 1 | 
				
			||||
							this.nub = this.nub + 1 | 
				
			||||
							this.opts.subtitle.name = JSON.stringify(this.nub) | 
				
			||||
						} | 
				
			||||
 | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
				this.identity = 1 | 
				
			||||
			}, | 
				
			||||
			dateYear(e){ | 
				
			||||
				console.log(e); | 
				
			||||
				this.dates.year = e.detail.value | 
				
			||||
				this.getOrganizations() | 
				
			||||
			}, | 
				
			||||
			dateMonth(e) { | 
				
			||||
				this.dates.month = e | 
				
			||||
				this.getOrganizations() | 
				
			||||
			}, | 
				
			||||
			start(item){ | 
				
			||||
				 | 
				
			||||
				uni.navigateTo({ | 
				
			||||
					url: '/pages/task/details?id='+item.company.id, | 
				
			||||
				})	 | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style lang="scss"> | 
				
			||||
	.top { | 
				
			||||
		position: relative; | 
				
			||||
		top: 0; | 
				
			||||
		left: 0; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.pure_top { | 
				
			||||
		width: 100%; | 
				
			||||
		height: 220rpx; | 
				
			||||
		position: absolute; | 
				
			||||
		z-index: 0; | 
				
			||||
		overflow: hidden; | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.pure_top::after { | 
				
			||||
		content: ""; | 
				
			||||
		width: 100%; | 
				
			||||
		height: 220rpx; | 
				
			||||
		position: absolute; | 
				
			||||
		left: 0; | 
				
			||||
		top: 0; | 
				
			||||
		z-index: -1; | 
				
			||||
		border-radius: 0 0 100% 100%; | 
				
			||||
		background: linear-gradient(180deg, #57B5FF 0%, #616DFD 100%); | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.month_color { | 
				
			||||
		border-radius: 48rpx; | 
				
			||||
 | 
				
			||||
		background-color: #317AFF; | 
				
			||||
		color: #fff; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.calendar { | 
				
			||||
		z-index: 1; | 
				
			||||
		position: relative; | 
				
			||||
		left: 74rpx; | 
				
			||||
		top: 20rpx; | 
				
			||||
		width: 80%; | 
				
			||||
		height: 120rpx; | 
				
			||||
		border-radius: 10rpx; | 
				
			||||
		box-shadow: 0px 0px 20px 1px #C1D7FF; | 
				
			||||
		background: #fff; | 
				
			||||
 | 
				
			||||
		view { | 
				
			||||
			height: 60rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.date_year { | 
				
			||||
			box-sizing: border-box; | 
				
			||||
			display: flex; | 
				
			||||
			background-color: #fff; | 
				
			||||
			padding: 10rpx 0 0 10rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.monthbox { | 
				
			||||
			display: flex; | 
				
			||||
			justify-content: center; | 
				
			||||
			align-items: center; | 
				
			||||
			flex-direction: row; | 
				
			||||
 | 
				
			||||
			.month_class { | 
				
			||||
 | 
				
			||||
				width: 48rpx; | 
				
			||||
				height: 48rpx; | 
				
			||||
				text-align: center; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	button { | 
				
			||||
		width: 140rpx; | 
				
			||||
		height: 70rpx; | 
				
			||||
		color: #fff; | 
				
			||||
		border-radius: 34rpx; | 
				
			||||
		line-height: 70rpx; | 
				
			||||
		font-size: 30rpx; | 
				
			||||
		background-color: #327AFE; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.taskbox { | 
				
			||||
		width: 90%; | 
				
			||||
		margin: 40rpx auto; | 
				
			||||
		border-radius: 20rpx; | 
				
			||||
		background-color: #fff; | 
				
			||||
		padding: 20rpx; | 
				
			||||
		position: relative; | 
				
			||||
		left: 0; | 
				
			||||
		z-index: 10; | 
				
			||||
 | 
				
			||||
		.itembox { | 
				
			||||
 | 
				
			||||
			.top { | 
				
			||||
				margin-top: 30rpx; | 
				
			||||
				height: 60rpx; | 
				
			||||
				display: flex; | 
				
			||||
 | 
				
			||||
				.left { | 
				
			||||
					display: flex; | 
				
			||||
					flex: 1; | 
				
			||||
 | 
				
			||||
					img { | 
				
			||||
						width: 50rpx; | 
				
			||||
						height: 50rpx; | 
				
			||||
					} | 
				
			||||
 | 
				
			||||
					text { | 
				
			||||
						margin-right: 10rpx; | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.right { | 
				
			||||
					color: #909090; | 
				
			||||
					display: flex; | 
				
			||||
 | 
				
			||||
					.progress { | 
				
			||||
						margin-top: 6rpx; | 
				
			||||
						margin-right: 10rpx; | 
				
			||||
						height: 34rpx; | 
				
			||||
						flex: 1; | 
				
			||||
						background: #E4E7EC; | 
				
			||||
 | 
				
			||||
						.color { | 
				
			||||
 | 
				
			||||
							height: 100%; | 
				
			||||
							background-color: #14B389; | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.charts-box { | 
				
			||||
		// background-color: #5687fd; | 
				
			||||
		height: 250rpx; | 
				
			||||
		position: relative; | 
				
			||||
 | 
				
			||||
		img { | 
				
			||||
			width: 100%; | 
				
			||||
			height: 100%; | 
				
			||||
			position: absolute; | 
				
			||||
			top: 0; | 
				
			||||
			left: 0; | 
				
			||||
			z-index: -1; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		display: flex; | 
				
			||||
		justify-content: center; | 
				
			||||
		align-items: center; | 
				
			||||
 | 
				
			||||
		.tagbox { | 
				
			||||
			color: #FFFFFF; | 
				
			||||
			display: flex; | 
				
			||||
			justify-content: center; | 
				
			||||
			align-items: center; | 
				
			||||
			margin: 10rpx 0; | 
				
			||||
			font-size: 32rpx; | 
				
			||||
 | 
				
			||||
			.tag { | 
				
			||||
				width: 20rpx; | 
				
			||||
				height: 20rpx; | 
				
			||||
				border-radius: 20rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.logo { | 
				
			||||
		height: 200rpx; | 
				
			||||
		width: 200rpx; | 
				
			||||
		margin-top: 200rpx; | 
				
			||||
		margin-left: auto; | 
				
			||||
		margin-right: auto; | 
				
			||||
		margin-bottom: 50rpx; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.text-area { | 
				
			||||
		display: flex; | 
				
			||||
		justify-content: center; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.title { | 
				
			||||
		font-size: 36rpx; | 
				
			||||
		color: #8f8f94; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.login-box { | 
				
			||||
		display: flex; | 
				
			||||
		background: #8f8f94; | 
				
			||||
		width: 100%; | 
				
			||||
		height: 120rpx; | 
				
			||||
		position: fixed; | 
				
			||||
		bottom: 0; | 
				
			||||
		left: 0; | 
				
			||||
 | 
				
			||||
		.login-text { | 
				
			||||
			color: #fff; | 
				
			||||
			width: 60%; | 
				
			||||
			display: flex; | 
				
			||||
			font-size: 36rpx; | 
				
			||||
			padding-left: 40rpx; | 
				
			||||
			align-items: center; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.login-button { | 
				
			||||
			flex: 1; | 
				
			||||
			text-align: center; | 
				
			||||
			margin-top: 20rpx; | 
				
			||||
 | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.listbox { | 
				
			||||
		width: 90%; | 
				
			||||
		margin: -10rpx auto 0 auto; | 
				
			||||
 | 
				
			||||
		.item { | 
				
			||||
			background-color: #fff; | 
				
			||||
			margin: 20rpx 0; | 
				
			||||
			padding: 20rpx; | 
				
			||||
 | 
				
			||||
			.namebox { | 
				
			||||
				display: flex; | 
				
			||||
				margin-bottom: 10rpx; | 
				
			||||
 | 
				
			||||
				.name { | 
				
			||||
					font-weight: 600; | 
				
			||||
					font-size: 36rpx; | 
				
			||||
					width: 70%; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.tag { | 
				
			||||
					text-align: center; | 
				
			||||
					width: 180rpx; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
					color: #FF6F51; | 
				
			||||
					border: 1px solid #FF6F51; | 
				
			||||
					background: rgba(255, 111, 81, 0.2400); | 
				
			||||
					border-radius: 40rpx 40rpx 40rpx 40rpx; | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.tag2 { | 
				
			||||
					text-align: center; | 
				
			||||
					width: 180rpx; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
					color: #14B488; | 
				
			||||
					border: 1px solid rgba(30, 232, 177, 0.8); | 
				
			||||
					background: rgba(30, 232, 177, 0.24); | 
				
			||||
					border-radius: 40rpx 40rpx 40rpx 40rpx; | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.typebox { | 
				
			||||
		display: flex; | 
				
			||||
		margin: 14rpx 0; | 
				
			||||
 | 
				
			||||
		.type { | 
				
			||||
			width: 50%; | 
				
			||||
			// border-left: #327AFE 6rpx solid; | 
				
			||||
			font-size: 32rpx; | 
				
			||||
			font-weight: 600; | 
				
			||||
			padding-left: 10rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.result { | 
				
			||||
			width: 50%; | 
				
			||||
			text-align: right; | 
				
			||||
			color: #FF6F51; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.staffbox { | 
				
			||||
		display: flex; | 
				
			||||
		margin: 6rpx 0; | 
				
			||||
		font-size: 30rpx; | 
				
			||||
 | 
				
			||||
		.staff { | 
				
			||||
			display: flex; | 
				
			||||
			color: rgba(16, 15, 25, 0.48); | 
				
			||||
 | 
				
			||||
			.zhu { | 
				
			||||
 | 
				
			||||
				color: #100F19; | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
			view { | 
				
			||||
				margin-right: 20rpx; | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
			img { | 
				
			||||
				width: 40rpx; | 
				
			||||
				height: 40rpx; | 
				
			||||
				min-width: 40rpx; | 
				
			||||
				min-height: 40rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.jiancha { | 
				
			||||
			color: #FFBA19; | 
				
			||||
			margin-right: 10rpx; | 
				
			||||
 | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.implement { | 
				
			||||
 | 
				
			||||
		margin-bottom: 10rpx; | 
				
			||||
 | 
				
			||||
		.button { | 
				
			||||
			width: 100%; | 
				
			||||
			height: 100%; | 
				
			||||
			padding-top: 20rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		// button { | 
				
			||||
		// 	float: right; | 
				
			||||
		// 	width: 80rpx; | 
				
			||||
		// 	height: 40rpx; | 
				
			||||
		// 	line-height: 40rpx; | 
				
			||||
		// 	margin-top: 20rpx; | 
				
			||||
		// } | 
				
			||||
	} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,216 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view class="page"> | 
				
			||||
		<view class="top"> | 
				
			||||
			<img src="@/static/login/banner.jpg" alt=""> | 
				
			||||
			<view class="tops"> | 
				
			||||
 | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
 | 
				
			||||
		<view class="items"> | 
				
			||||
			<view class="title"> | 
				
			||||
				<img mode="widthFix" src="@/static/login/title.png" alt=""> | 
				
			||||
				<view class="text"> | 
				
			||||
					欢迎登录防消一体化综合治理平台 | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			<view class="item"> | 
				
			||||
				<view class="label"> | 
				
			||||
					账号/手机号 | 
				
			||||
				</view> | 
				
			||||
				<view class="input"> | 
				
			||||
					<input v-model="form.name" type="text" placeholder="请输入账号/手机号"> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			<view class="item"> | 
				
			||||
				<view class="label"> | 
				
			||||
					密码 | 
				
			||||
				</view> | 
				
			||||
				<view class="input"> | 
				
			||||
					<input v-model="form.password" type="password" placeholder="请输入密码"> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			<view class="item"> | 
				
			||||
				<label> | 
				
			||||
					<checkbox :value="form.auto" /><text>自动登录</text> | 
				
			||||
				</label> | 
				
			||||
			</view> | 
				
			||||
			<view class="button"> | 
				
			||||
				<button @tap="getUserInfo()">登录</button> | 
				
			||||
				<!-- <button @tap="getToken()">登录</button> --> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
 | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	import store from '@/store.js' | 
				
			||||
	export default { | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				title: 'Hello', | 
				
			||||
 | 
				
			||||
				form: { | 
				
			||||
					name: "xiaofangzhan", | 
				
			||||
					password: "Anxin119!@", | 
				
			||||
					auto: false, | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onLoad() { | 
				
			||||
			if (store.state.token) { | 
				
			||||
				console.log(store.state.token); | 
				
			||||
				uni.reLaunch({ | 
				
			||||
					url: "/pages/index/index", | 
				
			||||
					success: res => {}, | 
				
			||||
					fail: () => {}, | 
				
			||||
					complete: () => {}, | 
				
			||||
				}) | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		methods: { | 
				
			||||
			getUserInfo() { | 
				
			||||
				let body = {} | 
				
			||||
				if (!this.form.name) { | 
				
			||||
					return this.$alert.showError("请输入用户账号") | 
				
			||||
				} | 
				
			||||
				if (!this.form.password) { | 
				
			||||
					return this.$alert.showError("请输入密码") | 
				
			||||
				} | 
				
			||||
				uni.showLoading({ | 
				
			||||
					title: '登录中', | 
				
			||||
				}); | 
				
			||||
				const that = this | 
				
			||||
				this.$request.post("/api/Accounts/SignIn", { | 
				
			||||
					username: this.form.name, | 
				
			||||
					password: this.form.password | 
				
			||||
				}, (data, res) => { | 
				
			||||
					uni.hideLoading(); | 
				
			||||
					if (res.status == "401") { | 
				
			||||
						return this.$alert.showError("用户名或密码错误") | 
				
			||||
					} | 
				
			||||
					uni.setStorageSync("token", res) | 
				
			||||
					this.$store.commit('saveToken', res) | 
				
			||||
					console.log(store.state.token); | 
				
			||||
					that.$request.get("/api/Accounts/profile", {}, (data, res) => { | 
				
			||||
						console.log(res); | 
				
			||||
						uni.setStorageSync("user", res) | 
				
			||||
					}) | 
				
			||||
					uni.reLaunch({ | 
				
			||||
						url: "/pages/index/index", | 
				
			||||
						success: res => { | 
				
			||||
							console.log(res); | 
				
			||||
						}, | 
				
			||||
						fail: () => { | 
				
			||||
							console.log(res); | 
				
			||||
						}, | 
				
			||||
						complete: () => {}, | 
				
			||||
					}) | 
				
			||||
					// return | 
				
			||||
 | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			getToken() { | 
				
			||||
				let user = store.state.token | 
				
			||||
				this.$request.post("/api/Accounts/RefreshToken",{token:user.token,refreshToken:user.refreshToken},(data,res)=>{ | 
				
			||||
					console.log(res); | 
				
			||||
				}) | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style lang="scss"> | 
				
			||||
	.page { | 
				
			||||
		background-color: #FAFBFF; | 
				
			||||
		color: #808080; | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.top { | 
				
			||||
		width: 100%; | 
				
			||||
		height: 200rpx; | 
				
			||||
		position: absolute; | 
				
			||||
 | 
				
			||||
		img { | 
				
			||||
			width: 100%; | 
				
			||||
			height: 200rpx; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.tops { | 
				
			||||
		height: 40rpx; | 
				
			||||
		border-radius: 20rpx 20rpx 0 0; | 
				
			||||
		position: relative; | 
				
			||||
		z-index: 10; | 
				
			||||
		background-color: #FAFBFF; | 
				
			||||
		bottom: 30rpx; | 
				
			||||
		left: 0; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.items { | 
				
			||||
		// width: 100%; | 
				
			||||
		margin: 0 60rpx; | 
				
			||||
 | 
				
			||||
		.title { | 
				
			||||
			/* width: 748rpx; */ | 
				
			||||
			// height: 68rpx; | 
				
			||||
			// line-height: 68rpx; | 
				
			||||
			// font-size: 50rpx; | 
				
			||||
			// font-weight: 500; | 
				
			||||
			// color: #317AFF; | 
				
			||||
			margin: 240rpx 0 60rpx 0; | 
				
			||||
 | 
				
			||||
			.text { | 
				
			||||
				margin-top: 20rpx; | 
				
			||||
				font-size: 30rpx; | 
				
			||||
				text-align: center; | 
				
			||||
				color: #939393; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		button { | 
				
			||||
			width: 100%; | 
				
			||||
			// height: 140rpx; | 
				
			||||
			// background: linear-gradient(180deg, #317AFF 0%, #0052E6 100%); | 
				
			||||
			color: #fff; | 
				
			||||
			border-radius: 120rpx; | 
				
			||||
			background: #4963F4; | 
				
			||||
			box-shadow: 2px 6px 8px 1px rgba(73, 99, 244, 0.8); | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.item { | 
				
			||||
			margin: 60rpx 0; | 
				
			||||
 | 
				
			||||
			.label { | 
				
			||||
				font-size: 32rpx; | 
				
			||||
				// color: rgba(16, 15, 25, 0.48); | 
				
			||||
				margin-bottom: 30rpx; | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
			label { | 
				
			||||
				color: #4963F4; | 
				
			||||
 | 
				
			||||
				checkbox { | 
				
			||||
					border: #4963F4; | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
			.input { | 
				
			||||
				// border-bottom: 2rpx solid rgba(16, 15, 25, 0.16); | 
				
			||||
				height: 80rpx; | 
				
			||||
				background: #ECF2FF; | 
				
			||||
 | 
				
			||||
				input { | 
				
			||||
					height: 100%; | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,277 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view class="page"> | 
				
			||||
		<view class="form"> | 
				
			||||
			<view class="itembox"> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						单位名称 | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						{{list.companyName||""}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						单位管理人 | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						{{list.directorName||""}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						联系方式 | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						{{list.directorPhone||""}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						单位地址 | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						{{list.address||""}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						建筑结构 | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						{{datas.basicInfo.structure}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						建筑高度 | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						{{datas.basicInfo.height}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						建筑层数 | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						{{datas.basicInfo.layer}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			<view class="itembox"> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						控制室位置 | 
				
			||||
					</view> | 
				
			||||
					<view class="right_inp"> | 
				
			||||
						<input type="text" placeholder="输入多个请用“,”隔开" v-model="datas.facilities.controlPosition"> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						安全重点部位 | 
				
			||||
					</view> | 
				
			||||
					<view class="right_inp"> | 
				
			||||
						<input type="text" placeholder="输入安全重点部位" v-model="datas.KeyParts[0].useNature"> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						单位性质 | 
				
			||||
					</view> | 
				
			||||
					<view class="right_inp"> | 
				
			||||
						<picker :range="danwei"  @change="danweif($event)"> | 
				
			||||
							<view>{{datas.basicInfo.nature||"请选择"}}</view> | 
				
			||||
						</picker> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						消防设施及器材 | 
				
			||||
					</view> | 
				
			||||
					<view class="right_inp"> | 
				
			||||
						<input type="text" placeholder="(个)" v-model="datas.facilities.fireFightingFacilities"> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<!-- <view class="item"> | 
				
			||||
					<view class="left"> | 
				
			||||
						单位主要消防设施 | 
				
			||||
					</view> | 
				
			||||
					<view class="right_inp"> | 
				
			||||
						<input type="text" placeholder="输入多个请用“,”隔开"> | 
				
			||||
					</view> | 
				
			||||
				</view> --> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
		<view class="button"> | 
				
			||||
			<button>确定</button> | 
				
			||||
		</view> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				id:"", | 
				
			||||
				list:{}, | 
				
			||||
				danwei:["一般单位",'重点单位'], | 
				
			||||
				datas: { | 
				
			||||
				    basicInfo: { | 
				
			||||
				      name: "", | 
				
			||||
				      addr: "", | 
				
			||||
				      phone: "", | 
				
			||||
				      total: "", | 
				
			||||
				      height: "", | 
				
			||||
				      layer: "", | 
				
			||||
				      structure: "", | 
				
			||||
				      coveredArea: "", | 
				
			||||
				      builtUpArea: "", | 
				
			||||
				      nature: "", | 
				
			||||
				      east: "", | 
				
			||||
				      south: "", | 
				
			||||
				      west: "", | 
				
			||||
				      north: "", | 
				
			||||
				      routeAndTime: "", | 
				
			||||
				      positionCoordinates: { x: 0, y: 0 } | 
				
			||||
				    }, | 
				
			||||
				    facilities: { | 
				
			||||
				      controlPosition: "", | 
				
			||||
				      poolNumbe: "", | 
				
			||||
				      poolPosition: "", | 
				
			||||
				      poolCapacity: "", | 
				
			||||
				      supplyMode: "", | 
				
			||||
				      waterSources: "", | 
				
			||||
				      waterSourcesPosition: "", | 
				
			||||
				      system: { | 
				
			||||
				        alarm: false, | 
				
			||||
				        spray: false, | 
				
			||||
				        broadcast: false, | 
				
			||||
				        smoke: false, | 
				
			||||
				      }, | 
				
			||||
				      hydrantsNumber: "", | 
				
			||||
				      hydrantsPosition: "", | 
				
			||||
				      pumpNumber: "", | 
				
			||||
				      pumpRange: "", | 
				
			||||
				      pumpFlow: "", | 
				
			||||
				      pumpAdapter: "", | 
				
			||||
				      SprayPumpNumber: "", | 
				
			||||
				      SprayPumpRange: "", | 
				
			||||
				      SprayPumpFlow: "", | 
				
			||||
				      SprayPumpAdapter: "", | 
				
			||||
				      elevator: "", | 
				
			||||
				      stairs: "", | 
				
			||||
				      Export: "", | 
				
			||||
				      indoorHydrant: "", | 
				
			||||
				      standardIndoorHydrant: "", | 
				
			||||
					  fireFightingFacilities:"" | 
				
			||||
				    }, | 
				
			||||
				    KeyParts: [ | 
				
			||||
				      { | 
				
			||||
				        keyparts: "", | 
				
			||||
				        keypartsposition: "", | 
				
			||||
				        buildingstructure: "", | 
				
			||||
				        useNature: "", | 
				
			||||
				        danger: "" | 
				
			||||
				      }, | 
				
			||||
				      { | 
				
			||||
				        keyparts: "", | 
				
			||||
				        keypartsposition: "", | 
				
			||||
				        buildingstructure: "", | 
				
			||||
				        useNature: "", | 
				
			||||
				        danger: "" | 
				
			||||
				      } | 
				
			||||
				    ], | 
				
			||||
					datasIndex:0, | 
				
			||||
				    tips: "" | 
				
			||||
				  } | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onLoad(e) { | 
				
			||||
			this.id=e.id | 
				
			||||
			this.getCompanies() | 
				
			||||
		}, | 
				
			||||
		onReady() { | 
				
			||||
 | 
				
			||||
 | 
				
			||||
		}, | 
				
			||||
		methods: { | 
				
			||||
			getCompanies(){ | 
				
			||||
				this.$request.get("/api/Companies/"+this.id,{},(data,res)=>{ | 
				
			||||
					console.log(res); | 
				
			||||
					this.list=res | 
				
			||||
					if(this.list.data){ | 
				
			||||
						this.datas=JSON.parse(this.list.data) | 
				
			||||
						if(this.datas.basicInfo.nature=="重点单位"){ | 
				
			||||
							this.datasIndex=1 | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			danweif(e){ | 
				
			||||
				console.log(e); | 
				
			||||
				this.datas.basicInfo.nature=this.danwei[e.detail.value] | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style lang="scss"> | 
				
			||||
	 | 
				
			||||
	.button{ | 
				
			||||
		margin-top: 40rpx; | 
				
			||||
		button { | 
				
			||||
			width: 200rpx; | 
				
			||||
			// height: 140rpx; | 
				
			||||
			// background: linear-gradient(180deg, #317AFF 0%, #0052E6 100%); | 
				
			||||
			color: #fff; | 
				
			||||
			background: #317AFF; | 
				
			||||
			border-radius: 20rpx; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
	.form{ | 
				
			||||
		 | 
				
			||||
		.itembox{ | 
				
			||||
			margin-top: 20rpx; | 
				
			||||
			background: #fff; | 
				
			||||
			.item{ | 
				
			||||
				display: flex; | 
				
			||||
				height: 100rpx; | 
				
			||||
				border-top: 2rpx solid #E4E7EC; | 
				
			||||
				box-sizing: border-box; | 
				
			||||
				margin: 0 20rpx; | 
				
			||||
				font-size: 32rpx; | 
				
			||||
				.left{ | 
				
			||||
					color: #8D8C8F; | 
				
			||||
					line-height: 100rpx; | 
				
			||||
				} | 
				
			||||
				.right{ | 
				
			||||
					flex: 1; | 
				
			||||
					color: #100F19; | 
				
			||||
					text-align: right; | 
				
			||||
					line-height: 100rpx; | 
				
			||||
					 | 
				
			||||
				} | 
				
			||||
				.right_inp{ | 
				
			||||
					flex: 1; | 
				
			||||
					color: #100F19; | 
				
			||||
					text-align: right; | 
				
			||||
					margin-top: 26rpx; | 
				
			||||
				} | 
				
			||||
				 | 
				
			||||
			} | 
				
			||||
			.item:nth-child(1){ | 
				
			||||
				display: flex; | 
				
			||||
				height: 100rpx; | 
				
			||||
				 | 
				
			||||
				box-sizing: border-box; | 
				
			||||
				margin: 0 20rpx; | 
				
			||||
				font-size: 32rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
		 | 
				
			||||
		 | 
				
			||||
	} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,687 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view class="page"> | 
				
			||||
		<view class="top"> | 
				
			||||
			<view class="pure_top"> | 
				
			||||
 | 
				
			||||
			</view> | 
				
			||||
			<view class="calendar"> | 
				
			||||
				<view class="date_year"> | 
				
			||||
					<picker mode="date" fields="year" @change="dateYear($event)"> | 
				
			||||
						<view>{{dates.year}}</view> | 
				
			||||
					</picker> | 
				
			||||
					<view>|</view> | 
				
			||||
					<view class=""> | 
				
			||||
						{{today.month}}.{{dates.day}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="monthbox"> | 
				
			||||
					<view :class="{month_color : item==dates.month}" class="month_class" v-for="(item,key) in months" | 
				
			||||
						:key="key" @tap="dateMonth(item)"> | 
				
			||||
						<text>{{item}}</text> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
		<view class="taskbox"> | 
				
			||||
			<view class="itembox" v-for="(item,key) in user" :key="key"> | 
				
			||||
				<view class="top"> | 
				
			||||
					<view class="left"> | 
				
			||||
						<img src="@/static/4412.png" alt=""> | 
				
			||||
						<view class=""> | 
				
			||||
							<text>{{item.name}}任务总数</text><text>{{nub}}</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						<view style="margin-right: 10rpx;">完成率</view> | 
				
			||||
 | 
				
			||||
						<view class=""> | 
				
			||||
							<text v-if="item.tasknub">{{item.tasknub/nub*100}}%</text> | 
				
			||||
							<text v-else>0%</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="charts-box" style="display: flex;"> | 
				
			||||
					<img src="@/static/dadui/10.png" alt=""> | 
				
			||||
					<view style="width: 50%;"> | 
				
			||||
						<qiun-data-charts v-if="identity" type="ring" :opts="opts" :chartData="chartData" /> | 
				
			||||
					</view> | 
				
			||||
					<view | 
				
			||||
						style="width: 50%; display: flex;justify-content: center;align-items: center;flex-direction: column;"> | 
				
			||||
						<view class="tagbox" v-for="(item,key) in chartData.series[0].data" :key="key"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[key]+';'"> | 
				
			||||
 | 
				
			||||
							</view> | 
				
			||||
							<text>{{item.name}}-------{{item.value}}个</text> | 
				
			||||
						</view> | 
				
			||||
 | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			 | 
				
			||||
		</view> | 
				
			||||
		<view class="listbox"> | 
				
			||||
			<view class="item" v-for="(item,key) in list" :key="key"> | 
				
			||||
				<view class="typebox"> | 
				
			||||
					<view | 
				
			||||
						style="width: 12rpx; height: 34rpx; margin-top: 6rpx; background-color: #9D80FF; color: #9D80FF ;"> | 
				
			||||
						1 | 
				
			||||
					</view> | 
				
			||||
					<view class="type"> | 
				
			||||
						{{item.taskType}} | 
				
			||||
					</view> | 
				
			||||
 | 
				
			||||
				</view> | 
				
			||||
				<view class="namebox"> | 
				
			||||
					<view class="name"> | 
				
			||||
						{{item.company.companyName}} | 
				
			||||
					</view> | 
				
			||||
					<view style=" width: 30%; padding-left:20rpx;"> | 
				
			||||
						<view v-if="item.company.useNature=='重点单位'" class="tag" style=""> | 
				
			||||
							{{item.company.useNature}} | 
				
			||||
						</view> | 
				
			||||
						<view v-else class="tag2"> | 
				
			||||
							{{item.company.useNature}} | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
 | 
				
			||||
				<view class="staffbox"> | 
				
			||||
					<view class="staff" style="flex: 1;"> | 
				
			||||
						<view>主负责人:</view> | 
				
			||||
						<view class="zhu">{{item.organization.name}}</view> | 
				
			||||
 | 
				
			||||
					</view> | 
				
			||||
					<view class="jiancha"> | 
				
			||||
						待检查 | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view style="display: flex;"> | 
				
			||||
					<view style="flex:1"> | 
				
			||||
						<view class="staffbox"> | 
				
			||||
							<view class="staff"> | 
				
			||||
								<view>协助人员:</view> | 
				
			||||
								<view v-for="(i,k) in item.supervisors" :key="k" | 
				
			||||
									style="display: flex;justify-content: center;align-items: center;"> | 
				
			||||
									<img v-if="i.posts && i.posts[0] == '主查人员'" src="../../static/447.png" alt=""> | 
				
			||||
									<img v-if="i.posts && i.posts[0] == '协查人员'" src="../../static/446.png" alt=""> | 
				
			||||
									{{i.name}} | 
				
			||||
								</view> | 
				
			||||
 | 
				
			||||
							</view> | 
				
			||||
							<!-- <view class="implement"> | 
				
			||||
								<button>执行</button> | 
				
			||||
							</view> --> | 
				
			||||
						</view> | 
				
			||||
						<view class="staffbox"> | 
				
			||||
							<view class="staff"> | 
				
			||||
								<view>检查时间:</view> | 
				
			||||
								<view>{{item.checkTime}}</view> | 
				
			||||
 | 
				
			||||
							</view> | 
				
			||||
							<!--  --> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="implement"> | 
				
			||||
						<view class="button"> | 
				
			||||
							<button>执行</button> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
		<view class="taskadd"> | 
				
			||||
			<view class="itembox"> | 
				
			||||
				<view class="item_top"> | 
				
			||||
					<view class=""> | 
				
			||||
						任务申领 | 
				
			||||
					</view> | 
				
			||||
					<view class=""> | 
				
			||||
						x | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="item_content"> | 
				
			||||
					<TaskAdd></TaskAdd> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
	</view> | 
				
			||||
 | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	import TaskAdd from "../../components/task/add.vue" | 
				
			||||
	import TaskDetails from "../../components/task/details.vue" | 
				
			||||
	export default { | 
				
			||||
		components:{ | 
				
			||||
			TaskAdd, | 
				
			||||
			TaskDetails | 
				
			||||
			}, | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				title: 'Hello', | 
				
			||||
				identity: 0, | 
				
			||||
				progressNub: 60, | 
				
			||||
				chartData: { | 
				
			||||
					series: [{ | 
				
			||||
						data: [{ | 
				
			||||
							name: "上级指派", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "自主任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "申领任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, ] | 
				
			||||
					}] | 
				
			||||
				}, | 
				
			||||
				dates: { | 
				
			||||
					year: 2022, | 
				
			||||
					month: 8, | 
				
			||||
					day: 0, | 
				
			||||
				}, | 
				
			||||
				today:{ | 
				
			||||
					month: 8, | 
				
			||||
				}, | 
				
			||||
				opts: { | 
				
			||||
					rotate: false, | 
				
			||||
					rotateLock: false, | 
				
			||||
					color: ["#FACE15", "#04F1C9", "#3990F1"], | 
				
			||||
 | 
				
			||||
					padding: [5, 5, 5, 5], | 
				
			||||
					dataLabel: false, | 
				
			||||
					legend: { | 
				
			||||
						show: false, | 
				
			||||
						fontColor: "#fff", | 
				
			||||
						position: "right", | 
				
			||||
						lineHeight: 20 | 
				
			||||
					}, | 
				
			||||
					title: { | 
				
			||||
						name: "任务总数", | 
				
			||||
						fontSize: 15, | 
				
			||||
						color: "#fff" | 
				
			||||
					}, | 
				
			||||
					subtitle: { | 
				
			||||
						name: "0", | 
				
			||||
						fontSize: 25, | 
				
			||||
						color: "#fff" | 
				
			||||
					}, | 
				
			||||
					 | 
				
			||||
					extra: { | 
				
			||||
						ring: { | 
				
			||||
							width: 50, | 
				
			||||
							height: 50, | 
				
			||||
							ringWidth: 10, | 
				
			||||
							activeOpacity: 0.5, | 
				
			||||
							activeRadius: 10, | 
				
			||||
							offsetAngle: 0, | 
				
			||||
							labelWidth: 15, | 
				
			||||
							border: false, | 
				
			||||
							customRadius: 60, | 
				
			||||
							borderWidth: 3, | 
				
			||||
							borderColor: "#FFFFFF", | 
				
			||||
							centerColor: "#57B5FF", | 
				
			||||
							linearType: "none" | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				}, | 
				
			||||
				user: [ | 
				
			||||
					{ | 
				
			||||
						tasknub:0 | 
				
			||||
					} | 
				
			||||
				], | 
				
			||||
				list: [], | 
				
			||||
				nub: 0, | 
				
			||||
				months: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onLoad() { | 
				
			||||
			let a = uni.getStorageSync("user"); | 
				
			||||
			let date = new Date() | 
				
			||||
			this.dates.month = date.getMonth() + 1 | 
				
			||||
			this.today.month=date.getMonth() + 1 | 
				
			||||
			this.dates.year=date.getFullYear() | 
				
			||||
			this.dates.day=date.getDate() | 
				
			||||
			this.getOrganizations() | 
				
			||||
			if (a) { | 
				
			||||
				this.identity = 1 | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onReady() { | 
				
			||||
 | 
				
			||||
			// this.getOrganizations() | 
				
			||||
		}, | 
				
			||||
		methods: { | 
				
			||||
			getOrganizations() { | 
				
			||||
				const that = this | 
				
			||||
				let selectedTime = this.dates.year + '-' + this.dates.month + '-' + '01' | 
				
			||||
				let userId = uni.getStorageSync("user").id | 
				
			||||
				let params = { | 
				
			||||
					ContainsChildren: true, | 
				
			||||
					pageSize: 9999 | 
				
			||||
				} | 
				
			||||
				this.$request.get("/api/Organizations", params, (data, res) => { | 
				
			||||
					console.log(res); | 
				
			||||
					this.user = res.items | 
				
			||||
					for (let i=0;i<this.user.length;i++) { | 
				
			||||
						this.user[i]["tasknub"]=0 | 
				
			||||
						this.user[i]["rate"]=0 | 
				
			||||
					} | 
				
			||||
					this.getTaskListOfStation(userId) | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			getTaskListOfStation(item) { | 
				
			||||
				console.log(item); | 
				
			||||
				const that = this | 
				
			||||
				let selectedTime = this.dates.year + '-' + this.dates.month + '-' + '01' | 
				
			||||
				let params = { | 
				
			||||
					Month: selectedTime, | 
				
			||||
					SupervisorId: item, | 
				
			||||
					PageNumber: 1, | 
				
			||||
					 | 
				
			||||
					PageSize: 9999 | 
				
			||||
				} | 
				
			||||
				this.$request.get("/api/PlanTasks", params, (data, res) => { | 
				
			||||
					console.log(res); | 
				
			||||
					this.list = res.items | 
				
			||||
					this.list["tasknub"]=0 | 
				
			||||
					for (let e=0;e<this.user.length;e++) { | 
				
			||||
						for (let i = 0; i < that.list.length; i++) { | 
				
			||||
							 | 
				
			||||
							if(that.list[i].checkTime){ | 
				
			||||
								let text = that.list[i].checkTime.substring(0, 10) | 
				
			||||
								that.list[i].checkTime = text | 
				
			||||
							} | 
				
			||||
							 | 
				
			||||
							if(that.list[i].inspectionResult=='待检查'){ | 
				
			||||
								this.user[e].tasknub+=1 | 
				
			||||
							} | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
					console.log(this.list); | 
				
			||||
					this.getServerData(); | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			getServerData() { | 
				
			||||
				//模拟从服务器获取数据时的延时 | 
				
			||||
				this.nub = 0 | 
				
			||||
				this.chartData = { | 
				
			||||
					series: [{ | 
				
			||||
						data: [{ | 
				
			||||
							name: "上级指派", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "自主任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "申领任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, ] | 
				
			||||
					}] | 
				
			||||
				} | 
				
			||||
				for (let i = 0; i < this.list.length; i++) { | 
				
			||||
 | 
				
			||||
					for (let e = 0; e < this.chartData.series[0].data.length; e++) { | 
				
			||||
 | 
				
			||||
						if (this.chartData.series[0].data[e].name == this.list[i].creationType) { | 
				
			||||
							this.chartData.series[0].data[e].value += 1 | 
				
			||||
							this.nub = this.nub + 1 | 
				
			||||
							this.opts.subtitle.name = JSON.stringify(this.nub) | 
				
			||||
						} | 
				
			||||
 | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
			}, | 
				
			||||
			dateYear(e){ | 
				
			||||
				console.log(e); | 
				
			||||
				this.dates.year = e.detail.value | 
				
			||||
				this.getOrganizations() | 
				
			||||
			}, | 
				
			||||
			dateMonth(e) { | 
				
			||||
				this.dates.month = e | 
				
			||||
				this.getOrganizations() | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style lang="scss"> | 
				
			||||
	.top { | 
				
			||||
		position: relative; | 
				
			||||
		top: 0; | 
				
			||||
		left: 0; | 
				
			||||
	} | 
				
			||||
	.taskadd{ | 
				
			||||
		width: 100vw; | 
				
			||||
		height: 100vh; | 
				
			||||
		position: fixed; | 
				
			||||
		left: 0; | 
				
			||||
		top: 0; | 
				
			||||
		background: rgba(49, 49, 51, 0.2); | 
				
			||||
		z-index: 10; | 
				
			||||
		.itembox{ | 
				
			||||
			// background: #fff; | 
				
			||||
			position: absolute; | 
				
			||||
			bottom: 0; | 
				
			||||
			left: 0; | 
				
			||||
			width: 100%; | 
				
			||||
			height: 400rpx; | 
				
			||||
			.item_top{ | 
				
			||||
				height: 60rpx; | 
				
			||||
				background: #F5F7FA; | 
				
			||||
				border-radius: 40rpx 40rpx 0 0; | 
				
			||||
				padding: 10rpx 40rpx 0 40rpx ; | 
				
			||||
				display: flex; | 
				
			||||
				view:nth-child(1){ | 
				
			||||
					flex: 1; | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
			.item_content{ | 
				
			||||
				background-color: #fff; | 
				
			||||
				height: 100%; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
	.pure_top { | 
				
			||||
		width: 100%; | 
				
			||||
		height: 220rpx; | 
				
			||||
		position: absolute; | 
				
			||||
		z-index: 0; | 
				
			||||
		overflow: hidden; | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.pure_top::after { | 
				
			||||
		content: ""; | 
				
			||||
		width: 100%; | 
				
			||||
		height: 220rpx; | 
				
			||||
		position: absolute; | 
				
			||||
		left: 0; | 
				
			||||
		top: 0; | 
				
			||||
		z-index: -1; | 
				
			||||
		border-radius: 0 0 100% 100%; | 
				
			||||
		background: linear-gradient(180deg, #57B5FF 0%, #616DFD 100%); | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.month_color { | 
				
			||||
		border-radius: 48rpx; | 
				
			||||
 | 
				
			||||
		background-color: #317AFF; | 
				
			||||
		color: #fff; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.calendar { | 
				
			||||
		z-index: 1; | 
				
			||||
		position: relative; | 
				
			||||
		left: 74rpx; | 
				
			||||
		top: 20rpx; | 
				
			||||
		width: 80%; | 
				
			||||
		height: 120rpx; | 
				
			||||
		border-radius: 10rpx; | 
				
			||||
		box-shadow: 0px 0px 20px 1px #C1D7FF; | 
				
			||||
		background: #fff; | 
				
			||||
 | 
				
			||||
		view { | 
				
			||||
			height: 60rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.date_year { | 
				
			||||
			box-sizing: border-box; | 
				
			||||
			display: flex; | 
				
			||||
			background-color: #fff; | 
				
			||||
			padding: 10rpx 0 0 10rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.monthbox { | 
				
			||||
			display: flex; | 
				
			||||
			justify-content: center; | 
				
			||||
			align-items: center; | 
				
			||||
			flex-direction: row; | 
				
			||||
 | 
				
			||||
			.month_class { | 
				
			||||
 | 
				
			||||
				width: 48rpx; | 
				
			||||
				height: 48rpx; | 
				
			||||
				text-align: center; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	button { | 
				
			||||
		width: 140rpx; | 
				
			||||
		height: 70rpx; | 
				
			||||
		color: #fff; | 
				
			||||
		border-radius: 34rpx; | 
				
			||||
		line-height: 70rpx; | 
				
			||||
		font-size: 30rpx; | 
				
			||||
		background-color: #327AFE; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.taskbox { | 
				
			||||
		width: 90%; | 
				
			||||
		margin: 40rpx auto; | 
				
			||||
		border-radius: 20rpx; | 
				
			||||
		background-color: #fff; | 
				
			||||
		padding: 20rpx; | 
				
			||||
		position: relative; | 
				
			||||
		left: 0; | 
				
			||||
		z-index: 10; | 
				
			||||
 | 
				
			||||
		.itembox { | 
				
			||||
 | 
				
			||||
			.top { | 
				
			||||
				margin-top: 30rpx; | 
				
			||||
				height: 60rpx; | 
				
			||||
				display: flex; | 
				
			||||
 | 
				
			||||
				.left { | 
				
			||||
					display: flex; | 
				
			||||
					flex: 1; | 
				
			||||
 | 
				
			||||
					img { | 
				
			||||
						width: 50rpx; | 
				
			||||
						height: 50rpx; | 
				
			||||
					} | 
				
			||||
 | 
				
			||||
					text { | 
				
			||||
						margin-right: 10rpx; | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.right { | 
				
			||||
					color: #909090; | 
				
			||||
					display: flex; | 
				
			||||
 | 
				
			||||
					.progress { | 
				
			||||
						margin-top: 6rpx; | 
				
			||||
						margin-right: 10rpx; | 
				
			||||
						height: 34rpx; | 
				
			||||
						flex: 1; | 
				
			||||
						background: #E4E7EC; | 
				
			||||
 | 
				
			||||
						.color { | 
				
			||||
 | 
				
			||||
							height: 100%; | 
				
			||||
							background-color: #14B389; | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.charts-box { | 
				
			||||
		// background-color: #5687fd; | 
				
			||||
		height: 250rpx; | 
				
			||||
		position: relative; | 
				
			||||
 | 
				
			||||
		img { | 
				
			||||
			width: 100%; | 
				
			||||
			height: 100%; | 
				
			||||
			position: absolute; | 
				
			||||
			top: 0; | 
				
			||||
			left: 0; | 
				
			||||
			z-index: -1; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		display: flex; | 
				
			||||
		justify-content: center; | 
				
			||||
		align-items: center; | 
				
			||||
 | 
				
			||||
		.tagbox { | 
				
			||||
			color: #FFFFFF; | 
				
			||||
			display: flex; | 
				
			||||
			justify-content: center; | 
				
			||||
			align-items: center; | 
				
			||||
			margin: 10rpx 0; | 
				
			||||
			font-size: 32rpx; | 
				
			||||
 | 
				
			||||
			.tag { | 
				
			||||
				width: 20rpx; | 
				
			||||
				height: 20rpx; | 
				
			||||
				border-radius: 20rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.logo { | 
				
			||||
		height: 200rpx; | 
				
			||||
		width: 200rpx; | 
				
			||||
		margin-top: 200rpx; | 
				
			||||
		margin-left: auto; | 
				
			||||
		margin-right: auto; | 
				
			||||
		margin-bottom: 50rpx; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.text-area { | 
				
			||||
		display: flex; | 
				
			||||
		justify-content: center; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.title { | 
				
			||||
		font-size: 36rpx; | 
				
			||||
		color: #8f8f94; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	 | 
				
			||||
 | 
				
			||||
	.listbox { | 
				
			||||
		width: 90%; | 
				
			||||
		margin: -10rpx auto 0 auto; | 
				
			||||
 | 
				
			||||
		.item { | 
				
			||||
			background-color: #fff; | 
				
			||||
			margin: 20rpx 0; | 
				
			||||
			padding: 20rpx; | 
				
			||||
 | 
				
			||||
			.namebox { | 
				
			||||
				display: flex; | 
				
			||||
				margin-bottom: 30rpx; | 
				
			||||
 | 
				
			||||
				.name { | 
				
			||||
					font-weight: 600; | 
				
			||||
					font-size: 36rpx; | 
				
			||||
					width: 70%; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.tag { | 
				
			||||
					text-align: center; | 
				
			||||
					width: 180rpx; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
					color: #FF6F51; | 
				
			||||
					border: 1px solid #FF6F51; | 
				
			||||
					background: rgba(255, 111, 81, 0.2400); | 
				
			||||
					border-radius: 40rpx 40rpx 40rpx 40rpx; | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.tag2 { | 
				
			||||
					text-align: center; | 
				
			||||
					width: 180rpx; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
					color: #14B488; | 
				
			||||
					border: 1px solid rgba(30, 232, 177, 0.8); | 
				
			||||
					background: rgba(30, 232, 177, 0.24); | 
				
			||||
					border-radius: 40rpx 40rpx 40rpx 40rpx; | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.typebox { | 
				
			||||
		display: flex; | 
				
			||||
		margin: 30rpx 0; | 
				
			||||
 | 
				
			||||
		.type { | 
				
			||||
			width: 50%; | 
				
			||||
			// border-left: #327AFE 6rpx solid; | 
				
			||||
			font-size: 32rpx; | 
				
			||||
			font-weight: 600; | 
				
			||||
			padding-left: 10rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.result { | 
				
			||||
			width: 50%; | 
				
			||||
			text-align: right; | 
				
			||||
			color: #FF6F51; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.staffbox { | 
				
			||||
		display: flex; | 
				
			||||
		margin: 6rpx 0; | 
				
			||||
		font-size: 30rpx; | 
				
			||||
 | 
				
			||||
		.staff { | 
				
			||||
			display: flex; | 
				
			||||
			color: rgba(16, 15, 25, 0.48); | 
				
			||||
 | 
				
			||||
			.zhu { | 
				
			||||
 | 
				
			||||
				color: #100F19; | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
			view { | 
				
			||||
				margin-right: 20rpx; | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
			img { | 
				
			||||
				width: 40rpx; | 
				
			||||
				height: 40rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.jiancha { | 
				
			||||
			color: #FFBA19; | 
				
			||||
			margin-right: 10rpx; | 
				
			||||
 | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.implement { | 
				
			||||
 | 
				
			||||
		margin-bottom: 10rpx; | 
				
			||||
 | 
				
			||||
		.button { | 
				
			||||
			width: 100%; | 
				
			||||
			height: 100%; | 
				
			||||
			padding-top: 20rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		// button { | 
				
			||||
		// 	float: right; | 
				
			||||
		// 	width: 80rpx; | 
				
			||||
		// 	height: 40rpx; | 
				
			||||
		// 	line-height: 40rpx; | 
				
			||||
		// 	margin-top: 20rpx; | 
				
			||||
		// } | 
				
			||||
	} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,668 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view class="page"> | 
				
			||||
		<view class="top"> | 
				
			||||
			<view class="pure_top"> | 
				
			||||
 | 
				
			||||
			</view> | 
				
			||||
			<view class="calendar"> | 
				
			||||
				<view class="date_year"> | 
				
			||||
					<picker mode="date" fields="year" @change="dateYear($event)"> | 
				
			||||
						<view>{{dates.year}}</view> | 
				
			||||
					</picker> | 
				
			||||
					<view>|</view> | 
				
			||||
					<view class=""> | 
				
			||||
						{{today.month}}.{{dates.day}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="monthbox"> | 
				
			||||
					<view :class="{month_color : item==dates.month}" class="month_class" v-for="(item,key) in months" | 
				
			||||
						:key="key" @tap="dateMonth(item)"> | 
				
			||||
						<text>{{item}}</text> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
		<view class="taskbox"> | 
				
			||||
			<view class="itembox" v-for="(item,key) in user" :key="key"> | 
				
			||||
				<view class="top"> | 
				
			||||
					<view class="left"> | 
				
			||||
						<img src="@/static/4412.png" alt=""> | 
				
			||||
						<view class=""> | 
				
			||||
							<text>{{item.name}}任务总数</text><text>{{nub}}</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="right"> | 
				
			||||
						<view style="margin-right: 10rpx;">完成率</view> | 
				
			||||
 | 
				
			||||
						<view class=""> | 
				
			||||
							<text v-if="item.tasknub">{{item.tasknub/nub*100}}%</text> | 
				
			||||
							<text v-else>0%</text> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view class="charts-box" style="display: flex;"> | 
				
			||||
					<img src="@/static/dadui/10.png" alt=""> | 
				
			||||
					<view style="width: 50%;"> | 
				
			||||
						<qiun-data-charts v-if="identity" type="ring" :opts="opts" :chartData="chartData" /> | 
				
			||||
					</view> | 
				
			||||
					<view | 
				
			||||
						style="width: 50%; display: flex;justify-content: center;align-items: center;flex-direction: column;"> | 
				
			||||
						<view class="tagbox" v-for="(item,key) in chartData.series[0].data" :key="key"> | 
				
			||||
							<view class="tag" :style="'background:'+opts.color[key]+';'"> | 
				
			||||
 | 
				
			||||
							</view> | 
				
			||||
							<text>{{item.name}}-------{{item.value}}个</text> | 
				
			||||
						</view> | 
				
			||||
 | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
			 | 
				
			||||
		</view> | 
				
			||||
		<view class="listbox"> | 
				
			||||
			<view class="item" v-for="(item,key) in list" :key="key"> | 
				
			||||
				<view class="typebox"> | 
				
			||||
					<view | 
				
			||||
						style="width: 12rpx; height: 34rpx; margin-top: 6rpx; background-color: #9D80FF; color: #9D80FF ;"> | 
				
			||||
						1 | 
				
			||||
					</view> | 
				
			||||
					<view class="type"> | 
				
			||||
						{{item.taskType}} | 
				
			||||
					</view> | 
				
			||||
 | 
				
			||||
				</view> | 
				
			||||
				<view class="namebox"> | 
				
			||||
					<view class="name"> | 
				
			||||
						{{item.company.companyName}} | 
				
			||||
					</view> | 
				
			||||
					<view style=" width: 30%; padding-left:20rpx;"> | 
				
			||||
						<view v-if="item.company.useNature=='重点单位'" class="tag" style=""> | 
				
			||||
							{{item.company.useNature}} | 
				
			||||
						</view> | 
				
			||||
						<view v-else class="tag2"> | 
				
			||||
							{{item.company.useNature}} | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
 | 
				
			||||
				<view class="staffbox"> | 
				
			||||
					<view class="staff" style="flex: 1;"> | 
				
			||||
						<view>主负责人:</view> | 
				
			||||
						<view class="zhu">{{item.organization.name}}</view> | 
				
			||||
 | 
				
			||||
					</view> | 
				
			||||
					<view class="jiancha"> | 
				
			||||
						待检查 | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
				<view style="display: flex;"> | 
				
			||||
					<view style="flex:1"> | 
				
			||||
						<view class="staffbox"> | 
				
			||||
							<view class="staff"> | 
				
			||||
								<view>协助人员:</view> | 
				
			||||
								<view v-for="(i,k) in item.supervisors" :key="k" | 
				
			||||
									style="display: flex;justify-content: center;align-items: center;"> | 
				
			||||
									<img v-if="i.posts && i.posts[0] == '主查人员'" src="../../static/447.png" alt=""> | 
				
			||||
									<img v-if="i.posts && i.posts[0] == '协查人员'" src="../../static/446.png" alt=""> | 
				
			||||
									{{i.name}} | 
				
			||||
								</view> | 
				
			||||
 | 
				
			||||
							</view> | 
				
			||||
							<!-- <view class="implement"> | 
				
			||||
								<button>执行</button> | 
				
			||||
							</view> --> | 
				
			||||
						</view> | 
				
			||||
						<view class="staffbox"> | 
				
			||||
							<view class="staff"> | 
				
			||||
								<view>检查时间:</view> | 
				
			||||
								<view>{{item.checkTime}}</view> | 
				
			||||
 | 
				
			||||
							</view> | 
				
			||||
							<!--  --> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
					<view class="implement"> | 
				
			||||
						<view class="button"> | 
				
			||||
							<button>执行</button> | 
				
			||||
						</view> | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
	</view> | 
				
			||||
	<!-- <view class="login-box" v-if="!identity"> | 
				
			||||
			<view class="login-text"> | 
				
			||||
				登录平台,在线处理业务 | 
				
			||||
			</view> | 
				
			||||
			<view class="login-button" > | 
				
			||||
				<button @tap="login()">登录</button> | 
				
			||||
			</view> | 
				
			||||
		</view> --> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				title: 'Hello', | 
				
			||||
				identity: 0, | 
				
			||||
				progressNub: 60, | 
				
			||||
				chartData: { | 
				
			||||
					series: [{ | 
				
			||||
						data: [{ | 
				
			||||
							name: "上级指派", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "自主任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "申领任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, ] | 
				
			||||
					}] | 
				
			||||
				}, | 
				
			||||
				dates: { | 
				
			||||
					year: 2022, | 
				
			||||
					month: 8, | 
				
			||||
					day: 0, | 
				
			||||
				}, | 
				
			||||
				today:{ | 
				
			||||
					month: 8, | 
				
			||||
				}, | 
				
			||||
				opts: { | 
				
			||||
					rotate: false, | 
				
			||||
					rotateLock: false, | 
				
			||||
					color: ["#FACE15", "#04F1C9", "#3990F1"], | 
				
			||||
 | 
				
			||||
					padding: [5, 5, 5, 5], | 
				
			||||
					dataLabel: false, | 
				
			||||
					legend: { | 
				
			||||
						show: false, | 
				
			||||
						fontColor: "#fff", | 
				
			||||
						position: "right", | 
				
			||||
						lineHeight: 20 | 
				
			||||
					}, | 
				
			||||
					title: { | 
				
			||||
						name: "任务总数", | 
				
			||||
						fontSize: 15, | 
				
			||||
						color: "#fff" | 
				
			||||
					}, | 
				
			||||
					subtitle: { | 
				
			||||
						name: "0", | 
				
			||||
						fontSize: 25, | 
				
			||||
						color: "#fff" | 
				
			||||
					}, | 
				
			||||
					 | 
				
			||||
					extra: { | 
				
			||||
						ring: { | 
				
			||||
							width: 50, | 
				
			||||
							height: 50, | 
				
			||||
							ringWidth: 10, | 
				
			||||
							activeOpacity: 0.5, | 
				
			||||
							activeRadius: 10, | 
				
			||||
							offsetAngle: 0, | 
				
			||||
							labelWidth: 15, | 
				
			||||
							border: false, | 
				
			||||
							customRadius: 60, | 
				
			||||
							borderWidth: 3, | 
				
			||||
							borderColor: "#FFFFFF", | 
				
			||||
							centerColor: "#57B5FF", | 
				
			||||
							linearType: "none" | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				}, | 
				
			||||
				user: [ | 
				
			||||
					{ | 
				
			||||
						tasknub:0 | 
				
			||||
					} | 
				
			||||
				], | 
				
			||||
				list: [], | 
				
			||||
				nub: 0, | 
				
			||||
				months: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onLoad() { | 
				
			||||
			let a = uni.getStorageSync("user"); | 
				
			||||
			let date = new Date() | 
				
			||||
			this.dates.month = date.getMonth() + 1 | 
				
			||||
			this.today.month=date.getMonth() + 1 | 
				
			||||
			this.dates.year=date.getFullYear() | 
				
			||||
			this.dates.day=date.getDate() | 
				
			||||
			this.getOrganizations() | 
				
			||||
			if (a) { | 
				
			||||
				this.identity = 1 | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onReady() { | 
				
			||||
 | 
				
			||||
			// this.getOrganizations() | 
				
			||||
		}, | 
				
			||||
		methods: { | 
				
			||||
			getOrganizations() { | 
				
			||||
				const that = this | 
				
			||||
				let selectedTime = this.dates.year + '-' + this.dates.month + '-' + '01' | 
				
			||||
				let userId = uni.getStorageSync("user").id | 
				
			||||
				let params = { | 
				
			||||
					ContainsChildren: true, | 
				
			||||
					pageSize: 9999 | 
				
			||||
				} | 
				
			||||
				this.$request.get("/api/Organizations", params, (data, res) => { | 
				
			||||
					console.log(res); | 
				
			||||
					this.user = res.items | 
				
			||||
					for (let i=0;i<this.user.length;i++) { | 
				
			||||
						this.user[i]["tasknub"]=0 | 
				
			||||
						this.user[i]["rate"]=0 | 
				
			||||
					} | 
				
			||||
					this.getTaskListOfStation(userId) | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			getTaskListOfStation(item) { | 
				
			||||
				console.log(item); | 
				
			||||
				const that = this | 
				
			||||
				let selectedTime = this.dates.year + '-' + this.dates.month + '-' + '01' | 
				
			||||
				let params = { | 
				
			||||
					Month: selectedTime, | 
				
			||||
					SupervisorId: item, | 
				
			||||
					PageNumber: 1, | 
				
			||||
					 | 
				
			||||
					PageSize: 9999 | 
				
			||||
				} | 
				
			||||
				this.$request.get("/api/PlanTasks", params, (data, res) => { | 
				
			||||
					console.log(res); | 
				
			||||
					this.list = res.items | 
				
			||||
					this.list["tasknub"]=0 | 
				
			||||
					for (let e=0;e<this.user.length;e++) { | 
				
			||||
						for (let i = 0; i < that.list.length; i++) { | 
				
			||||
							 | 
				
			||||
							if(that.list[i].checkTime){ | 
				
			||||
								let text = that.list[i].checkTime.substring(0, 10) | 
				
			||||
								that.list[i].checkTime = text | 
				
			||||
							} | 
				
			||||
							 | 
				
			||||
							if(that.list[i].inspectionResult=='待检查'){ | 
				
			||||
								this.user[e].tasknub+=1 | 
				
			||||
							} | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
					console.log(this.list); | 
				
			||||
					this.getServerData(); | 
				
			||||
				}) | 
				
			||||
			}, | 
				
			||||
			getServerData() { | 
				
			||||
				//模拟从服务器获取数据时的延时 | 
				
			||||
				this.nub = 0 | 
				
			||||
				this.chartData = { | 
				
			||||
					series: [{ | 
				
			||||
						data: [{ | 
				
			||||
							name: "上级指派", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "自主任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, { | 
				
			||||
							name: "申领任务", | 
				
			||||
							value: 0 | 
				
			||||
						}, ] | 
				
			||||
					}] | 
				
			||||
				} | 
				
			||||
				for (let i = 0; i < this.list.length; i++) { | 
				
			||||
 | 
				
			||||
					for (let e = 0; e < this.chartData.series[0].data.length; e++) { | 
				
			||||
 | 
				
			||||
						if (this.chartData.series[0].data[e].name == this.list[i].creationType) { | 
				
			||||
							this.chartData.series[0].data[e].value += 1 | 
				
			||||
							this.nub = this.nub + 1 | 
				
			||||
							this.opts.subtitle.name = JSON.stringify(this.nub) | 
				
			||||
						} | 
				
			||||
 | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
			}, | 
				
			||||
			dateYear(e){ | 
				
			||||
				console.log(e); | 
				
			||||
				this.dates.year = e.detail.value | 
				
			||||
				this.getOrganizations() | 
				
			||||
			}, | 
				
			||||
			dateMonth(e) { | 
				
			||||
				this.dates.month = e | 
				
			||||
				this.getOrganizations() | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style lang="scss"> | 
				
			||||
	.top { | 
				
			||||
		position: relative; | 
				
			||||
		top: 0; | 
				
			||||
		left: 0; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.pure_top { | 
				
			||||
		width: 100%; | 
				
			||||
		height: 220rpx; | 
				
			||||
		position: absolute; | 
				
			||||
		z-index: 0; | 
				
			||||
		overflow: hidden; | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.pure_top::after { | 
				
			||||
		content: ""; | 
				
			||||
		width: 100%; | 
				
			||||
		height: 220rpx; | 
				
			||||
		position: absolute; | 
				
			||||
		left: 0; | 
				
			||||
		top: 0; | 
				
			||||
		z-index: -1; | 
				
			||||
		border-radius: 0 0 100% 100%; | 
				
			||||
		background: linear-gradient(180deg, #57B5FF 0%, #616DFD 100%); | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.month_color { | 
				
			||||
		border-radius: 48rpx; | 
				
			||||
 | 
				
			||||
		background-color: #317AFF; | 
				
			||||
		color: #fff; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.calendar { | 
				
			||||
		z-index: 1; | 
				
			||||
		position: relative; | 
				
			||||
		left: 74rpx; | 
				
			||||
		top: 20rpx; | 
				
			||||
		width: 80%; | 
				
			||||
		height: 120rpx; | 
				
			||||
		border-radius: 10rpx; | 
				
			||||
		box-shadow: 0px 0px 20px 1px #C1D7FF; | 
				
			||||
		background: #fff; | 
				
			||||
 | 
				
			||||
		view { | 
				
			||||
			height: 60rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.date_year { | 
				
			||||
			box-sizing: border-box; | 
				
			||||
			display: flex; | 
				
			||||
			background-color: #fff; | 
				
			||||
			padding: 10rpx 0 0 10rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.monthbox { | 
				
			||||
			display: flex; | 
				
			||||
			justify-content: center; | 
				
			||||
			align-items: center; | 
				
			||||
			flex-direction: row; | 
				
			||||
 | 
				
			||||
			.month_class { | 
				
			||||
 | 
				
			||||
				width: 48rpx; | 
				
			||||
				height: 48rpx; | 
				
			||||
				text-align: center; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	button { | 
				
			||||
		width: 140rpx; | 
				
			||||
		height: 70rpx; | 
				
			||||
		color: #fff; | 
				
			||||
		border-radius: 34rpx; | 
				
			||||
		line-height: 70rpx; | 
				
			||||
		font-size: 30rpx; | 
				
			||||
		background-color: #327AFE; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.taskbox { | 
				
			||||
		width: 90%; | 
				
			||||
		margin: 40rpx auto; | 
				
			||||
		border-radius: 20rpx; | 
				
			||||
		background-color: #fff; | 
				
			||||
		padding: 20rpx; | 
				
			||||
		position: relative; | 
				
			||||
		left: 0; | 
				
			||||
		z-index: 10; | 
				
			||||
 | 
				
			||||
		.itembox { | 
				
			||||
 | 
				
			||||
			.top { | 
				
			||||
				margin-top: 30rpx; | 
				
			||||
				height: 60rpx; | 
				
			||||
				display: flex; | 
				
			||||
 | 
				
			||||
				.left { | 
				
			||||
					display: flex; | 
				
			||||
					flex: 1; | 
				
			||||
 | 
				
			||||
					img { | 
				
			||||
						width: 50rpx; | 
				
			||||
						height: 50rpx; | 
				
			||||
					} | 
				
			||||
 | 
				
			||||
					text { | 
				
			||||
						margin-right: 10rpx; | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.right { | 
				
			||||
					color: #909090; | 
				
			||||
					display: flex; | 
				
			||||
 | 
				
			||||
					.progress { | 
				
			||||
						margin-top: 6rpx; | 
				
			||||
						margin-right: 10rpx; | 
				
			||||
						height: 34rpx; | 
				
			||||
						flex: 1; | 
				
			||||
						background: #E4E7EC; | 
				
			||||
 | 
				
			||||
						.color { | 
				
			||||
 | 
				
			||||
							height: 100%; | 
				
			||||
							background-color: #14B389; | 
				
			||||
						} | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.charts-box { | 
				
			||||
		// background-color: #5687fd; | 
				
			||||
		height: 250rpx; | 
				
			||||
		position: relative; | 
				
			||||
 | 
				
			||||
		img { | 
				
			||||
			width: 100%; | 
				
			||||
			height: 100%; | 
				
			||||
			position: absolute; | 
				
			||||
			top: 0; | 
				
			||||
			left: 0; | 
				
			||||
			z-index: -1; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		display: flex; | 
				
			||||
		justify-content: center; | 
				
			||||
		align-items: center; | 
				
			||||
 | 
				
			||||
		.tagbox { | 
				
			||||
			color: #FFFFFF; | 
				
			||||
			display: flex; | 
				
			||||
			justify-content: center; | 
				
			||||
			align-items: center; | 
				
			||||
			margin: 10rpx 0; | 
				
			||||
			font-size: 32rpx; | 
				
			||||
 | 
				
			||||
			.tag { | 
				
			||||
				width: 20rpx; | 
				
			||||
				height: 20rpx; | 
				
			||||
				border-radius: 20rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.logo { | 
				
			||||
		height: 200rpx; | 
				
			||||
		width: 200rpx; | 
				
			||||
		margin-top: 200rpx; | 
				
			||||
		margin-left: auto; | 
				
			||||
		margin-right: auto; | 
				
			||||
		margin-bottom: 50rpx; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.text-area { | 
				
			||||
		display: flex; | 
				
			||||
		justify-content: center; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.title { | 
				
			||||
		font-size: 36rpx; | 
				
			||||
		color: #8f8f94; | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.login-box { | 
				
			||||
		display: flex; | 
				
			||||
		background: #8f8f94; | 
				
			||||
		width: 100%; | 
				
			||||
		height: 120rpx; | 
				
			||||
		position: fixed; | 
				
			||||
		bottom: 0; | 
				
			||||
		left: 0; | 
				
			||||
 | 
				
			||||
		.login-text { | 
				
			||||
			color: #fff; | 
				
			||||
			width: 60%; | 
				
			||||
			display: flex; | 
				
			||||
			font-size: 36rpx; | 
				
			||||
			padding-left: 40rpx; | 
				
			||||
			align-items: center; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.login-button { | 
				
			||||
			flex: 1; | 
				
			||||
			text-align: center; | 
				
			||||
			margin-top: 20rpx; | 
				
			||||
 | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.listbox { | 
				
			||||
		width: 90%; | 
				
			||||
		margin: -10rpx auto 0 auto; | 
				
			||||
 | 
				
			||||
		.item { | 
				
			||||
			background-color: #fff; | 
				
			||||
			margin: 20rpx 0; | 
				
			||||
			padding: 20rpx; | 
				
			||||
 | 
				
			||||
			.namebox { | 
				
			||||
				display: flex; | 
				
			||||
				margin-bottom: 30rpx; | 
				
			||||
 | 
				
			||||
				.name { | 
				
			||||
					font-weight: 600; | 
				
			||||
					font-size: 36rpx; | 
				
			||||
					width: 70%; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.tag { | 
				
			||||
					text-align: center; | 
				
			||||
					width: 180rpx; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
					color: #FF6F51; | 
				
			||||
					border: 1px solid #FF6F51; | 
				
			||||
					background: rgba(255, 111, 81, 0.2400); | 
				
			||||
					border-radius: 40rpx 40rpx 40rpx 40rpx; | 
				
			||||
				} | 
				
			||||
 | 
				
			||||
				.tag2 { | 
				
			||||
					text-align: center; | 
				
			||||
					width: 180rpx; | 
				
			||||
					height: 60rpx; | 
				
			||||
					line-height: 60rpx; | 
				
			||||
					color: #14B488; | 
				
			||||
					border: 1px solid rgba(30, 232, 177, 0.8); | 
				
			||||
					background: rgba(30, 232, 177, 0.24); | 
				
			||||
					border-radius: 40rpx 40rpx 40rpx 40rpx; | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.typebox { | 
				
			||||
		display: flex; | 
				
			||||
		margin: 30rpx 0; | 
				
			||||
 | 
				
			||||
		.type { | 
				
			||||
			width: 50%; | 
				
			||||
			// border-left: #327AFE 6rpx solid; | 
				
			||||
			font-size: 32rpx; | 
				
			||||
			font-weight: 600; | 
				
			||||
			padding-left: 10rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.result { | 
				
			||||
			width: 50%; | 
				
			||||
			text-align: right; | 
				
			||||
			color: #FF6F51; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.staffbox { | 
				
			||||
		display: flex; | 
				
			||||
		margin: 6rpx 0; | 
				
			||||
		font-size: 30rpx; | 
				
			||||
 | 
				
			||||
		.staff { | 
				
			||||
			display: flex; | 
				
			||||
			color: rgba(16, 15, 25, 0.48); | 
				
			||||
 | 
				
			||||
			.zhu { | 
				
			||||
 | 
				
			||||
				color: #100F19; | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
			view { | 
				
			||||
				margin-right: 20rpx; | 
				
			||||
			} | 
				
			||||
 | 
				
			||||
			img { | 
				
			||||
				width: 40rpx; | 
				
			||||
				height: 40rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		.jiancha { | 
				
			||||
			color: #FFBA19; | 
				
			||||
			margin-right: 10rpx; | 
				
			||||
 | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	.implement { | 
				
			||||
 | 
				
			||||
		margin-bottom: 10rpx; | 
				
			||||
 | 
				
			||||
		.button { | 
				
			||||
			width: 100%; | 
				
			||||
			height: 100%; | 
				
			||||
			padding-top: 20rpx; | 
				
			||||
		} | 
				
			||||
 | 
				
			||||
		// button { | 
				
			||||
		// 	float: right; | 
				
			||||
		// 	width: 80rpx; | 
				
			||||
		// 	height: 40rpx; | 
				
			||||
		// 	line-height: 40rpx; | 
				
			||||
		// 	margin-top: 20rpx; | 
				
			||||
		// } | 
				
			||||
	} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,94 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view class="page"> | 
				
			||||
		<view class="top"> | 
				
			||||
			<view class="box"> | 
				
			||||
				<view class="portrait"> | 
				
			||||
					<img src="../../static/logo.png" alt=""> | 
				
			||||
				</view> | 
				
			||||
				<view class="information"> | 
				
			||||
					<view class="name"> | 
				
			||||
						{{list.name}} | 
				
			||||
					</view> | 
				
			||||
					<view class="organization"> | 
				
			||||
						{{list.organizationName}} | 
				
			||||
					</view> | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
		<view class="items"> | 
				
			||||
			<view class="item"> | 
				
			||||
				<view class="text" @tap="changePassword()"> | 
				
			||||
					修改密码 | 
				
			||||
				</view> | 
				
			||||
			</view> | 
				
			||||
		</view> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				list:{} | 
				
			||||
			} | 
				
			||||
		}, | 
				
			||||
		onLoad() { | 
				
			||||
			this.list=uni.getStorageSync("user") | 
				
			||||
			console.log(this.list); | 
				
			||||
		}, | 
				
			||||
		methods: { | 
				
			||||
			changePassword(){ | 
				
			||||
				console.log(123); | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style lang="scss"> | 
				
			||||
	.page { | 
				
			||||
		 | 
				
			||||
		 | 
				
			||||
		.top{ | 
				
			||||
			background: linear-gradient(180deg, #317AFF 0%, #ACD1FF 100%); | 
				
			||||
			height: 300rpx; | 
				
			||||
			padding: 20rpx 40rpx; | 
				
			||||
			.box{ | 
				
			||||
				display: flex; | 
				
			||||
				.portrait{ | 
				
			||||
					width: 150rpx; | 
				
			||||
					height: 150rpx; | 
				
			||||
					border-radius: 150rpx; | 
				
			||||
					border: 6rpx solid #fff; | 
				
			||||
					img{ | 
				
			||||
						width: 100%; | 
				
			||||
						height: 100%; | 
				
			||||
						border-radius: 150rpx; | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
				.information{ | 
				
			||||
					color: #fff; | 
				
			||||
					margin: 30rpx 20rpx; | 
				
			||||
					font-size: 36rpx; | 
				
			||||
					.name{ | 
				
			||||
						margin-bottom: 20rpx; | 
				
			||||
					} | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
		.items{ | 
				
			||||
			width: 100%; | 
				
			||||
			margin-top: -40rpx; | 
				
			||||
			.item{ | 
				
			||||
				background-color: #fff; | 
				
			||||
				width: 90%; | 
				
			||||
				margin: 0 auto; | 
				
			||||
				height: 80rpx; | 
				
			||||
				line-height: 80rpx; | 
				
			||||
				border-radius: 10rpx; | 
				
			||||
				padding-left: 20rpx; | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	 | 
				
			||||
</style> | 
				
			||||
| 
		 After Width: | Height: | Size: 3.6 KiB  | 
| 
		 After Width: | Height: | Size: 3.0 KiB  | 
| 
		 After Width: | Height: | Size: 1.9 KiB  | 
| 
		 After Width: | Height: | Size: 78 KiB  | 
| 
		 After Width: | Height: | Size: 89 KiB  | 
| 
		 After Width: | Height: | Size: 89 KiB  | 
| 
		 After Width: | Height: | Size: 461 B  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 44 KiB  | 
| 
		 After Width: | Height: | Size: 24 KiB  | 
| 
		 After Width: | Height: | Size: 45 KiB  | 
| 
		 After Width: | Height: | Size: 40 KiB  | 
| 
		 After Width: | Height: | Size: 72 KiB  | 
| 
		 After Width: | Height: | Size: 3.9 KiB  | 
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 1.0 KiB  | 
| 
		 After Width: | Height: | Size: 2.1 KiB  | 
| 
		 After Width: | Height: | Size: 2.0 KiB  | 
| 
		 After Width: | Height: | Size: 1.6 KiB  | 
| 
		 After Width: | Height: | Size: 1.8 KiB  | 
@ -0,0 +1,32 @@
					 | 
				
			||||
import Vue from 'vue' | 
				
			||||
import Vuex from 'vuex' | 
				
			||||
Vue.use(Vuex) | 
				
			||||
 | 
				
			||||
const store = new Vuex.Store({ | 
				
			||||
	state: { | 
				
			||||
		token: null, | 
				
			||||
		path: '/pages/index/index', | 
				
			||||
		people: { | 
				
			||||
			id: null, | 
				
			||||
			name: null, | 
				
			||||
			tag: null | 
				
			||||
		}, | 
				
			||||
		taskType:'', | 
				
			||||
	}, | 
				
			||||
	mutations: { | 
				
			||||
		savePath (state, path) { | 
				
			||||
			state.path = path; | 
				
			||||
		}, | 
				
			||||
		saveToken (state, token) { | 
				
			||||
			state.token = token | 
				
			||||
		}, | 
				
			||||
		savePeople (state, people){ | 
				
			||||
			state.people = people | 
				
			||||
		}, | 
				
			||||
		saveTaskType (state, taskType){ | 
				
			||||
			state.taskType = taskType | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	actions: {}, | 
				
			||||
}) | 
				
			||||
export default store | 
				
			||||
@ -0,0 +1,76 @@
					 | 
				
			||||
/** | 
				
			||||
 * 这里是uni-app内置的常用样式变量 | 
				
			||||
 * | 
				
			||||
 * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | 
				
			||||
 * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | 
				
			||||
 * | 
				
			||||
 */ | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | 
				
			||||
 * | 
				
			||||
 * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | 
				
			||||
 */ | 
				
			||||
 | 
				
			||||
/* 颜色变量 */ | 
				
			||||
 | 
				
			||||
/* 行为相关颜色 */ | 
				
			||||
$uni-color-primary: #007aff; | 
				
			||||
$uni-color-success: #4cd964; | 
				
			||||
$uni-color-warning: #f0ad4e; | 
				
			||||
$uni-color-error: #dd524d; | 
				
			||||
 | 
				
			||||
/* 文字基本颜色 */ | 
				
			||||
$uni-text-color:#333;//基本色 | 
				
			||||
$uni-text-color-inverse:#fff;//反色 | 
				
			||||
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 | 
				
			||||
$uni-text-color-placeholder: #808080; | 
				
			||||
$uni-text-color-disable:#c0c0c0; | 
				
			||||
 | 
				
			||||
/* 背景颜色 */ | 
				
			||||
$uni-bg-color:#ffffff; | 
				
			||||
$uni-bg-color-grey:#f8f8f8; | 
				
			||||
$uni-bg-color-hover:#f1f1f1;//点击状态颜色 | 
				
			||||
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 | 
				
			||||
 | 
				
			||||
/* 边框颜色 */ | 
				
			||||
$uni-border-color:#c8c7cc; | 
				
			||||
 | 
				
			||||
/* 尺寸变量 */ | 
				
			||||
 | 
				
			||||
/* 文字尺寸 */ | 
				
			||||
$uni-font-size-sm:12px; | 
				
			||||
$uni-font-size-base:14px; | 
				
			||||
$uni-font-size-lg:16; | 
				
			||||
 | 
				
			||||
/* 图片尺寸 */ | 
				
			||||
$uni-img-size-sm:20px; | 
				
			||||
$uni-img-size-base:26px; | 
				
			||||
$uni-img-size-lg:40px; | 
				
			||||
 | 
				
			||||
/* Border Radius */ | 
				
			||||
$uni-border-radius-sm: 2px; | 
				
			||||
$uni-border-radius-base: 3px; | 
				
			||||
$uni-border-radius-lg: 6px; | 
				
			||||
$uni-border-radius-circle: 50%; | 
				
			||||
 | 
				
			||||
/* 水平间距 */ | 
				
			||||
$uni-spacing-row-sm: 5px; | 
				
			||||
$uni-spacing-row-base: 10px; | 
				
			||||
$uni-spacing-row-lg: 15px; | 
				
			||||
 | 
				
			||||
/* 垂直间距 */ | 
				
			||||
$uni-spacing-col-sm: 4px; | 
				
			||||
$uni-spacing-col-base: 8px; | 
				
			||||
$uni-spacing-col-lg: 12px; | 
				
			||||
 | 
				
			||||
/* 透明度 */ | 
				
			||||
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 | 
				
			||||
 | 
				
			||||
/* 文章场景相关 */ | 
				
			||||
$uni-color-title: #2C405A; // 文章标题颜色 | 
				
			||||
$uni-font-size-title:20px; | 
				
			||||
$uni-color-subtitle: #555555; // 二级标题颜色 | 
				
			||||
$uni-font-size-subtitle:26px; | 
				
			||||
$uni-color-paragraph: #3F536E; // 文章段落颜色 | 
				
			||||
$uni-font-size-paragraph:15px; | 
				
			||||
@ -0,0 +1,246 @@
					 | 
				
			||||
## 2.4.3-20220505(2022-05-05) | 
				
			||||
- 秋云图表组件 修复开启canvas2d后将series赋值为空数组显示加载图标时,再次赋值后画布闪动的bug | 
				
			||||
- 秋云图表组件 修复升级hbx最新版后ECharts的highlight方法报错的bug | 
				
			||||
- uCharts.js 雷达图新增参数opts.extra.radar.gridEval,数据点位网格抽希,默认1 | 
				
			||||
- uCharts.js 雷达图新增参数opts.extra.radar.axisLabel,	是否显示刻度点值,默认false | 
				
			||||
- uCharts.js 雷达图新增参数opts.extra.radar.axisLabelTofix,刻度点值小数位数,默认0 | 
				
			||||
- uCharts.js 雷达图新增参数opts.extra.radar.labelPointShow,是否显示末端刻度圆点,默认false | 
				
			||||
- uCharts.js 雷达图新增参数opts.extra.radar.labelPointRadius,刻度圆点的半径,默认3 | 
				
			||||
- uCharts.js 雷达图新增参数opts.extra.radar.labelPointColor,刻度圆点的颜色,默认#cccccc | 
				
			||||
- uCharts.js 雷达图新增参数opts.extra.radar.linearType,渐变色类型,可选值"none"关闭渐变,"custom"开启渐变 | 
				
			||||
- uCharts.js 雷达图新增参数opts.extra.radar.customColor,自定义渐变颜色,数组类型对应series的数组长度以匹配不同series颜色的不同配色方案,例如["#FA7D8D", "#EB88E2"] | 
				
			||||
- uCharts.js 雷达图优化支持series.textColor、series.textSize属性 | 
				
			||||
- uCharts.js 柱状图中温度计式图标,优化支持全圆角类型,修复边框有缝隙的bug,详见官网【演示】中的温度计图表 | 
				
			||||
- uCharts.js 柱状图新增参数opts.extra.column.activeWidth,当前点击柱状图的背景宽度,默认一个单元格单位 | 
				
			||||
- uCharts.js 混合图增加opts.extra.mix.area.gradient 区域图是否开启渐变色 | 
				
			||||
- uCharts.js 混合图增加opts.extra.mix.area.opacity 区域图透明度,默认0.2 | 
				
			||||
- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelText,自定义标签文字,避免formatter格式化的繁琐,详见官网【演示】中的饼图 | 
				
			||||
- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelShow,自定义是否显示某一个指示标签,避免因饼图类别太多导致标签重复或者居多导致图形变形的问题,详见官网【演示】中的饼图 | 
				
			||||
- uCharts.js 增加opts.series[i].legendText/opts.series[0].data[i].legendText(与series.name同级)自定义图例显示文字的方法 | 
				
			||||
- uCharts.js 优化X轴、Y轴formatter格式化方法增加形参,统一为fromatter:function(value,index,opts){} | 
				
			||||
- uCharts.js 修复横屏模式下无法使用双指缩放方法的bug | 
				
			||||
- uCharts.js 修复当只有一条数据或者多条数据值相等的时候Y轴自动计算的最大值错误的bug | 
				
			||||
- 【官网模板】增加外部自定义图例与图表交互的例子,[点击跳转](https://www.ucharts.cn/v2/#/layout/info?id=2) | 
				
			||||
 | 
				
			||||
## 注意:非unimodules 版本如因更新 hbx 至 3.4.7 导致报错如下,请到码云更新非 unimodules 版本组件,[点击跳转](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6) | 
				
			||||
> Error in callback for immediate watcher "uchartsOpts": "SyntaxError: Unexpected token u in JSON at position 0" | 
				
			||||
## 2.4.2-20220421(2022-04-21) | 
				
			||||
- 秋云图表组件 修复HBX升级3.4.6.20220420版本后echarts报错的问题 | 
				
			||||
## 2.4.2-20220420(2022-04-20) | 
				
			||||
## 重要!此版本uCharts新增了很多功能,修复了诸多已知问题 | 
				
			||||
- 秋云图表组件 新增onzoom开启双指缩放功能(仅uCharts),前提需要直角坐标系类图表类型,并且ontouch为true、opts.enableScroll为true,详见实例项目K线图 | 
				
			||||
- 秋云图表组件 新增optsWatch是否监听opts变化,关闭optsWatch后,动态修改opts不会触发图表重绘 | 
				
			||||
- 秋云图表组件 修复开启canvas2d功能后,动态更新数据后画布闪动的bug | 
				
			||||
- 秋云图表组件 去除directory属性,改为自动获取echarts.min.js路径(升级不受影响) | 
				
			||||
- 秋云图表组件 增加getImage()方法及@getImage事件,通过ref调用getImage()方法获,触发@getImage事件获取当前画布的base64图片文件流。 | 
				
			||||
- 秋云图表组件 支付宝、字节跳动、飞书、快手小程序支持开启canvas2d同层渲染设置。 | 
				
			||||
- 秋云图表组件 新增加【非uniCloud】版本组件,避免有些不需要uniCloud的使用组件发布至小程序需要提交隐私声明问题,请到码云[【非uniCloud版本】](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6),或npm[【非uniCloud版本】](https://www.npmjs.com/package/@qiun/uni-ucharts)下载使用。 | 
				
			||||
- uCharts.js 新增dobuleZoom双指缩放功能 | 
				
			||||
- uCharts.js 新增山峰图type="mount",数据格式为饼图类格式,不需要传入categories,具体详见新版官网在线演示 | 
				
			||||
- uCharts.js 修复折线图当数据中存在null时tooltip报错的bug | 
				
			||||
- uCharts.js 修复饼图类当画布比较小时自动计算的半径是负数报错的bug | 
				
			||||
- uCharts.js 统一各图表类型的series.formatter格式化方法的形参为(val, index, series, opts),方便格式化时有更多参数可用 | 
				
			||||
- uCharts.js 标记线功能增加labelText自定义显示文字,增加labelAlign标签显示位置(左侧或右侧),增加标签显示位置微调labelOffsetX、labelOffsetY | 
				
			||||
- uCharts.js 修复条状图当数值很小时开启圆角后样式错误的bug | 
				
			||||
- uCharts.js 修复X轴开启disabled后,X轴仍占用空间的bug | 
				
			||||
- uCharts.js 修复X轴开启滚动条并且开启rotateLabel后,X轴文字与滚动条重叠的bug | 
				
			||||
- uCharts.js 增加X轴rotateAngle文字旋转自定义角度,取值范围(-90至90) | 
				
			||||
- uCharts.js 修复地图文字标签层级显示不正确的bug | 
				
			||||
- uCharts.js 修复饼图、圆环图、玫瑰图当数据全部为0的时候不显示数据标签的bug | 
				
			||||
- uCharts.js 修复当opts.padding上边距为0时,Y轴顶部刻度标签位置不正确的bug | 
				
			||||
 | 
				
			||||
## 另外我们还开发了各大原生小程序组件,已发布至码云和npm | 
				
			||||
[https://gitee.com/uCharts/uCharts](https://gitee.com/uCharts/uCharts) | 
				
			||||
[https://www.npmjs.com/~qiun](https://www.npmjs.com/~qiun) | 
				
			||||
 | 
				
			||||
## 对于原生uCharts文档我们已上线新版官方网站,详情点击下面链接进入官网 | 
				
			||||
[https://www.uCharts.cn/v2/](https://www.ucharts.cn/v2/) | 
				
			||||
## 2.3.7-20220122(2022-01-22) | 
				
			||||
## 重要!使用vue3编译,请使用cli模式并升级至最新依赖,HbuilderX编译需要使用3.3.8以上版本 | 
				
			||||
- uCharts.js 修复uni-app平台组件模式使用vue3编译到小程序报错的bug。 | 
				
			||||
## 2.3.7-20220118(2022-01-18) | 
				
			||||
## 注意,使用vue3的前提是需要3.3.8.20220114-alpha版本的HBuilder! | 
				
			||||
## 2.3.67-20220118(2022-01-18) | 
				
			||||
- 秋云图表组件 组件初步支持vue3,全端编译会有些问题,具体详见下面修改: | 
				
			||||
1. 小程序端运行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new uni_modules_qiunDataCharts_js_sdk_uCharts_uCharts.uCharts,将.uCharts去掉。 | 
				
			||||
2. 小程序端发行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new e.uCharts,将.uCharts去掉,变为 new e。 | 
				
			||||
3. 如果觉得上述步骤比较麻烦,如果您的项目只编译到小程序端,可以修改u-charts.js最后一行导出方式,将 export default uCharts;变更为 export default { uCharts: uCharts }; 这样变更后,H5和App端的renderjs会有问题,请开发者自行选择。(此问题非组件问题,请等待DC官方修复Vue3的小程序端) | 
				
			||||
## 2.3.6-20220111(2022-01-11) | 
				
			||||
- 秋云图表组件 修改组件 props 属性中的 background 默认值为 rgba(0,0,0,0) | 
				
			||||
## 2.3.6-20211201(2021-12-01) | 
				
			||||
- uCharts.js 修复bar条状图开启圆角模式时,值很小时圆角渲染错误的bug | 
				
			||||
## 2.3.5-20211014(2021-10-15) | 
				
			||||
- uCharts.js 增加vue3的编译支持(仅原生uCharts,qiun-data-charts组件后续会支持,请关注更新) | 
				
			||||
## 2.3.4-20211012(2021-10-12) | 
				
			||||
- 秋云图表组件 修复 mac os x 系统 mouseover 事件丢失的 bug | 
				
			||||
## 2.3.3-20210706(2021-07-06) | 
				
			||||
- uCharts.js 增加雷达图开启数据点值(opts.dataLabel)的显示 | 
				
			||||
## 2.3.2-20210627(2021-06-27) | 
				
			||||
- 秋云图表组件 修复tooltipCustom个别情况下传值不正确报错TypeError: Cannot read property 'name' of undefined的bug | 
				
			||||
## 2.3.1-20210616(2021-06-16) | 
				
			||||
- uCharts.js 修复圆角柱状图使用4角圆角时,当数值过大时不正确的bug | 
				
			||||
## 2.3.0-20210612(2021-06-12) | 
				
			||||
- uCharts.js 【重要】uCharts增加nvue兼容,可在nvue项目中使用gcanvas组件渲染uCharts,[详见码云uCharts-demo-nvue](https://gitee.com/uCharts/uCharts) | 
				
			||||
- 秋云图表组件 增加tapLegend属性,是否开启图例点击交互事件 | 
				
			||||
- 秋云图表组件 getIndex事件中增加返回uCharts实例中的opts参数,以便在页面中调用参数 | 
				
			||||
- 示例项目 pages/other/other.vue增加app端自定义tooltip的方法,详见showOptsTooltip方法 | 
				
			||||
## 2.2.1-20210603(2021-06-03) | 
				
			||||
- uCharts.js 修复饼图、圆环图、玫瑰图,当起始角度不为0时,tooltip位置不准确的bug | 
				
			||||
- uCharts.js 增加温度计式柱状图开启顶部半圆形的配置 | 
				
			||||
## 2.2.0-20210529(2021-05-29) | 
				
			||||
- uCharts.js 增加条状图type="bar" | 
				
			||||
- 示例项目 pages/ucharts/ucharts.vue增加条状图的demo | 
				
			||||
## 2.1.7-20210524(2021-05-24) | 
				
			||||
- uCharts.js 修复大数据量模式下曲线图不平滑的bug | 
				
			||||
## 2.1.6-20210523(2021-05-23) | 
				
			||||
- 秋云图表组件 修复小程序端开启滚动条更新数据后滚动条位置不符合预期的bug | 
				
			||||
## 2.1.5-2021051702(2021-05-17) | 
				
			||||
- uCharts.js 修复自定义Y轴min和max值为0时不能正确显示的bug | 
				
			||||
## 2.1.5-20210517(2021-05-17) | 
				
			||||
- uCharts.js 修复Y轴自定义min和max时,未按指定的最大值最小值显示坐标轴刻度的bug | 
				
			||||
## 2.1.4-20210516(2021-05-16) | 
				
			||||
- 秋云图表组件 优化onWindowResize防抖方法 | 
				
			||||
- 秋云图表组件 修复APP端uCharts更新数据时,清空series显示loading图标后再显示图表,图表抖动的bug | 
				
			||||
- uCharts.js 修复开启canvas2d后,x轴、y轴、series自定义字体大小未按比例缩放的bug | 
				
			||||
- 示例项目 修复format-e.vue拼写错误导致app端使用uCharts渲染图表 | 
				
			||||
## 2.1.3-20210513(2021-05-13) | 
				
			||||
- 秋云图表组件 修改uCharts变更chartData数据为updateData方法,支持带滚动条的数据动态打点 | 
				
			||||
- 秋云图表组件 增加onWindowResize防抖方法 fix by ど誓言,如尘般染指流年づ  | 
				
			||||
- 秋云图表组件 H5或者APP变更chartData数据显示loading图表时,原数据闪现的bug | 
				
			||||
- 秋云图表组件 props增加errorReload禁用错误点击重新加载的方法 | 
				
			||||
- uCharts.js 增加tooltip显示category(x轴对应点位)标题的功能,opts.extra.tooltip.showCategory,默认为false | 
				
			||||
- uCharts.js 修复mix混合图只有柱状图时,tooltip的分割线显示位置不正确的bug | 
				
			||||
- uCharts.js 修复开启滚动条,图表在拖动中动态打点,滚动条位置不正确的bug | 
				
			||||
- uCharts.js 修复饼图类数据格式为echarts数据格式,series为空数组报错的bug | 
				
			||||
- 示例项目 修改uCharts.js更新到v2.1.2版本后,@getIndex方法获取索引值变更为e.currentIndex.index | 
				
			||||
- 示例项目 pages/updata/updata.vue增加滚动条拖动更新(数据动态打点)的demo | 
				
			||||
- 示例项目 pages/other/other.vue增加errorReload禁用错误点击重新加载的demo | 
				
			||||
## 2.1.2-20210509(2021-05-09) | 
				
			||||
秋云图表组件 修复APP端初始化时就传入chartData或lacaldata不显示图表的bug | 
				
			||||
## 2.1.1-20210509(2021-05-09) | 
				
			||||
- 秋云图表组件 变更ECharts的eopts配置在renderjs内执行,支持在config-echarts.js配置文件内写function配置。 | 
				
			||||
- 秋云图表组件 修复APP端报错Prop being mutated: "onmouse"错误的bug。 | 
				
			||||
- 秋云图表组件 修复APP端报错Error: Not Found:Page[6][-1,27] at view.umd.min.js:1的bug。 | 
				
			||||
## 2.1.0-20210507(2021-05-07) | 
				
			||||
- 秋云图表组件 修复初始化时就有数据或者数据更新的时候loading加载动画闪动的bug | 
				
			||||
- uCharts.js 修复x轴format方法categories为字符串类型时返回NaN的bug | 
				
			||||
- uCharts.js 修复series.textColor、legend.fontColor未执行全局默认颜色的bug | 
				
			||||
## 2.1.0-20210506(2021-05-06) | 
				
			||||
- 秋云图表组件 修复极个别情况下报错item.properties undefined的bug | 
				
			||||
- 秋云图表组件 修复极个别情况下关闭加载动画reshow不起作用,无法显示图表的bug | 
				
			||||
- 示例项目 pages/ucharts/ucharts.vue 增加时间轴折线图(type="tline")、时间轴区域图(type="tarea")、散点图(type="scatter")、气泡图demo(type="bubble")、倒三角形漏斗图(opts.extra.funnel.type="triangle")、金字塔形漏斗图(opts.extra.funnel.type="pyramid") | 
				
			||||
- 示例项目 pages/format-u/format-u.vue 增加X轴format格式化示例 | 
				
			||||
- uCharts.js 升级至v2.1.0版本 | 
				
			||||
- uCharts.js 修复 玫瑰图面积模式点击tooltip位置不正确的bug | 
				
			||||
- uCharts.js 修复 玫瑰图点击图例,只剩一个类别显示空白的bug | 
				
			||||
- uCharts.js 修复 饼图类图点击图例,其他图表tooltip位置某些情况下不准的bug | 
				
			||||
- uCharts.js 修复 x轴为矢量轴(时间轴)情况下,点击tooltip位置不正确的bug | 
				
			||||
- uCharts.js 修复 词云图获取点击索引偶尔不准的bug | 
				
			||||
- uCharts.js 增加 直角坐标系图表X轴format格式化方法(原生uCharts.js用法请使用formatter) | 
				
			||||
- uCharts.js 增加 漏斗图扩展配置,倒三角形(opts.extra.funnel.type="triangle"),金字塔形(opts.extra.funnel.type="pyramid") | 
				
			||||
- uCharts.js 增加 散点图(opts.type="scatter")、气泡图(opts.type="bubble") | 
				
			||||
- 后期计划 完善散点图、气泡图,增加markPoints标记点,增加横向条状图。 | 
				
			||||
## 2.0.0-20210502(2021-05-02) | 
				
			||||
- uCharts.js 修复词云图获取点击索引不正确的bug | 
				
			||||
## 2.0.0-20210501(2021-05-01) | 
				
			||||
- 秋云图表组件 修复QQ小程序、百度小程序在关闭动画效果情况下,v-for循环使用图表,显示不正确的bug | 
				
			||||
## 2.0.0-20210426(2021-04-26) | 
				
			||||
- 秋云图表组件 修复QQ小程序不支持canvas2d的bug | 
				
			||||
- 秋云图表组件 修复钉钉小程序某些情况点击坐标计算错误的bug | 
				
			||||
- uCharts.js 增加 extra.column.categoryGap 参数,柱状图类每个category点位(X轴点)柱子组之间的间距 | 
				
			||||
- uCharts.js 增加 yAxis.data[i].titleOffsetY 参数,标题纵向偏移距离,负数为向上偏移,正数向下偏移 | 
				
			||||
- uCharts.js 增加 yAxis.data[i].titleOffsetX 参数,标题横向偏移距离,负数为向左偏移,正数向右偏移 | 
				
			||||
- uCharts.js 增加 extra.gauge.labelOffset 参数,仪表盘标签文字径向便宜距离,默认13px | 
				
			||||
## 2.0.0-20210422-2(2021-04-22) | 
				
			||||
秋云图表组件 修复 formatterAssign 未判断 args[key] == null 的情况导致栈溢出的 bug | 
				
			||||
## 2.0.0-20210422(2021-04-22) | 
				
			||||
- 秋云图表组件 修复H5、APP、支付宝小程序、微信小程序canvas2d模式下横屏模式的bug | 
				
			||||
## 2.0.0-20210421(2021-04-21) | 
				
			||||
- uCharts.js 修复多行图例的情况下,图例在上方或者下方时,图例float为左侧或者右侧时,第二行及以后的图例对齐方式不正确的bug | 
				
			||||
## 2.0.0-20210420(2021-04-20) | 
				
			||||
- 秋云图表组件 修复微信小程序开启canvas2d模式后,windows版微信小程序不支持canvas2d模式的bug | 
				
			||||
- 秋云图表组件 修改非uni_modules版本为v2.0版本qiun-data-charts组件 | 
				
			||||
## 2.0.0-20210419(2021-04-19) | 
				
			||||
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 | 
				
			||||
## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; | 
				
			||||
## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 | 
				
			||||
## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 | 
				
			||||
## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) | 
				
			||||
## <font color=#FF0000> 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! </font>  | 
				
			||||
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) | 
				
			||||
## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)  | 
				
			||||
- uCharts.js 修复混合图中柱状图单独设置颜色不生效的bug | 
				
			||||
- uCharts.js 修复多Y轴单独设置fontSize时,开启canvas2d后,未对应放大字体的bug | 
				
			||||
## 2.0.0-20210418(2021-04-18) | 
				
			||||
- 秋云图表组件 增加directory配置,修复H5端history模式下如果发布到二级目录无法正确加载echarts.min.js的bug | 
				
			||||
## 2.0.0-20210416(2021-04-16) | 
				
			||||
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 | 
				
			||||
## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; | 
				
			||||
## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 | 
				
			||||
## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 | 
				
			||||
## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) | 
				
			||||
## <font color=#FF0000> 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! </font>  | 
				
			||||
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) | 
				
			||||
## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)  | 
				
			||||
- 秋云图表组件 修复APP端某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 | 
				
			||||
- 示例项目 修复APP端v-for循环某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 | 
				
			||||
- uCharts.js 修复非直角坐标系tooltip提示窗右侧超出未变换方向显示的bug | 
				
			||||
## 2.0.0-20210415(2021-04-15) | 
				
			||||
- 秋云图表组件 修复H5端发布到二级目录下echarts无法加载的bug | 
				
			||||
- 秋云图表组件 修复某些情况下echarts.off('finished')移除监听事件报错的bug | 
				
			||||
## 2.0.0-20210414(2021-04-14) | 
				
			||||
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 | 
				
			||||
## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; | 
				
			||||
## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 | 
				
			||||
## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 | 
				
			||||
## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) | 
				
			||||
## <font color=#FF0000> 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! </font>  | 
				
			||||
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) | 
				
			||||
## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)  | 
				
			||||
- 秋云图表组件 修复H5端在cli项目下ECharts引用地址错误的bug | 
				
			||||
- 示例项目 增加ECharts的formatter用法的示例(详见示例项目format-e.vue) | 
				
			||||
- uCharts.js 增加圆环图中心背景色的配置extra.ring.centerColor | 
				
			||||
- uCharts.js 修复微信小程序安卓端柱状图开启透明色后显示不正确的bug | 
				
			||||
## 2.0.0-20210413(2021-04-13) | 
				
			||||
- 秋云图表组件 修复百度小程序多个图表真机未能正确获取根元素dom尺寸的bug | 
				
			||||
- 秋云图表组件 修复百度小程序横屏模式方向不正确的bug | 
				
			||||
- 秋云图表组件 修改ontouch时,@getTouchStart@getTouchMove@getTouchEnd的触发条件 | 
				
			||||
- uCharts.js 修复饼图类数据格式series属性不生效的bug | 
				
			||||
- uCharts.js 增加时序区域图 详见示例项目中ucharts.vue | 
				
			||||
## 2.0.0-20210412-2(2021-04-12) | 
				
			||||
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 | 
				
			||||
## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX。如仍不好用,请重启电脑,此问题已于DCloud官方确认,HBuilderX下个版本会修复。 | 
				
			||||
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) | 
				
			||||
## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)  | 
				
			||||
- 秋云图表组件 修复uCharts在APP端横屏模式下不能正确渲染的bug | 
				
			||||
- 示例项目 增加ECharts柱状图渐变色、圆角柱状图、横向柱状图(条状图)的示例 | 
				
			||||
## 2.0.0-20210412(2021-04-12) | 
				
			||||
- 秋云图表组件 修复created中判断echarts导致APP端无法识别,改回mounted中判断echarts初始化 | 
				
			||||
- uCharts.js 修复2d模式下series.textOffset未乘像素比的bug | 
				
			||||
## 2.0.0-20210411(2021-04-11) | 
				
			||||
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 | 
				
			||||
## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,并清空小程序开发者工具缓存。 | 
				
			||||
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) | 
				
			||||
## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)  | 
				
			||||
- uCharts.js 折线图区域图增加connectNulls断点续连的功能,详见示例项目中ucharts.vue | 
				
			||||
- 秋云图表组件 变更初始化方法为created,变更type2d默认值为true,优化2d模式下组件初始化后dom获取不到的bug | 
				
			||||
- 秋云图表组件 修复左右布局时,右侧图表点击坐标错误的bug,修复tooltip柱状图自定义颜色显示object的bug | 
				
			||||
## 2.0.0-20210410(2021-04-10) | 
				
			||||
- 修复左右布局时,右侧图表点击坐标错误的bug,修复柱状图自定义颜色tooltip显示object的bug | 
				
			||||
- 增加标记线及柱状图自定义颜色的demo | 
				
			||||
## 2.0.0-20210409(2021-04-08) | 
				
			||||
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) | 
				
			||||
## 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)  | 
				
			||||
- uCharts.js 修复钉钉小程序百度小程序measureText不准确的bug,修复2d模式下饼图类activeRadius为按比例放大的bug | 
				
			||||
- 修复组件在支付宝小程序端点击位置不准确的bug | 
				
			||||
## 2.0.0-20210408(2021-04-07) | 
				
			||||
- 修复组件在支付宝小程序端不能显示的bug(目前支付宝小程不能点击交互,后续修复) | 
				
			||||
- uCharts.js 修复高分屏下柱状图类,圆弧进度条 自定义宽度不能按比例放大的bug | 
				
			||||
## 2.0.0-20210407(2021-04-06) | 
				
			||||
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) | 
				
			||||
## 增加 通过tofix和unit快速格式化y轴的demo add by `howcode` | 
				
			||||
## 增加 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)  | 
				
			||||
## 2.0.0-20210406(2021-04-05) | 
				
			||||
# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 | 
				
			||||
## 2.0.0(2021-04-05) | 
				
			||||
# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 | 
				
			||||
@ -0,0 +1,162 @@
					 | 
				
			||||
<template> | 
				
			||||
	 <view class="container loading1"> | 
				
			||||
		<view class="shape shape1"></view> | 
				
			||||
		<view class="shape shape2"></view> | 
				
			||||
		<view class="shape shape3"></view> | 
				
			||||
		<view class="shape shape4"></view> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		name: 'loading1', | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				 | 
				
			||||
			}; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style scoped="true"> | 
				
			||||
.container { | 
				
			||||
  width: 30px; | 
				
			||||
  height: 30px; | 
				
			||||
  position: relative; | 
				
			||||
} | 
				
			||||
.container.loading1 { | 
				
			||||
  -webkit-transform: rotate(45deg); | 
				
			||||
          transform: rotate(45deg); | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.container .shape { | 
				
			||||
  position: absolute; | 
				
			||||
  width: 10px; | 
				
			||||
  height: 10px; | 
				
			||||
  border-radius: 1px; | 
				
			||||
} | 
				
			||||
.container .shape.shape1 { | 
				
			||||
  left: 0; | 
				
			||||
  background-color: #1890FF; | 
				
			||||
} | 
				
			||||
.container .shape.shape2 { | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #91CB74; | 
				
			||||
} | 
				
			||||
.container .shape.shape3 { | 
				
			||||
  bottom: 0; | 
				
			||||
  background-color: #FAC858; | 
				
			||||
} | 
				
			||||
.container .shape.shape4 { | 
				
			||||
  bottom: 0; | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #EE6666; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.loading1 .shape1 { | 
				
			||||
  -webkit-animation: animation1shape1 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation1shape1 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation1shape1 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(16px, 16px); | 
				
			||||
            transform: translate(16px, 16px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation1shape1 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(16px, 16px); | 
				
			||||
            transform: translate(16px, 16px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading1 .shape2 { | 
				
			||||
  -webkit-animation: animation1shape2 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation1shape2 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation1shape2 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-16px, 16px); | 
				
			||||
            transform: translate(-16px, 16px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation1shape2 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-16px, 16px); | 
				
			||||
            transform: translate(-16px, 16px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading1 .shape3 { | 
				
			||||
  -webkit-animation: animation1shape3 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation1shape3 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation1shape3 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(16px, -16px); | 
				
			||||
            transform: translate(16px, -16px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation1shape3 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(16px, -16px); | 
				
			||||
            transform: translate(16px, -16px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading1 .shape4 { | 
				
			||||
  -webkit-animation: animation1shape4 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation1shape4 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation1shape4 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-16px, -16px); | 
				
			||||
            transform: translate(-16px, -16px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation1shape4 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-16px, -16px); | 
				
			||||
            transform: translate(-16px, -16px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,170 @@
					 | 
				
			||||
<template> | 
				
			||||
	 <view class="container loading2"> | 
				
			||||
		<view class="shape shape1"></view> | 
				
			||||
		<view class="shape shape2"></view> | 
				
			||||
		<view class="shape shape3"></view> | 
				
			||||
		<view class="shape shape4"></view> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		name: 'loading2', | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				 | 
				
			||||
			}; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style scoped="true"> | 
				
			||||
.container { | 
				
			||||
  width: 30px; | 
				
			||||
  height: 30px; | 
				
			||||
  position: relative; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.container.loading2 { | 
				
			||||
  -webkit-transform: rotate(10deg); | 
				
			||||
          transform: rotate(10deg); | 
				
			||||
} | 
				
			||||
.container.loading2 .shape { | 
				
			||||
  border-radius: 5px; | 
				
			||||
} | 
				
			||||
.container.loading2{ | 
				
			||||
  -webkit-animation: rotation 1s infinite; | 
				
			||||
          animation: rotation 1s infinite; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.container .shape { | 
				
			||||
  position: absolute; | 
				
			||||
  width: 10px; | 
				
			||||
  height: 10px; | 
				
			||||
  border-radius: 1px; | 
				
			||||
} | 
				
			||||
.container .shape.shape1 { | 
				
			||||
  left: 0; | 
				
			||||
  background-color: #1890FF; | 
				
			||||
} | 
				
			||||
.container .shape.shape2 { | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #91CB74; | 
				
			||||
} | 
				
			||||
.container .shape.shape3 { | 
				
			||||
  bottom: 0; | 
				
			||||
  background-color: #FAC858; | 
				
			||||
} | 
				
			||||
.container .shape.shape4 { | 
				
			||||
  bottom: 0; | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #EE6666; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
.loading2 .shape1 { | 
				
			||||
  -webkit-animation: animation2shape1 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation2shape1 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation2shape1 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(20px, 20px); | 
				
			||||
            transform: translate(20px, 20px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation2shape1 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(20px, 20px); | 
				
			||||
            transform: translate(20px, 20px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading2 .shape2 { | 
				
			||||
  -webkit-animation: animation2shape2 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation2shape2 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation2shape2 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-20px, 20px); | 
				
			||||
            transform: translate(-20px, 20px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation2shape2 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-20px, 20px); | 
				
			||||
            transform: translate(-20px, 20px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading2 .shape3 { | 
				
			||||
  -webkit-animation: animation2shape3 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation2shape3 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation2shape3 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(20px, -20px); | 
				
			||||
            transform: translate(20px, -20px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation2shape3 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(20px, -20px); | 
				
			||||
            transform: translate(20px, -20px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading2 .shape4 { | 
				
			||||
  -webkit-animation: animation2shape4 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation2shape4 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation2shape4 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-20px, -20px); | 
				
			||||
            transform: translate(-20px, -20px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation2shape4 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-20px, -20px); | 
				
			||||
            transform: translate(-20px, -20px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,173 @@
					 | 
				
			||||
<template> | 
				
			||||
	 <view class="container loading3"> | 
				
			||||
		<view class="shape shape1"></view> | 
				
			||||
		<view class="shape shape2"></view> | 
				
			||||
		<view class="shape shape3"></view> | 
				
			||||
		<view class="shape shape4"></view> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		name: 'loading3', | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				 | 
				
			||||
			}; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style scoped="true"> | 
				
			||||
.container { | 
				
			||||
  width: 30px; | 
				
			||||
  height: 30px; | 
				
			||||
  position: relative; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
 .container.loading3 { | 
				
			||||
  -webkit-animation: rotation 1s infinite; | 
				
			||||
          animation: rotation 1s infinite; | 
				
			||||
} | 
				
			||||
.container.loading3 .shape1 { | 
				
			||||
  border-top-left-radius: 10px; | 
				
			||||
} | 
				
			||||
.container.loading3 .shape2 { | 
				
			||||
  border-top-right-radius: 10px; | 
				
			||||
} | 
				
			||||
.container.loading3 .shape3 { | 
				
			||||
  border-bottom-left-radius: 10px; | 
				
			||||
} | 
				
			||||
.container.loading3 .shape4 { | 
				
			||||
  border-bottom-right-radius: 10px; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.container .shape { | 
				
			||||
  position: absolute; | 
				
			||||
  width: 10px; | 
				
			||||
  height: 10px; | 
				
			||||
  border-radius: 1px; | 
				
			||||
} | 
				
			||||
.container .shape.shape1 { | 
				
			||||
  left: 0; | 
				
			||||
  background-color: #1890FF; | 
				
			||||
} | 
				
			||||
.container .shape.shape2 { | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #91CB74; | 
				
			||||
} | 
				
			||||
.container .shape.shape3 { | 
				
			||||
  bottom: 0; | 
				
			||||
  background-color: #FAC858; | 
				
			||||
} | 
				
			||||
.container .shape.shape4 { | 
				
			||||
  bottom: 0; | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #EE6666; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.loading3 .shape1 { | 
				
			||||
  -webkit-animation: animation3shape1 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation3shape1 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation3shape1 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(5px, 5px); | 
				
			||||
            transform: translate(5px, 5px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation3shape1 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(5px, 5px); | 
				
			||||
            transform: translate(5px, 5px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading3 .shape2 { | 
				
			||||
  -webkit-animation: animation3shape2 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation3shape2 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation3shape2 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-5px, 5px); | 
				
			||||
            transform: translate(-5px, 5px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation3shape2 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-5px, 5px); | 
				
			||||
            transform: translate(-5px, 5px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading3 .shape3 { | 
				
			||||
  -webkit-animation: animation3shape3 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation3shape3 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation3shape3 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(5px, -5px); | 
				
			||||
            transform: translate(5px, -5px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation3shape3 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(5px, -5px); | 
				
			||||
            transform: translate(5px, -5px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading3 .shape4 { | 
				
			||||
  -webkit-animation: animation3shape4 0.5s ease 0s infinite alternate; | 
				
			||||
          animation: animation3shape4 0.5s ease 0s infinite alternate; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation3shape4 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-5px, -5px); | 
				
			||||
            transform: translate(-5px, -5px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation3shape4 { | 
				
			||||
  from { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  to { | 
				
			||||
    -webkit-transform: translate(-5px, -5px); | 
				
			||||
            transform: translate(-5px, -5px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,222 @@
					 | 
				
			||||
<template> | 
				
			||||
	 <view class="container loading5"> | 
				
			||||
		<view class="shape shape1"></view> | 
				
			||||
		<view class="shape shape2"></view> | 
				
			||||
		<view class="shape shape3"></view> | 
				
			||||
		<view class="shape shape4"></view> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		name: 'loading5', | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				 | 
				
			||||
			}; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style scoped="true"> | 
				
			||||
.container { | 
				
			||||
  width: 30px; | 
				
			||||
  height: 30px; | 
				
			||||
  position: relative; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.container.loading5 .shape { | 
				
			||||
  width: 15px; | 
				
			||||
  height: 15px; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.container .shape { | 
				
			||||
  position: absolute; | 
				
			||||
  width: 10px; | 
				
			||||
  height: 10px; | 
				
			||||
  border-radius: 1px; | 
				
			||||
} | 
				
			||||
.container .shape.shape1 { | 
				
			||||
  left: 0; | 
				
			||||
  background-color: #1890FF; | 
				
			||||
} | 
				
			||||
.container .shape.shape2 { | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #91CB74; | 
				
			||||
} | 
				
			||||
.container .shape.shape3 { | 
				
			||||
  bottom: 0; | 
				
			||||
  background-color: #FAC858; | 
				
			||||
} | 
				
			||||
.container .shape.shape4 { | 
				
			||||
  bottom: 0; | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #EE6666; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.loading5 .shape1 { | 
				
			||||
  animation: animation5shape1 2s ease 0s infinite reverse; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation5shape1 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(0, 15px); | 
				
			||||
            transform: translate(0, 15px); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(15px, 15px); | 
				
			||||
            transform: translate(15px, 15px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(15px, 0); | 
				
			||||
            transform: translate(15px, 0); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation5shape1 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(0, 15px); | 
				
			||||
            transform: translate(0, 15px); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(15px, 15px); | 
				
			||||
            transform: translate(15px, 15px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(15px, 0); | 
				
			||||
            transform: translate(15px, 0); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading5 .shape2 { | 
				
			||||
  animation: animation5shape2 2s ease 0s infinite reverse; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation5shape2 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(-15px, 0); | 
				
			||||
            transform: translate(-15px, 0); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(-15px, 15px); | 
				
			||||
            transform: translate(-15px, 15px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(0, 15px); | 
				
			||||
            transform: translate(0, 15px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation5shape2 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(-15px, 0); | 
				
			||||
            transform: translate(-15px, 0); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(-15px, 15px); | 
				
			||||
            transform: translate(-15px, 15px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(0, 15px); | 
				
			||||
            transform: translate(0, 15px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading5 .shape3 { | 
				
			||||
  animation: animation5shape3 2s ease 0s infinite reverse; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation5shape3 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(15px, 0); | 
				
			||||
            transform: translate(15px, 0); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(15px, -15px); | 
				
			||||
            transform: translate(15px, -15px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(0, -15px); | 
				
			||||
            transform: translate(0, -15px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation5shape3 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(15px, 0); | 
				
			||||
            transform: translate(15px, 0); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(15px, -15px); | 
				
			||||
            transform: translate(15px, -15px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(0, -15px); | 
				
			||||
            transform: translate(0, -15px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading5 .shape4 { | 
				
			||||
  animation: animation5shape4 2s ease 0s infinite reverse; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation5shape4 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(0, -15px); | 
				
			||||
            transform: translate(0, -15px); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(-15px, -15px); | 
				
			||||
            transform: translate(-15px, -15px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(-15px, 0); | 
				
			||||
            transform: translate(-15px, 0); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation5shape4 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(0, -15px); | 
				
			||||
            transform: translate(0, -15px); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(-15px, -15px); | 
				
			||||
            transform: translate(-15px, -15px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(-15px, 0); | 
				
			||||
            transform: translate(-15px, 0); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,229 @@
					 | 
				
			||||
<template> | 
				
			||||
	 <view class="container loading6"> | 
				
			||||
		<view class="shape shape1"></view> | 
				
			||||
		<view class="shape shape2"></view> | 
				
			||||
		<view class="shape shape3"></view> | 
				
			||||
		<view class="shape shape4"></view> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	export default { | 
				
			||||
		name: 'loading6', | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				 | 
				
			||||
			}; | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
<style scoped="true"> | 
				
			||||
.container { | 
				
			||||
  width: 30px; | 
				
			||||
  height: 30px; | 
				
			||||
  position: relative; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
.container.loading6 { | 
				
			||||
  -webkit-animation: rotation 1s infinite; | 
				
			||||
          animation: rotation 1s infinite; | 
				
			||||
} | 
				
			||||
.container.loading6 .shape { | 
				
			||||
  width: 12px; | 
				
			||||
  height: 12px; | 
				
			||||
  border-radius: 2px; | 
				
			||||
} | 
				
			||||
.container .shape { | 
				
			||||
  position: absolute; | 
				
			||||
  width: 10px; | 
				
			||||
  height: 10px; | 
				
			||||
  border-radius: 1px; | 
				
			||||
} | 
				
			||||
.container .shape.shape1 { | 
				
			||||
  left: 0; | 
				
			||||
  background-color: #1890FF; | 
				
			||||
} | 
				
			||||
.container .shape.shape2 { | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #91CB74; | 
				
			||||
} | 
				
			||||
.container .shape.shape3 { | 
				
			||||
  bottom: 0; | 
				
			||||
  background-color: #FAC858; | 
				
			||||
} | 
				
			||||
.container .shape.shape4 { | 
				
			||||
  bottom: 0; | 
				
			||||
  right: 0; | 
				
			||||
  background-color: #EE6666; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
.loading6 .shape1 { | 
				
			||||
  -webkit-animation: animation6shape1 2s linear 0s infinite normal; | 
				
			||||
          animation: animation6shape1 2s linear 0s infinite normal; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation6shape1 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(0, 18px); | 
				
			||||
            transform: translate(0, 18px); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(18px, 18px); | 
				
			||||
            transform: translate(18px, 18px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(18px, 0); | 
				
			||||
            transform: translate(18px, 0); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation6shape1 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(0, 18px); | 
				
			||||
            transform: translate(0, 18px); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(18px, 18px); | 
				
			||||
            transform: translate(18px, 18px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(18px, 0); | 
				
			||||
            transform: translate(18px, 0); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading6 .shape2 { | 
				
			||||
  -webkit-animation: animation6shape2 2s linear 0s infinite normal; | 
				
			||||
          animation: animation6shape2 2s linear 0s infinite normal; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation6shape2 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(-18px, 0); | 
				
			||||
            transform: translate(-18px, 0); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(-18px, 18px); | 
				
			||||
            transform: translate(-18px, 18px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(0, 18px); | 
				
			||||
            transform: translate(0, 18px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation6shape2 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(-18px, 0); | 
				
			||||
            transform: translate(-18px, 0); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(-18px, 18px); | 
				
			||||
            transform: translate(-18px, 18px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(0, 18px); | 
				
			||||
            transform: translate(0, 18px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading6 .shape3 { | 
				
			||||
  -webkit-animation: animation6shape3 2s linear 0s infinite normal; | 
				
			||||
          animation: animation6shape3 2s linear 0s infinite normal; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation6shape3 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(18px, 0); | 
				
			||||
            transform: translate(18px, 0); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(18px, -18px); | 
				
			||||
            transform: translate(18px, -18px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(0, -18px); | 
				
			||||
            transform: translate(0, -18px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation6shape3 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(18px, 0); | 
				
			||||
            transform: translate(18px, 0); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(18px, -18px); | 
				
			||||
            transform: translate(18px, -18px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(0, -18px); | 
				
			||||
            transform: translate(0, -18px); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
.loading6 .shape4 { | 
				
			||||
  -webkit-animation: animation6shape4 2s linear 0s infinite normal; | 
				
			||||
          animation: animation6shape4 2s linear 0s infinite normal; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@-webkit-keyframes animation6shape4 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(0, -18px); | 
				
			||||
            transform: translate(0, -18px); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(-18px, -18px); | 
				
			||||
            transform: translate(-18px, -18px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(-18px, 0); | 
				
			||||
            transform: translate(-18px, 0); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
@keyframes animation6shape4 { | 
				
			||||
  0% { | 
				
			||||
    -webkit-transform: translate(0, 0); | 
				
			||||
            transform: translate(0, 0); | 
				
			||||
  } | 
				
			||||
  25% { | 
				
			||||
    -webkit-transform: translate(0, -18px); | 
				
			||||
            transform: translate(0, -18px); | 
				
			||||
  } | 
				
			||||
  50% { | 
				
			||||
    -webkit-transform: translate(-18px, -18px); | 
				
			||||
            transform: translate(-18px, -18px); | 
				
			||||
  } | 
				
			||||
  75% { | 
				
			||||
    -webkit-transform: translate(-18px, 0); | 
				
			||||
            transform: translate(-18px, 0); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,36 @@
					 | 
				
			||||
<template> | 
				
			||||
	<view> | 
				
			||||
	 <Loading1 v-if="loadingType==1"/> | 
				
			||||
	 <Loading2 v-if="loadingType==2"/> | 
				
			||||
	 <Loading3 v-if="loadingType==3"/> | 
				
			||||
	 <Loading4 v-if="loadingType==4"/> | 
				
			||||
	 <Loading5 v-if="loadingType==5"/> | 
				
			||||
	</view> | 
				
			||||
</template> | 
				
			||||
 | 
				
			||||
<script> | 
				
			||||
	import Loading1 from "./loading1.vue"; | 
				
			||||
	import Loading2 from "./loading2.vue"; | 
				
			||||
	import Loading3 from "./loading3.vue"; | 
				
			||||
	import Loading4 from "./loading4.vue"; | 
				
			||||
	import Loading5 from "./loading5.vue"; | 
				
			||||
	export default { | 
				
			||||
		components:{Loading1,Loading2,Loading3,Loading4,Loading5}, | 
				
			||||
		name: 'qiun-loading', | 
				
			||||
		props: { | 
				
			||||
			loadingType: { | 
				
			||||
				type: Number, | 
				
			||||
				default: 2 | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
		data() { | 
				
			||||
			return { | 
				
			||||
				 | 
				
			||||
			}; | 
				
			||||
		}, | 
				
			||||
	} | 
				
			||||
</script> | 
				
			||||
 | 
				
			||||
<style> | 
				
			||||
 | 
				
			||||
</style> | 
				
			||||
@ -0,0 +1,422 @@
					 | 
				
			||||
/* | 
				
			||||
 * uCharts® | 
				
			||||
 * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 | 
				
			||||
 * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.
 | 
				
			||||
 * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 | 
				
			||||
 * 复制使用请保留本段注释,感谢支持开源! | 
				
			||||
 * 
 | 
				
			||||
 * uCharts®官方网站 | 
				
			||||
 * https://www.uCharts.cn
 | 
				
			||||
 * 
 | 
				
			||||
 * 开源地址: | 
				
			||||
 * https://gitee.com/uCharts/uCharts
 | 
				
			||||
 * 
 | 
				
			||||
 * uni-app插件市场地址: | 
				
			||||
 * http://ext.dcloud.net.cn/plugin?id=271
 | 
				
			||||
 * 
 | 
				
			||||
 */ | 
				
			||||
 | 
				
			||||
// 通用配置项
 | 
				
			||||
 | 
				
			||||
// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性
 | 
				
			||||
const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; | 
				
			||||
 | 
				
			||||
const cfe = { | 
				
			||||
  //demotype为自定义图表类型
 | 
				
			||||
	"type": ["pie", "ring", "rose", "funnel", "line", "column", "area", "radar", "gauge","candle","demotype"], | 
				
			||||
  //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的"demotype"
 | 
				
			||||
	"categories": ["line", "column", "area", "radar", "gauge", "candle","demotype"], | 
				
			||||
  //instance为实例变量承载属性,option为eopts承载属性,不要删除
 | 
				
			||||
	"instance": {}, | 
				
			||||
	"option": {}, | 
				
			||||
  //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
 | 
				
			||||
  "formatter":{ | 
				
			||||
    "tooltipDemo1":function(res){ | 
				
			||||
      let result = '' | 
				
			||||
      for (let i in res) { | 
				
			||||
      	if (i == 0) { | 
				
			||||
      		result += res[i].axisValueLabel + '年销售额' | 
				
			||||
      	} | 
				
			||||
      	let value = '--' | 
				
			||||
      	if (res[i].data !== null) { | 
				
			||||
      		value = res[i].data | 
				
			||||
      	} | 
				
			||||
      	// #ifdef H5
 | 
				
			||||
      	result += '\n' + res[i].seriesName + ':' + value + ' 万元' | 
				
			||||
      	// #endif
 | 
				
			||||
      	
 | 
				
			||||
      	// #ifdef APP-PLUS
 | 
				
			||||
      	result += '<br/>' + res[i].marker + res[i].seriesName + ':' + value + ' 万元' | 
				
			||||
      	// #endif
 | 
				
			||||
      } | 
				
			||||
      return result; | 
				
			||||
    }, | 
				
			||||
    legendFormat:function(name){ | 
				
			||||
      return "自定义图例+"+name; | 
				
			||||
    }, | 
				
			||||
    yAxisFormatDemo:function (value, index) { | 
				
			||||
      return value + '元'; | 
				
			||||
    }, | 
				
			||||
    seriesFormatDemo:function(res){ | 
				
			||||
      return res.name + '年' + res.value + '元'; | 
				
			||||
    } | 
				
			||||
  }, | 
				
			||||
  //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。
 | 
				
			||||
  "demotype":{ | 
				
			||||
    "color": color, | 
				
			||||
    //在这里填写echarts的option即可
 | 
				
			||||
    
 | 
				
			||||
  }, | 
				
			||||
  //下面是自定义配置,请添加项目所需的通用配置
 | 
				
			||||
	"column": { | 
				
			||||
		"color": color, | 
				
			||||
		"title": { | 
				
			||||
			"text": '' | 
				
			||||
		}, | 
				
			||||
		"tooltip": { | 
				
			||||
			"trigger": 'axis' | 
				
			||||
		}, | 
				
			||||
		"grid": { | 
				
			||||
			"top": 30, | 
				
			||||
			"bottom": 50, | 
				
			||||
			"right": 15, | 
				
			||||
			"left": 40 | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
			"bottom": 'left', | 
				
			||||
		}, | 
				
			||||
		"toolbox": { | 
				
			||||
			"show": false, | 
				
			||||
		}, | 
				
			||||
		"xAxis": { | 
				
			||||
			"type": 'category', | 
				
			||||
			"axisLabel": { | 
				
			||||
				"color": '#666666' | 
				
			||||
			}, | 
				
			||||
			"axisLine": { | 
				
			||||
				"lineStyle": { | 
				
			||||
					"color": '#CCCCCC' | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
			"boundaryGap": true, | 
				
			||||
			"data": [] | 
				
			||||
		}, | 
				
			||||
		"yAxis": { | 
				
			||||
			"type": 'value', | 
				
			||||
			"axisTick": { | 
				
			||||
				"show": false, | 
				
			||||
			}, | 
				
			||||
			"axisLabel": { | 
				
			||||
				"color": '#666666' | 
				
			||||
			}, | 
				
			||||
			"axisLine": { | 
				
			||||
				"lineStyle": { | 
				
			||||
					"color": '#CCCCCC' | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
		"seriesTemplate": { | 
				
			||||
			"name": '', | 
				
			||||
			"type": 'bar', | 
				
			||||
			"data": [], | 
				
			||||
			"barwidth": 20, | 
				
			||||
			"label": { | 
				
			||||
				"show": true, | 
				
			||||
        "color": "#666666", | 
				
			||||
				"position": 'top', | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	"line": { | 
				
			||||
		"color": color, | 
				
			||||
		"title": { | 
				
			||||
			"text": '' | 
				
			||||
		}, | 
				
			||||
		"tooltip": { | 
				
			||||
			"trigger": 'axis' | 
				
			||||
		}, | 
				
			||||
		"grid": { | 
				
			||||
			"top": 30, | 
				
			||||
			"bottom": 50, | 
				
			||||
			"right": 15, | 
				
			||||
			"left": 40 | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
			"bottom": 'left', | 
				
			||||
		}, | 
				
			||||
		"toolbox": { | 
				
			||||
			"show": false, | 
				
			||||
		}, | 
				
			||||
		"xAxis": { | 
				
			||||
			"type": 'category', | 
				
			||||
			"axisLabel": { | 
				
			||||
				"color": '#666666' | 
				
			||||
			}, | 
				
			||||
			"axisLine": { | 
				
			||||
				"lineStyle": { | 
				
			||||
					"color": '#CCCCCC' | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
			"boundaryGap": true, | 
				
			||||
			"data": [] | 
				
			||||
		}, | 
				
			||||
		"yAxis": { | 
				
			||||
			"type": 'value', | 
				
			||||
			"axisTick": { | 
				
			||||
				"show": false, | 
				
			||||
			}, | 
				
			||||
			"axisLabel": { | 
				
			||||
				"color": '#666666' | 
				
			||||
			}, | 
				
			||||
			"axisLine": { | 
				
			||||
				"lineStyle": { | 
				
			||||
					"color": '#CCCCCC' | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
		"seriesTemplate": { | 
				
			||||
			"name": '', | 
				
			||||
			"type": 'line', | 
				
			||||
			"data": [], | 
				
			||||
			"barwidth": 20, | 
				
			||||
			"label": { | 
				
			||||
				"show": true, | 
				
			||||
        "color": "#666666", | 
				
			||||
				"position": 'top', | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	"area": { | 
				
			||||
		"color": color, | 
				
			||||
		"title": { | 
				
			||||
			"text": '' | 
				
			||||
		}, | 
				
			||||
		"tooltip": { | 
				
			||||
			"trigger": 'axis' | 
				
			||||
		}, | 
				
			||||
		"grid": { | 
				
			||||
			"top": 30, | 
				
			||||
			"bottom": 50, | 
				
			||||
			"right": 15, | 
				
			||||
			"left": 40 | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
			"bottom": 'left', | 
				
			||||
		}, | 
				
			||||
		"toolbox": { | 
				
			||||
			"show": false, | 
				
			||||
		}, | 
				
			||||
		"xAxis": { | 
				
			||||
			"type": 'category', | 
				
			||||
			"axisLabel": { | 
				
			||||
				"color": '#666666' | 
				
			||||
			}, | 
				
			||||
			"axisLine": { | 
				
			||||
				"lineStyle": { | 
				
			||||
					"color": '#CCCCCC' | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
			"boundaryGap": true, | 
				
			||||
			"data": [] | 
				
			||||
		}, | 
				
			||||
		"yAxis": { | 
				
			||||
			"type": 'value', | 
				
			||||
			"axisTick": { | 
				
			||||
				"show": false, | 
				
			||||
			}, | 
				
			||||
			"axisLabel": { | 
				
			||||
				"color": '#666666' | 
				
			||||
			}, | 
				
			||||
			"axisLine": { | 
				
			||||
				"lineStyle": { | 
				
			||||
					"color": '#CCCCCC' | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
		"seriesTemplate": { | 
				
			||||
			"name": '', | 
				
			||||
			"type": 'line', | 
				
			||||
			"data": [], | 
				
			||||
			"areaStyle": {}, | 
				
			||||
			"label": { | 
				
			||||
				"show": true, | 
				
			||||
        "color": "#666666", | 
				
			||||
				"position": 'top', | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	"pie": { | 
				
			||||
		"color": color, | 
				
			||||
		"title": { | 
				
			||||
			"text": '' | 
				
			||||
		}, | 
				
			||||
		"tooltip": { | 
				
			||||
			"trigger": 'item' | 
				
			||||
		}, | 
				
			||||
		"grid": { | 
				
			||||
			"top": 40, | 
				
			||||
			"bottom": 30, | 
				
			||||
			"right": 15, | 
				
			||||
			"left": 15 | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
			"bottom": 'left', | 
				
			||||
		}, | 
				
			||||
		"seriesTemplate": { | 
				
			||||
			"name": '', | 
				
			||||
			"type": 'pie', | 
				
			||||
			"data": [], | 
				
			||||
			"radius": '50%', | 
				
			||||
			"label": { | 
				
			||||
				"show": true, | 
				
			||||
        "color": "#666666", | 
				
			||||
				"position": 'top', | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	"ring": { | 
				
			||||
		"color": color, | 
				
			||||
		"title": { | 
				
			||||
			"text": '' | 
				
			||||
		}, | 
				
			||||
		"tooltip": { | 
				
			||||
			"trigger": 'item' | 
				
			||||
		}, | 
				
			||||
		"grid": { | 
				
			||||
			"top": 40, | 
				
			||||
			"bottom": 30, | 
				
			||||
			"right": 15, | 
				
			||||
			"left": 15 | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
			"bottom": 'left', | 
				
			||||
		}, | 
				
			||||
		"seriesTemplate": { | 
				
			||||
			"name": '', | 
				
			||||
			"type": 'pie', | 
				
			||||
			"data": [], | 
				
			||||
			"radius": ['40%', '70%'], | 
				
			||||
			"avoidLabelOverlap": false, | 
				
			||||
			"label": { | 
				
			||||
				"show": true, | 
				
			||||
        "color": "#666666", | 
				
			||||
				"position": 'top', | 
				
			||||
			}, | 
				
			||||
			"labelLine": { | 
				
			||||
				"show": true | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	"rose": { | 
				
			||||
		"color": color, | 
				
			||||
		"title": { | 
				
			||||
			"text": '' | 
				
			||||
		}, | 
				
			||||
		"tooltip": { | 
				
			||||
			"trigger": 'item' | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
			"top": 'bottom' | 
				
			||||
		}, | 
				
			||||
		"seriesTemplate": { | 
				
			||||
			"name": '', | 
				
			||||
			"type": 'pie', | 
				
			||||
			"data": [], | 
				
			||||
			"radius": "55%", | 
				
			||||
			"center": ['50%', '50%'], | 
				
			||||
			"roseType": 'area', | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	"funnel": { | 
				
			||||
		"color": color, | 
				
			||||
		"title": { | 
				
			||||
			"text": '' | 
				
			||||
		}, | 
				
			||||
		"tooltip": { | 
				
			||||
			"trigger": 'item', | 
				
			||||
			"formatter": "{b} : {c}%" | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
			"top": 'bottom' | 
				
			||||
		}, | 
				
			||||
		"seriesTemplate": { | 
				
			||||
			"name": '', | 
				
			||||
			"type": 'funnel', | 
				
			||||
			"left": '10%', | 
				
			||||
			"top": 60, | 
				
			||||
			"bottom": 60, | 
				
			||||
			"width": '80%', | 
				
			||||
			"min": 0, | 
				
			||||
			"max": 100, | 
				
			||||
			"minSize": '0%', | 
				
			||||
			"maxSize": '100%', | 
				
			||||
			"sort": 'descending', | 
				
			||||
			"gap": 2, | 
				
			||||
			"label": { | 
				
			||||
				"show": true, | 
				
			||||
				"position": 'inside' | 
				
			||||
			}, | 
				
			||||
			"labelLine": { | 
				
			||||
				"length": 10, | 
				
			||||
				"lineStyle": { | 
				
			||||
					"width": 1, | 
				
			||||
					"type": 'solid' | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
			"itemStyle": { | 
				
			||||
				"bordercolor": '#fff', | 
				
			||||
				"borderwidth": 1 | 
				
			||||
			}, | 
				
			||||
			"emphasis": { | 
				
			||||
				"label": { | 
				
			||||
					"fontSize": 20 | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
			"data": [], | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	"gauge": { | 
				
			||||
		"color": color, | 
				
			||||
		"tooltip": { | 
				
			||||
        "formatter": '{a} <br/>{b} : {c}%' | 
				
			||||
    }, | 
				
			||||
		"seriesTemplate": { | 
				
			||||
			"name": '业务指标', | 
				
			||||
      "type": 'gauge', | 
				
			||||
      "detail": {"formatter": '{value}%'}, | 
				
			||||
      "data": [{"value": 50, "name": '完成率'}] | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	"candle": { | 
				
			||||
		"xAxis": { | 
				
			||||
			"data": [] | 
				
			||||
		}, | 
				
			||||
		"yAxis": {}, | 
				
			||||
		"color": color, | 
				
			||||
		"title": { | 
				
			||||
			"text": '' | 
				
			||||
		}, | 
				
			||||
		"dataZoom": [{ | 
				
			||||
				"type": 'inside', | 
				
			||||
				"xAxisIndex": [0, 1], | 
				
			||||
				"start": 10, | 
				
			||||
				"end": 100 | 
				
			||||
			}, | 
				
			||||
			{ | 
				
			||||
				"show": true, | 
				
			||||
				"xAxisIndex": [0, 1], | 
				
			||||
				"type": 'slider', | 
				
			||||
				"bottom": 10, | 
				
			||||
				"start": 10, | 
				
			||||
				"end": 100 | 
				
			||||
			} | 
				
			||||
		], | 
				
			||||
		"seriesTemplate": { | 
				
			||||
			"name": '', | 
				
			||||
			"type": 'k', | 
				
			||||
			"data": [], | 
				
			||||
		}, | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
 | 
				
			||||
export default cfe; | 
				
			||||
@ -0,0 +1,601 @@
					 | 
				
			||||
/* | 
				
			||||
 * uCharts® | 
				
			||||
 * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 | 
				
			||||
 * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.
 | 
				
			||||
 * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 | 
				
			||||
 * 复制使用请保留本段注释,感谢支持开源! | 
				
			||||
 * 
 | 
				
			||||
 * uCharts®官方网站 | 
				
			||||
 * https://www.uCharts.cn
 | 
				
			||||
 * 
 | 
				
			||||
 * 开源地址: | 
				
			||||
 * https://gitee.com/uCharts/uCharts
 | 
				
			||||
 * 
 | 
				
			||||
 * uni-app插件市场地址: | 
				
			||||
 * http://ext.dcloud.net.cn/plugin?id=271
 | 
				
			||||
 * 
 | 
				
			||||
 */ | 
				
			||||
 | 
				
			||||
// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性
 | 
				
			||||
const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; | 
				
			||||
 | 
				
			||||
//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改
 | 
				
			||||
const formatDateTime = (timeStamp, returnType)=>{ | 
				
			||||
  var date = new Date(); | 
				
			||||
  date.setTime(timeStamp * 1000); | 
				
			||||
  var y = date.getFullYear(); | 
				
			||||
  var m = date.getMonth() + 1; | 
				
			||||
  m = m < 10 ? ('0' + m) : m; | 
				
			||||
  var d = date.getDate(); | 
				
			||||
  d = d < 10 ? ('0' + d) : d; | 
				
			||||
  var h = date.getHours(); | 
				
			||||
  h = h < 10 ? ('0' + h) : h; | 
				
			||||
  var minute = date.getMinutes(); | 
				
			||||
  var second = date.getSeconds(); | 
				
			||||
  minute = minute < 10 ? ('0' + minute) : minute; | 
				
			||||
  second = second < 10 ? ('0' + second) : second; | 
				
			||||
  if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;} | 
				
			||||
  if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;} | 
				
			||||
  if(returnType == 'h:m'){return  h +':' + minute;} | 
				
			||||
  if(returnType == 'h:m:s'){return  h +':' + minute +':' + second;} | 
				
			||||
  return [y, m, d, h, minute, second]; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
const cfu = { | 
				
			||||
  //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可
 | 
				
			||||
	"type":["pie","ring","rose","word","funnel","map","arcbar","line","column","mount","bar","area","radar","gauge","candle","mix","tline","tarea","scatter","bubble","demotype"], | 
				
			||||
	"range":["饼状图","圆环图","玫瑰图","词云图","漏斗图","地图","圆弧进度条","折线图","柱状图","山峰图","条状图","区域图","雷达图","仪表盘","K线图","混合图","时间轴折线","时间轴区域","散点图","气泡图","自定义类型"], | 
				
			||||
  //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype"
 | 
				
			||||
  //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories
 | 
				
			||||
	"categories":["line","column","mount","bar","area","radar","gauge","candle","mix","demotype"], | 
				
			||||
  //instance为实例变量承载属性,不要删除
 | 
				
			||||
  "instance":{}, | 
				
			||||
  //option为opts及eopts承载属性,不要删除
 | 
				
			||||
  "option":{}, | 
				
			||||
  //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换
 | 
				
			||||
  "formatter":{ | 
				
			||||
    "yAxisDemo1":function(val, index, opts){return val+'元'}, | 
				
			||||
    "yAxisDemo2":function(val, index, opts){return val.toFixed(2)}, | 
				
			||||
    "xAxisDemo1":function(val, index, opts){return val+'年';}, | 
				
			||||
    "xAxisDemo2":function(val, index, opts){return formatDateTime(val,'h:m')}, | 
				
			||||
    "seriesDemo1":function(val, index, series, opts){return val+'元'}, | 
				
			||||
    "tooltipDemo1":function(item, category, index, opts){ | 
				
			||||
      if(index==0){ | 
				
			||||
      	return '随便用'+item.data+'年' | 
				
			||||
      }else{ | 
				
			||||
      	return '其他我没改'+item.data+'天' | 
				
			||||
      } | 
				
			||||
    }, | 
				
			||||
    "pieDemo":function(val, index, series, opts){ | 
				
			||||
      if(index !== undefined){ | 
				
			||||
        return series[index].name+':'+series[index].data+'元' | 
				
			||||
      } | 
				
			||||
    }, | 
				
			||||
  }, | 
				
			||||
  //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。
 | 
				
			||||
  "demotype":{ | 
				
			||||
    //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置
 | 
				
			||||
    "type": "line", | 
				
			||||
    "color": color, | 
				
			||||
    "padding": [15,10,0,15], | 
				
			||||
    "xAxis": { | 
				
			||||
      "disableGrid": true, | 
				
			||||
    }, | 
				
			||||
    "yAxis": { | 
				
			||||
      "gridType": "dash", | 
				
			||||
      "dashLength": 2, | 
				
			||||
    }, | 
				
			||||
    "legend": { | 
				
			||||
    }, | 
				
			||||
    "extra": { | 
				
			||||
    	"line": { | 
				
			||||
    		"type": "curve", | 
				
			||||
    		"width": 2 | 
				
			||||
    	}, | 
				
			||||
    } | 
				
			||||
  }, | 
				
			||||
  //下面是自定义配置,请添加项目所需的通用配置
 | 
				
			||||
	"pie":{ | 
				
			||||
		"type": "pie", | 
				
			||||
    "color": color, | 
				
			||||
		"padding": [5,5,5,5], | 
				
			||||
		"extra": { | 
				
			||||
			"pie": { | 
				
			||||
				"activeOpacity": 0.5, | 
				
			||||
				"activeRadius": 10, | 
				
			||||
				"offsetAngle": 0, | 
				
			||||
				"labelWidth": 15, | 
				
			||||
				"border": true, | 
				
			||||
				"borderWidth": 3, | 
				
			||||
				"borderColor": "#FFFFFF" | 
				
			||||
			}, | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"ring":{ | 
				
			||||
		"type": "ring", | 
				
			||||
    "color": color, | 
				
			||||
		"padding": [5,5,5,5], | 
				
			||||
		"rotate": false, | 
				
			||||
		"dataLabel": true, | 
				
			||||
		"legend": { | 
				
			||||
			"show": true, | 
				
			||||
			"position": "right", | 
				
			||||
      "lineHeight": 25, | 
				
			||||
		}, | 
				
			||||
		"title": { | 
				
			||||
			"name": "收益率", | 
				
			||||
			"fontSize": 15, | 
				
			||||
			"color": "#666666" | 
				
			||||
		}, | 
				
			||||
		"subtitle": { | 
				
			||||
			"name": "70%", | 
				
			||||
			"fontSize": 25, | 
				
			||||
			"color": "#7cb5ec" | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"ring": { | 
				
			||||
				"ringWidth":30, | 
				
			||||
				"activeOpacity": 0.5, | 
				
			||||
				"activeRadius": 10, | 
				
			||||
				"offsetAngle": 0, | 
				
			||||
				"labelWidth": 15, | 
				
			||||
				"border": true, | 
				
			||||
				"borderWidth": 3, | 
				
			||||
				"borderColor": "#FFFFFF" | 
				
			||||
			}, | 
				
			||||
		}, | 
				
			||||
	}, | 
				
			||||
	"rose":{ | 
				
			||||
		"type": "rose", | 
				
			||||
    "color": color, | 
				
			||||
		"padding": [5,5,5,5], | 
				
			||||
		"legend": { | 
				
			||||
			"show": true, | 
				
			||||
			"position": "left", | 
				
			||||
      "lineHeight": 25, | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"rose": { | 
				
			||||
				"type": "area", | 
				
			||||
				"minRadius": 50, | 
				
			||||
				"activeOpacity": 0.5, | 
				
			||||
				"activeRadius": 10, | 
				
			||||
				"offsetAngle": 0, | 
				
			||||
				"labelWidth": 15, | 
				
			||||
				"border": false, | 
				
			||||
				"borderWidth": 2, | 
				
			||||
				"borderColor": "#FFFFFF" | 
				
			||||
			}, | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"word":{ | 
				
			||||
		"type": "word", | 
				
			||||
    "color": color, | 
				
			||||
		"extra": { | 
				
			||||
			"word": { | 
				
			||||
				"type": "normal", | 
				
			||||
				"autoColors": false | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"funnel":{ | 
				
			||||
		"type": "funnel", | 
				
			||||
    "color": color, | 
				
			||||
		"padding": [15,15,0,15], | 
				
			||||
		"extra": { | 
				
			||||
			"funnel": { | 
				
			||||
				"activeOpacity": 0.3, | 
				
			||||
				"activeWidth": 10, | 
				
			||||
				"border": true, | 
				
			||||
				"borderWidth": 2, | 
				
			||||
				"borderColor": "#FFFFFF", | 
				
			||||
				"fillOpacity": 1, | 
				
			||||
				"labelAlign": "right" | 
				
			||||
			}, | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"map":{ | 
				
			||||
		"type": "map", | 
				
			||||
    "color": color, | 
				
			||||
		"padding": [0,0,0,0], | 
				
			||||
    "dataLabel": true, | 
				
			||||
		"extra": { | 
				
			||||
			"map": { | 
				
			||||
				"border": true, | 
				
			||||
				"borderWidth": 1, | 
				
			||||
				"borderColor": "#666666", | 
				
			||||
				"fillOpacity": 0.6, | 
				
			||||
				"activeBorderColor": "#F04864", | 
				
			||||
				"activeFillColor": "#FACC14", | 
				
			||||
				"activeFillOpacity": 1 | 
				
			||||
			}, | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"arcbar":{ | 
				
			||||
		"type": "arcbar", | 
				
			||||
    "color": color, | 
				
			||||
		"title": { | 
				
			||||
			"name": "百分比", | 
				
			||||
			"fontSize": 25, | 
				
			||||
			"color": "#00FF00" | 
				
			||||
		}, | 
				
			||||
		"subtitle": { | 
				
			||||
			"name": "默认标题", | 
				
			||||
			"fontSize": 15, | 
				
			||||
			"color": "#666666" | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"arcbar": { | 
				
			||||
				"type": "default", | 
				
			||||
				"width": 12, | 
				
			||||
				"backgroundColor": "#E9E9E9", | 
				
			||||
				"startAngle": 0.75, | 
				
			||||
				"endAngle": 0.25, | 
				
			||||
				"gap": 2 | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"line":{ | 
				
			||||
		"type": "line", | 
				
			||||
    "color": color, | 
				
			||||
		"padding": [15,10,0,15], | 
				
			||||
		"xAxis": { | 
				
			||||
      "disableGrid": true, | 
				
			||||
		}, | 
				
			||||
		"yAxis": { | 
				
			||||
      "gridType": "dash", | 
				
			||||
      "dashLength": 2, | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"line": { | 
				
			||||
				"type": "straight", | 
				
			||||
				"width": 2 | 
				
			||||
			}, | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
  "tline":{ | 
				
			||||
  	"type": "line", | 
				
			||||
    "color": color, | 
				
			||||
  	"padding": [15,10,0,15], | 
				
			||||
  	"xAxis": { | 
				
			||||
      "disableGrid": false, | 
				
			||||
      "boundaryGap":"justify", | 
				
			||||
  	}, | 
				
			||||
  	"yAxis": { | 
				
			||||
      "gridType": "dash", | 
				
			||||
      "dashLength": 2, | 
				
			||||
      "data":[ | 
				
			||||
        { | 
				
			||||
          "min":0, | 
				
			||||
          "max":80 | 
				
			||||
        } | 
				
			||||
      ] | 
				
			||||
  	}, | 
				
			||||
  	"legend": { | 
				
			||||
  	}, | 
				
			||||
  	"extra": { | 
				
			||||
  		"line": { | 
				
			||||
  			"type": "curve", | 
				
			||||
  			"width": 2 | 
				
			||||
  		}, | 
				
			||||
  	} | 
				
			||||
  }, | 
				
			||||
  "tarea":{ | 
				
			||||
  	"type": "area", | 
				
			||||
    "color": color, | 
				
			||||
  	"padding": [15,10,0,15], | 
				
			||||
  	"xAxis": { | 
				
			||||
      "disableGrid": true, | 
				
			||||
      "boundaryGap":"justify", | 
				
			||||
  	}, | 
				
			||||
  	"yAxis": { | 
				
			||||
      "gridType": "dash", | 
				
			||||
      "dashLength": 2, | 
				
			||||
      "data":[ | 
				
			||||
        { | 
				
			||||
          "min":0, | 
				
			||||
          "max":80 | 
				
			||||
        } | 
				
			||||
      ] | 
				
			||||
  	}, | 
				
			||||
  	"legend": { | 
				
			||||
  	}, | 
				
			||||
  	"extra": { | 
				
			||||
  		"area": { | 
				
			||||
  			"type": "curve", | 
				
			||||
  			"opacity": 0.2, | 
				
			||||
  			"addLine": true, | 
				
			||||
  			"width": 2, | 
				
			||||
  			"gradient": true | 
				
			||||
  		}, | 
				
			||||
  	} | 
				
			||||
  }, | 
				
			||||
	"column":{ | 
				
			||||
		"type": "column", | 
				
			||||
    "color": color, | 
				
			||||
		"padding": [15,15,0,5], | 
				
			||||
		"xAxis": { | 
				
			||||
      "disableGrid": true, | 
				
			||||
		}, | 
				
			||||
		"yAxis": { | 
				
			||||
      "data":[{"min":0}] | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"column": { | 
				
			||||
				"type": "group", | 
				
			||||
				"width": 30, | 
				
			||||
				"activeBgColor": "#000000", | 
				
			||||
				"activeBgOpacity": 0.08 | 
				
			||||
			}, | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
  "mount":{ | 
				
			||||
  	"type": "mount", | 
				
			||||
    "color": color, | 
				
			||||
  	"padding": [15,15,0,5], | 
				
			||||
  	"xAxis": { | 
				
			||||
      "disableGrid": true, | 
				
			||||
  	}, | 
				
			||||
  	"yAxis": { | 
				
			||||
      "data":[{"min":0}] | 
				
			||||
  	}, | 
				
			||||
  	"legend": { | 
				
			||||
  	}, | 
				
			||||
  	"extra": { | 
				
			||||
  		"mount": { | 
				
			||||
  			"type": "mount", | 
				
			||||
  			"widthRatio": 1.5, | 
				
			||||
  		}, | 
				
			||||
  	} | 
				
			||||
  }, | 
				
			||||
  "bar":{ | 
				
			||||
  	"type": "bar", | 
				
			||||
    "color": color, | 
				
			||||
  	"padding": [15,30,0,5], | 
				
			||||
  	"xAxis": { | 
				
			||||
      "boundaryGap":"justify", | 
				
			||||
      "disableGrid":false, | 
				
			||||
      "min":0, | 
				
			||||
      "axisLine":false | 
				
			||||
  	}, | 
				
			||||
  	"yAxis": { | 
				
			||||
  	}, | 
				
			||||
  	"legend": { | 
				
			||||
  	}, | 
				
			||||
  	"extra": { | 
				
			||||
  		"bar": { | 
				
			||||
  			"type": "group", | 
				
			||||
  			"width": 30, | 
				
			||||
  			"meterBorde": 1, | 
				
			||||
  			"meterFillColor": "#FFFFFF", | 
				
			||||
  			"activeBgColor": "#000000", | 
				
			||||
  			"activeBgOpacity": 0.08 | 
				
			||||
  		}, | 
				
			||||
  	} | 
				
			||||
  }, | 
				
			||||
	"area":{ | 
				
			||||
		"type": "area", | 
				
			||||
		"color": color, | 
				
			||||
		"padding": [15,15,0,15], | 
				
			||||
		"xAxis": { | 
				
			||||
      "disableGrid": true, | 
				
			||||
		}, | 
				
			||||
		"yAxis": { | 
				
			||||
      "gridType": "dash", | 
				
			||||
      "dashLength": 2, | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"area": { | 
				
			||||
				"type": "straight", | 
				
			||||
				"opacity": 0.2, | 
				
			||||
				"addLine": true, | 
				
			||||
				"width": 2, | 
				
			||||
				"gradient": false | 
				
			||||
			}, | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"radar":{ | 
				
			||||
		"type": "radar", | 
				
			||||
		"color": color, | 
				
			||||
		"padding": [5,5,5,5], | 
				
			||||
    "dataLabel": false, | 
				
			||||
		"legend": { | 
				
			||||
			"show": true, | 
				
			||||
			"position": "right", | 
				
			||||
      "lineHeight": 25, | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"radar": { | 
				
			||||
				"gridType": "radar", | 
				
			||||
				"gridColor": "#CCCCCC", | 
				
			||||
				"gridCount": 3, | 
				
			||||
				"opacity": 0.2, | 
				
			||||
				"max": 200 | 
				
			||||
			}, | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"gauge":{ | 
				
			||||
		"type": "gauge", | 
				
			||||
		"color": color, | 
				
			||||
		"title": { | 
				
			||||
			"name": "66Km/H", | 
				
			||||
			"fontSize": 25, | 
				
			||||
			"color": "#2fc25b", | 
				
			||||
			"offsetY": 50 | 
				
			||||
		}, | 
				
			||||
		"subtitle": { | 
				
			||||
			"name": "实时速度", | 
				
			||||
			"fontSize": 15, | 
				
			||||
			"color": "#1890ff", | 
				
			||||
			"offsetY": -50 | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"gauge": { | 
				
			||||
				"type": "default", | 
				
			||||
				"width": 30, | 
				
			||||
				"labelColor": "#666666", | 
				
			||||
				"startAngle": 0.75, | 
				
			||||
				"endAngle": 0.25, | 
				
			||||
				"startNumber": 0, | 
				
			||||
				"endNumber": 100, | 
				
			||||
				"labelFormat": "", | 
				
			||||
				"splitLine": { | 
				
			||||
					"fixRadius": 0, | 
				
			||||
					"splitNumber": 10, | 
				
			||||
					"width": 30, | 
				
			||||
					"color": "#FFFFFF", | 
				
			||||
					"childNumber": 5, | 
				
			||||
					"childWidth": 12 | 
				
			||||
				}, | 
				
			||||
				"pointer": { | 
				
			||||
					"width": 24, | 
				
			||||
					"color": "auto" | 
				
			||||
				} | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"candle":{ | 
				
			||||
		"type": "candle", | 
				
			||||
		"color": color, | 
				
			||||
		"padding": [15,15,0,15], | 
				
			||||
		"enableScroll": true, | 
				
			||||
		"enableMarkLine": true, | 
				
			||||
		"dataLabel": false, | 
				
			||||
		"xAxis": { | 
				
			||||
			"labelCount": 4, | 
				
			||||
			"itemCount": 40, | 
				
			||||
			"disableGrid": true, | 
				
			||||
			"gridColor": "#CCCCCC", | 
				
			||||
			"gridType": "solid", | 
				
			||||
			"dashLength": 4, | 
				
			||||
			"scrollShow": true, | 
				
			||||
			"scrollAlign": "left", | 
				
			||||
			"scrollColor": "#A6A6A6", | 
				
			||||
			"scrollBackgroundColor": "#EFEBEF" | 
				
			||||
		}, | 
				
			||||
		"yAxis": { | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"candle": { | 
				
			||||
				"color": { | 
				
			||||
					"upLine": "#f04864", | 
				
			||||
					"upFill": "#f04864", | 
				
			||||
					"downLine": "#2fc25b", | 
				
			||||
					"downFill": "#2fc25b" | 
				
			||||
				}, | 
				
			||||
				"average": { | 
				
			||||
					"show": true, | 
				
			||||
					"name": ["MA5","MA10","MA30"], | 
				
			||||
					"day": [5,10,20], | 
				
			||||
					"color": ["#1890ff","#2fc25b","#facc14"] | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
			"markLine": { | 
				
			||||
				"type": "dash", | 
				
			||||
				"dashLength": 5, | 
				
			||||
				"data": [ | 
				
			||||
					{ | 
				
			||||
						"value": 2150, | 
				
			||||
						"lineColor": "#f04864", | 
				
			||||
						"showLabel": true | 
				
			||||
					}, | 
				
			||||
					{ | 
				
			||||
						"value": 2350, | 
				
			||||
						"lineColor": "#f04864", | 
				
			||||
						"showLabel": true | 
				
			||||
					} | 
				
			||||
				] | 
				
			||||
			} | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"mix":{ | 
				
			||||
		"type": "mix", | 
				
			||||
		"color": color, | 
				
			||||
		"padding": [15,15,0,15], | 
				
			||||
		"xAxis": { | 
				
			||||
      "disableGrid": true, | 
				
			||||
		}, | 
				
			||||
		"yAxis": { | 
				
			||||
			"disabled": false, | 
				
			||||
			"disableGrid": false, | 
				
			||||
			"splitNumber": 5, | 
				
			||||
			"gridType": "dash", | 
				
			||||
			"dashLength": 4, | 
				
			||||
			"gridColor": "#CCCCCC", | 
				
			||||
			"padding": 10, | 
				
			||||
			"showTitle": true, | 
				
			||||
			"data": [] | 
				
			||||
		}, | 
				
			||||
		"legend": { | 
				
			||||
		}, | 
				
			||||
		"extra": { | 
				
			||||
			"mix": { | 
				
			||||
				"column": { | 
				
			||||
					"width": 20 | 
				
			||||
				} | 
				
			||||
			}, | 
				
			||||
		} | 
				
			||||
	}, | 
				
			||||
	"scatter":{ | 
				
			||||
		"type": "scatter", | 
				
			||||
		"color":color, | 
				
			||||
		"padding":[15,15,0,15], | 
				
			||||
    "dataLabel":false, | 
				
			||||
    "xAxis": { | 
				
			||||
      "disableGrid": false, | 
				
			||||
      "gridType":"dash", | 
				
			||||
      "splitNumber":5, | 
				
			||||
      "boundaryGap":"justify", | 
				
			||||
      "min":0 | 
				
			||||
    }, | 
				
			||||
    "yAxis": { | 
				
			||||
      "disableGrid": false, | 
				
			||||
      "gridType":"dash", | 
				
			||||
    }, | 
				
			||||
    "legend": { | 
				
			||||
    }, | 
				
			||||
    "extra": { | 
				
			||||
    	"scatter": { | 
				
			||||
    	}, | 
				
			||||
    } | 
				
			||||
	}, | 
				
			||||
	"bubble":{ | 
				
			||||
		"type": "bubble", | 
				
			||||
		"color":color, | 
				
			||||
		"padding":[15,15,0,15], | 
				
			||||
    "xAxis": { | 
				
			||||
      "disableGrid": false, | 
				
			||||
      "gridType":"dash", | 
				
			||||
      "splitNumber":5, | 
				
			||||
      "boundaryGap":"justify", | 
				
			||||
      "min":0, | 
				
			||||
      "max":250 | 
				
			||||
    }, | 
				
			||||
    "yAxis": { | 
				
			||||
      "disableGrid": false, | 
				
			||||
      "gridType":"dash", | 
				
			||||
      "data":[{ | 
				
			||||
        "min":0, | 
				
			||||
        "max":150 | 
				
			||||
      }] | 
				
			||||
    }, | 
				
			||||
    "legend": { | 
				
			||||
    }, | 
				
			||||
    "extra": { | 
				
			||||
    	"bubble": { | 
				
			||||
        "border":2, | 
				
			||||
        "opacity": 0.5, | 
				
			||||
    	}, | 
				
			||||
    } | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
 | 
				
			||||
export default cfu; | 
				
			||||
@ -0,0 +1,5 @@
					 | 
				
			||||
# uCharts JSSDK说明 | 
				
			||||
1、如不使用uCharts组件,可直接引用u-charts.js,打包编译后会`自动压缩`,压缩后体积约为`120kb`。 | 
				
			||||
2、如果120kb的体积仍需压缩,请手到uCharts官网通过在线定制选择您需要的图表。 | 
				
			||||
3、config-ucharts.js为uCharts组件的用户配置文件,升级前请`自行备份config-ucharts.js`文件,以免被强制覆盖。 | 
				
			||||
4、config-echarts.js为ECharts组件的用户配置文件,升级前请`自行备份config-echarts.js`文件,以免被强制覆盖。 | 
				
			||||
@ -0,0 +1,201 @@
					 | 
				
			||||
                                 Apache License | 
				
			||||
                           Version 2.0, January 2004 | 
				
			||||
                        http://www.apache.org/licenses/ | 
				
			||||
 | 
				
			||||
   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | 
				
			||||
 | 
				
			||||
   1. Definitions. | 
				
			||||
 | 
				
			||||
      "License" shall mean the terms and conditions for use, reproduction, | 
				
			||||
      and distribution as defined by Sections 1 through 9 of this document. | 
				
			||||
 | 
				
			||||
      "Licensor" shall mean the copyright owner or entity authorized by | 
				
			||||
      the copyright owner that is granting the License. | 
				
			||||
 | 
				
			||||
      "Legal Entity" shall mean the union of the acting entity and all | 
				
			||||
      other entities that control, are controlled by, or are under common | 
				
			||||
      control with that entity. For the purposes of this definition, | 
				
			||||
      "control" means (i) the power, direct or indirect, to cause the | 
				
			||||
      direction or management of such entity, whether by contract or | 
				
			||||
      otherwise, or (ii) ownership of fifty percent (50%) or more of the | 
				
			||||
      outstanding shares, or (iii) beneficial ownership of such entity. | 
				
			||||
 | 
				
			||||
      "You" (or "Your") shall mean an individual or Legal Entity | 
				
			||||
      exercising permissions granted by this License. | 
				
			||||
 | 
				
			||||
      "Source" form shall mean the preferred form for making modifications, | 
				
			||||
      including but not limited to software source code, documentation | 
				
			||||
      source, and configuration files. | 
				
			||||
 | 
				
			||||
      "Object" form shall mean any form resulting from mechanical | 
				
			||||
      transformation or translation of a Source form, including but | 
				
			||||
      not limited to compiled object code, generated documentation, | 
				
			||||
      and conversions to other media types. | 
				
			||||
 | 
				
			||||
      "Work" shall mean the work of authorship, whether in Source or | 
				
			||||
      Object form, made available under the License, as indicated by a | 
				
			||||
      copyright notice that is included in or attached to the work | 
				
			||||
      (an example is provided in the Appendix below). | 
				
			||||
 | 
				
			||||
      "Derivative Works" shall mean any work, whether in Source or Object | 
				
			||||
      form, that is based on (or derived from) the Work and for which the | 
				
			||||
      editorial revisions, annotations, elaborations, or other modifications | 
				
			||||
      represent, as a whole, an original work of authorship. For the purposes | 
				
			||||
      of this License, Derivative Works shall not include works that remain | 
				
			||||
      separable from, or merely link (or bind by name) to the interfaces of, | 
				
			||||
      the Work and Derivative Works thereof. | 
				
			||||
 | 
				
			||||
      "Contribution" shall mean any work of authorship, including | 
				
			||||
      the original version of the Work and any modifications or additions | 
				
			||||
      to that Work or Derivative Works thereof, that is intentionally | 
				
			||||
      submitted to Licensor for inclusion in the Work by the copyright owner | 
				
			||||
      or by an individual or Legal Entity authorized to submit on behalf of | 
				
			||||
      the copyright owner. For the purposes of this definition, "submitted" | 
				
			||||
      means any form of electronic, verbal, or written communication sent | 
				
			||||
      to the Licensor or its representatives, including but not limited to | 
				
			||||
      communication on electronic mailing lists, source code control systems, | 
				
			||||
      and issue tracking systems that are managed by, or on behalf of, the | 
				
			||||
      Licensor for the purpose of discussing and improving the Work, but | 
				
			||||
      excluding communication that is conspicuously marked or otherwise | 
				
			||||
      designated in writing by the copyright owner as "Not a Contribution." | 
				
			||||
 | 
				
			||||
      "Contributor" shall mean Licensor and any individual or Legal Entity | 
				
			||||
      on behalf of whom a Contribution has been received by Licensor and | 
				
			||||
      subsequently incorporated within the Work. | 
				
			||||
 | 
				
			||||
   2. Grant of Copyright License. Subject to the terms and conditions of | 
				
			||||
      this License, each Contributor hereby grants to You a perpetual, | 
				
			||||
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable | 
				
			||||
      copyright license to reproduce, prepare Derivative Works of, | 
				
			||||
      publicly display, publicly perform, sublicense, and distribute the | 
				
			||||
      Work and such Derivative Works in Source or Object form. | 
				
			||||
 | 
				
			||||
   3. Grant of Patent License. Subject to the terms and conditions of | 
				
			||||
      this License, each Contributor hereby grants to You a perpetual, | 
				
			||||
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable | 
				
			||||
      (except as stated in this section) patent license to make, have made, | 
				
			||||
      use, offer to sell, sell, import, and otherwise transfer the Work, | 
				
			||||
      where such license applies only to those patent claims licensable | 
				
			||||
      by such Contributor that are necessarily infringed by their | 
				
			||||
      Contribution(s) alone or by combination of their Contribution(s) | 
				
			||||
      with the Work to which such Contribution(s) was submitted. If You | 
				
			||||
      institute patent litigation against any entity (including a | 
				
			||||
      cross-claim or counterclaim in a lawsuit) alleging that the Work | 
				
			||||
      or a Contribution incorporated within the Work constitutes direct | 
				
			||||
      or contributory patent infringement, then any patent licenses | 
				
			||||
      granted to You under this License for that Work shall terminate | 
				
			||||
      as of the date such litigation is filed. | 
				
			||||
 | 
				
			||||
   4. Redistribution. You may reproduce and distribute copies of the | 
				
			||||
      Work or Derivative Works thereof in any medium, with or without | 
				
			||||
      modifications, and in Source or Object form, provided that You | 
				
			||||
      meet the following conditions: | 
				
			||||
 | 
				
			||||
      (a) You must give any other recipients of the Work or | 
				
			||||
          Derivative Works a copy of this License; and | 
				
			||||
 | 
				
			||||
      (b) You must cause any modified files to carry prominent notices | 
				
			||||
          stating that You changed the files; and | 
				
			||||
 | 
				
			||||
      (c) You must retain, in the Source form of any Derivative Works | 
				
			||||
          that You distribute, all copyright, patent, trademark, and | 
				
			||||
          attribution notices from the Source form of the Work, | 
				
			||||
          excluding those notices that do not pertain to any part of | 
				
			||||
          the Derivative Works; and | 
				
			||||
 | 
				
			||||
      (d) If the Work includes a "NOTICE" text file as part of its | 
				
			||||
          distribution, then any Derivative Works that You distribute must | 
				
			||||
          include a readable copy of the attribution notices contained | 
				
			||||
          within such NOTICE file, excluding those notices that do not | 
				
			||||
          pertain to any part of the Derivative Works, in at least one | 
				
			||||
          of the following places: within a NOTICE text file distributed | 
				
			||||
          as part of the Derivative Works; within the Source form or | 
				
			||||
          documentation, if provided along with the Derivative Works; or, | 
				
			||||
          within a display generated by the Derivative Works, if and | 
				
			||||
          wherever such third-party notices normally appear. The contents | 
				
			||||
          of the NOTICE file are for informational purposes only and | 
				
			||||
          do not modify the License. You may add Your own attribution | 
				
			||||
          notices within Derivative Works that You distribute, alongside | 
				
			||||
          or as an addendum to the NOTICE text from the Work, provided | 
				
			||||
          that such additional attribution notices cannot be construed | 
				
			||||
          as modifying the License. | 
				
			||||
 | 
				
			||||
      You may add Your own copyright statement to Your modifications and | 
				
			||||
      may provide additional or different license terms and conditions | 
				
			||||
      for use, reproduction, or distribution of Your modifications, or | 
				
			||||
      for any such Derivative Works as a whole, provided Your use, | 
				
			||||
      reproduction, and distribution of the Work otherwise complies with | 
				
			||||
      the conditions stated in this License. | 
				
			||||
 | 
				
			||||
   5. Submission of Contributions. Unless You explicitly state otherwise, | 
				
			||||
      any Contribution intentionally submitted for inclusion in the Work | 
				
			||||
      by You to the Licensor shall be under the terms and conditions of | 
				
			||||
      this License, without any additional terms or conditions. | 
				
			||||
      Notwithstanding the above, nothing herein shall supersede or modify | 
				
			||||
      the terms of any separate license agreement you may have executed | 
				
			||||
      with Licensor regarding such Contributions. | 
				
			||||
 | 
				
			||||
   6. Trademarks. This License does not grant permission to use the trade | 
				
			||||
      names, trademarks, service marks, or product names of the Licensor, | 
				
			||||
      except as required for reasonable and customary use in describing the | 
				
			||||
      origin of the Work and reproducing the content of the NOTICE file. | 
				
			||||
 | 
				
			||||
   7. Disclaimer of Warranty. Unless required by applicable law or | 
				
			||||
      agreed to in writing, Licensor provides the Work (and each | 
				
			||||
      Contributor provides its Contributions) on an "AS IS" BASIS, | 
				
			||||
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | 
				
			||||
      implied, including, without limitation, any warranties or conditions | 
				
			||||
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | 
				
			||||
      PARTICULAR PURPOSE. You are solely responsible for determining the | 
				
			||||
      appropriateness of using or redistributing the Work and assume any | 
				
			||||
      risks associated with Your exercise of permissions under this License. | 
				
			||||
 | 
				
			||||
   8. Limitation of Liability. In no event and under no legal theory, | 
				
			||||
      whether in tort (including negligence), contract, or otherwise, | 
				
			||||
      unless required by applicable law (such as deliberate and grossly | 
				
			||||
      negligent acts) or agreed to in writing, shall any Contributor be | 
				
			||||
      liable to You for damages, including any direct, indirect, special, | 
				
			||||
      incidental, or consequential damages of any character arising as a | 
				
			||||
      result of this License or out of the use or inability to use the | 
				
			||||
      Work (including but not limited to damages for loss of goodwill, | 
				
			||||
      work stoppage, computer failure or malfunction, or any and all | 
				
			||||
      other commercial damages or losses), even if such Contributor | 
				
			||||
      has been advised of the possibility of such damages. | 
				
			||||
 | 
				
			||||
   9. Accepting Warranty or Additional Liability. While redistributing | 
				
			||||
      the Work or Derivative Works thereof, You may choose to offer, | 
				
			||||
      and charge a fee for, acceptance of support, warranty, indemnity, | 
				
			||||
      or other liability obligations and/or rights consistent with this | 
				
			||||
      License. However, in accepting such obligations, You may act only | 
				
			||||
      on Your own behalf and on Your sole responsibility, not on behalf | 
				
			||||
      of any other Contributor, and only if You agree to indemnify, | 
				
			||||
      defend, and hold each Contributor harmless for any liability | 
				
			||||
      incurred by, or claims asserted against, such Contributor by reason | 
				
			||||
      of your accepting any such warranty or additional liability. | 
				
			||||
 | 
				
			||||
   END OF TERMS AND CONDITIONS | 
				
			||||
 | 
				
			||||
   APPENDIX: How to apply the Apache License to your work. | 
				
			||||
 | 
				
			||||
      To apply the Apache License to your work, attach the following | 
				
			||||
      boilerplate notice, with the fields enclosed by brackets "[]" | 
				
			||||
      replaced with your own identifying information. (Don't include | 
				
			||||
      the brackets!)  The text should be enclosed in the appropriate | 
				
			||||
      comment syntax for the file format. We also recommend that a | 
				
			||||
      file or class name and description of purpose be included on the | 
				
			||||
      same "printed page" as the copyright notice for easier | 
				
			||||
      identification within third-party archives. | 
				
			||||
 | 
				
			||||
   Copyright [yyyy] [name of copyright owner] | 
				
			||||
 | 
				
			||||
   Licensed under the Apache License, Version 2.0 (the "License"); | 
				
			||||
   you may not use this file except in compliance with the License. | 
				
			||||
   You may obtain a copy of the License at | 
				
			||||
 | 
				
			||||
       http://www.apache.org/licenses/LICENSE-2.0 | 
				
			||||
 | 
				
			||||
   Unless required by applicable law or agreed to in writing, software | 
				
			||||
   distributed under the License is distributed on an "AS IS" BASIS, | 
				
			||||
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
				
			||||
   See the License for the specific language governing permissions and | 
				
			||||
   limitations under the License. | 
				
			||||
@ -0,0 +1,84 @@
					 | 
				
			||||
{ | 
				
			||||
  "id": "qiun-data-charts", | 
				
			||||
  "displayName": "秋云 ucharts echarts 高性能跨全端图表组件", | 
				
			||||
  "version": "2.4.3-20220505", | 
				
			||||
  "description": "uCharts 新增双指缩放、新增山峰图!支持H5及APP用 ucharts echarts 渲染图表,uniapp可视化首选组件", | 
				
			||||
  "keywords": [ | 
				
			||||
    "ucharts", | 
				
			||||
    "echarts", | 
				
			||||
    "f2", | 
				
			||||
    "图表", | 
				
			||||
    "可视化" | 
				
			||||
], | 
				
			||||
  "repository": "https://gitee.com/uCharts/uCharts", | 
				
			||||
  "engines": { | 
				
			||||
    "HBuilderX": "^3.3.8" | 
				
			||||
  }, | 
				
			||||
  "dcloudext": { | 
				
			||||
    "category": [ | 
				
			||||
        "前端组件", | 
				
			||||
        "通用组件" | 
				
			||||
    ], | 
				
			||||
    "sale": { | 
				
			||||
      "regular": { | 
				
			||||
        "price": "0.00" | 
				
			||||
      }, | 
				
			||||
      "sourcecode": { | 
				
			||||
        "price": "0.00" | 
				
			||||
      } | 
				
			||||
    }, | 
				
			||||
    "contact": { | 
				
			||||
      "qq": "474119" | 
				
			||||
    }, | 
				
			||||
    "declaration": { | 
				
			||||
      "ads": "无", | 
				
			||||
      "data": "插件不采集任何数据", | 
				
			||||
      "permissions": "无" | 
				
			||||
    }, | 
				
			||||
    "npmurl": "https://www.npmjs.com/~qiun" | 
				
			||||
  }, | 
				
			||||
  "uni_modules": { | 
				
			||||
    "dependencies": [], | 
				
			||||
    "encrypt": [], | 
				
			||||
    "platforms": { | 
				
			||||
      "cloud": { | 
				
			||||
        "tcb": "y", | 
				
			||||
        "aliyun": "y" | 
				
			||||
      }, | 
				
			||||
      "client": { | 
				
			||||
        "App": { | 
				
			||||
          "app-vue": "y", | 
				
			||||
          "app-nvue": "y" | 
				
			||||
        }, | 
				
			||||
        "H5-mobile": { | 
				
			||||
          "Safari": "y", | 
				
			||||
          "Android Browser": "y", | 
				
			||||
          "微信浏览器(Android)": "y", | 
				
			||||
          "QQ浏览器(Android)": "y" | 
				
			||||
        }, | 
				
			||||
        "H5-pc": { | 
				
			||||
          "Chrome": "y", | 
				
			||||
          "IE": "y", | 
				
			||||
          "Edge": "y", | 
				
			||||
          "Firefox": "y", | 
				
			||||
          "Safari": "y" | 
				
			||||
        }, | 
				
			||||
        "小程序": { | 
				
			||||
          "微信": "y", | 
				
			||||
          "阿里": "y", | 
				
			||||
          "百度": "y", | 
				
			||||
          "字节跳动": "y", | 
				
			||||
          "QQ": "y" | 
				
			||||
        }, | 
				
			||||
        "快应用": { | 
				
			||||
          "华为": "y", | 
				
			||||
          "联盟": "y" | 
				
			||||
        }, | 
				
			||||
        "Vue": { | 
				
			||||
            "vue2": "y", | 
				
			||||
            "vue3": "y" | 
				
			||||
        } | 
				
			||||
      } | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
@ -0,0 +1,102 @@
					 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
## <font color='red'>写给uCharts使用者的一封信</font> | 
				
			||||
<font color='red'> | 
				
			||||
亲爱的用户: | 
				
			||||
 | 
				
			||||
- 由于最近上线的官网中实行了部分收费体验,收到了许多用户的使用反馈,大致反馈的问题都指向同一矛头:为何新官网的在线工具也要收费?对于这件事,我们深表歉意。由于新官网本身未提供技术文档,使得用户误以为我们对文档实行了收费。经我们连夜整改,新官网目前已经将技术文档开放出来供大家阅读使用,并免费对外开放了【演示】中的查看全端全平台的代码的功能,为此再次向所受影响的用户们致以诚恳的歉意。 | 
				
			||||
 | 
				
			||||
- 其次,我们须澄清几点,如下: | 
				
			||||
1. uCharts的插件本身遵循开源原则,并不收费,用户可自行到DCloud市场与Gitee码云上获取源码 | 
				
			||||
2. uCharts的技术文档永久对用户开放 | 
				
			||||
3. 收费内容仅针对原生工具、组件工具、定制功能以及模板市场的部分收费模板 | 
				
			||||
 | 
				
			||||
- uCharts为什么实行收费原则? | 
				
			||||
1. 服务器的费用支撑 | 
				
			||||
2. 团队的运营支出;正如你所见,我们的群里有大量的用户在请教图表配置与反馈问题,群里的每一位管理员都在花费不少精力在积极解决用户的问题,然而遇到巨大的咨询量时,我们无法及时、精准解答回复,因此,我们推出了会员优先服务 | 
				
			||||
3. 与其说模板市场是收费,倒不如说给野生用户提供了创造价值的机会,用户既可以在上面发布模板赚取费用,遇到心动的模板也能免费/付费使用 | 
				
			||||
 | 
				
			||||
- 收费不是目的,正如你们所见,用户可以申请成为[【开发者】](https://www.ucharts.cn/v2/#/agreement/developer),开发者不限制任何官网功能,并享有官方指导、开发、改造uCharts的权力,并且活动期间【返还超级会员费用】!我们想说的是,我们新版官网上线旨在希望更多的用户加入到开发者的队伍,我们共同去维护uCharts! | 
				
			||||
        | 
				
			||||
我们相信:星星之火可以燎原! | 
				
			||||
 | 
				
			||||
uCharts技术团队 | 
				
			||||
 | 
				
			||||
2022.4.23 | 
				
			||||
 | 
				
			||||
</font> | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
[](https://gitee.com/uCharts/uCharts/stargazers) | 
				
			||||
[](https://gitee.com/uCharts/uCharts/members) | 
				
			||||
[](https://www.apache.org/licenses/LICENSE-2.0.html) | 
				
			||||
[](https://www.npmjs.com/~qiun) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
## uCharts简介 | 
				
			||||
 | 
				
			||||
`uCharts`是一款基于`canvas API`开发的适用于所有前端应用的图表库,开发者编写一套代码,可运行到 Web、iOS、Android(基于 uni-app / taro )、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等更多支持 canvas API 的平台。 | 
				
			||||
 | 
				
			||||
## 官方网站 | 
				
			||||
 | 
				
			||||
## [https://www.ucharts.cn](https://www.ucharts.cn) | 
				
			||||
 | 
				
			||||
## 快速体验 | 
				
			||||
 | 
				
			||||
一套代码编到多个平台,依次扫描二维码,亲自体验uCharts图表跨平台效果!其他平台请自行编译。 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
## 致开发者 | 
				
			||||
 | 
				
			||||
感谢各位开发者`四年`来对秋云及uCharts的支持,uCharts的进步离不开各位开发者的鼓励与贡献。为更好的帮助各位开发者使用图表工具,我们推出了新版官网,增加了在线定制、问答社区、在线配置等一些增值服务,为确保您能更好的应用图表组件,建议您先`仔细阅读本页指南`以及`常见问题`,而不是下载下来`直接使用`。如仍然不能解决,请到`官网社区`或开通会员后加入`专属VIP会员群`提问将会很快得到回答。 | 
				
			||||
 | 
				
			||||
## 社群支持 | 
				
			||||
 | 
				
			||||
uCharts官方拥有4个2000人的QQ群及专属VIP会员群支持,庞大的用户量证明我们一直在努力,请各位放心使用!uCharts的开源图表组件的开发,团队付出了大量的时间与精力,经过四来的考验,不会有比较明显的bug,请各位放心使用。如果您有更好的想法,可以在`码云提交Pull Requests`以帮助更多开发者完成需求,再次感谢各位对uCharts的鼓励与支持! | 
				
			||||
 | 
				
			||||
#### 官方交流群 | 
				
			||||
- 交流群1:371774600(已满) | 
				
			||||
- 交流群2:619841586(已满) | 
				
			||||
- 交流群3:955340127(已满) | 
				
			||||
- 交流群4:641669795 | 
				
			||||
- 口令`uniapp` | 
				
			||||
 | 
				
			||||
#### 专属VIP会员群 | 
				
			||||
- 开通会员后详见【账号详情】页面中顶部的滚动通知 | 
				
			||||
- 口令`您的用户ID` | 
				
			||||
 | 
				
			||||
## 版权信息 | 
				
			||||
 | 
				
			||||
uCharts始终坚持开源,遵循 [Apache Licence 2.0](https://www.apache.org/licenses/LICENSE-2.0.html) 开源协议,意味着您无需支付任何费用,即可将uCharts应用到您的产品中。 | 
				
			||||
 | 
				
			||||
注意:这并不意味着您可以将uCharts应用到非法的领域,比如涉及赌博,暴力等方面。如因此产生纠纷或法律问题,uCharts相关方及秋云科技不承担任何责任。 | 
				
			||||
 | 
				
			||||
## 合作伙伴 | 
				
			||||
 | 
				
			||||
[](https://www.diygw.com/) | 
				
			||||
[](https://gitee.com/howcode/has-chat) | 
				
			||||
[](https://www.uviewui.com/) | 
				
			||||
[](https://ext.dcloud.net.cn/plugin?id=7088) | 
				
			||||
[](https://ext.dcloud.net.cn/publisher?id=202) | 
				
			||||
[](https://www.firstui.cn/) | 
				
			||||
[](https://ext.dcloud.net.cn/plugin?id=5169) | 
				
			||||
[](https://www.graceui.com/) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
## 更新记录 | 
				
			||||
 | 
				
			||||
详见官网指南中说明,[点击此处查看](https://www.ucharts.cn/v2/#/guide/index?id=100) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
## 相关链接 | 
				
			||||
- [uCharts官网](https://www.ucharts.cn) | 
				
			||||
- [DCloud插件市场地址](https://ext.dcloud.net.cn/plugin?id=271) | 
				
			||||
- [uCharts码云开源托管地址](https://gitee.com/uCharts/uCharts) [](https://gitee.com/uCharts/uCharts/stargazers) | 
				
			||||
- [uCharts npm开源地址](https://www.ucharts.cn) | 
				
			||||
- [ECharts官网](https://echarts.apache.org/zh/index.html) | 
				
			||||
- [ECharts配置手册](https://echarts.apache.org/zh/option.html) | 
				
			||||
- [图表组件在项目中的应用 ReportPlus数据报表](https://www.ucharts.cn/v2/#/layout/info?id=1)  | 
				
			||||
@ -0,0 +1 @@
					 | 
				
			||||
https://ide.dcloud.net.cn/build/download/0b798320-2359-11ed-a489-51530ab325eb | 
				
			||||
@ -0,0 +1 @@
					 | 
				
			||||
b1kWame9yBmby5SJKXZdMiBIfIZ7jYUx3ZnXt20I8klef9B7ZTIAFKtSJZT7FZLkKXFVDQNVUX2wOtROEOaX/V3t4RwYyf1k7E0Xj/TE+vk2wBfKxZNBHDvLI55QAMIIMMPySThZt92meigolLjrJeF/rCLHyz+C5zhHcMgibvOchaPitPiMRDXB9BbI0KIsR8qZW+OLjCc0VVYKsq9GxrMfMPA3Yc8uF0okznuTMewuJAOjLEPs9TUjxelt9RPT37gkPfd6p5nStKTDXItdpUJW8NZg3E3q4FJr03ESIHh0Q9FSjkakfoOvFD8z3Kam0RqFdqxmb+lAnaQd4t0O2w7fxFM7pfK6DcO8rFFFyA6xtwbzv0xV8RLGBNbKtfDpomOcjrmZycTdeoiAECq8Kg8uN15OKDNP6v0/FW9KLi3GPImvmYVlJnnQ8/UKi2fYDNVOSpv3BaoJAKxI3zEAuFGHgWPY2zY8ojc6GFVq04LCsu11h2/8fmYq+zdSXDIHTybuf90ocifHqkG+yluwuHcYlPtIL25A7z2gsYdKq6iJ/9vUiTD/XzJ4jS3x1KFxNW6ifqhTBA3DJnNuH8vBeBgtm/iLd5vyzZsGQIKakhQmkxdItEWFRn/wqfMeerMNhTYYeWaPnV7gQfwKIHvYCdlK32y1X7/axqr6eFUAQgW8ISwgop7LyUgHpxWS02goyeVvOPOVa3jQCe+u6lNQfVPYENB0GIW4OkrvA/5U6LcMfXnDzj3JvtFuQltZqO5/phF9SIQlJOz4xOzNXK1t9clao1Oc7ZzFIauQmiqsvsjlxhF2TyMfQ8jsbKIyDesCpq85ST0TIz2Gf9tM9lduAJv9UrIYLrQHDeSJxsUTU11zwGSZxV8zJNvIRA/GKkFv9P5lFn4NXsXnpzSIR5Fjb32xuLW1yJgUXofUv8HFrGfGH5r2pugeuqqrYhDNlzmjYTPXNR54VrPtKBpOhXP4ALAN/CbveLQ7ZDYTxeZnG/BHHWiFt+fjd1wK4S+jP0fTkY+wNbMtoeA1Cp+euAoc/0x1WS2nQSd5oN7Whf8Xhjd2JChAtMqnV5IqLX68YWaQJ6LzN2Hg25P7ElW5ZM2bSSbkG1wUOo8K7eqL+fNKdzbKol9Rv/lU1du44YQypiBdpMC6ca2YZEErE+/9uOz9Z2GJI4UH6nz+azMfNYik+LMT/ijnyOq6WlbzYaw7YTKXDMSlZRI5hpyD1QxQiIjNL3NsuGEHEVT5roIDWKhVIp9q5uBOPZ/iDgrYSYZt8nDMdaONR10Dg4QdSYw5puHkCgygiUsxC2yKlbc0rbjtcvy2M3bKaRE4uBC5BYbCBJxTYpa4xUXV6CSvF5r0crZoj4AksR+NNJcSrC97FOxlOLvDiHgx5SeawOxcIPdBXe7B1BzBNa6YlKnZ30NTXPDIDwmgkUd4BMLQJ9olF0ykprSXbNubP+sP6QflMP3UoiQwgbySGK6suahD7VWT4kvECaESW6drshh7lXGvHe9SXAYpi5K6yRfkc9LhKYU4EgFv6Gr1c/vC7bhDFP1RqcOEaOX3FIKWtaxUBZ2jK0oHue+vRKT6uguxlP+H9OeIxonpTOmlYBR7Uv3L9AHT2/dV6y3aaZ0BOyyO/mOPgfC7kBPrgl91ZtxB7wELlZS7ZuQa8E/f+Oebqjcuzf0QSm8Pv+8VOkjyuQTYyaIG/JqMuML1cou0qemukHxxT5ZA5MSvHyZfRiyDaZjQHJqseLWRTo5UM6Hbx2rG5EPX7Q5QJaDfVTVu50Cus9kqrFziOU6F6yiCaz0i1g5c+AqRRidTqtYcDXdEepN5MMYBb5SgWRoAAEPMubS3CPJlfQt9wQTZXrbSD1v6QOeuRSSIr43+XwI2yp1/jl3qYvci/FiknKnT8950KC8CbhNCFnzLpmU3RVUdscmHaKzTaES1tbK6uCmKu4fSxtknhchVTcVz7Pte5UcPruddWyTtBykrLlZS4a/vA63FPRHfW5lXo4ycxie2sso/kPb6Msb7pUiv8AAESySdrmrxx3wH/M2LPctnsoytP9RTaiPUPsV/VpDjgBo7AtKpYM8XLhhGRbova8eQlVXARNZXnocAX0KZP1hcn6hVKisBv6nDpaYbdj30Rp2YH7EVLJkd8Nt+lv0eFOO3VrHKKIX3WdMFLx3LrRWDfLq97yxtg0pzmagim+/WZkJIPxVFw+GbLBKnAdcWGETjzI/c3v7jWNoh15GWo7LC5Wv/NYg47r3LYGiJvnC+6WqleYoJ86WbofZNd0KxEyje+b0UkWV3c+8s4DGUfCo2x7UJ1NZGzNqTqaOr44zoxGldlYufLfU4Ts9B7dcNrtd1zug0KaQqqJstHW6Z+lhk9GE+qf9k3vZ2ryhXAvTAyprhuLahcUhOJmYrSZ6Mn6IobYhWat97vF/rQ3aogK+tpdXNEmeWgsNKXXqHkPwp1dELe2NJXYivn+urQEeyEjYsS5sMFniKHsYpsXuO+lWlpzFMrVT8MPfbHnBYP08+rtCIMp7tcmDWwjuNdcxhbjYHUptAP/Fb/7MMBvDdp676Psds2upmhpaKCKmyvRF61Q/uinO1n+0SZxSVRHRDAKqYzCXF4NKZD9iPZ2cv2d1RuT160MHpaQRvD5l9Tz6o3+kd3kVUOOPx1sjLvQIqUcDJra5BKFsqSo15KKa02IRryMIgOiCtPq1zKFvBwBd8Bw9xwat6m8RnkqCiCxnA3VLY8AgStCRnF7XL0dftEZfaoCeKLwFR3Pb1YbO3PCvwgvJzoY48bunfFmxGuJK3roxGfHY0luOi+1r9XP4230iXx8468stlD28nQaLYLPI4qFRGcgozPqs1Zv7zKLgKfAlTgu9JYBhZDgjHkSdQwyhM0DrQM6I+YV3rjzfszvc2O0wYIvxOhQ3fUMkIGTQJ7a/O9Bhhu+eXuw1d4F8+3FyRHjqYFgyp8u7pbZI/8EI+Bdm78kspRf5fdlRRDWYdJzCreAFCluxBbJbuPtqLiefVy8IM3fRz8FXTgok9B4oMSpe7l/eNysPPug4SbdYGXLyT1O2WZeljNTQV1nYUFVo0qD1UNS6fmiNMRika109JhurMafibzAiyHw7Nyb4hFbHsOS5G+DU5IN+5NPiNq8mXYk4JlVeUIq7BqjGmRTUx2CHC25r3q83S0MTXy7D87Vwshi/UUWUL9/71TCiQOms8RuH2/Gs9TXC0B165pcjz9MvN0DnOdk0FrWf87QYmpPAsYEx5Ls68Pqs9lIJNs4bULVfm4+T41sp8ZnCs/8QKRRnpyiPhdSqxBgLJvSDjbVWctWBtXFU0Tcclzg/KNkCZVlaj5BV9yN5UR/Efuyhv+SomkQheJ/ZLSOiGfqzT7jvqjKmaDrpT6LzTa0aj+i6648jTFpRdp6klHNmxjxBjRjA2ndb1SzXAfmSnfeQQ48ONo3wH+QkFWZVaUxpgb0/bZ4uJabapPt+G7A2O/sMsfLlbJiSfPfaMKpiC+z2kbKSxOd6im7mqsj92aUc6MTSGK6vwy5pSe/oV7jg+0bMNeoDSP0ACyyIr+xVIdkip+hFPKHRy+DcLTBwoZE8KYmgcDfov2y5QuZjP2raquYMttNS20GeWMxEp062ZkQm/VtUVlp3mAeDrJ/Gor6ozru/dQfaqIbwStmZTGpS+HvhNMAsV6jkFKiqCRjms9qWyP/Ivkir4nAWdNrP5KlidWmEo27J5+nMEyM7oITBodAQvvD25wP9rEFsmg4x9rRrjD8BSy6UKTCEZNXg/PHoRIZTrCVo+tZvIag7Irc5ly2JbBwc51QmQdO9NJnzjvzd6Q8+gHMHbw2nXGMgGOBP0gz0VyeGyZwojn62iyOaCWZ8xfUh6NlJiBryMBKWmsQiji9y2JT5t/rEzwKYudh3ja1Dn1jahBCGbi4zby8M8FiEIi/1EXrxz+nITyKwL2XqQ9RvZceZcFb+TfgP7zvJlH9bLbQjB4Je3kv/tmLYplxGoPY9STTWgss+m3jq2Tj5QKQIGqq9WiOiYFmJxVYxmPNkPyaP1OAWHb4LwEXjhsLpPjj3s/WCSMbrHBWYne2w6sFUvtntz111xyA80kLR2FjwFYRqEThvRHqWya/yRSZh1evuYQgbDRnVglf/T2r1sLpT1xuwZODlyifabE86bl3lCwAG/7GeIVQPM+BinK3eia7sEBkQwUEUbbt+831X2FBLSwqok7EON7XQtsz+AkDhPEq7OZ5dVMtJCzS3aZithwXnjfw9bRZNH0QyhQAxkyQnmVfPqJ63FAltx6ClyA0ubsESzLyXgT7oXkiuClHq5TNWn+bW+Y3WT3lbgyjajpoCaYndzHPuIhWLyoT4Pgm9vH36kadoKDjBanzZ5lsIAbg== | 
				
			||||
@ -0,0 +1,3 @@
					 | 
				
			||||
andrCertfile=D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/app-safe-pack/Test.keystore | 
				
			||||
andrCertAlias=android | 
				
			||||
andrCertPass=ep/Tdjka4Y7WYqDB6/S7dw== | 
				
			||||
@ -0,0 +1,4 @@
					 | 
				
			||||
[General] | 
				
			||||
andrCertfile=package.keystore | 
				
			||||
andrCertAlias=__UNI__915967A | 
				
			||||
andrCertPass="uWxC2M7aDUl9Tg7ZgCNKmg==" | 
				
			||||
| 
		 After Width: | Height: | Size: 5.7 KiB  | 
| 
		 After Width: | Height: | Size: 2.0 KiB  | 
@ -0,0 +1,25 @@
					 | 
				
			||||
<!DOCTYPE html> | 
				
			||||
<html lang="zh-CN"> | 
				
			||||
 | 
				
			||||
  <head> | 
				
			||||
    <meta charset="UTF-8" /> | 
				
			||||
    <script> | 
				
			||||
      var __UniViewStartTime__ = Date.now(); | 
				
			||||
      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>View</title> | 
				
			||||
    <link rel="stylesheet" href="view.css" /> | 
				
			||||
  </head> | 
				
			||||
 | 
				
			||||
  <body> | 
				
			||||
    <div id="app"></div> | 
				
			||||
    <script src="__uniappes6.js"></script> | 
				
			||||
    <script src="view.umd.min.js"></script> | 
				
			||||
    <script src="app-view.js"></script> | 
				
			||||
  </body> | 
				
			||||
 | 
				
			||||
</html> | 
				
			||||
@ -0,0 +1,8 @@
					 | 
				
			||||
 | 
				
			||||
var isReady=false;var onReadyCallbacks=[]; | 
				
			||||
var isServiceReady=false;var onServiceReadyCallbacks=[]; | 
				
			||||
var __uniConfig = {"pages":["pages/index/index","pages/user/user","pages/login/login"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#353535","selectedColor":"#5187FF","list":[{"pagePath":"pages/index/index","iconPath":"static/home.png","selectedIconPath":"static/home.png"},{"pagePath":"pages/user/user","iconPath":"static/logo.png","selectedIconPath":"static/logo.png"}]},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"Jinan_app","compilerVersion":"3.4.7","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}}; | 
				
			||||
var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true,"isTabBar":true},"window":{"backgroundTextStyle":"light","backgroundImage":"linear-gradient(to right, #FFDE28,#FF3228)","navigationBarTitleText":"消防一体化综合治理平台","navigationBarTextStyle":"white"}},{"path":"/pages/user/user","meta":{"isQuit":true,"isTabBar":true},"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor":"#317AFF","navigationBarTitleText":"","navigationBarTextStyle":"white"}},{"path":"/pages/login/login","meta":{},"window":{}}]; | 
				
			||||
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); | 
				
			||||
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); | 
				
			||||
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}}); | 
				
			||||
@ -0,0 +1 @@
					 | 
				
			||||
(function(e){function r(r){for(var n,l,i=r[0],p=r[1],a=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in p)Object.prototype.hasOwnProperty.call(p,n)&&(e[n]=p[n]);f&&f(r);while(s.length)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var p=t[i];0!==o[p]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={"app-config":0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonp"]=this["webpackJsonp"]||[],p=i.push.bind(i);i.push=r,i=i.slice();for(var a=0;a<i.length;a++)r(i[a]);var f=p;t()})([]); | 
				
			||||
@ -0,0 +1 @@
					 | 
				
			||||
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__915967A","name":"Jinan_app","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"packagename":"uni.UNI915967A","password":"","aliasname":"","keystore":"","custompermissions":true},"apple":{"devices":"universal"},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}},"orientation":["portrait-primary"],"icons":{"ios":{"prerendered":"false","iphone":{"app@2x":"","app@3x":"","spotlight@2x":"","spotlight@3x":"","settings@2x":"","settings@3x":"","notification@2x":"","notification@3x":""},"appstore":"","ipad":{"app":"","app@2x":"","proapp@2x":"","spotlight":"","spotlight@2x":"","settings":"","settings@2x":"","notification":"","notification@2x":""}},"android":{"hdpi":"","xhdpi":"","xxhdpi":"","xxxhdpi":""}},"splashscreen":{}},"allowsInlineMediaPlayback":true,"safearea":{"background":"#FFFFFF","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"3.4.7","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#353535","selectedColor":"#5187FF","list":[{"pagePath":"pages/index/index","iconPath":"static/home.png","selectedIconPath":"static/home.png"},{"pagePath":"pages/user/user","iconPath":"static/logo.png","selectedIconPath":"static/logo.png"}],"borderStyle":"rgba(0,0,0,0.4)","height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html","adid":"124065230701"}} | 
				
			||||
| 
		 After Width: | Height: | Size: 3.0 KiB  | 
| 
		 After Width: | Height: | Size: 1.9 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 3.9 KiB  | 
| 
		 After Width: | Height: | Size: 5.7 KiB  |