Browse Source

提交

master
jingbowen 2 years ago
commit
250699e391
  1. 16
      .hbuilderx/launch.json
  2. 31
      App.vue
  3. 47
      components/task/add.vue
  4. 11
      components/task/details.vue
  5. 12
      config.js
  6. 20
      index.html
  7. 54
      libs/alert.js
  8. 148
      libs/auth.js
  9. 207
      libs/request.js
  10. 30
      main.js
  11. 74
      manifest.json
  12. 116
      pages.json
  13. 564
      pages/dadui/jiancha/jiancha.vue
  14. 8
      pages/dadui/jiuyuan/jiuyuan.vue
  15. 710
      pages/index/index.vue
  16. 216
      pages/login/login.vue
  17. 277
      pages/task/details.vue
  18. 687
      pages/task/taskapply.vue
  19. 668
      pages/task/taskreceive.vue
  20. 0
      pages/user/changePassword/changePassword.vue
  21. 94
      pages/user/user.vue
  22. BIN
      static/4412.png
  23. BIN
      static/446.png
  24. BIN
      static/447.png
  25. BIN
      static/dadui/10.png
  26. BIN
      static/dadui/11.png
  27. BIN
      static/dadui/9.png
  28. BIN
      static/down.png
  29. BIN
      static/home.png
  30. BIN
      static/login/1.jpg
  31. BIN
      static/login/1.webp
  32. BIN
      static/login/banner.jpg
  33. BIN
      static/login/bottom.png
  34. BIN
      static/login/title.png
  35. BIN
      static/logo.png
  36. BIN
      static/tab/4325.png
  37. BIN
      static/tab/43251.png
  38. BIN
      static/tab/4328.png
  39. BIN
      static/tab/43281.png
  40. BIN
      static/tab/home.png
  41. BIN
      static/tab/jiancha.png
  42. BIN
      static/tab/jiuyuan.png
  43. BIN
      static/tab/user.png
  44. BIN
      static/tab/user1.png
  45. 32
      store.js
  46. 76
      uni.scss
  47. 246
      uni_modules/qiun-data-charts/changelog.md
  48. 1607
      uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue
  49. 46
      uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue
  50. 162
      uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue
  51. 170
      uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue
  52. 173
      uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue
  53. 222
      uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue
  54. 229
      uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue
  55. 36
      uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue
  56. 422
      uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js
  57. 601
      uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js
  58. 5
      uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md
  59. 7297
      uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js
  60. 18
      uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js
  61. 201
      uni_modules/qiun-data-charts/license.md
  62. 84
      uni_modules/qiun-data-charts/package.json
  63. 102
      uni_modules/qiun-data-charts/readme.md
  64. 23
      uni_modules/qiun-data-charts/static/app-plus/echarts.min.js
  65. 23
      uni_modules/qiun-data-charts/static/h5/echarts.min.js
  66. BIN
      unpackage/cache/apk/__UNI__915967A_cm.apk
  67. 1
      unpackage/cache/apk/apkurl
  68. 1
      unpackage/cache/apk/cmManifestCache.json
  69. 3
      unpackage/cache/certdata
  70. 4
      unpackage/cache/cloudcertificate/certini
  71. BIN
      unpackage/cache/cloudcertificate/package.keystore
  72. 1
      unpackage/cache/wgt/__UNI__915967A/__uniappchooselocation.js
  73. BIN
      unpackage/cache/wgt/__UNI__915967A/__uniapperror.png
  74. 1
      unpackage/cache/wgt/__UNI__915967A/__uniappes6.js
  75. 1
      unpackage/cache/wgt/__UNI__915967A/__uniappopenlocation.js
  76. 1
      unpackage/cache/wgt/__UNI__915967A/__uniapppicker.js
  77. 8
      unpackage/cache/wgt/__UNI__915967A/__uniappquill.js
  78. 1
      unpackage/cache/wgt/__UNI__915967A/__uniappquillimageresize.js
  79. 1
      unpackage/cache/wgt/__UNI__915967A/__uniappscan.js
  80. BIN
      unpackage/cache/wgt/__UNI__915967A/__uniappsuccess.png
  81. 25
      unpackage/cache/wgt/__UNI__915967A/__uniappview.html
  82. 8
      unpackage/cache/wgt/__UNI__915967A/app-config-service.js
  83. 1
      unpackage/cache/wgt/__UNI__915967A/app-config.js
  84. 7
      unpackage/cache/wgt/__UNI__915967A/app-service.js
  85. 1
      unpackage/cache/wgt/__UNI__915967A/app-view.js
  86. 1
      unpackage/cache/wgt/__UNI__915967A/manifest.json
  87. BIN
      unpackage/cache/wgt/__UNI__915967A/static/446.png
  88. BIN
      unpackage/cache/wgt/__UNI__915967A/static/447.png
  89. BIN
      unpackage/cache/wgt/__UNI__915967A/static/home.png
  90. BIN
      unpackage/cache/wgt/__UNI__915967A/static/logo.png
  91. 23
      unpackage/cache/wgt/__UNI__915967A/uni_modules/qiun-data-charts/static/app-plus/echarts.min.js
  92. 1
      unpackage/cache/wgt/__UNI__915967A/view.css
  93. 6
      unpackage/cache/wgt/__UNI__915967A/view.umd.min.js
  94. 0
      unpackage/dist/build/.automator/app-plus/.automator.json
  95. 1
      unpackage/dist/build/app-plus/__uniappchooselocation.js
  96. BIN
      unpackage/dist/build/app-plus/__uniapperror.png
  97. 1
      unpackage/dist/build/app-plus/__uniappes6.js
  98. 1
      unpackage/dist/build/app-plus/__uniappopenlocation.js
  99. 1
      unpackage/dist/build/app-plus/__uniapppicker.js
  100. 8
      unpackage/dist/build/app-plus/__uniappquill.js
  101. Some files were not shown because too many files have changed in this diff Show More

16
.hbuilderx/launch.json

@ -0,0 +1,16 @@
{ // launch.json configurations app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtypelocalremote, localremote
"version": "0.0",
"configurations": [{
"default" :
{
"launchtype" : "local"
},
"mp-weixin" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
]
}

31
App.vue

@ -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>

47
components/task/add.vue

@ -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>

11
components/task/details.vue

@ -0,0 +1,11 @@
<template>
<view class="">
456
</view>
</template>
<script>
</script>
<style>
</style>

12
config.js

@ -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
}

20
index.html

@ -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>

54
libs/alert.js

@ -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

148
libs/auth.js

@ -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

207
libs/request.js

@ -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

30
main.js

@ -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

74
manifest.json

@ -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"
}

116
pages.json

@ -0,0 +1,116 @@
{
"pages": [ //pageshttps://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": "我的"
}
]
}
}

564
pages/dadui/jiancha/jiancha.vue

@ -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>

8
pages/dadui/jiuyuan/jiuyuan.vue

@ -0,0 +1,8 @@
<template>
</template>
<script>
</script>
<style>
</style>

710
pages/index/index.vue

@ -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>

216
pages/login/login.vue

@ -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>

277
pages/task/details.vue

@ -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>

687
pages/task/taskapply.vue

@ -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>

668
pages/task/taskreceive.vue

@ -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
pages/user/changePassword/changePassword.vue

94
pages/user/user.vue

@ -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>

BIN
static/4412.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
static/446.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
static/447.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
static/dadui/10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
static/dadui/11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
static/dadui/9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
static/down.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

BIN
static/home.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/login/1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
static/login/1.webp

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
static/login/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
static/login/bottom.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
static/login/title.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
static/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
static/tab/4325.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/tab/43251.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/tab/4328.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/tab/43281.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/tab/home.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
static/tab/jiancha.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
static/tab/jiuyuan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
static/tab/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/tab/user1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

32
store.js

@ -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

76
uni.scss

@ -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;

246
uni_modules/qiun-data-charts/changelog.md

@ -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导入示例项目】。
## 初次使用如果提示未注册&lt;qiun-data-charts&gt;组件,请重启HBuilderX,如仍不好用,请重启电脑;
## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。
## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。
## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn)
## <font color=#FF0000> 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! </font>
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)
- uCharts.js 修复混合图中柱状图单独设置颜色不生效的bug
- uCharts.js 修复多Y轴单独设置fontSize时,开启canvas2d后,未对应放大字体的bug
## 2.0.0-20210418(2021-04-18)
- 秋云图表组件 增加directory配置,修复H5端history模式下如果发布到二级目录无法正确加载echarts.min.js的bug
## 2.0.0-20210416(2021-04-16)
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。
## 初次使用如果提示未注册&lt;qiun-data-charts&gt;组件,请重启HBuilderX,如仍不好用,请重启电脑;
## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。
## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。
## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn)
## <font color=#FF0000> 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! </font>
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)
- 秋云图表组件 修复APP端某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员
- 示例项目 修复APP端v-for循环某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员
- uCharts.js 修复非直角坐标系tooltip提示窗右侧超出未变换方向显示的bug
## 2.0.0-20210415(2021-04-15)
- 秋云图表组件 修复H5端发布到二级目录下echarts无法加载的bug
- 秋云图表组件 修复某些情况下echarts.off('finished')移除监听事件报错的bug
## 2.0.0-20210414(2021-04-14)
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。
## 初次使用如果提示未注册&lt;qiun-data-charts&gt;组件,请重启HBuilderX,如仍不好用,请重启电脑;
## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。
## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。
## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn)
## <font color=#FF0000> 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! </font>
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)
- 秋云图表组件 修复H5端在cli项目下ECharts引用地址错误的bug
- 示例项目 增加ECharts的formatter用法的示例(详见示例项目format-e.vue)
- uCharts.js 增加圆环图中心背景色的配置extra.ring.centerColor
- uCharts.js 修复微信小程序安卓端柱状图开启透明色后显示不正确的bug
## 2.0.0-20210413(2021-04-13)
- 秋云图表组件 修复百度小程序多个图表真机未能正确获取根元素dom尺寸的bug
- 秋云图表组件 修复百度小程序横屏模式方向不正确的bug
- 秋云图表组件 修改ontouch时,@getTouchStart@getTouchMove@getTouchEnd的触发条件
- uCharts.js 修复饼图类数据格式series属性不生效的bug
- uCharts.js 增加时序区域图 详见示例项目中ucharts.vue
## 2.0.0-20210412-2(2021-04-12)
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。
## 初次使用如果提示未注册&lt;qiun-data-charts&gt;组件,请重启HBuilderX。如仍不好用,请重启电脑,此问题已于DCloud官方确认,HBuilderX下个版本会修复。
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)
- 秋云图表组件 修复uCharts在APP端横屏模式下不能正确渲染的bug
- 示例项目 增加ECharts柱状图渐变色、圆角柱状图、横向柱状图(条状图)的示例
## 2.0.0-20210412(2021-04-12)
- 秋云图表组件 修复created中判断echarts导致APP端无法识别,改回mounted中判断echarts初始化
- uCharts.js 修复2d模式下series.textOffset未乘像素比的bug
## 2.0.0-20210411(2021-04-11)
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。
## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,并清空小程序开发者工具缓存。
## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn)
## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)
- uCharts.js 折线图区域图增加connectNulls断点续连的功能,详见示例项目中ucharts.vue
- 秋云图表组件 变更初始化方法为created,变更type2d默认值为true,优化2d模式下组件初始化后dom获取不到的bug
- 秋云图表组件 修复左右布局时,右侧图表点击坐标错误的bug,修复tooltip柱状图自定义颜色显示object的bug
## 2.0.0-20210410(2021-04-10)
- 修复左右布局时,右侧图表点击坐标错误的bug,修复柱状图自定义颜色tooltip显示object的bug
- 增加标记线及柱状图自定义颜色的demo
## 2.0.0-20210409(2021-04-08)
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn)
## 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)
- uCharts.js 修复钉钉小程序百度小程序measureText不准确的bug,修复2d模式下饼图类activeRadius为按比例放大的bug
- 修复组件在支付宝小程序端点击位置不准确的bug
## 2.0.0-20210408(2021-04-07)
- 修复组件在支付宝小程序端不能显示的bug(目前支付宝小程不能点击交互,后续修复)
- uCharts.js 修复高分屏下柱状图类,圆弧进度条 自定义宽度不能按比例放大的bug
## 2.0.0-20210407(2021-04-06)
## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn)
## 增加 通过tofix和unit快速格式化y轴的demo add by `howcode`
## 增加 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651)
## 2.0.0-20210406(2021-04-05)
# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页
## 2.0.0(2021-04-05)
# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页

1607
uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue

File diff suppressed because it is too large Load Diff

46
uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue

File diff suppressed because one or more lines are too long

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

@ -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>

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

@ -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>

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

@ -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>

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

@ -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>

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

@ -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>

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

@ -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>

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

@ -0,0 +1,422 @@
/*
* uCharts®
* 高性能跨平台图表库支持H5APP小程序微信/支付宝/百度/头条/QQ/360VueTaro等支持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;

601
uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js

@ -0,0 +1,601 @@
/*
* uCharts®
* 高性能跨平台图表库支持H5APP小程序微信/支付宝/百度/头条/QQ/360VueTaro等支持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;

5
uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md

@ -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`文件,以免被强制覆盖。

7297
uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js

File diff suppressed because it is too large Load Diff

18
uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js vendored

File diff suppressed because one or more lines are too long

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

@ -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.

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

@ -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"
}
}
}
}
}

102
uni_modules/qiun-data-charts/readme.md

@ -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>
![logo](https://img-blog.csdnimg.cn/4a276226973841468c1be356f8d9438b.png)
[![star](https://gitee.com/uCharts/uCharts/badge/star.svg?theme=gvp)](https://gitee.com/uCharts/uCharts/stargazers)
[![fork](https://gitee.com/uCharts/uCharts/badge/fork.svg?theme=gvp)](https://gitee.com/uCharts/uCharts/members)
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![npm package](https://img.shields.io/npm/v/@qiun/ucharts.svg?style=flat-square)](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图表跨平台效果!其他平台请自行编译。
![](https://www.ucharts.cn/images/web/guide/qrcode20220224.png)
## 致开发者
感谢各位开发者`四年`来对秋云及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相关方及秋云科技不承担任何责任。
## 合作伙伴
[![DIY官网](https://www.ucharts.cn/images/web/guide/links/diy-gw.png)](https://www.diygw.com/)
[![HasChat](https://www.ucharts.cn/images/web/guide/links/haschat.png)](https://gitee.com/howcode/has-chat)
[![uViewUI](https://www.ucharts.cn/images/web/guide/links/uView.png)](https://www.uviewui.com/)
[![图鸟UI](https://www.ucharts.cn/images/web/guide/links/tuniao.png)](https://ext.dcloud.net.cn/plugin?id=7088)
[![thorui](https://www.ucharts.cn/images/web/guide/links/thorui.png)](https://ext.dcloud.net.cn/publisher?id=202)
[![FirstUI](https://www.ucharts.cn/images/web/guide/links/first.png)](https://www.firstui.cn/)
[![nProUI](https://www.ucharts.cn/images/web/guide/links/nPro.png)](https://ext.dcloud.net.cn/plugin?id=5169)
[![GraceUI](https://www.ucharts.cn/images/web/guide/links/grace.png)](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) [![star](https://gitee.com/uCharts/uCharts/badge/star.svg?theme=gvp)](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)

23
uni_modules/qiun-data-charts/static/app-plus/echarts.min.js vendored

File diff suppressed because one or more lines are too long

23
uni_modules/qiun-data-charts/static/h5/echarts.min.js vendored

File diff suppressed because one or more lines are too long

BIN
unpackage/cache/apk/__UNI__915967A_cm.apk vendored

Binary file not shown.

1
unpackage/cache/apk/apkurl vendored

@ -0,0 +1 @@
https://ide.dcloud.net.cn/build/download/0b798320-2359-11ed-a489-51530ab325eb

1
unpackage/cache/apk/cmManifestCache.json vendored

@ -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==

3
unpackage/cache/certdata vendored

@ -0,0 +1,3 @@
andrCertfile=D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/app-safe-pack/Test.keystore
andrCertAlias=android
andrCertPass=ep/Tdjka4Y7WYqDB6/S7dw==

4
unpackage/cache/cloudcertificate/certini vendored

@ -0,0 +1,4 @@
[General]
andrCertfile=package.keystore
andrCertAlias=__UNI__915967A
andrCertPass="uWxC2M7aDUl9Tg7ZgCNKmg=="

BIN
unpackage/cache/cloudcertificate/package.keystore vendored

Binary file not shown.

1
unpackage/cache/wgt/__UNI__915967A/__uniappchooselocation.js vendored

File diff suppressed because one or more lines are too long

BIN
unpackage/cache/wgt/__UNI__915967A/__uniapperror.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

1
unpackage/cache/wgt/__UNI__915967A/__uniappes6.js vendored

File diff suppressed because one or more lines are too long

1
unpackage/cache/wgt/__UNI__915967A/__uniappopenlocation.js vendored

File diff suppressed because one or more lines are too long

1
unpackage/cache/wgt/__UNI__915967A/__uniapppicker.js vendored

File diff suppressed because one or more lines are too long

8
unpackage/cache/wgt/__UNI__915967A/__uniappquill.js vendored

File diff suppressed because one or more lines are too long

1
unpackage/cache/wgt/__UNI__915967A/__uniappquillimageresize.js vendored

File diff suppressed because one or more lines are too long

1
unpackage/cache/wgt/__UNI__915967A/__uniappscan.js vendored

File diff suppressed because one or more lines are too long

BIN
unpackage/cache/wgt/__UNI__915967A/__uniappsuccess.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

25
unpackage/cache/wgt/__UNI__915967A/__uniappview.html vendored

@ -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>

8
unpackage/cache/wgt/__UNI__915967A/app-config-service.js vendored

@ -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}}}});

1
unpackage/cache/wgt/__UNI__915967A/app-config.js vendored

@ -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()})([]);

7
unpackage/cache/wgt/__UNI__915967A/app-service.js vendored

File diff suppressed because one or more lines are too long

1
unpackage/cache/wgt/__UNI__915967A/app-view.js vendored

File diff suppressed because one or more lines are too long

1
unpackage/cache/wgt/__UNI__915967A/manifest.json vendored

@ -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"}}

BIN
unpackage/cache/wgt/__UNI__915967A/static/446.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
unpackage/cache/wgt/__UNI__915967A/static/447.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
unpackage/cache/wgt/__UNI__915967A/static/home.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
unpackage/cache/wgt/__UNI__915967A/static/logo.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

23
unpackage/cache/wgt/__UNI__915967A/uni_modules/qiun-data-charts/static/app-plus/echarts.min.js vendored

File diff suppressed because one or more lines are too long

1
unpackage/cache/wgt/__UNI__915967A/view.css vendored

File diff suppressed because one or more lines are too long

6
unpackage/cache/wgt/__UNI__915967A/view.umd.min.js vendored

File diff suppressed because one or more lines are too long

0
unpackage/dist/build/.automator/app-plus/.automator.json vendored

1
unpackage/dist/build/app-plus/__uniappchooselocation.js vendored

File diff suppressed because one or more lines are too long

BIN
unpackage/dist/build/app-plus/__uniapperror.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

1
unpackage/dist/build/app-plus/__uniappes6.js vendored

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/app-plus/__uniappopenlocation.js vendored

File diff suppressed because one or more lines are too long

1
unpackage/dist/build/app-plus/__uniapppicker.js vendored

File diff suppressed because one or more lines are too long

8
unpackage/dist/build/app-plus/__uniappquill.js vendored

File diff suppressed because one or more lines are too long

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

Loading…
Cancel
Save