This commit is contained in:
cclu 2023-04-03 19:05:18 +08:00
parent 51c3bbee2c
commit 76eeba0bfc
54 changed files with 2100 additions and 1014 deletions

View File

@ -191,7 +191,7 @@ function addUserBehavior(obj) {
*/
async function getFieldEnumByField(params) {
if (!params.FieldExplainField) return null
// 缓存了上次请求的数据 如果字段一致 则直接返回缓存数据 否则请求
// 缓存了上次请求的数据 如果字段一致 则直接返回缓存数据 否则请求
// 可优化:根据有效期判断是否再次请求
if (!this.dataMap) {
this.dataMap = {}
@ -239,6 +239,8 @@ function getThisMonthDay(value){
return howDay
}
// 视频播放
const EZUIPlayer = require('./ezuikit.js');

View File

@ -1,15 +1,15 @@
<template>
<view class="warning-image-box">
<block v-if="!isConnect">
<image class="no-wifi" src="../static/images/no-wifi.png" mode="aspectFit"></image>
<image class="no-wifi" src="https://eshangtech.com/ShopICO/ahyd-BID/no-wifi.png" mode="aspectFit"></image>
<text>网络未连接</text>
</block>
<block v-else-if="!isLoading && !noData">
<image class="no-data" src="../static/images/no-data.png" mode="aspectFit"></image>
<image class="no-data" src="https://eshangtech.com/ShopICO/ahyd-BID/no-data.png" mode="aspectFit"></image>
<text>{{text || '数据空空'}}</text>
</block>
<slot ></slot>
</view>
</template>
@ -17,10 +17,10 @@
import { mapGetters} from 'vuex'
export default {
props: ['noData','text'],
data() {
return {
}
},
computed:{
@ -30,7 +30,7 @@
})
},
methods: {
}
}
</script>

View File

@ -118,6 +118,12 @@
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
},
{
"path": "planMonth",
"style": {
"navigationBarTitleText": ""
}
}
]
},
@ -198,39 +204,6 @@
}
]
},
{
"root": "pages/mbwa",
"pages": [
{
"path": "mbwa",
"style":
{
"navigationBarTitleText": "走动式管理"
}
},
{
"path": "mbwaUnCheck",
"style":
{
"navigationBarTitleText": "未检点位"
}
},
{
"path": "mbwaDetail",
"style":
{
"navigationBarTitleText": "走动式管理"
}
},
{
"path": "mbwaUpload",
"style":
{
"navigationBarTitleText": "上传走动式管理"
}
}
]
},
{
"root": "pages/serviceAreaReimbursement",
"pages": [
@ -280,74 +253,6 @@
}
]
},
{
"root": "pages/askForLeave",
"pages": [
{
"path": "askForLeave",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "请假加班"
}
},
{
"path": "detail",
"style":
{
"navigationBarTitleText": "请假详情"
}
},
{
"path": "newLeave",
"style":
{
"navigationBarTitleText": "申请请假"
}
},
{
"path": "newLeave2",
"style":
{
"navigationBarTitleText": "申请请假"
}
}
]
},
{
"root": "pages/officialDocManagement",
"pages": [
{
"path": "officialDocManagement",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "公文阅办"
}
},
{
"path": "detail",
"style":
{
"navigationBarTitleText": "公文阅办"
}
},
{
"path": "readerList",
"style":
{
"navigationBarTitleText": "公文阅办"
}
},
{
"path": "circulate",
"style":
{
"navigationBarTitleText": "阅办记录"
}
}
]
},
{
"root": "pages/businessApproval",
"pages": [
@ -508,26 +413,6 @@
}
]
},
{
"root": "pages/publicity",
"pages": [
{
"path": "publicity",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "阳光公示"
}
},
{
"path": "publicityDetail",
"style":
{
"navigationBarTitleText": "阳光公示"
}
}
]
},
{
"root": "pages/expenseApproval",
"pages": [
@ -569,146 +454,6 @@
}
}
]
},
{
"root": "pages/autoTest/serverpartshoptotalsummary",
"pages": [
{
"path": "index",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "业主门店数量汇总"
}
},
{
"path": "detail",
"style":
{
"navigationBarTitleText": "业主门店数量汇总详情"
}
}
]
},
{
"root": "pages/autoTest/shopmobilesummary",
"pages": [
{
"path": "index",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "门店移动支付汇总"
}
},
{
"path": "detail",
"style":
{
"navigationBarTitleText": "门店移动支付汇总详情"
}
}
]
},
{
"root": "pages/autoTest/endaccountreport",
"pages": [
{
"path": "index",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "服务区营收数据汇总"
}
},
{
"path": "detail",
"style":
{
"navigationBarTitleText": "服务区营收数据汇总详情"
}
}
]
},
{
"root": "pages/autoTest/abnormalauditreport",
"pages": [
{
"path": "index",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "服务区现场稽核异常汇总"
}
},
{
"path": "detail",
"style":
{
"navigationBarTitleText": "服务区现场稽核异常汇总详情"
}
}
]
},
{
"root": "pages/autoTest/serverpartreport",
"pages": [
{
"path": "index",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "服务区营收汇总"
}
},
{
"path": "detail",
"style":
{
"navigationBarTitleText": "服务区营收汇总详情"
}
}
]
},
{
"root": "pages/autoTest/abnormalauditsummary",
"pages": [
{
"path": "index",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "现场稽核异常表服务区站点汇总"
}
},
{
"path": "detail",
"style":
{
"navigationBarTitleText": "现场稽核异常表服务区站点汇总详情"
}
}
]
},
{
"root": "pages/autoTest/abnormalaudit",
"pages": [
{
"path": "index",
"style":
{
"enablePullDownRefresh": true,
"navigationBarTitleText": "现场稽核异常表"
}
},
{
"path": "detail",
"style":
{
"navigationBarTitleText": "现场稽核异常表详情"
}
}
]
}
],
"globalStyle": {

View File

@ -5,7 +5,7 @@
<p class="box-top">
<view class="item-title">日期<text style="color:#333;font-size:24rpx;">{{data.OPERATE_DATE}}</text></view>
<text style="color:#F27B4C;font-size:24rpx;">{{stateEmun[data.PERMISSIONAPPLY_STATE]}}</text>
</p>
</p>
<BaseDetail :baseData="data"/>
<view class="card">
<view class="title-row">
@ -16,7 +16,7 @@
<view class="row">
<!-- 服务区 -->
<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAiCAYAAAA3WXuFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTkxNUE3MkRDNURDMTFFQzlBOEFDQUQwNEEzNEE3MjAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTkxNUE3MkNDNURDMTFFQzlBOEFDQUQwNEEzNEE3MjAiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzFBRTY4QkE4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzFBRTY4QkI4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7WAcXUAAACkklEQVR42uyWW4iNURTHz2Eil2JM0aSJJJcHJZfCg1Au8TAPyiUaYiLKTELJXWYoeXCJIgkZyYNBichlHlCEEg+SmkzMuKQRcYQ5frv+R8v2nXO+5pyjKd+qX2fv/e3v2/+z99prrXgymYx1JOsU62AWCYoERYIKbUWpRuXJ5mwByT1/Aw/hLNQdrSj9wXvu2VA4DK2wAx6EWHssbIXtfOd+ajCeCowhBPl2B2bAJ5gENzX+CsZAS4Z3l8AGuK3+NUSd+mOHjJ2A4wHjPWAwrIQhMAFqocqb1x/qJfKb96wL7IVFcAC6wU+YBWkFNaL2Vrq/xk46sfckahlshqfQBGWaNg6OaGFro2GF2jPhEiyEKe12asR+5Oegul3lC++gHL6YqRWwxnu9l2mPgPVwkW8+z/WWvTDtPvp9pH9rbbf8LGZ2xdpLqMnHtS8z7fem7Xxno/f9MzAMZsMqjV+B6e7Y2Z3mnAThQz2NIyfkT9Z2wWnvmC7AcPXrtFNXA5w+0Kl7s+jAgPG+cspqxZ2YfOlzQLxaqvkJHZm7ABN1hNs0J3NgNFYtspmLIZvSPHNCpkKxRFSq/wS+5jN1JBQQl8Nkzj+RYW5n+c8cc6yrYXGo1GFsn4KXb+5Kf3DpIqR450vTTLB1F6FUKeYZ3A0rqJVFG3PMkfNgndr74ZCC5w1F63rFr6Z/ke1HwjHjZ2vVbnCJVO1+cB66F1pQiRZyOeqt/Oe7eV6rXXI2ygnnRscLJahIZckAaIP58Nqb4xLpApUxzuYq6xdE0B6TJLeYnfCtRaLa1K9hl8rzLWi8iV2XYWeW+ddVyP3O2UG3rCFVfrRD0GPVUMUqvsIUe07QIFUJ5/6qGKMiPxIUCfpfBP0SYADhDaNPYUPNhAAAAABJRU5ErkJggg==" mode="aspectFit" style="height: 36rpx;width:64rpx"></image>
<view class="desc">
{{data.SERVERPART_NAME ||'-'}}
</view>
@ -24,13 +24,13 @@
<view class="row">
<!-- 门店 -->
<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAiCAYAAAA3WXuFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODk2MDIzMEJDNURDMTFFQzlBQjFGOUU3Qzg3QjAwQjUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODk2MDIzMEFDNURDMTFFQzlBQjFGOUU3Qzg3QjAwQjUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzFBRTY4QkE4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzFBRTY4QkI4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7qjobvAAAD/klEQVR42uxYXYhVVRRea59z7rm3rqPTHUoFE0nRMMp5aCJ0EitJUhPsDxkHKYgeAhMEKcyXqEgKisinRDBGbBApGEXFGsoZ8KEgHxPJBxEx5RpCc5o75+y1+vaod+69Z+6M84vQbGbftX/WPuvba639nX2GVZXupWLoHiszgEYr/p3Ga0eIjrxKtOFQkVTcCHJLgZeVlJkMxhJi8iWhAY2x0qOBrMnn+83H0HkdiiEUT4kNd3AmuWolpsAzZPEM/OKZQtai7QkZhVmXu+6hmBW0j7cXqgGNozyYL5mTwNgMMLdGAMz4pRYl73n0Lk5nyBZk2D8D2Zye0kUsSQ8aS6cL0JIgCEczON8n/gVy+VQDepx8cwYBWngXug+ppZ8hV0wVoKd9I87A3Jrx7xOmFkmkGWnaURO+JiPSjUbLZANaq0ZOQzZW26NP8bsZ9VfUc6jtALW7BlQjCbm1rZMFaLNR6WLi+4dw4E90Vy5beN+dMM+dYJ8dQ1Dfn4VPROVdqEnFMxqgdwLyuYkCehMU1EkMjikXtsz8di7X9Bk6HuqHqFdQr6PudVQS2b6vVPgtp1tehQ2BurrQXDdeQDvBYPsruQr8FZPYtn9u2m/QzfxbKn6H0T1I8nkw2QSru/KPFI9iLuslcgD9tsE1QyVnlH+A3DhWQB/BC59zmfEGSyRGNnGQ7UQ7H5WKxyBfGWbtS3kvfxJyVtwfdTLpy7hR9A85mEPE+2idtSlADsDXCNPu6tylm3jIOl98lwdN+QbTDcW1dX3LvFpC/hGtB0oxdQnxeryA+oamKYD3D6PZNhIgb31H8VtYf6dG55on3hq81xwZPqwy4OSTox4FpZYgzDlynC8s3SyCDfDf1e9RcxDyjWEBRf3F/dj11pqtXkpIn0nY/o7Oo/BSLwwtGwN3PRZmTC/kYjKZs2LMs26DFahxKAbztD0FCG6sAUPnWUutnprzaD+F+R4EdMHY3zS6CPFxXn1CbHyOE1qNFLhc6RRD/GUKEGJ8tiJnfrNh2Go5ewndF5j1J8jCBG4Gc0mtY/lVFJg/bBI7krxQtscape5DwmYDK28xlAyYKOlUlYjY3wL1g+CQoI6h1q6thd7KgY0dxVUQPelEpzk+mVPudBnfP2HjeKUX+O9h87MRubKH+M4l/8VDN9DBRcxdw6KEbM7fbth8MRJXAQwPNw5Qdb8cHC/BI9s0Tg4DEOntVDrW3lifh/S+DAHM3qm44rojj3vjPi/I3C0xTsc1G6EY9A2PbN1UvQ+np3ANqDIgbxwfjLcTuHZs5djDKOmvjnGWHgD4n3wocrqWpjBzbqQtpogxtWoPSOoDKDdM6vki+ousbK8Ldea/HzOAJlj+E2AAkKJgt+Zq9g4AAAAASUVORK5CYII=" mode="aspectFit" style="height: 36rpx;width:64rpx;"></image>
<view class="desc">
{{data.APPLYSHOP_NAME||'-'}}
</view>
</view>
</view>
<view class="card">
<view class="title-row">
<view class="title">
@ -51,7 +51,7 @@
</view>
<view class="desc" v-if="personImges && personImges.length>0">
<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAABSCAMAAADEi7K1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAHCUExURUdwTFKb5IW8/4W8/1ag4lWe21WZ3YS8/1eg5Feh5IW8/4O6/4W6/4W8/4S8/////4W8/4S8/4W8/4W8/4O9/4S8/4W8/1Cf34W8/4e9/4W8/4S8/4W7/4W5/4W8/4S7/1Wf34W9/4W8/4W8/4e//4S9/4a7/4a7/5K2/4W8/4W8/4a8/4W4/6qq/4W8/02Z5oW8/1yl52Wp7FWi4IW8/////1Ke4LPV//D3/8Le/+nz/2ir7Vuk5rvZ/4zA/+Xx/4a9/4i+//7+//3+/4/C/6rQ/9Xo/93s/+rz/5LD//r8/5bF/4e9/+bx/+Du/+/2//X6/9Pn/5DC/57K/8jh//v9//n8/8zj/22u8Pz9//j7/3i098ni/5zJ/5/K/5rH/8nh/4u///b6/4G5/I3A/2qs7tDl/+v0/6HL/1uj5W+v8c7k/83k/8/k/6LM/+z1/6XN/+Hv/+31/9Tn/7DU/4q//12k52Cm6Xm1+LfY/8bf/5PE//L4/1Oe4HKx9LHU/9rr/5HD/6vR/2Kn6mut79bp/6fP/67S/9jp/3y2+a/T/8Ld/9/u/63S/4/B/8Pe/9/t/5nH/+jy//T5/7DT/9nq/6g8kSsAAAA0dFJOUwAc8ZjvFQ+g6N/eJUP5nAH3bsWfI1faEMJG1onbLME8GMT4RSQ6pnwH7MN2GQO2Cv22uCHmQd0iAAACIElEQVRYw+3Y+VPTQBQH8GBVqBZBBG/k8kRRxJeAgpC2FAoW0BZBvDhUQDkUlENBReS+Bf1/3TTSNpltunm7P3TGfn96M7vzmWQ2u9l5kqTF5TiZDawpv31LipfcC2ArNc7DcaRLB8AmpcSxjtqVCEW3sooAQVGtEkBRNOsYkqJYR7CU4jxlojLRlJJxyEgBnjJbPJTJ4qKMFh9lsBDUpEK3ENRPxWAVclBvDJRyMA1PTSt0C0HBW7qFoZ4pVAtDwROqhaLg3VeKhaNgdcps3cFSAK++LVTHpgJPmZOeopKG+rRRZZ33/Q/YqBE5cToGWSifzJK2AAO1yETJowxUCxv1nYG692+u9/nml674VKUN6jOp18RQblKrzUKoIKl7vUKohgCow2JeUG5rGJAFUdbhpVqHRFF1tfBIDOV/TT6PjyKo8XptWF3hp6qa9HH3HC81Gznt3I0IyhMtH3ZHZ0yM2aZamxr3y6cvYqfct0uRpVfX9Qdrfgk8FJFIlvpI+fgD8FC6BDBTJ3t9wEPtS2TBOpeBh2qptfp72qH89SCKspZsUZB01A6ZF7KmtENrnoHa1nZc+12L/NG25w8GamuP5WjvYboU/dpNCHnaVcZbX+h3pWV8wdS1NkX919QJTCuMnnOYBh09xzFtQ3rypTOCpLOSlJUjhspDNX5puRxu8BQIsG5e1ftOF09zQtlXyiJdOpfjfDHWuVZ6/UYY+Qv6cKIzp0aufwAAAABJRU5ErkJggg==" mode="aspectFit" style="height: 42rpx;width:37rpx;" @click="priviewImages(1)" />
</view>
</view>
<view class="row">
@ -68,21 +68,21 @@
</view>
<view class="desc">
<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAABSCAMAAADEi7K1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAHCUExURUdwTFKb5IW8/4W8/1ag4lWe21WZ3YS8/1eg5Feh5IW8/4O6/4W6/4W8/4S8/////4W8/4S8/4W8/4W8/4O9/4S8/4W8/1Cf34W8/4e9/4W8/4S8/4W7/4W5/4W8/4S7/1Wf34W9/4W8/4W8/4e//4S9/4a7/4a7/5K2/4W8/4W8/4a8/4W4/6qq/4W8/02Z5oW8/1yl52Wp7FWi4IW8/////1Ke4LPV//D3/8Le/+nz/2ir7Vuk5rvZ/4zA/+Xx/4a9/4i+//7+//3+/4/C/6rQ/9Xo/93s/+rz/5LD//r8/5bF/4e9/+bx/+Du/+/2//X6/9Pn/5DC/57K/8jh//v9//n8/8zj/22u8Pz9//j7/3i098ni/5zJ/5/K/5rH/8nh/4u///b6/4G5/I3A/2qs7tDl/+v0/6HL/1uj5W+v8c7k/83k/8/k/6LM/+z1/6XN/+Hv/+31/9Tn/7DU/4q//12k52Cm6Xm1+LfY/8bf/5PE//L4/1Oe4HKx9LHU/9rr/5HD/6vR/2Kn6mut79bp/6fP/67S/9jp/3y2+a/T/8Ld/9/u/63S/4/B/8Pe/9/t/5nH/+jy//T5/7DT/9nq/6g8kSsAAAA0dFJOUwAc8ZjvFQ+g6N/eJUP5nAH3bsWfI1faEMJG1onbLME8GMT4RSQ6pnwH7MN2GQO2Cv22uCHmQd0iAAACIElEQVRYw+3Y+VPTQBQH8GBVqBZBBG/k8kRRxJeAgpC2FAoW0BZBvDhUQDkUlENBReS+Bf1/3TTSNpltunm7P3TGfn96M7vzmWQ2u9l5kqTF5TiZDawpv31LipfcC2ArNc7DcaRLB8AmpcSxjtqVCEW3sooAQVGtEkBRNOsYkqJYR7CU4jxlojLRlJJxyEgBnjJbPJTJ4qKMFh9lsBDUpEK3ENRPxWAVclBvDJRyMA1PTSt0C0HBW7qFoZ4pVAtDwROqhaLg3VeKhaNgdcps3cFSAK++LVTHpgJPmZOeopKG+rRRZZ33/Q/YqBE5cToGWSifzJK2AAO1yETJowxUCxv1nYG692+u9/nml674VKUN6jOp18RQblKrzUKoIKl7vUKohgCow2JeUG5rGJAFUdbhpVqHRFF1tfBIDOV/TT6PjyKo8XptWF3hp6qa9HH3HC81Gznt3I0IyhMtH3ZHZ0yM2aZamxr3y6cvYqfct0uRpVfX9Qdrfgk8FJFIlvpI+fgD8FC6BDBTJ3t9wEPtS2TBOpeBh2qptfp72qH89SCKspZsUZB01A6ZF7KmtENrnoHa1nZc+12L/NG25w8GamuP5WjvYboU/dpNCHnaVcZbX+h3pWV8wdS1NkX919QJTCuMnnOYBh09xzFtQ3rypTOCpLOSlJUjhspDNX5puRxu8BQIsG5e1ftOF09zQtlXyiJdOpfjfDHWuVZ6/UYY+Qv6cKIzp0aufwAAAABJRU5ErkJggg==" mode="aspectFit" style="height: 42rpx;width:37rpx;" @click="priviewImages(2)" />
</view>
</view>
</view>
<view class="card">
<view class="row jc-between" style="padding-top: 0;">
<view style="color: #2f93e7;">审批意见</view>
<view style="color: #2f93e7;">审批意见</view>
<text v-if="data.APPOVED_DATE" class="item-title">{{$util.cutDate( data.APPOVED_DATE,'YYYY/MM/DD hh:ss')}}</text>
</view>
<view class="approved-reason">
<view class="desc">
<textarea
<textarea
:value="approvalReason"
placeholder="请输入"
placeholder="请输入"
placeholder-style="color:#969EA4;line-height:2;padding-top:10rpx;"
auto-height
@blur="changeReason"
@ -126,7 +126,7 @@
<view class="row">
<!-- 服务区 -->
<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAiCAYAAAA3WXuFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTkxNUE3MkRDNURDMTFFQzlBOEFDQUQwNEEzNEE3MjAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTkxNUE3MkNDNURDMTFFQzlBOEFDQUQwNEEzNEE3MjAiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzFBRTY4QkE4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzFBRTY4QkI4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7WAcXUAAACkklEQVR42uyWW4iNURTHz2Eil2JM0aSJJJcHJZfCg1Au8TAPyiUaYiLKTELJXWYoeXCJIgkZyYNBichlHlCEEg+SmkzMuKQRcYQ5frv+R8v2nXO+5pyjKd+qX2fv/e3v2/+z99prrXgymYx1JOsU62AWCYoERYIKbUWpRuXJ5mwByT1/Aw/hLNQdrSj9wXvu2VA4DK2wAx6EWHssbIXtfOd+ajCeCowhBPl2B2bAJ5gENzX+CsZAS4Z3l8AGuK3+NUSd+mOHjJ2A4wHjPWAwrIQhMAFqocqb1x/qJfKb96wL7IVFcAC6wU+YBWkFNaL2Vrq/xk46sfckahlshqfQBGWaNg6OaGFro2GF2jPhEiyEKe12asR+5Oegul3lC++gHL6YqRWwxnu9l2mPgPVwkW8+z/WWvTDtPvp9pH9rbbf8LGZ2xdpLqMnHtS8z7fem7Xxno/f9MzAMZsMqjV+B6e7Y2Z3mnAThQz2NIyfkT9Z2wWnvmC7AcPXrtFNXA5w+0Kl7s+jAgPG+cspqxZ2YfOlzQLxaqvkJHZm7ABN1hNs0J3NgNFYtspmLIZvSPHNCpkKxRFSq/wS+5jN1JBQQl8Nkzj+RYW5n+c8cc6yrYXGo1GFsn4KXb+5Kf3DpIqR450vTTLB1F6FUKeYZ3A0rqJVFG3PMkfNgndr74ZCC5w1F63rFr6Z/ke1HwjHjZ2vVbnCJVO1+cB66F1pQiRZyOeqt/Oe7eV6rXXI2ygnnRscLJahIZckAaIP58Nqb4xLpApUxzuYq6xdE0B6TJLeYnfCtRaLa1K9hl8rzLWi8iV2XYWeW+ddVyP3O2UG3rCFVfrRD0GPVUMUqvsIUe07QIFUJ5/6qGKMiPxIUCfpfBP0SYADhDaNPYUPNhAAAAABJRU5ErkJggg==" mode="aspectFit" style="height: 36rpx;width:64rpx"></image>
<view class="desc">
{{data.SERVERPART_NAME ||'-'}}
</view>
@ -134,16 +134,16 @@
<view class="row">
<!-- 门店 -->
<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAiCAYAAAA3WXuFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODk2MDIzMEJDNURDMTFFQzlBQjFGOUU3Qzg3QjAwQjUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODk2MDIzMEFDNURDMTFFQzlBQjFGOUU3Qzg3QjAwQjUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzFBRTY4QkE4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzFBRTY4QkI4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7qjobvAAAD/klEQVR42uxYXYhVVRRea59z7rm3rqPTHUoFE0nRMMp5aCJ0EitJUhPsDxkHKYgeAhMEKcyXqEgKisinRDBGbBApGEXFGsoZ8KEgHxPJBxEx5RpCc5o75+y1+vaod+69Z+6M84vQbGbftX/WPuvba639nX2GVZXupWLoHiszgEYr/p3Ga0eIjrxKtOFQkVTcCHJLgZeVlJkMxhJi8iWhAY2x0qOBrMnn+83H0HkdiiEUT4kNd3AmuWolpsAzZPEM/OKZQtai7QkZhVmXu+6hmBW0j7cXqgGNozyYL5mTwNgMMLdGAMz4pRYl73n0Lk5nyBZk2D8D2Zye0kUsSQ8aS6cL0JIgCEczON8n/gVy+VQDepx8cwYBWngXug+ppZ8hV0wVoKd9I87A3Jrx7xOmFkmkGWnaURO+JiPSjUbLZANaq0ZOQzZW26NP8bsZ9VfUc6jtALW7BlQjCbm1rZMFaLNR6WLi+4dw4E90Vy5beN+dMM+dYJ8dQ1Dfn4VPROVdqEnFMxqgdwLyuYkCehMU1EkMjikXtsz8di7X9Bk6HuqHqFdQr6PudVQS2b6vVPgtp1tehQ2BurrQXDdeQDvBYPsruQr8FZPYtn9u2m/QzfxbKn6H0T1I8nkw2QSru/KPFI9iLuslcgD9tsE1QyVnlH+A3DhWQB/BC59zmfEGSyRGNnGQ7UQ7H5WKxyBfGWbtS3kvfxJyVtwfdTLpy7hR9A85mEPE+2idtSlADsDXCNPu6tylm3jIOl98lwdN+QbTDcW1dX3LvFpC/hGtB0oxdQnxeryA+oamKYD3D6PZNhIgb31H8VtYf6dG55on3hq81xwZPqwy4OSTox4FpZYgzDlynC8s3SyCDfDf1e9RcxDyjWEBRf3F/dj11pqtXkpIn0nY/o7Oo/BSLwwtGwN3PRZmTC/kYjKZs2LMs26DFahxKAbztD0FCG6sAUPnWUutnprzaD+F+R4EdMHY3zS6CPFxXn1CbHyOE1qNFLhc6RRD/GUKEGJ8tiJnfrNh2Go5ewndF5j1J8jCBG4Gc0mtY/lVFJg/bBI7krxQtscape5DwmYDK28xlAyYKOlUlYjY3wL1g+CQoI6h1q6thd7KgY0dxVUQPelEpzk+mVPudBnfP2HjeKUX+O9h87MRubKH+M4l/8VDN9DBRcxdw6KEbM7fbth8MRJXAQwPNw5Qdb8cHC/BI9s0Tg4DEOntVDrW3lifh/S+DAHM3qm44rojj3vjPi/I3C0xTsc1G6EY9A2PbN1UvQ+np3ANqDIgbxwfjLcTuHZs5djDKOmvjnGWHgD4n3wocrqWpjBzbqQtpogxtWoPSOoDKDdM6vki+ousbK8Ldea/HzOAJlj+E2AAkKJgt+Zq9g4AAAAASUVORK5CYII=" mode="aspectFit" style="height: 36rpx;width:64rpx;" />
<view class="desc">
{{data.APPLYSHOP_NAME||'-'}}
</view>
</view>
</view>
<view class="uni-flex jc-between" style="padding:24rpx 28rpx;line-height: 3.4;">
<view class="title">门店授权</view>
<view>
<view>
<span v-if="selectShopids.length">
已选
<span style="color: #007AFF;">{{selectShopids.length}}</span>
@ -151,13 +151,13 @@
</span>
</view>
</view>
<ShopList :data="shops" @changeValues="changeValues"/>
<view class="button-box" >
<span @click="showPopupBottom=false" ><image src="@/static/images/cy-btn.png" mode="aspectFit"></image> 返回</span>
<span @click="showPopupBottom=false" ><image src="https://eshangtech.com/ShopICO/ahyd-BID/cy-btn.png" mode="aspectFit"></image> 返回</span>
<span @click="savaShops"><image src="@/static/images/sh-btn.png" mode="aspectFit"></image>确认授权</span>
</view>
</view>
</view>
</view>
</template>
@ -170,13 +170,13 @@
props: {
data: {
type: Object,
},
businessId: {
type: String,
required: true
},
approvalData:{ //
approvalData:{ //
type: Object,
required: false
},
@ -229,7 +229,7 @@
changeValues(values){
let list = [] // this.selectShopids
let _this =this
if(values.length){
_this.shops.forEach(n=>{
const serverpartShop = values.filter(m=> m.split('-')[0]==n.node.value )
@ -269,16 +269,16 @@
ProvinceCode: data.OWNERUNIT_ID,
ServerpartId: data.SERVERPART_IDS
}).then(res=>{
if(res.Result_Code!==100) return
if(res.Result_Code!==100) return
_this.shops = res.Result_Data.List
})
},
savaShops() {
let _this = this
if(!this.selectShopids.length){
uni.showToast({ title: '请选择需要授权的门店' ,icon:'none'})
return
return
}
if(_this.isloading) return
uni.showLoading({
@ -313,7 +313,7 @@
success: function (res) {
if (res.confirm) {
_this.$util.toNextRoute('reLaunch', "/pages/authorityApproval/index")
}
}
}
})
})
@ -322,7 +322,7 @@
let _this = this
if(!this.approvalReason){
uni.showToast({ title: '请填写否决意见' ,icon:'none'})
return
return
}
if(_this.isloading) return
uni.showLoading({
@ -357,14 +357,14 @@
if (res.confirm) {
// _this.$emit('refresh')
_this.$util.toNextRoute('reLaunch', "/pages/authorityApproval/index")
}
}
}
})
})
}
},
}
</script>
@ -375,8 +375,8 @@
border-radius: 12rpx;
margin: 24rpx 24rpx 24rpx;
padding: 24rpx;
box-shadow: 0px 4px 12px 0px rgba(225,225,225,0.56);
box-shadow: 0px 4px 12px 0px rgba(225,225,225,0.56);
.row,.title-row {
display flex;
align-items center
@ -410,7 +410,7 @@
padding-top: 0
padding-bottom: 0
}
}
.row +.row {
padding-top: 0

View File

@ -5,7 +5,7 @@
<p class="box-top">
<view class="item-title">日期<text style="color:#333;font-size:24rpx;">{{data.OPERATE_DATE}}</text></view>
<text style="color:#F27B4C;font-size:24rpx;">{{stateEmun[data.PERMISSIONAPPLY_STATE]}}</text>
</p>
</p>
<BaseDetail :baseData="data"/>
<view class="card">
<view class="title-row">
@ -20,7 +20,7 @@
{{data.SERVERPART_NAME ||'-'}}
</view>
</view>
<view class="row"> <!-- 门店 -->
<view class="row"> <!-- 门店 -->
<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAiCAYAAAA3WXuFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODk2MDIzMEJDNURDMTFFQzlBQjFGOUU3Qzg3QjAwQjUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODk2MDIzMEFDNURDMTFFQzlBQjFGOUU3Qzg3QjAwQjUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzFBRTY4QkE4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzFBRTY4QkI4ODM0MTFFOTgyRTJFNzExNDAyMDkyOEMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7qjobvAAAD/klEQVR42uxYXYhVVRRea59z7rm3rqPTHUoFE0nRMMp5aCJ0EitJUhPsDxkHKYgeAhMEKcyXqEgKisinRDBGbBApGEXFGsoZ8KEgHxPJBxEx5RpCc5o75+y1+vaod+69Z+6M84vQbGbftX/WPuvba639nX2GVZXupWLoHiszgEYr/p3Ga0eIjrxKtOFQkVTcCHJLgZeVlJkMxhJi8iWhAY2x0qOBrMnn+83H0HkdiiEUT4kNd3AmuWolpsAzZPEM/OKZQtai7QkZhVmXu+6hmBW0j7cXqgGNozyYL5mTwNgMMLdGAMz4pRYl73n0Lk5nyBZk2D8D2Zye0kUsSQ8aS6cL0JIgCEczON8n/gVy+VQDepx8cwYBWngXug+ppZ8hV0wVoKd9I87A3Jrx7xOmFkmkGWnaURO+JiPSjUbLZANaq0ZOQzZW26NP8bsZ9VfUc6jtALW7BlQjCbm1rZMFaLNR6WLi+4dw4E90Vy5beN+dMM+dYJ8dQ1Dfn4VPROVdqEnFMxqgdwLyuYkCehMU1EkMjikXtsz8di7X9Bk6HuqHqFdQr6PudVQS2b6vVPgtp1tehQ2BurrQXDdeQDvBYPsruQr8FZPYtn9u2m/QzfxbKn6H0T1I8nkw2QSru/KPFI9iLuslcgD9tsE1QyVnlH+A3DhWQB/BC59zmfEGSyRGNnGQ7UQ7H5WKxyBfGWbtS3kvfxJyVtwfdTLpy7hR9A85mEPE+2idtSlADsDXCNPu6tylm3jIOl98lwdN+QbTDcW1dX3LvFpC/hGtB0oxdQnxeryA+oamKYD3D6PZNhIgb31H8VtYf6dG55on3hq81xwZPqwy4OSTox4FpZYgzDlynC8s3SyCDfDf1e9RcxDyjWEBRf3F/dj11pqtXkpIn0nY/o7Oo/BSLwwtGwN3PRZmTC/kYjKZs2LMs26DFahxKAbztD0FCG6sAUPnWUutnprzaD+F+R4EdMHY3zS6CPFxXn1CbHyOE1qNFLhc6RRD/GUKEGJ8tiJnfrNh2Go5ewndF5j1J8jCBG4Gc0mtY/lVFJg/bBI7krxQtscape5DwmYDK28xlAyYKOlUlYjY3wL1g+CQoI6h1q6thd7KgY0dxVUQPelEpzk+mVPudBnfP2HjeKUX+O9h87MRubKH+M4l/8VDN9DBRcxdw6KEbM7fbth8MRJXAQwPNw5Qdb8cHC/BI9s0Tg4DEOntVDrW3lifh/S+DAHM3qm44rojj3vjPi/I3C0xTsc1G6EY9A2PbN1UvQ+np3ANqDIgbxwfjLcTuHZs5djDKOmvjnGWHgD4n3wocrqWpjBzbqQtpogxtWoPSOoDKDdM6vki+ousbK8Ldea/HzOAJlj+E2AAkKJgt+Zq9g4AAAAASUVORK5CYII=" mode="aspectFit" style="height: 36rpx;width:64rpx;" />
<view class="desc">
{{data.APPLYSHOP_NAME||'-'}}
@ -47,7 +47,7 @@
</view>
<view class="desc" >
<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAABSCAMAAADEi7K1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAHCUExURUdwTFKb5IW8/4W8/1ag4lWe21WZ3YS8/1eg5Feh5IW8/4O6/4W6/4W8/4S8/////4W8/4S8/4W8/4W8/4O9/4S8/4W8/1Cf34W8/4e9/4W8/4S8/4W7/4W5/4W8/4S7/1Wf34W9/4W8/4W8/4e//4S9/4a7/4a7/5K2/4W8/4W8/4a8/4W4/6qq/4W8/02Z5oW8/1yl52Wp7FWi4IW8/////1Ke4LPV//D3/8Le/+nz/2ir7Vuk5rvZ/4zA/+Xx/4a9/4i+//7+//3+/4/C/6rQ/9Xo/93s/+rz/5LD//r8/5bF/4e9/+bx/+Du/+/2//X6/9Pn/5DC/57K/8jh//v9//n8/8zj/22u8Pz9//j7/3i098ni/5zJ/5/K/5rH/8nh/4u///b6/4G5/I3A/2qs7tDl/+v0/6HL/1uj5W+v8c7k/83k/8/k/6LM/+z1/6XN/+Hv/+31/9Tn/7DU/4q//12k52Cm6Xm1+LfY/8bf/5PE//L4/1Oe4HKx9LHU/9rr/5HD/6vR/2Kn6mut79bp/6fP/67S/9jp/3y2+a/T/8Ld/9/u/63S/4/B/8Pe/9/t/5nH/+jy//T5/7DT/9nq/6g8kSsAAAA0dFJOUwAc8ZjvFQ+g6N/eJUP5nAH3bsWfI1faEMJG1onbLME8GMT4RSQ6pnwH7MN2GQO2Cv22uCHmQd0iAAACIElEQVRYw+3Y+VPTQBQH8GBVqBZBBG/k8kRRxJeAgpC2FAoW0BZBvDhUQDkUlENBReS+Bf1/3TTSNpltunm7P3TGfn96M7vzmWQ2u9l5kqTF5TiZDawpv31LipfcC2ArNc7DcaRLB8AmpcSxjtqVCEW3sooAQVGtEkBRNOsYkqJYR7CU4jxlojLRlJJxyEgBnjJbPJTJ4qKMFh9lsBDUpEK3ENRPxWAVclBvDJRyMA1PTSt0C0HBW7qFoZ4pVAtDwROqhaLg3VeKhaNgdcps3cFSAK++LVTHpgJPmZOeopKG+rRRZZ33/Q/YqBE5cToGWSifzJK2AAO1yETJowxUCxv1nYG692+u9/nml674VKUN6jOp18RQblKrzUKoIKl7vUKohgCow2JeUG5rGJAFUdbhpVqHRFF1tfBIDOV/TT6PjyKo8XptWF3hp6qa9HH3HC81Gznt3I0IyhMtH3ZHZ0yM2aZamxr3y6cvYqfct0uRpVfX9Qdrfgk8FJFIlvpI+fgD8FC6BDBTJ3t9wEPtS2TBOpeBh2qptfp72qH89SCKspZsUZB01A6ZF7KmtENrnoHa1nZc+12L/NG25w8GamuP5WjvYboU/dpNCHnaVcZbX+h3pWV8wdS1NkX919QJTCuMnnOYBh09xzFtQ3rypTOCpLOSlJUjhspDNX5puRxu8BQIsG5e1ftOF09zQtlXyiJdOpfjfDHWuVZ6/UYY+Qv6cKIzp0aufwAAAABJRU5ErkJggg==" mode="aspectFit" style="height: 42rpx;width:37rpx;" @click="priviewImages(1)" />
</view>
</view>
<view class="row">
@ -69,14 +69,14 @@
</view>
<view class="card">
<view class="row jc-between" style="padding-top: 0;">
<view style="color: #2f93e7;">审批意见</view>
<view style="color: #2f93e7;">审批意见</view>
<text v-if="data.APPOVED_DATE" style="color:#878F94">{{$util.cutDate( data.APPOVED_DATE,'YYYY/MM/DD hh:ss')}}</text>
</view>
<view class="approved-reason">
<view class="desc">
<textarea
<textarea
:value="approvalReason"
placeholder="请输入"
placeholder="请输入"
placeholder-style="color:#969EA4;line-height:2;padding-top:10rpx;"
auto-height
@blur="changeReason"
@ -113,7 +113,7 @@
</view> -->
<view class="uni-flex jc-between" style="padding:24rpx 28rpx;line-height: 3.4;">
<view class="title">门店授权</view>
<view>
<view>
<span v-if="selectShopids.length">
已选
<span style="color: #007AFF;">{{selectShopids.length}}</span>
@ -121,13 +121,13 @@
</span>
</view>
</view>
<ShopList :data="shops" @changeValues="changeValues"/>
<view class="button-box" >
<span @click="showPopupBottom=false" ><image src="@/static/images/cy-btn.png" mode="aspectFit"></image> 返回</span>
<span @click="showPopupBottom=false" ><image src="https://eshangtech.com/ShopICO/ahyd-BID/cy-btn.png" mode="aspectFit"></image> 返回</span>
<span @click="savaShops"><image src="@/static/images/sh-btn.png" mode="aspectFit"></image>确认授权</span>
</view>
</view>
</view>
</view>
</template>
@ -140,13 +140,13 @@
props: {
data: {
type: Object,
},
businessId: {
type: String,
required: true
},
approvalData:{ //
approvalData:{ //
type: Object,
required: false
},
@ -165,7 +165,7 @@
user: (state)=>{ return state.userData}
}),
approvalList () {
return this.approvalData && this.approvalData.NewList ? this.approvalData.NewList.map(n=>n.node) : []
},
personImges(){
@ -226,7 +226,7 @@
ProvinceCode: data.OWNERUNIT_ID,
ServerpartId: data.SERVERPART_ID
}).then(res=>{
if(res.Result_Code!==100) return
if(res.Result_Code!==100) return
_this.shops = res.Result_Data.List
})
},
@ -234,7 +234,7 @@
let _this = this
if(!this.selectShopids.length){
uni.showToast({ title: '请选择需要授权的门店' ,icon:'none'})
return
return
}
if(_this.isloading) return
uni.showLoading({
@ -269,7 +269,7 @@
success: function (res) {
if (res.confirm) {
_this.$util.toNextRoute('reLaunch', "/pages/authorityApproval/index")
}
}
}
})
})
@ -278,7 +278,7 @@
let _this = this
if(!this.approvalReason){
uni.showToast({ title: '请填写否决意见' ,icon:'none'})
return
return
}
if(_this.isloading) return
uni.showLoading({
@ -313,14 +313,14 @@
if (res.confirm) {
// _this.$emit('refresh')
_this.$util.toNextRoute('reLaunch', "/pages/authorityApproval/index")
}
}
}
})
})
}
},
}
</script>
@ -331,8 +331,8 @@
border-radius: 12rpx;
margin: 24rpx 24rpx 24rpx;
padding: 24rpx;
box-shadow: 0px 4px 12px 0px rgba(225,225,225,0.56);
box-shadow: 0px 4px 12px 0px rgba(225,225,225,0.56);
.row,.title-row {
display flex;
align-items center
@ -365,7 +365,7 @@
border none
padding-top: 0
}
}
.row +.row {
padding-top: 0

View File

@ -11,34 +11,34 @@
</view>
<view class="btn-box">
<button type="default" class="main-btn" @click="nextStep ">提交</button>
</view>
</view>
<view class="photo-box" v-else-if="pageType==0 && pageStep==2">
<h4>上传短款凭证照片</h4>
<div class="img-box">
<div class="upload-file-container">
<div class="upload-file-unit" v-for="(item,index) in uploadImgList" :key="index">
<span class="upload-file-remove" @click.stop="deleteImgFunc(index)">-</span>
<image mode="aspectFill" :src="item" @tap="showImg(index)" />
</div>
<div class="upload-file-add" @click="chooseImage">
<div class="upload-file-add-container">
</div>
</div>
</div>
</div>
<view class="uni-flex btn-box">
<button type="default" class="stip-btn" @tap="submitMsg">跳过</button>
<button type="default" class="push-btn" @tap="submitMsg">提交</button>
</view>
</view>
<view class="success-box" v-else>
<image src="/static/images/success.png" mode="aspectFit"></image>
<image src="https://eshangtech.com/ShopICO/ahyd-BID/success.png" mode="aspectFit"></image>
<h2>稽核反馈提交成功</h2>
</view>
</view>
@ -62,7 +62,7 @@
},
methods: {
changeState(e){
this.saveMsg.isAddIn = e.detail.value.length>0 ? true : false
},
deleteImgFunc(index) {
@ -84,16 +84,16 @@
cout: 1 ,
success: (data) => {
// console.log(data)
if(data.tempFilePaths.length>0) {
// let list = []
data.tempFilePaths.forEach(function (n){
uni.getFileSystemManager().readFile({
filePath: n, //
encoding: 'base64', //
success: function(res) { //
success: function(res) { //
let base64 = 'data:image/jpeg;base64,'+res.data //.replace(/\+/ig,'%2B') //不加上这串字符在页面无法显示的哦
// list.unshift(base64)
_this.uploadImgList.unshift(base64)
}
@ -115,7 +115,7 @@
return
}
this.pageStep=2
}
},
submitMsg() {
@ -129,9 +129,9 @@
}
this.saveMsg.imageInfo = this.uploadImgList.join('|')
this.$request.$webPost('Audit/UpLoadAuditExplain',this.saveMsg).then(res=>{
if(res.Result_Code!==100) {
uni.showToast({
title: res.Result_Desc,
icon: 'none'
@ -162,7 +162,7 @@
}
.feedback-box {
padding: 20rpx 52rpx;
}
.feedback {
width: 656rpx;
@ -173,7 +173,7 @@
border-radius: 14rpx;
margin-bottom: 28rpx;
}
.checkbox-text {
font-size: 26rpx;
color: #8A9DCA;
@ -201,7 +201,7 @@
box-sizing: border-box;
}
.btn-box {
position: fixed;
bottom: 0;
left:0 ;
@ -219,7 +219,7 @@
border-radius: 43rpx;
text-align: center;
font-size: 30rpx;
}
.push-btn {
width: 277rpx;
@ -231,7 +231,7 @@
text-align: center;
font-size: 30rpx;
}
.upload-file-container {
display: flex;
align-items: center;
@ -273,7 +273,7 @@
height: 60rpx;
background-color: #ccc;
}
.upload-file-add-img{
margin-top: 10rpx;
font-size: 24rpx;
@ -288,13 +288,13 @@
border-radius: 8rpx;
border: 2rpx solid #ccc;
}
.upload-file-unit image {
width: 135rpx;
height: 134rpx;
border-radius: 8rpx;
}
.upload-file-remove {
position: absolute;
top: -14rpx;
@ -319,7 +319,7 @@
font-size: 38rpx;
color: #364656;
}
.success-box image {
width: 406rpx;
height: 320rpx;

View File

@ -37,6 +37,7 @@
</template>
<script>
import request from '@/util/index.js'
import headerTop from "./components/headerTop.vue";
import transactionAnalysis from "./components/bussiness/transactionAnalysis.vue";
import TimePeriodAnalysis from "./components/bussiness/timePeriodAnalysis.vue";
@ -92,60 +93,94 @@ export default {
this.getBestsellerList()
},
methods:{
getTransactionList(){
let res=[]
this.transactionList = res
async getTransactionList(){
let req = {
Province_Code:'340000',
Statistics_Date:this.time,
Serverpart_ID:416,
ShowConsumptionLevel:true,
ShowConvertRate:true
}
let totalData = await request.$webGet('CommercialApi/Revenue/GetTransactionAnalysis',req)
console.log('totalData',totalData)
this.transactionList = totalData.Result_Data
},
getTimePeriodList(){
let res={
series: [
{
name: "气泡一",
data: [[2,35,35],[6,18,18],[10,5,5],[14,8,8],[18,9,9],[22,18,18]]
data: [[2,35,17],[6,18,9],[10,5,5],[14,8,8],[18,9,9],[22,18,9]]
}
]
}
this.timePeriodList = res
},
getLevelTopList(){
let res = {
categories:["商超","餐饮","水果饮品","小吃","连锁品牌","全业态"],
series: [
{
name: "高消费",
textColor: "#FFFFFF",
data: [35,36,31,33,13,34]
},
{
name: "普通消费",
textColor: "#FFFFFF",
data: [18,27,21,24,6,28]
},
{
name: "低消费",
textColor: "#FFFFFF",
data: [18,27,21,24,6,28]
}
]
async getLevelTopList(){
let req = {
ProvinceCode:'340000',
StatisticsDate:'2023-04-02',
ServerpartId:416,
ShowWholeTrade:true
}
let res = {
categories:[],
series:[]
}
let totalData = await request.$webGet('CommercialApi/Revenue/GetBusinessTradeLevel',req)
console.log('totalData1111',totalData)
res.categories = totalData.Result_Data.legend
totalData.Result_Data.ColumnList.forEach(item=>{
res.series.push({name:item.name,data:item.data})
})
// let res = {
// categories:["","","","","",""],
// series: [
// {
// name: "",
// textColor: "#FFFFFF",
// data: [20,27,21,24,6,28]
// },
// {
// name: "",
// textColor: "#FFFFFF",
// data: [20,27,21,24,6,28]
// },
// {
// name: "",
// textColor: "#FFFFFF",
// data: [60,46,58,52,88,44]
// }
// ]
// }
this.levelTopList = res
},
getBusinessTypeList(){
let res= {
async getBusinessTypeList(){
const req = {
ProvinceCode:'340000',
StatisticsDate:'2023-04-02',
serverpartId:416
}
const data = await request.$webGet('CommercialApi//Revenue/GetBusinessTradeRevenue',req)
let res = []
let all = 0
data.Result_Data.BusinessTradeRank.forEach((item,index)=>{
if (index<=10){
res.push({name:`${item.name} ${item.value}%`,value:Number(item.value)})
all+=Number(item.value)
}else if(index===11){
res.push({name:`其他${(100-all).toFixed(2)}%`,value:Number((100 - all).toFixed(2))})
}
})
let result= {
series: [
{
data: [{"name":"商超","value":27.6},
{"name":"水果饮品","value":20.7},
{"name":"餐饮","value":15.5},
{"name":"小吃","value":11.9},
{"name":"地方特产","value":8.4},
{"name":"连锁品牌","value":7.2},
{"name":"粽子","value":5.6},
{"name":"箱包工艺","value":3.1}]
data:res
}
]
};
this.businessTypeList = res
this.businessTypeList = result
},
getCompareList(){
let res = {
@ -228,4 +263,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -1,79 +1,80 @@
<template>
<div class="main">
<div class="header">
<div class="headerTop" :style="{height:(menu.bottom + 6) + 'px'}">
<div class="box" :style="{top:(menu.bottom - (menu.height / 2)) + 'px'}">
<div class="icon" @click="handleBack">
<image class="img" src="/static/images/commercial/navigation-left.svg"></image>
</div>
<text class="title">车流画像</text>
<!-- 占位 -->
<div class="seize"></div>
</div>
</div>
<div class="serviceArea" :style="{top : (menu.bottom + 14) + 'px'}">
<picker class="picker" @change="bindPickerChange" :value="serviceIndex" :range="serviceArray">
<div class="selectService">
<image class="img" src="/static/images/commercial/fixed.svg"></image>
<view class="select">
<view class="content">
<view class="uni-input">大龙山服务区</view>
<p class="area">安庆片区</p>
<image class="rightArrow" src="/static/images/commercial/rightArrow.svg"></image>
</view>
</view>
<div>
<div class="main" v-if="isHaveData">
<div class="header" :style="{backgroundImage: 'url('+ 'https://eshangtech.com/ShopICO/ahyd-BID/commercial/car.svg' +')'}">
<div class="analyse">
<text class="title">分析</text>
<text class="content">新桥服务区入区车辆主要来自杭州市, 入车车辆主要是普通车型(30-60)</text>
</div>
<div class="headerTop" :style="{height:(menu.bottom + 6) + 'px'}">
<div class="box" :style="{top:(menu.bottom - (menu.height / 2)) + 'px'}">
<div class="icon" @click="handleBack">
<image class="img" src="/static/images/commercial/navigation-left.svg"></image>
</div>
<text class="title">车流画像</text>
<!-- 占位 -->
<div class="seize"></div>
</div>
</div>
<div class="serviceArea" :style="{top : (menu.bottom + 14) + 'px'}">
<div class="picker">
<div class="selectService">
<image class="img" src="/static/images/commercial/fixed.svg"></image>
<view class="select">
<view class="content">
<view class="uni-input">大龙山服务区</view>
<p class="area">安庆片区</p>
<image class="rightArrow" src="/static/images/commercial/rightArrow.svg"></image>
</view>
</view>
</div>
</div>
<div class="other">
<div class="label">
<div v-for="(item,index) in labelList" :key="index" :class="index===0?'item0 item':index===1?'item1 item':index===2?'item2 item':index===3?'item3 item':index===4?'item4 item':'item'">
{{item.value}}
</div>
</div>
</div>
</div>
</div>
<div class="charts">
<div class="chartsItem">
<p class="title">入区车流分析</p>
<entry-zone :carData="carData" />
</div>
<div class="chartsItem" style="margin-top: 32px">
<view class="tab" >
<view v-for="(item,index) in tabList" :key="index" :class="selectTab===item.value?'tabItem tabItemActive':'tabItem'" @click="handleChangeTab(item.value)">{{item.name}}{{index!==0?'':''}}</view>
</view>
<p class="title">车辆归属地</p>
<home-place :homeData="homePlace" :homeCity="cityPlace" />
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">车辆类型占比与停留时间</p>
<car-type-time :data="carTypeTimeData"/>
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">车辆价值与停留时间分析</p>
<time-analysis :data="timeAnalysisData"/>
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">入区率占比</p>
<percent-entry :data="percentEntryData" />
</div>
</picker>
<div class="other">
<div class="label">
<div v-for="(item,index) in labelList" :key="index" :class="index===0?'item0 item':index===1?'item1 item':index===2?'item2 item':index===3?'item3 item':index===4?'item4 item':'item'">
{{item.value}}
</div>
</div>
<image class="car" src="/static/images/commercial/car.svg"></image>
</div>
<div class="analyse">
<text class="title">分析</text>
<text class="content">新桥服务区入区车辆主要来自杭州市, 入车车辆主要是普通车型(30-60)</text>
</div>
</div>
</div>
<div class="charts">
<div class="chartsItem">
<p class="title">入区车流分析</p>
<entry-zone :carData="carData" />
<analyse />
<div v-else class="noData">
<div class="box">
<image class="img" src="/static/images/commercial/noData.svg"></image>
<p class="text">抱歉,服务区采集样本过小,无法分析</p>
</div>
</div>
<div class="chartsItem" style="margin-top: 32px">
<view class="tab" >
<view v-for="(item,index) in tabList" :key="index" :class="selectTab===item.value?'tabItem tabItemActive':'tabItem'" @click="handleChangeTab(item.value)">{{item.name}}{{index!==0?'':''}}</view>
</view>
<p class="title">车辆归属地</p>
<home-place :homeData="homePlace" :homeCity="cityPlace" />
<analyse />
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">车辆类型占比与停留时间</p>
<car-type-time :data="carTypeTimeData"/>
<analyse />
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">车辆价值与停留时间分析</p>
<time-analysis :data="timeAnalysisData"/>
<analyse />
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">入区率占比</p>
<percent-entry :data="percentEntryData" />
<analyse />
</div>
</div>
</div>
</template>
<script>
import request from '@/util/index.js'
import analyse from "./components/analyse.vue";
import EntryZone from "./components/car/entryZone.vue";
import HomePlace from "./components/car/homePlace.vue";
import CarTypeTime from "./components/car/carTypeTime.vue";
@ -107,7 +108,12 @@ export default {
percentEntryDataAll:[]//
}
},
components: {PercentEntry, CarTypeTime, HomePlace, EntryZone, analyse,timeAnalysis},
components: {PercentEntry, CarTypeTime, HomePlace, EntryZone,timeAnalysis},
computed:{
isHaveData(){
return true
}
},
onLoad(option){
//
this.time = option.time
@ -119,6 +125,8 @@ export default {
uni.setStorageSync('phoneInfo',systemInfo)
this.statusBarHeight = Number(systemInfo.statusBarHeight)
this.menu = uni.getMenuButtonBoundingClientRect()
//
// prop
//
this.getCarData()
//
@ -140,6 +148,7 @@ export default {
})
},
//
//
handleChangeTab(value){
let Serverpart_Region = ''
this.tabList.forEach(item=>{
@ -175,6 +184,7 @@ export default {
Serverpart_ID :this.Serverpart_ID
}).then(res=>{
this.carData = res.Result_Data.List
console.log('this.carData',this.carData)
})
},
getHomeData(){
@ -190,6 +200,7 @@ export default {
Serverpart_ID:this.Serverpart_ID,
ContainWhole:true
}).then(res=>{
//
let result = res.Result_Data.List
result.forEach(item=>{
let priceAll = 0
@ -221,6 +232,7 @@ export default {
//
this.homePlaceAll = dataList
this.homePlace = dataList[this.selectTab]
})
},
getCarTypeTime(){
@ -281,6 +293,7 @@ export default {
}).then(res=>{
let result = res.Result_Data.List
this.timeAnalysisData = result
console.log('resulttimeAnalysisData',result)
})
@ -311,13 +324,61 @@ export default {
<style scoped lang="scss">
.main{
width:100%;
background: #fff;
.header{
width: 100%;
height: 396px;
height: calc(1.056 * 100vw);
padding: 0 16px;
box-sizing: border-box;
background: linear-gradient(180deg, #A1B9E8 0%, #F0F5FF 100%);
position: relative;
background-repeat: no-repeat;
background-size: cover;
.car{
width: 100vw;
height: 100%;
position: absolute;
z-index: 0;
top: 0;left: 0;
}
.analyse{
width: calc(100vw - 32px);
height: 48px;
box-sizing: border-box;
padding: 6px 12px;
background: #fff;
margin-top: 16px;
border-radius: 4px;
display: flex;
position: absolute;
bottom: 16px;
.title{
width: 28px;
height: 18px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 18px;
padding: 0 4px;
text-align: center;
border-radius: 4px;
background:rgba(6, 93, 255, 0.1);
}
.content{
width: calc(100% - 46px);
padding-left: 6px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 18px;
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 2;
}
}
.headerTop{
width: 100vw;
position: fixed;
@ -406,7 +467,7 @@ export default {
}
.other{
margin-top: 12px;
width: 100%;
width: calc(100vw - 32px);
text-align: center;
.label{
height: 54px;
@ -427,31 +488,32 @@ export default {
}
.item0{
left: 50%;
top: 50%;
transform: translateX(-50%);
z-index:3;
background: linear-gradient(180deg, rgba(49, 144, 255, 0.8) 0%, rgba(22, 87, 255, 0.8) 100%);
}
.item1{
left: 15%;
top: 24px;
left: 25%;
top: 80%;
z-index:2;
background: linear-gradient(180deg, rgba(49, 144, 255, 0.7) 0%, rgba(22, 87, 255, 0.7) 100%);
}
.item2{
right: 15%;
top: 24px;
top: 80%;
z-index:2;
background: linear-gradient(180deg, rgba(49, 144, 255, 0.6) 0%, rgba(22, 87, 255, 0.6) 100%);
}
.item3{
right: 0;
top: 46px;
right: 2%;
top:100%;
z-index:1;
background: linear-gradient(180deg, rgba(49, 144, 255, 0.5) 0%, rgba(22, 87, 255, 0.5) 100%);
}
.item4{
left: 0;
top: 46px;
left: 2%;
top:100%;
z-index:1;
background: linear-gradient(180deg, rgba(49, 144, 255, 0.4) 0%, rgba(22, 87, 255, 0.4) 100%);
}
@ -461,42 +523,6 @@ export default {
height: 95px;
}
}
.analyse{
width: calc(100vw - 32px);
height: 48px;
box-sizing: border-box;
padding: 6px 12px;
background: #fff;
margin-top: 16px;
border-radius: 4px;
display: flex;
.title{
width: 28px;
height: 18px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 18px;
padding: 0 4px;
text-align: center;
border-radius: 4px;
background:rgba(6, 93, 255, 0.1);
}
.content{
width: calc(100% - 46px);
padding-left: 6px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 18px;
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 2;
}
}
}
}
.charts{
@ -524,9 +550,10 @@ export default {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
color: #786B6C;
}
.tabItemActive{
color:#160002;
background: #FFFFFF;
}
}
@ -546,4 +573,29 @@ export default {
}
}
}
</style>
.noData{
width: 100%;
height: 100vh;
position: relative;
.box{
margin: 30vh auto 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.img{
width: 20vw;
height: 24vw;
margin-bottom: 15px;
}
.text{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #6C737A;
line-height: 20px;
}
}
}
</style>

View File

@ -45,7 +45,6 @@ export default {
watch: {
data: {
handler(value) {
console.log('carDatawatch', value)
this.shopList = value
this.handleCarData(value)
}
@ -55,8 +54,8 @@ export default {
//
handleCarData(value) {
let res = value
this.drawCharts('hotSales', res[0],{color:["#1E80FF","#E5E8EF"],title:'',subTitle:'热销商品'})
this.drawCharts('unsalableGoods', res[1],{color:["#00C2FF","#E5E8EF"],title:'',subTitle:'滞销商品'})
this.drawCharts('hotSales', res[0],{color:["#1E80FF","#E5E8EF"],title:'39.8%',subTitle:'热销商品'})
this.drawCharts('unsalableGoods', res[1],{color:["#00C2FF","#E5E8EF"],title:'21.6%',subTitle:'滞销商品'})
},
drawCharts(id, data,config) {
const ctx = uni.createCanvasContext(id, this);
@ -99,7 +98,7 @@ export default {
ringWidth: 12,
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
offsetAngle: -90,
labelWidth: 15,
border: false,
borderWidth: 3,
@ -133,7 +132,7 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 2px solid #EFEFEF;
border-bottom: 1px solid #EFEFEF;
padding: 10px 0;
.title{
font-size: 14px;
@ -158,4 +157,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -25,7 +25,6 @@ export default {
watch: {
data: {
handler(value) {
console.log('businessFormat', value)
this.handleCarData(value)
}
}
@ -45,13 +44,13 @@ export default {
type: "ring",
context: ctx,
width: _this.width,
height: 250,
height: 280,
series: data.series,
animation: true,
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#1E80FF", "#456497","#6B85AE","#8095B8","#97A9C6","#ACB9CD","#B8C7DE","#D5DFF0"],
color: ["#1E80FF", "#00C2FF","#6B6FFF","#38C275","#F3BC1B","#ED6B5A","#FF9845","#74839D","#ACB9CD","#CAD0DA"],
padding: [5, 5, 5, 5],
dataLabel: true,
enableScroll: false,
@ -69,15 +68,15 @@ export default {
show: true,
position: "bottom",
lineHeight: 25,
float: 'center'
float: 'left'
},
extra: {
ring: {
ringWidth: 12,
ringWidth: 14,
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
offsetAngle: -45,
labelWidth: 15,
border: false,
borderWidth: 3,
@ -115,7 +114,7 @@ export default {
width: 100%;
.format{
width: 100%;
height: 250px;
height: 260px;
}
}
</style>
</style>

View File

@ -25,7 +25,6 @@ export default {
watch: {
data: {
handler(value) {
console.log('carDatawatch', value)
this.handleCarData(value)
}
}
@ -46,23 +45,25 @@ export default {
type: "area",
context: ctx,
width: _this.width,
height: 220,
height: 240,
categories: data.categories,
series: data.series,
animation: true,
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#CAD0DA", "#1E80FF"],
color: ["#1E80FF", "#00B6FF"],
padding: [15, 5, 5, 5],
dataLabel: false,
enableScroll: false,
xAxis: {
disableGrid: true
disableGrid: true,
axisLineColor:"#F2F2F5"
},
yAxis:{
showTitle:true,
splitNumber:4,
gridColor:'#F2F2F5',
data: [
{
index:0,
@ -70,7 +71,8 @@ export default {
min: 0,
max: 80,
position: "left",
titleOffsetY: -5
titleOffsetY: -5,
axisLineColor:"#F2F2F5"
},
{
index:1,
@ -79,7 +81,8 @@ export default {
max: 400,
position: 'right',
titleOffsetY: -5,
titleOffsetX: 5
titleOffsetX: 5,
axisLineColor:"#F2F2F5"
},
]
},
@ -135,4 +138,4 @@ export default {
height: 220px;
}
}
</style>
</style>

View File

@ -25,7 +25,6 @@ export default {
watch: {
data: {
handler(value) {
console.log('carDatawatch', value)
this.handleCarData(value)
}
}
@ -52,7 +51,7 @@ export default {
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#1E80FF","#ACB9CD","#CAD0DA" ],
color: ["#CAD0DA","#ACB9CD","#1E80FF", ],
padding: [15, 5, 5, 5],
dataLabel: false,
enableScroll: false,
@ -60,22 +59,25 @@ export default {
show: true,
position: "bottom",
lineHeight: 25,
float: 'center'
float: 'center',
fontSize:10
},
xAxis: {
disableGrid: true
disableGrid: true,
axisLineColor:'#F2F2F5',
fontSize:10,
titleOffsetY:5
},
yAxis: {
showTitle:true,
splitNumber:5,
gridColor:'#F2F2F5',
data: [
{
min: 0,
max: 100,
title:'单位: /%',
titleOffsetY:-5,
titleOffsetX:-5
unit:'%',
axisLineColor:'#F2F2F5'
}
]
},
@ -120,7 +122,7 @@ export default {
margin-top: 12px;
.level{
width: 100%;
height: 272px;
height: 252px;
}
}
</style>
</style>

View File

@ -25,7 +25,6 @@ export default {
watch: {
data: {
handler(value) {
console.log('carDatawatch', value)
this.handleCarData(value)
}
}
@ -51,25 +50,29 @@ export default {
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#C7DFFF"],
color: ["#2483FF"],
padding: [15, 10, 5, 5],
dataLabel: false,
enableScroll: false,
xAxis: {
disableGrid: true,
gridType: "dash",
gridType: "solid",
splitNumber: 6,
boundaryGap: "justify",
min: 0,
max: 24
max: 24,
axisLineColor:'#F2F2F5'
},
yAxis: {
disableGrid: false,
gridType: "dash",
gridType: "solid",
gridColor:'#F2F2F5',
data: [
{
min: 0,
max: 50
max: 50,
unit:'%',
axisLineColor:'#F2F2F5'
}
]
},
@ -81,8 +84,8 @@ export default {
},
extra: {
bubble: {
border: 2,
opacity: 0.5
border: 1,
opacity: 0.25
}
}
});
@ -119,4 +122,4 @@ export default {
height: 200px;
}
}
</style>
</style>

View File

@ -7,11 +7,11 @@
</div>
<div class="bottom">
<div class="item">
<p class="price">18.3</p>
<p class="price">{{ info.AvgTicketPrice?info.AvgTicketPrice:'-' }}</p>
<p class="text">该服务区</p>
</div>
<div class="item">
<p class="price">17.6</p>
<p class="price">{{ info.ProvinceAvgTicketPrice?info.ProvinceAvgTicketPrice:'-' }}</p>
<p class="text">省级平均</p>
</div>
</div>
@ -23,11 +23,11 @@
</div>
<div class="bottom">
<div class="item">
<p class="price">37.9</p>
<p class="price">{{ info.ConvertRate?info.ConvertRate:'-' }}</p>
<p class="text">该服务区</p>
</div>
<div class="item">
<p class="price">52.8</p>
<p class="price">{{ info.ConvertProvinceRate?info.ConvertProvinceRate:'-'}}</p>
<p class="text">省级平均</p>
</div>
</div>
@ -42,76 +42,24 @@ export default {
name: "transactionAnalysis",
data() {
return {
info:{} //
}
},
props: {
data: {
type: Array,
default: () => []
type: Object,
default: () => {}
}
},
watch: {
data: {
handler(value) {
console.log('carDatawatch', value)
this.handleCarData(value)
this.info = value
}
}
},
methods: {
//
handleCarData(value) {
let res = []
this.drawCharts('carNum', res)
},
drawCharts(id, data) {
const ctx = uni.createCanvasContext(id, this);
let _this = this
uChartsInstance[id] = new uCharts({
type: "ring",
context: ctx,
width: 178,
height: 208,
series: data.series,
animation: true,
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#CAD0DA", "#1E80FF"],
padding: [5, 5, 5, 5],
dataLabel: false,
enableScroll: false,
title: {
name: _this.carNumAll,
fontSize: 16,
color: "#341D00"
},
subtitle: {
name: "昨日入区车流",
fontSize: 12,
color: "#786B6C",
},
legend: {
show: true,
position: "bottom",
lineHeight: 25,
float: 'center'
},
extra: {
ring: {
ringWidth: 12,
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
labelWidth: 15,
border: false,
borderWidth: 3,
borderColor: "#FFFFFF"
}
}
});
},
}
}
</script>
@ -123,7 +71,7 @@ export default {
margin-top: 12px;
width: 100%;
box-sizing: border-box;
background: #F2F1F1;
background: #F7F7F7;
border-radius: 4px;
padding: 12px;
.top{
@ -156,7 +104,7 @@ export default {
box-sizing: border-box;
.item{
width:50%;
padding-left: 22px;
padding-left: 26px;
.price{
font-size: 16px;
font-family: DINAlternate-Bold, DINAlternate;
@ -183,4 +131,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -1,18 +1,29 @@
<template>
<div class="carTypeTime">
<canvas v-if="!carTypeTimePath" class="canvas" canvas-id="carTypeTime" id="carTypeTime"/>
<image v-if="carTypeTimePath" class="canvas" :src="carTypeTimePath"></image>
<div style="min-height: 100px;">
<div v-if="isShowData">
<div class="carTypeTime" >
<canvas v-if="!carTypeTimePath" class="canvas" canvas-id="carTypeTime" id="carTypeTime"/>
<image v-if="carTypeTimePath" class="canvas" :src="carTypeTimePath"></image>
</div>
<analyse />
</div>
<no-data v-if="!isShowData"/>
</div>
</template>
<script>
import uCharts from '@/components/u-charts.js';
import NoData from "../noData.vue";
import Analyse from "../analyse.vue";
var uChartsInstance = {};
export default {
name: "carTypeTime",
components: {Analyse, NoData},
data() {
return {
width:0,
isShowData:false,
info:{},
carTypeTimePath:''//
}
},
@ -25,6 +36,10 @@ export default {
watch: {
data: {
handler(value) {
if (value){
this.isShowData = true
}
this.info = value
this.carTypeTimePath=''
this.handleCarData(value)
},
@ -34,7 +49,6 @@ export default {
methods: {
//
handleCarData(value) {
console.log('carTypeTime',value)
let res = {
categories: value.categories,
series: value.series
@ -49,7 +63,7 @@ export default {
type: "column",
context: ctx,
width: this.width,
height: 252,
height: 265,
categories:data.categories,
series: data.series,
animation: false,
@ -57,7 +71,7 @@ export default {
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#00C2FF","#CAD0DA"],
color: ["#1E80FF","#00B6FF"],
padding: [30,30,0,0],
dataLabel: false,
enableScroll: false,
@ -70,15 +84,18 @@ export default {
},
xAxis:{
disableGrid: true,
axisLineColor:"#F2F2F5"
},
yAxis:{
showTitle:true,
gridColor:'#F2F2F5',
data: [
{
title:'单位: %',
min: 0,
max: 100,
titleOffsetY: -5
titleOffsetY: -5,
axisLineColor:"#F2F2F5"
},
{
title:'单位: 分钟',
@ -86,7 +103,8 @@ export default {
max: 150,
position: 'right',
titleOffsetY: -5,
titleOffsetX: 5
titleOffsetX: 5,
axisLineColor:"#F2F2F5"
},
]
},
@ -94,6 +112,7 @@ export default {
column: {
type: "group",
width: 12,
seriesGap:2,
categoryGap: 24,
activeBgColor: "#000000",
activeBgOpacity: 0.08,
@ -134,4 +153,4 @@ export default {
height: 100%;
}
}
</style>
</style>

View File

@ -1,27 +1,40 @@
<template>
<div class="car">
<div class="item">
<canvas v-if="!carNumPath" class="carNum" canvas-id="carNum" id="carNum"/>
<image v-if="carNumPath" class="carNum" :src="carNumPath"></image>
</div>
<div class="item">
<canvas v-if="!probabilityPath" class="carNum" canvas-id="probability" id="probability"/>
<image v-if="probabilityPath" class="carNum" :src="probabilityPath"></image>
<div style="min-height: 100px;">
<div v-if="isShowData">
<div class="car">
<div class="item">
<canvas v-if="!carNumPath" class="carNum" canvas-id="carNum" id="carNum"/>
<image v-if="carNumPath" class="carNum" :src="carNumPath"></image>
</div>
<div class="item">
<canvas v-if="!probabilityPath" class="carNum" canvas-id="probability" id="probability"/>
<image v-if="probabilityPath" class="carNum" :src="probabilityPath"></image>
</div>
</div>
<analyse />
</div>
<no-data v-if="carData.length===0"/>
</div>
</template>
<script>
import uCharts from '@/components/u-charts.js';
import NoData from "../noData.vue";
import Analyse from "../analyse.vue";
var uChartsInstance = {};
export default {
name: "entryZone",
components: {Analyse, NoData},
data(){
return {
dataList :[],
width:0,
entryRate: '',//
carNumAll : 0,//
carNumPath:'',//
probabilityPath:''//
probabilityPath:'',//
isShowData:false,
}
},
props:{
@ -33,8 +46,13 @@ export default {
watch:{
carData:{
handler(value){
if (value.length!==0){
this.isShowData = true
}
this.handleCarData(value)
}
this.dataList = value
},
deep:true
}
},
methods:{
@ -92,35 +110,39 @@ export default {
title:this.entryRate,
subtitle:"昨日入区率"
}
console.log('res1111',res)
console.log('probabilityRes1111',probabilityRes)
this.drawCharts('carNum' , res,configCarNum )
this.drawCharts('probability',probabilityRes,config)
},
drawCharts(id,data,config){
const ctx = uni.createCanvasContext(id, this);
let _this = this
let phoneInfo = uni.getStorageSync('phoneInfo')
this.width = (phoneInfo.screenWidth - 16) / 2
console.log('this.width',this.width)
uChartsInstance[id] = new uCharts({
type: "ring",
context: ctx,
width: 178,
width: _this.width,
height: 208,
series: data.series,
animation: true,
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#CAD0DA","#1E80FF"],
color: ["#1E80FF","#00C2FF"],
padding: [5,5,5,5],
dataLabel: false,
enableScroll: false,
title: {
name: config.title,
fontSize: 16,
fontSize: 14,
color: "#341D00"
},
subtitle: {
name: config.subtitle,
fontSize: 12,
fontSize: 10,
color: "#786B6C",
},
legend: {
@ -191,7 +213,7 @@ export default {
height: 188px;
display: flex;
.item{
width: 50%;
width: calc(100vw / 2);
height: 100%;
box-sizing: border-box;
display: flex;
@ -203,4 +225,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -1,30 +1,57 @@
<template>
<div class="main">
<div class="homePlace">
<canvas v-if="!homePlacePath" class="carNum" canvas-id="homePlace" id="homePlace"/>
<image v-if="homePlacePath" class="carNum" :src="homePlacePath"></image>
</div>
<div class="homeCity">
<view class="item" v-for="(item,index) in progressList" :key="index">
<view class="top">
<p class="title">{{item.name}}</p>
<p class="rate"> {{item.rate}}</p>
</view>
<view class="progress">
<view class="have" :style="{width:item.rate}"></view>
</view>
</view>
<div style="min-height: 100px;">
<div v-if="isShowData">
<div class="main" >
<div class="homePlace">
<canvas v-if="!homePlacePath" class="carNum" canvas-id="homePlace" id="homePlace"/>
<image v-if="homePlacePath" class="carNum" :src="homePlacePath"></image>
</div>
<div class="homeCity">
<div class="dashed box1"></div>
<div class="dashed box2"></div>
<div class="dashed box3"></div>
<div class="dashed box4"></div>
<div class="dashed box5"></div>
<div class="dashed box6"></div>
<view class="item" v-for="(item,index) in progressList" :key="index">
<view class="top">
<p class="title">{{item.name}}</p>
<p class="rate"> {{item.rate}}</p>
</view>
<view class="progress">
<view class="have" :style="{width:item.rate}"></view>
</view>
</view>
<div class="notice">
<text class="noticeInfo notice1">0%</text>
<text class="noticeInfo notice2">20%</text>
<text class="noticeInfo notice3">40%</text>
<text class="noticeInfo notice4">60%</text>
<text class="noticeInfo notice5">80%</text>
<text class="noticeInfo notice6">100%</text>
</div>
</div>
</div>
<analyse />
</div>
<no-data v-if="homeData.length===0"/>
</div>
</template>
<script>
import uCharts from '@/components/u-charts.js';
import NoData from "../noData.vue";
import Analyse from "../analyse.vue";
var uChartsInstance = {};
export default {
name: "homePlace",
components: {Analyse, NoData},
data() {
return {
isShowData:false,
homeDataisTrue:false,
homeCityisTrue:false,
homePlacePath:'',//
progressList:[]//
}
@ -42,12 +69,19 @@ export default {
watch: {
homeData: {
handler(value) {
if (!value){
this.homeDataisTrue = true
}
this.homePlacePath = ''
this.handleCarData(value)
}
},
homeCity:{
handler(value){
if (value){
this.isShowData = true
}
console.log('handler',value)
value.forEach(item=>{
item.rate = item.rate.toFixed(2) + '%'
@ -84,7 +118,7 @@ export default {
rotateLock: false,
canvas2d: true,
background: "#FFFFFF",
color: ["#1E80FF", "#456497","#748AAE","#ACB9CD","#CAD0DA"],
color: ["#1E80FF", "#00B6FF","#38C275","#6B6FFF","#6B85AE"],
padding: [5, 5, 5, 5],
dataLabel: false,
enableScroll: false,
@ -98,7 +132,7 @@ export default {
ringWidth: 12,
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
offsetAngle: -45,
labelWidth: 15,
border: false,
borderWidth: 3,
@ -142,6 +176,32 @@ export default {
}
.homeCity{
width: 100%;
position: relative;
overflow: hidden;
.dashed{
width: 1px;
height: 85%;
position: absolute;
border-right: 1px dashed #ccc;
}
.box1{
left: 0;top: 10%;
}
.box2{
left: 20%;top: 10%;
}
.box3{
left: 40%;top: 10%;
}
.box4{
left: 60%;top: 10%;
}
.box5{
left: 80%;top: 10%;
}
.box6{
left: 99%;top: 10%;
}
.item{
width: 100%;
margin-bottom: 12px;
@ -181,7 +241,43 @@ export default {
}
}
}
.notice{
width: 100%;
height: 18px;
margin-top: 8px;
position: relative;
.noticeInfo{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 18px;
position: absolute;
}
.notice1{
left: 0;top: 0;
}
.notice2{
left: 20%;top: 0;
transform: translateX(-50%);
}
.notice3{
left: 40%;top: 0;
transform: translateX(-50%);
}
.notice4{
left: 60%;top: 0;
transform: translateX(-50%);
}
.notice5{
left: 80%;top: 0;
transform: translateX(-50%);
}
.notice6{
right: 0%;top: 0;
}
}
}
}
</style>
</style>

View File

@ -1,30 +1,38 @@
<template>
<div class="percentEntry">
<div class="progress">
<div class="have" :style="{width:progress+'%'}">
<view class="box" >
<div class="min" :style="{width:min+'%'}"></div>
<div class="middle" :style="{width:middle+'%',left:min+'%'}"></div>
<div class="big" :style="{width:big+'%',right:0+'%'}"></div>
</view>
</div>
</div>
<div class="list">
<div class="listItem" v-for="(item,index) in dataList" :key="index">
<div class="left">
<div style="margin-right: 4px" v-if="index!==0" :class="index===1?'icon1':index===2?'icon2':index===3?'icon3':'icon'"></div>
<p :class="index===0?'title':'smallTitle'">{{item.title}}</p>
<div style="min-height: 100px;">
<div v-if="isShowData">
<div class="percentEntry" >
<div class="progress">
<div class="have" :style="{width:progress+'%'}">
<view class="box" >
<div class="min" :style="{width:min+'%'}"></div>
<div class="middle" :style="{width:middle+'%',left:min+'%'}"></div>
<div class="big" :style="{width:big+'%',right:0+'%'}"></div>
</view>
</div>
</div>
<div class="list">
<div class="listItem" v-for="(item,index) in dataList" :key="index">
<div class="left">
<div style="margin-right: 4px" v-if="index!==0" :class="index===1?'icon1':index===2?'icon2':index===3?'icon3':'icon'"></div>
<p :class="index===0?'title':'smallTitle'">{{item.title}}</p>
</div>
<p :class="index===0?'rate':'smallRate'">{{item.value + '%'}}</p>
</div>
</div>
<p :class="index===0?'rate':'smallRate'">{{item.value + '%'}}</p>
</div>
</div>
<no-data v-if="data.length===0"/>
</div>
</template>
<script>
import NoData from "../noData.vue";
export default {
name: "percentEntry",
components: {NoData},
data() {
return {
dataList:[{title:'总车型入区率',value:''},{title:'小型车',value:''},{title:'中型车',value:''},{title:'大货车',value:''}],
@ -32,6 +40,7 @@ export default {
min:0,//
middle:0,//
big:0,//
isShowData:false,
}
},
props: {
@ -43,6 +52,9 @@ export default {
watch: {
data: {
handler(value) {
if (value){
this.isShowData = true
}
this.dataList = [{title:'总车型入区率',value:''},{title:'小型车',value:''},{title:'中型车',value:''},{title:'大货车',value:''}]
this.handleCarData(value)
}

View File

@ -1,17 +1,27 @@
<template>
<div class="timeAnalysis">
<canvas :style="{width:width+'px'}" class="timeAnalysis" canvas-id="timeAnalysis" id="timeAnalysis"/>
<div style="min-height: 100px;">
<div v-if="isShowData">
<div class="timeAnalysis" >
<canvas :style="{width:width+'px'}" class="timeAnalysis" canvas-id="timeAnalysis" id="timeAnalysis"/>
</div>
<analyse />
</div>
<no-data v-if="data.length===0"/>
</div>
</template>
<script>
import uCharts from '@/components/u-charts.js';
import NoData from "../noData.vue";
import Analyse from "../analyse.vue";
var uChartsInstance = {};
export default {
name: "timeAnalysis",
components: {Analyse, NoData},
data() {
return {
width:0,
isShowData: false,
}
},
props: {
@ -23,6 +33,9 @@ export default {
watch: {
data: {
handler(value) {
if (value){
this.isShowData = true
}
this.handleCarData(value)
}
}
@ -75,21 +88,26 @@ export default {
enableScroll: false,
xAxis: {
disableGrid: true,
gridType: "dash",
gridType: "solid",
splitNumber: 6,
boundaryGap: "justify",
min: 0,
max: 24
max: 24,
axisLineColor:"#F2F2F5",
},
yAxis: {
disabled: false,
disableGrid: false,
gridType: "dash",
gridType: "solid",
splitNumber: 5,
gridColor:'#F2F2F5',
data: [
{
min: 0,
max: 5
max: 5,
unit:'h',
axisLineColor:"#F2F2F5",
}
]
},
@ -102,8 +120,8 @@ export default {
},
extra: {
bubble: {
border: 2,
opacity: 0.5
border: 1,
opacity: 0.25
}
}
});
@ -122,4 +140,4 @@ export default {
margin-top: 12px;
}
}
</style>
</style>

View File

@ -3,24 +3,25 @@
<div class="bandItem" v-for="(item,index) in dataList" :key="index">
<p class="title">{{item.name}}</p>
<div class="progress">
<div class="big" :style="{width:item.big+'%'}">{{item.big}}</div>
<div class="normal" :style="{width:item.normal + '%',left:item.big+'%'}">{{item.normal}}</div>
<div class="small" :style="{width:item.small + '%',left:(Number(item.big)+Number(item.normal))+'%'}">{{item.small}}</div>
<div v-if="Number(item.small)!==0" class="small" :style="{width:item.small + '%'}">{{item.small<16?'':item.small+'%'}}</div>
<div v-if="Number(item.normal)!==0" class="normal" :style="{width:item.normal + '%',left:item.small+'%'}">{{item.normal<16?'':item.normal + '%'}}</div>
<div v-if="Number(item.big)!==0" class="big" :style="{width:item.big+'%',left:(Number(item.small)+Number(item.normal))+'%'}">{{item.big<16?'':item.big + '%'}}</div>
</div>
</div>
<div class="key">
<div class="box">
<div class="keyItem">
<div class="icon" style="background: #1E80FF"></div>
<p class="type">消费</p>
<div class="icon" style="background: #CAD0DA"></div>
<p class="type">消费</p>
</div>
<div class="keyItem">
<div class="icon" style="background: #ACB9CD"></div>
<p class="type">普通消费</p>
</div>
<div class="keyItem">
<div class="icon" style="background: #CAD0DA"></div>
<p class="type">消费</p>
<div class="icon" style="background: #1E80FF"></div>
<p class="type">消费</p>
</div>
</div>
</div>
@ -90,22 +91,12 @@ export default {
padding-left: 4px;
background: #1E80FF;
}
.big:after{
position: absolute;
content:'';
width: 2px;
height: 100%;
background: #FFFFFF;
z-index:9;
right: 0;
top: 0;
}
.normal{
display: flex;
align-items: center;
height: 100%;
position: absolute;
border-radius: 2px 0 0 2px;
box-sizing: border-box;
padding-left: 4px;
background: #ACB9CD;
@ -127,9 +118,19 @@ export default {
position: absolute;
box-sizing: border-box;
padding-left: 4px;
border-radius: 2px 0 0 2px;
border-radius: 0 2px 2px 0 ;
background: #CAD0DA;
}
.small:after{
position: absolute;
content:'';
width: 2px;
height: 100%;
background: #FFFFFF;
z-index:9;
right: 0;
top: 0;
}
}
}
.key{
@ -159,4 +160,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -5,6 +5,9 @@
<div class="left">
<image class="icon" :src="item.url"></image>
</div>
<div class="typePic">
<image class="typeImg" :src="item.type===1?'/static/images/commercial/success.svg':item.type===2?'/static/images/commercial/punish.svg':''"></image>
</div>
<div class="right">
<p class="title">{{item.name}}</p>
<div class="company">
@ -80,6 +83,19 @@ export default {
position: absolute;
right: -5px;top: 0;
}
.typePic{
width: 25px;
height: 25px;
position: absolute;
top: 16px;
right: 16px;
z-index:9;
.typeImg{
width: 100%;
height: 100%;
z-index:9;
}
}
.left{
width: 60px;
height: 60px;
@ -169,4 +185,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -1,6 +1,7 @@
<template>
<div class="consumLevel">
<canvas class="level" canvas-id="level" id="level"/>
<canvas v-if="!levelPath" class="level" canvas-id="level" id="level"/>
<image v-if="levelPath" class="level" :src="levelPath"></image>
</div>
</template>
@ -12,6 +13,7 @@ export default {
data() {
return {
width:0,
levelPath:''
}
},
props: {
@ -23,7 +25,6 @@ export default {
watch: {
data: {
handler(value) {
console.log('carDatawatch', value)
this.handleCarData(value)
}
}
@ -50,7 +51,7 @@ export default {
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#1E80FF","#ACB9CD","#CAD0DA" ],
color: ["#CAD0DA","#ACB9CD","#1E80FF" ],
padding: [15, 5, 5, 5],
dataLabel: false,
enableScroll: false,
@ -58,22 +59,27 @@ export default {
show: true,
position: "bottom",
lineHeight: 25,
float: 'center'
float: 'center',
fontSize:10
},
xAxis: {
disableGrid: true
disableGrid: true,
axisLineColor:'#F2F2F5',
fontSize:10
},
yAxis: {
showTitle:true,
splitNumber:5,
gridColor:'#F2F2F5',
data: [
{
min: 0,
max: 100,
title:'单位: /%',
titleOffsetY:-5,
titleOffsetX:-5
titleOffsetX:-5,
axisLineColor:'#F2F2F5'
}
]
},
@ -87,7 +93,27 @@ export default {
}
}
});
setTimeout( ()=>{
this.canvasToTempImage('level')
},2000)
},
canvasToTempImage(id){
uni.canvasToTempFilePath({
canvasId:id,
complete:(res)=>{
if (res.tempFilePath){
uni.getFileSystemManager().readFile({
filePath: res.tempFilePath,
encoding: 'base64',
success: res => {
let base64 = 'data:image/png;base64,' + res.data;
this.levelPath = base64
}
})
}
}
},this)
},
}
}
</script>
@ -101,4 +127,4 @@ export default {
height: 260px;
}
}
</style>
</style>

View File

@ -1,7 +1,8 @@
<template>
<div class="fillingDegree">
<div class="item">
<canvas class="fillDegree" canvas-id="fillDegree" id="fillDegree"/>
<canvas v-if="!fillDegreePath" class="fillDegree" canvas-id="fillDegree" id="fillDegree"/>
<image v-if="fillDegreePath" class="fillDegree" :src="fillDegreePath"></image>
</div>
</div>
</template>
@ -13,7 +14,8 @@ export default {
name: "fillingDegree",
data() {
return {
width:0
width:0,
fillDegreePath:''
}
},
props: {
@ -51,12 +53,12 @@ export default {
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#1E80FF", "#456497","#6B85AE","#8095B8","#97A9C6","#ACB9CD","#B8C7DE","#D5DFF0"],
color: ["#1E80FF", "#00C2FF","#6B6FFF","#38C275","#F3BC1B","#ED6B5A","#FF9845","#74839D","#ACB9CD","#CAD0DA"],
padding: [5, 5, 5, 5],
dataLabel: true,
enableScroll: false,
title: {
name: _this.carNumAll,
name:'盈足',
fontSize: 16,
color: "#341D00"
},
@ -64,15 +66,15 @@ export default {
show: true,
position: "bottom",
lineHeight: 25,
float: 'center'
float: 'left'
},
extra: {
ring: {
ringWidth: 12,
ringWidth: 20,
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
offsetAngle: -45,
labelWidth: 15,
border: false,
borderWidth: 3,
@ -80,7 +82,27 @@ export default {
}
}
});
setTimeout( ()=>{
this.canvasToTempImage('fillDegree')
},2000)
},
canvasToTempImage(id){
uni.canvasToTempFilePath({
canvasId:id,
complete:(res)=>{
if (res.tempFilePath){
uni.getFileSystemManager().readFile({
filePath: res.tempFilePath,
encoding: 'base64',
success: res => {
let base64 = 'data:image/png;base64,' + res.data;
this.fillDegreePath = base64
}
})
}
}
},this)
},
}
}
</script>
@ -98,4 +120,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -23,7 +23,7 @@ export default {
watch: {
data: {
handler(value) {
console.log('carDatawatch', value)
console.log('fdjsfhsdjkf',value)
this.handleCarData(value)
}
}
@ -47,11 +47,11 @@ export default {
width: _this.width,
height: 180,
series: data.series,
animation: true,
animation: false,
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#1E80FF", "#456497","#748AAE","#ACB9CD","#CAD0DA","#E5E8EF"],
color: ["#1E80FF", "#00C2FF","#6B6FFF","#38C275","#74839D","#B8C7DE"],
padding: [5, 5, 5, 5],
dataLabel: false,
enableScroll: false,
@ -64,10 +64,10 @@ export default {
},
extra: {
ring: {
ringWidth: 12,
ringWidth: 20,
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
offsetAngle: -45,
labelWidth: 15,
border: false,
borderWidth: 3,
@ -88,4 +88,4 @@ export default {
height: 170px;
}
}
</style>
</style>

View File

@ -25,7 +25,6 @@ export default {
watch: {
data: {
handler(value) {
console.log('carDatawatch', value)
this.handleCarData(value)
}
}
@ -33,6 +32,7 @@ export default {
methods: {
//
handleCarData(value) {
console.log('value11111',value)
let res = value
this.drawCharts('prefer', res)
},
@ -69,7 +69,7 @@ export default {
gridColor: "#CCCCCC",
gridCount: 3,
opacity: 0.2,
max: 200,
max: data.max,
labelShow: true,
border: true
}
@ -103,10 +103,10 @@ export default {
<style scoped lang="scss">
.consumPrefer{
width: 100%;
height: 294px;
height: 274px;
.prefer{
width: 100%;
height: 100%;
}
}
</style>
</style>

View File

@ -6,23 +6,24 @@
<p class="title">{{item.name}}</p>
</div>
<div class="progress">
<div class="big" :style="{background:item.name==='男'?'#1E80FF':'#00C2FF', width:item.big+'%'}">{{item.big}}</div>
<div class="normal" :style="{background:item.name==='男'?'#ACB9CD':'#AFC1C6',width:item.normal + '%',left:item.big+'%'}">{{item.normal}}</div>
<div class="small" :style="{background:item.name==='男'?'#CAD0DA':'#C6D3D7',left:(Number(item.big)+Number(item.normal))+'%',width:item.small + '%'}">{{item.small}}</div>
<div class="small" :style="{background:item.name==='男'?'#CAD0DA':'#C6D3D7',width:item.small + '%'}">{{item.small<16?'':item.small + '%'}}</div>
<div class="normal" :style="{background:item.name==='男'?'#ACB9CD':'#AFC1C6',width:item.normal + '%',left:item.small+'%'}">{{item.normal<16?'':item.normal+'%'}}</div>
<div class="big" :style="{background:item.name==='男'?'#1E80FF':'#00C2FF',left:(Number(item.small)+Number(item.normal))+'%', width:item.big+'%'}">{{item.big<16?'':item.big + '%'}}</div>
</div>
<div class="imgKey">
<div style="margin: 0 auto;display: flex">
<div class="item">
<div class="icon" :style="{background:item.name==='男'?'#1E80FF':'#00C2FF'}"></div>
<p class="consume">消费</p>
<div class="icon" :style="{background:item.name==='男'?'#CAD0DA':'#C6D3D7'}"></div>
<p class="consume">消费</p>
</div>
<div class="item">
<div class="icon" :style="{background:item.name==='男'?'#ACB9CD':'#AFC1C6'}"></div>
<p class="consume">普通消费</p>
</div>
<div class="item">
<div class="icon" :style="{background:item.name==='男'?'#CAD0DA':'#C6D3D7'}"></div>
<p class="consume">消费</p>
<div class="icon" :style="{background:item.name==='男'?'#1E80FF':'#00C2FF'}"></div>
<p class="consume">消费</p>
</div>
</div>
</div>
@ -47,7 +48,6 @@ export default {
watch: {
data: {
handler(value) {
console.log('carDatawatch', value)
this.genderList = value
}
}
@ -97,26 +97,15 @@ export default {
position: absolute;
top: 0;
left: 0;
border-radius: 2px 0 0 2px;
border-radius:0 2px 2px 0;
box-sizing: border-box;
padding-left: 4px;
}
.big:after{
position: absolute;
content:'';
width: 2px;
height: 100%;
background: #FFFFFF;
z-index:9;
right: 0;
top: 0;
}
.normal{
display: flex;
align-items: center;
height: 100%;
position: absolute;
border-radius: 2px 0 0 2px;
box-sizing: border-box;
padding-left: 4px;
}
@ -137,8 +126,19 @@ export default {
position: absolute;
box-sizing: border-box;
padding-left: 4px;
border-radius: 2px 0 0 2px;
border-radius:2px 0 0 2px;
}
.small:after{
position: absolute;
content:'';
width: 2px;
height: 100%;
background: #FFFFFF;
z-index:9;
right: 0;
top: 0;
}
}
.imgKey{
display: flex;
@ -164,4 +164,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -7,11 +7,11 @@
</div>
<div class="bottom">
<div class="item">
<p class="price">583</p>
<p class="price">{{ info.TicketCount?info.TicketCount:'-' }}</p>
<p class="text">客单交易 <text class="unit">/</text></p>
</div>
<div class="item">
<p class="price">34.6</p>
<p class="price">{{ info.AvgTicketPrice?info.AvgTicketPrice:'-' }}</p>
<p class="text">客单均价 <text class="unit">/</text></p>
</div>
</div>
@ -23,25 +23,25 @@
</div>
<div class="bottom">
<div class="item">
<p class="price">583</p>
<p class="price">{{ info.TicketAvgCount?info.TicketAvgCount:'-' }}</p>
<p class="text">客单交易 <text class="unit">/</text></p>
</div>
<div class="item">
<p class="price">34.6</p>
<p class="price">{{ info.MonthAvgTicketPrice?info.MonthAvgTicketPrice:'-' }}</p>
<p class="text">客单均价 <text class="unit">/</text></p>
</div>
</div>
<div class="progress">
<div class="box">
<div class="pro">
<div class="big" :style="{width:big+'%'}"></div>
<div class="normal" :style="{width:normal+'%',left:big+'%'}"></div>
<div class="small" :style="{width:small+'%',left:(Number(big) + Number(normal))+'%'}"></div>
<div class="big" :style="{width:info.transactionLevel.HighConsumption_Rate +'%'}"></div>
<div class="normal" :style="{width:info.transactionLevel.NormalConsumption_Rate +'%',left:info.transactionLevel.HighConsumption_Rate+'%'}"></div>
<div class="small" :style="{width:info.transactionLevel.LowConsumption_Rate +'%',left:(Number(info.transactionLevel.HighConsumption_Rate) + Number(info.transactionLevel.NormalConsumption_Rate))+'%'}"></div>
</div>
<div class="type">
<text class="item big">高消费 {{big}}%</text>
<text class="item normal">普通消费 {{normal}}%</text>
<text class="item small">低消费 {{small}}%</text>
<text class="item big">高消费 {{info.transactionLevel.HighConsumption_Rate?info.transactionLevel.HighConsumption_Rate:'-'}}%</text>
<text class="item normal">普通消费 {{info.transactionLevel.NormalConsumption_Rate?info.transactionLevel.NormalConsumption_Rate:'-'}}%</text>
<text class="item small">低消费 {{info.transactionLevel.LowConsumption_Rate?info.transactionLevel.LowConsumption_Rate:'-' }}%</text>
</div>
</div>
</div>
@ -54,9 +54,21 @@ export default {
name: "customerFirst",
data() {
return {
big:'14.8',
normal:'41.7',
small:'43.5'
info:{}
}
},
props: {
data: {
type: Object,
default: () => {}
}
},
watch: {
data: {
handler(value) {
console.log('3333333', value)
this.info = value
}
}
},
}
@ -69,7 +81,7 @@ export default {
margin-top: 12px;
width: 100%;
box-sizing: border-box;
background: #F2F1F1;
background: #F7F7F7;
border-radius: 4px;
padding: 12px;
.top{
@ -94,7 +106,7 @@ export default {
box-sizing: border-box;
.item{
width:50%;
padding-left: 22px;
padding-left: 26px;
.price{
font-size: 16px;
font-family: DINAlternate-Bold, DINAlternate;
@ -120,9 +132,9 @@ export default {
}
}
.progress{
width: 100%;
width: calc(100% - 8px);
box-sizing: border-box;
padding-left: 22px;
padding-left: 26px;
margin-top: 12px;
.box{
width: 100%;
@ -152,6 +164,7 @@ export default {
}
.type{
display: flex;
justify-content: space-between;
margin-top: 4px;
.item{
display: inline-block;
@ -163,7 +176,6 @@ export default {
position: relative;
text-align: left;
padding-left: 8px;
margin-right: 12px;
}
.item:last-child{
margin-right: 0px;
@ -200,4 +212,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -43,8 +43,8 @@ export default {
},
props: {
data: {
type: Array,
default: () => []
type: Object,
default: () => {}
}
},
watch: {
@ -58,8 +58,10 @@ export default {
methods:{
//
handleCarData(value) {
this.man = value.man
this.woman = value.woman
let res = {
series: value
series: value.res
}
this.drawCharts('gender', res)
},
@ -91,33 +93,38 @@ export default {
},
xAxis: {
disableGrid: true,
gridType: "dash",
splitNumber: 4,
gridType: "solid",
splitNumber:4,
boundaryGap: "justify",
title:'年龄: /岁',
titleOffsetY: 15,
titleOffsetX: -30,
min: 20,
max: 60
min: 0,
max: 80,
axisLineColor:'#F2F2F5'
},
yAxis: {
disableGrid: false,
gridType: "dash",
gridType: "solid",
showTitle:true,
splitNumber:6,
gridColor:'#F2F2F5',
data: [
{
title:'单位: /元',
min: 0,
max: 100,
max: 120,
titleOffsetY:-5,
titleOffsetX:0
titleOffsetX:0,
fontColor:'#786B6C',
axisLineColor:'#F2F2F5'
}
]
},
extra: {
bubble: {
border: 2,
opacity: 0.5
border: 1,
opacity: 0.25
}
}
});
@ -188,10 +195,13 @@ export default {
}
}
.progress{
width: 100%;
padding: 0 16px;
box-sizing: border-box;
width: calc(100% - 32px);
height: 14px;
margin-top: 8px;
position: relative;
margin-left: 16px;
.man{
height: 100%;
position: absolute;
@ -238,4 +248,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -10,7 +10,7 @@
</div>
</div>
<div class="serviceArea" :style="{top : (menu.bottom + 14) + 'px'}">
<picker class="picker" @change="bindPickerChange" :value="serviceIndex" :range="serviceArray">
<div class="picker">
<div class="selectService">
<image class="img" src="/static/images/commercial/fixed.svg"></image>
<view class="select">
@ -21,7 +21,7 @@
</view>
</view>
</div>
</picker>
</div>
<div class="label">
<div :class="index===0?'labelItem labelItem0':index===1?'labelItem labelItem1':index===2?'labelItem labelItem2':index===3?'labelItem labelItem3':
index===4?'labelItem labelItem4':index===5?'labelItem labelItem5':''" v-for="(item,index) in labelList" :key="index"

View File

@ -74,7 +74,8 @@ export default {
left: 0;top: 0;
height: 100%;
background: #1E80FF;
border-radius: 0 2px 2px 0;
}
}
}
</style>
</style>

View File

@ -1,6 +1,7 @@
<template>
<div class="moneyCompare">
<canvas class="compare" canvas-id="compare" id="compare"/>
<canvas v-if="!comparePath" class="compare" canvas-id="compare" id="compare"/>
<image v-if="comparePath" class="compare" :src="comparePath"></image>
</div>
</template>
@ -11,7 +12,8 @@ export default {
name: "moneyCompare",
data() {
return {
width:0
width:0,
comparePath:''
}
},
props: {
@ -38,7 +40,7 @@ export default {
const ctx = uni.createCanvasContext(id, this);
let _this = this
let phoneInfo = uni.getStorageSync('phoneInfo')
this.width = phoneInfo.screenWidth - 16
this.width = phoneInfo.screenWidth
uChartsInstance[id] = new uCharts({
type: "column",
context: ctx,
@ -50,7 +52,7 @@ export default {
rotate: false,
rotateLock: false,
background: "#FFFFFF",
color: ["#CAD0DA", "#1E80FF"],
color: ["#1E80FF", "#00B6FF","#ACB9CD"],
padding: [15, 40, 5, 0],
dataLabel: false,
enableScroll: false,
@ -72,8 +74,9 @@ export default {
min: 0,
max: 12,
title:'单位: 千万',
titleOffsetX:5,
titleOffsetY:-5
titleOffsetX:8,
titleOffsetY:-5,
fontSize:12,
}
]
},
@ -81,12 +84,33 @@ export default {
column: {
type: "group",
width: 5,
seriesGap:4,
activeBgColor: "#000000",
activeBgOpacity: 0.08
}
}
});
setTimeout( ()=>{
this.canvasToTempImage('compare')
},2000)
},
canvasToTempImage(id){
uni.canvasToTempFilePath({
canvasId:id,
complete:(res)=>{
if (res.tempFilePath){
uni.getFileSystemManager().readFile({
filePath: res.tempFilePath,
encoding: 'base64',
success: res => {
let base64 = 'data:image/png;base64,' + res.data;
this.comparePath = base64
}
})
}
}
},this)
},
}
}
</script>
@ -99,4 +123,4 @@ export default {
height: 200px;
}
}
</style>
</style>

View File

@ -1,6 +1,7 @@
<template>
<div class="revenueTrends">
<canvas class="trends" canvas-id="trends" id="trends"/>
<canvas v-if="!trendsPath" class="trends" canvas-id="trends" id="trends"/>
<image v-if="trendsPath" class="trends" :src="trendsPath"></image>
</div>
</template>
@ -11,6 +12,7 @@ export default {
name: "revenueTrends",
data() {
return {
trendsPath:''
}
},
props: {
@ -42,7 +44,7 @@ export default {
type: "area",
context: ctx,
width: _this.width ,
height: 198,
height: 213,
categories: data.categories,
series: data.series,
animation: true,
@ -61,17 +63,22 @@ export default {
},
xAxis: {
disableGrid: true
disableGrid: true,
axisLineColor:'#F2F2F5'
},
yAxis: {
splitNumber:4,
showTitle:true,
gridColor:'#F2F2F5',
data:[
{
min:0,
max:12,
title:'单位: 千万',
titleOffsetY:-5
titleOffsetY:-5,
titleOffsetX:8,
fontSize:12,
axisLineColor:'#F2F2F5'
}
]
},
@ -86,7 +93,27 @@ export default {
}
}
});
setTimeout( ()=>{
this.canvasToTempImage('trends')
},2000)
},
canvasToTempImage(id){
uni.canvasToTempFilePath({
canvasId:id,
complete:(res)=>{
if (res.tempFilePath){
uni.getFileSystemManager().readFile({
filePath: res.tempFilePath,
encoding: 'base64',
success: res => {
let base64 = 'data:image/png;base64,' + res.data;
this.trendsPath = base64
}
})
}
}
},this)
},
}
}
</script>
@ -99,4 +126,4 @@ export default {
height: 208px;
}
}
</style>
</style>

View File

@ -0,0 +1,44 @@
<template>
<div class="main">
<image class="img" src="/static/images/commercial/noData.svg"></image>
<p class="text">抱歉,服务区采集样本过小,无法分析</p>
</div>
</template>
<script>
export default {
name: "noData",
data(){
return {
}
},
methods:{
}
}
</script>
<style scoped lang="scss">
.main{
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin-top: 12px;
padding: 16px 0;
.img{
width:60px;
height: 60px;
margin-bottom: 8px;
}
.text{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #6C737A;
line-height: 20rpx;
}
}
</style>

View File

@ -26,13 +26,13 @@
</div>
</div>
<band-number :data="brandInfoList"/>
<analyse />
</div>
</div>
</div>
</template>
<script>
import request from '@/util/index.js'
import headerTop from "./components/headerTop.vue";
import analyse from "./components/analyse.vue";
import FillingDegree from "./components/format/fillingDegree.vue";
@ -83,57 +83,120 @@ export default {
this.getBrandInfoList()
},
methods:{
getFillDegreeList(){
let res = {
async getFillDegreeList(){
const req = {
ProvinceCode:'340000',
StatisticsDate:'2023-04-02',
serverpartId:416
}
const data = await request.$webGet('CommercialApi//Revenue/GetBusinessTradeRevenue',req)
let res = []
let all = 0
data.Result_Data.BusinessTradeRank.forEach((item,index)=>{
if (index<=10){
res.push({name:`${item.name} ${item.value}%`,value:Number(item.value)})
all+=Number(item.value)
}else if(index===11){
res.push({name:`其他${(100-all).toFixed(2)}%`,value:Number((100 - all).toFixed(2))})
}
})
console.log('res21312312',res)
let result= {
series: [
{
data: [{"name":"商超","value":27.6},
{"name":"水果饮品","value":20.7},
{"name":"餐饮","value":15.5},
{"name":"小吃","value":11.9},
{"name":"地方特产","value":8.4},
{"name":"连锁品牌","value":7.2},
{"name":"粽子","value":5.6},
{"name":"箱包工艺","value":3.1}]
data:res
}
]
}
this.fillDegreeList = res
};
// let res = {
// series: [
// {
// data: [{"name":"","value":27.6},
// {"name":"","value":20.7},
// {"name":"","value":15.5},
// {"name":"","value":11.9},
// {"name":"","value":8.4},
// {"name":"","value":7.2},
// {"name":"","value":5.6},
// {"name":"","value":3.1}]
// }
// ]
// }
this.fillDegreeList = result
},
getBandLevelList(){
let res=[{name:'五芳斋',big:'14.8',normal:'41.7',small:'43.5'},
{name:'驿佰购',big:'44.1',normal:'31.7',small:'24.2'},
{name:'老娘舅',big:'15.2',normal:'70.1',small:'14.5'},
{name:'吉祥馄饨',big:'25.2',normal:'39.9',small:'34.7'}]
async getBandLevelList(){
let req = {
ProvinceCode:'340000',
StatisticsDate:'2023-04-03',
ServerpartId:416,
ShowWholeBrand:false
}
let res =[]
let totalData = await request.$webGet('CommercialApi/Revenue/GetBusinessBrandLevel',req)
totalData.Result_Data.legend.forEach(item=>{
res.push({name:item,small:0,normal:0,big:0})
})
res.forEach((item,index)=>{
totalData.Result_Data.ColumnList.forEach((subItem,subIndex)=>{
if (subItem.name==='低消费'){
item.small = subItem.data[index]
}else if(subItem.name==='普通消费'){
item.normal = subItem.data[index]
}else if(subItem.name==='高消费'){
item.big = subItem.data[index]
}
})
})
// let res=[{name:'',big:'14.8',normal:'41.7',small:'43.5'},
// {name:'驿',big:'44.1',normal:'31.7',small:'24.2'},
// {name:'',big:'15.2',normal:'70.1',small:'14.5'},
// {name:'',big:'25.2',normal:'39.9',small:'34.7'}]
this.bandLevelList = res
},
getConsumLevelList(){
let res = {
categories:["商超","餐饮","水果饮品","小吃","连锁品牌"],
series: [
{
name: "高消费",
textColor: "#FFFFFF",
data: [35,36,31,33,13]
},
{
name: "普通消费",
textColor: "#FFFFFF",
data: [18,27,21,24,6]
},
{
name: "低消费",
textColor: "#FFFFFF",
data: [18,27,21,24,6]
}
]
async getConsumLevelList(){
let req = {
ProvinceCode:'340000',
StatisticsDate:'2023-04-02',
ServerpartId:416,
ShowWholeTrade:false
}
let res = {
categories:[],
series:[]
}
let totalData = await request.$webGet('CommercialApi/Revenue/GetBusinessTradeLevel',req)
res.categories = totalData.Result_Data.legend
totalData.Result_Data.ColumnList.forEach(item=>{
res.series.push({name:item.name,data:item.data})
})
// let res = {
// categories:["","","","",""],
// series: [
// {
// name: "",
// textColor: "#FFFFFF",
// data: [18,27,21,24,6]
// },
// {
// name: "",
// textColor: "#FFFFFF",
// data: [18,27,21,24,6]
// },
// {
// name: "",
// textColor: "#FFFFFF",
// data: [64,46,58,52,88]
// },
// ]
// }
this.consumLevelList = res
},
getBrandInfoList(){
let res = [{icon:'',name:'老娘舅',company:'老娘舅餐饮股份有限公司',time:'2019.03-2022.03',label:["中式快餐","30-40岁男性"],info:[9,8,8]},
{icon:'',name:'老乡鸡',company:'老乡鸡餐饮股份有限公司',time:'2019.03-2022.03',label:["中式快餐","30-40岁男性"],info:[9,9,9]},
{icon:'',name:'永和大王',company:'永和大王餐饮股份有限公司',time:'2019.03-2022.03',label:["中式快餐","30-40岁男性"],info:[8,8,8]}]
let res = [{icon:'',name:'老娘舅',company:'老娘舅餐饮股份有限公司',type:0,time:'2019.03-2022.03',label:["中式快餐","30-40岁男性"],info:[9,8,8]},
{icon:'',name:'老乡鸡',company:'老乡鸡餐饮股份有限公司',type:1,time:'2019.03-2022.03',label:["中式快餐","30-40岁男性"],info:[9,9,9]},
{icon:'',name:'永和大王',company:'永和大王餐饮股份有限公司',type:2,time:'2019.03-2022.03',label:["中式快餐","30-40岁男性"],info:[8,8,8]}]
this.brandInfoList = res
}
}
@ -188,6 +251,7 @@ export default {
font-weight: 400;
color: #A69E9F;
line-height: 20px;
margin-left: 4px;
}
}
}
@ -195,4 +259,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -5,7 +5,8 @@
<div class="charts">
<div class="chartsItem">
<p class="title">客群分析</p>
<customer-first />
<customer-first :data="customer" />
<!-- <no-data />-->
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">客群分析</p>
@ -23,7 +24,7 @@
<analyse />
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">业态偏好</p>
<p class="title">业态消费偏好</p>
<business-type :data="businessTypeList"></business-type>
<analyse />
</div>
@ -32,6 +33,7 @@
</template>
<script>
import request from '@/util/index.js'
import headerTop from "./components/headerTop.vue";
import customerFirst from "./components/guest/customerFirst.vue";
import customerSecond from "./components/guest/customerSecond.vue";
@ -39,9 +41,10 @@ import analyse from "./components/analyse.vue";
import ConsumPrefer from "./components/guest/consumPrefer.vue";
import ConsumptionLevel from "./components/guest/consumptionLevel.vue";
import BusinessType from "./components/guest/businessType.vue";
import NoData from "./components/noData.vue";
export default {
name: "guestPortrait",
components:{BusinessType, ConsumptionLevel, ConsumPrefer, analyse, headerTop,customerFirst,customerSecond},
components:{NoData, BusinessType, ConsumptionLevel, ConsumPrefer, analyse, headerTop,customerFirst,customerSecond},
data() {
return {
topBg:'linear-gradient(180deg, #A1D0C1 0%, #B1D9CD 100%);',//
@ -51,6 +54,7 @@ export default {
bgUrl:'https://eshangtech.com/ShopICO/ahyd-BID/commercial/guestPortraitBg.svg',//
time:'',//
menu:{},//
customer:{}, //
genderBubbleList:[],//
consterPreferList:[],//
consumptionLevelList:[],//
@ -66,6 +70,11 @@ export default {
uni.setStorageSync('phoneInfo',systemInfo)
this.statusBarHeight = Number(systemInfo.statusBarHeight)
this.menu = uni.getMenuButtonBoundingClientRect()
//
// prop
// 便
//customer
this.getCustomer()
//
this.getGenderBubbleList()
//
@ -76,50 +85,157 @@ export default {
this.getBusinessTypeList()
},
methods:{
//customer
// async await
async getCustomer(){
const req = {
Province_Code:'340000',
Statistics_Date:this.time,
Serverpart_ID:416,
ShowConsumptionLevel:true,
ShowConvertRate:true
}
let totalData = await request.$webGet('CommercialApi/Revenue/GetTransactionAnalysis',req)
this.customer = totalData.Result_Data
},
//
getGenderBubbleList(){
let res = [
{
name: "男",
data: [[25,60,60],[40,35,35]]
},
{
name: "女",
data: [[25,35,35],[35,15,15]]
async getGenderBubbleList(){
let result = {
man:'',
woman:'',
res:[]
}
const req = {
statisticsType:2,
provinceCode:'340000',
serverpartId:416,
statisticsMonth:'202303'
}
let totalData = await request.$webGet('CommercialApi/Customer/GetCustomerRatio',req)
totalData.Result_Data.List.forEach(item=>{
//
if (item.name === '男性'){
result.man = item.data[0]
}else if(item.name === '女性'){
result.woman = item.data[0]
}
]
this.genderBubbleList = res
})
const bubbleReq = {
provinceCode:'340000',
serverpartId:416,
statisticsMonth:'202303'
}
let bubbleData = await request.$webGet('CommercialApi/Customer/GetCustomerGroupRatio',bubbleReq)
result.res = bubbleData.Result_Data.List
// let res = [
// {
// name: "",
// data: [[25,60,30],[40,35,17]]
// },
// {
// name: "",
// data: [[25,35,17],[35,15,15]]
// }
// ]
this.genderBubbleList = result
},
//
getConsterPreferList(){
let res = {
categories: ['餐饮','商超','水果饮品','连锁品牌','粽子','小吃'],
series: [
{name: "男", data: [90,110,165,195,187,172]},
{name: "女", data: [190,210,105,35,27,102]}
]
async getConsterPreferList(){
const date = new Date(this.time)
let y = date.getFullYear()
let m = date.getMonth() + 1
if (m<10){
m ='0' + m
}
const req = {
statisticsType:1,
startMonth:`202303`,
endMonth:`202303`,
provinceCode: '340000',
serverpartId: 416
}
const data = await request.$webGet('CommercialApi/Customer/GetCustomerSaleRatio',req)
console.log('data',data)
let res = {
categories:[],
series:[
{name: "男", data: []},
{name: "女", data: []}
],
max:''
}
data.Result_Data.CustomerSaleList.forEach(item=>{
res.categories.push(item.BusinessTradeName)
res.series[0].data.push(item.MaleRatio)
res.series[1].data.push(item.FemaleRatio)
})
res.max = data.Result_Data.MaxSexRatio
// let res = {
// categories: ['','','','','',''],
// series: [
// {name: "", data: [90,110,165,195,187,172]},
// {name: "", data: [190,210,105,35,27,102]}
// ]
// }
this.consterPreferList = res
},
//
getConsumptionLevelList(){
let res=[{name:'男',big:'14.8',normal:'41.7',small:'43.5'},
{name:'女',big:'44.1',normal:'31.7',small:'24.2'}]
async getConsumptionLevelList(){
const req = {
provinceCode:'340000',
serverpartId:416,
statisticsMonth:'202303'
}
const data = await request.$webGet('CommercialApi/Customer/GetCustomerConsumeRatio',req)
console.log('data',data)
let res = []
data.Result_Data.List.forEach(item=>{
res.push({name:item.name,big:item.data[3],normal:item.data[1]+item.data[2],small:item.data[0]})
})
// let res=[{name:'',big:'14.8',normal:'41.7',small:'43.5'},
// {name:'',big:'44.1',normal:'31.7',small:'24.2'}]
this.consumptionLevelList = res
},
//
getBusinessTypeList(){
let res=[
async getBusinessTypeList(){
const req = {
ProvinceCode:'340000',
StatisticsDate:'2023-04-02',
serverpartId:416
}
const data = await request.$webGet('CommercialApi//Revenue/GetBusinessTradeRevenue',req)
let res = []
let all = 0
data.Result_Data.BusinessTradeRank.forEach((item,index)=>{
if (index<=4){
res.push({name:`${item.name} ${item.value}%`,value:Number(item.value)})
all+=Number(item.value)
}else if(index===5){
res.push({name:`其他${(100-all).toFixed(2)}%`,value:Number((100 - all).toFixed(2))})
}
})
console.log('res21312312',res)
let result = [
{
data: [{name:"餐饮",value:35.6},
{name:"小吃",value:22.5},
{name:"水果饮品",value:17.3},
{name:"粽子",value:15.2},
{name:"商超",value:5.8},
{name:"其他",value:3.6}]
data:res
}
]
this.businessTypeList = res
// let res=[
// {
// data: [{name:" 35.6%",value:35.6},
// {name:" 22.5%",value:22.5},
// {name:" 17.3%",value:17.3},
// {name:" 15.2%",value:15.2},
// {name:" 5.8%",value:5.8},
// {name:" 3.6%",value:3.6}]
// }
// ]
this.businessTypeList = result
}
}
}
@ -145,4 +261,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -28,7 +28,7 @@
<p class="sumMoney">413,168.00</p>
</div>
<div class="bottom">
<image class="icon" src=""></image>
<image class="icon" src="/static/images/commercial/addArrow.svg"></image>
<p class="add">+43.00%</p>
<p class="text">(相比去年同日)</p>
</div>
@ -38,9 +38,10 @@
<p class="title" style="margin-top: 20px">营收对比</p>
<money-compare :data="moneyCompareList"/>
</div>
<div class="subItem">
<div class="subItem ">
<p class="title" style="margin-top: 20px">营收趋势</p>
<revenue-trends :data="trendsList"/>
<analyse/>
</div>
</div>
<div class="chartsItem" style="margin-top: 32px">
@ -155,12 +156,13 @@ import headerTop from "./components/headerTop.vue";
import RevenueAnalysis from "./components/manager/revenueAnalysis.vue";
import ContractGuarantee from "./components/manager/contractGuarantee.vue";
import MoneyCompare from "./components/manager/moneyCompare.vue";
import analyse from "./components/analyse.vue";
import RevenueTrends from "./components/manager/revenueTrends.vue";
import request from '@/util/index.js'
export default {
name: "businessPortrait",
components: {RevenueTrends, MoneyCompare, ContractGuarantee, RevenueAnalysis, headerTop},
components: {RevenueTrends, MoneyCompare, ContractGuarantee, RevenueAnalysis, headerTop,analyse},
data() {
return {
topBg:'linear-gradient(180deg, #D9CCEF 0%, #DED3F2 100%);',
@ -330,7 +332,6 @@ export default {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 8px;
.left,.right{
display: flex;
align-items: center;
@ -339,14 +340,12 @@ export default {
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
margin: 6px 0;
}
.value{
font-size: 18px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #160002;
margin: 6px 0;
}
}
}
@ -571,14 +570,15 @@ export default {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
color: #786B6C;
}
.tabItemActive{
color: #160002;
background: #FFFFFF;
}
}
.subItem{
width:calc(100% - 32px);
width:100%;
.title{
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
@ -588,9 +588,10 @@ export default {
margin-bottom: 8px;
}
.money{
width:100%;
width:calc(100% - 32px);
padding: 18px 16px;
background: #F7F7F7;
border-radius: 4px;
.top{
display: flex;
align-items: center;
@ -615,6 +616,7 @@ export default {
.icon{
width: 14px;
height: 14px;
margin-right: 4px;
}
.add{
font-size: 14px;
@ -622,6 +624,7 @@ export default {
font-weight: 400;
color: #FA5151;
line-height: 20px;
margin-right: 4px;
}
.text{
font-size: 14px;
@ -636,4 +639,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -0,0 +1,488 @@
<template>
<div class="main">
<div class="thisMonth" v-if="type==='month'">
<div class="titleTop">
<p class="title">本月自营计划</p>
<div class="question" @click="handleShowNotice">
<image src="/static/images/index/noticeQuestion.svg"></image>
</div>
<div v-if="showNotice" class="titleTopNotice">这里是注解文字,这里是注解文字,这里是注解文字,这里是注解文字,这里是注解文字</div>
<div v-if="showNotice" class="meng" @click="handleNoShowNotice"></div>
</div>
<view class="box">
<view class="top">
<view class="big">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/thisMonth.svg"></image>
</view>
<view class="text">
<view class="textTop">
<view class="left">
<p class="number">{{plan.percentageMonth?plan.percentageMonth + '%':'-'}}</p>
<p v-if="plan.percentageMonth>=100" class="desc"><image class="success" src="/static/images/index/successMonth.svg"></image></p>
</view>
<view class="right">
<text class="comparePlan">比计划 </text>
<view class="box2">
<image class="addIcon" :src="Number(monthAdd)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{monthAdd?monthAdd + '%':'-'}}</p>
</view>
</view>
</view>
<div class="progressPlan">
<div class="trans" :style="{width:plan.percentageMonth + '%'}"></div>
</div>
</view>
</view>
<view class="bottom">
<view class="success" style="margin-right: 39px">
<p class="text">本月已完成<text class="unit">/</text></p>
<p class="money">{{plan.RevenueMonth_Amount?plan.RevenueMonth_Amount:'-'}}</p>
</view>
<view class="success">
<p class="text">本月计划<text class="unit">/</text></p>
<p class="money">{{plan.BudgetMonth_Amount?plan.BudgetMonth_Amount:'-'}}</p>
</view>
</view>
</view>
</div>
<div class="thisYear" style="margin-top: 0px" v-if="type==='year'">
<div class="titleTop">
<p class="title">年度自营计划</p>
<div class="question" @click="handleShowNoticeYear">
<image src="/static/images/index/noticeQuestion.svg"></image>
</div>
<div v-if="showNoticeYear" class="titleTopNotice">这里是注解文字,这里是注解文字,这里是注解文字,这里是注解文字,这里是注解文字</div>
<div v-if="showNoticeYear" class="meng" @click="handleNoShowNoticeYear"></div>
</div>
<view class="box">
<view class="top">
<view class="big">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/planYear.svg"></image>
</view>
<view class="text">
<view class="textTop">
<view class="left">
<p class="number">{{plan.percentageYear?plan.percentageYear + '%':'-'}}</p>
<p v-if="plan.percentageYear>=100" class="desc" style="color: #4E68FF"><image class="success" src="/static/images/index/yearSuccess.svg"></image></p>
</view>
<view class="right">
<text class="comparePlan">比计划 </text>
<div class="box2">
<image class="addIcon" :src="Number(yearAdd)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{yearAdd?yearAdd + '%':''}}</p>
</div>
</view>
</view>
<div class="progressPlan">
<div class="transYear" :style="{width:plan.percentageYear + '%'}"></div>
<!-- <image class="img" :style="{width: plan.percentageYear + '%'}" src="https://eshangtech.com/ShopICO/ahyd-BID/index/progress_blue.png"></image>-->
<!-- <div class=pro :style="{width:(100 - plan.percentageYear)+ '%'}"></div>-->
</div>
</view>
</view>
<view class="bottom">
<view class="success" style="margin-right: 39px">
<p class="text">年度已完成<text class="unit">/</text></p>
<p class="money">{{plan.RevenueYear_Amount?plan.RevenueYear_Amount:'-'}}</p>
</view>
<view class="success">
<p class="text">年度计划<text class="unit">/</text></p>
<p class="money">{{plan.BudgetYear_Amount?plan.BudgetYear_Amount:'-'}}</p>
</view>
</view>
</view>
</div>
<div class="list" v-for="(item,index) in dataList" :key="index">
<div class="top">
<div class="left">
<image class="icon" :src="type==='month'?'/static/images/commercial/planMonth.svg':'/static/images/commercial/planYear.svg'"></image>
<p class="title">{{item.title}}</p>
</div>
<div class="value" :style="{color:type==='year'?'#4962FF':''}">{{item.value}}%</div>
</div>
<div class="progress">
<div class="have" :style="{width:item.value + '%',background: type==='month'?'#FF8E5B':'#778CFD'}"></div>
</div>
<div class="bottom">
<div class="success">
<p>本月已完成<text>/</text></p>
<p class="money">{{item.monthSuccess}}</p>
</div>
<div class="success">
<p>本月计划<text>/</text></p>
<p class="money">{{item.planMonth}}</p>
</div>
</div>
</div>
</div>
</template>
<script>
import request from '@/util/index.js'
export default {
name: "planMonth",
data(){
return {
plan:{},
monthAdd:'',
yearAdd:'',
lastDay:'',
type:'month',
showNotice:false,
showNoticeYear:false,
dataList:[{title:'合肥片区',value:84.03,monthSuccess:'36,830,433.12',planMonth:'65,768,321.76'},{title:'安庆片区',value:57.14,monthSuccess:'36,830,433.12',planMonth:'65,768,321.76'}]
}
},
onLoad(option){
this.lastDay = option.lastDay
this.type = option.type
if (this.type==='month'){
uni.setNavigationBarTitle({
title: '本月自营计划',
})
}else if(this.type==='year'){
uni.setNavigationBarTitle({
title: '年度自营计划',
})
}
this.monthYearPlan()
},
methods:{
monthYearPlan(){
const monthDate= {
Province_Code:'340000',
Statistics_Date:this.lastDay
}
request.$webGet('CommercialApi/Revenue/GetRevenueBudget',monthDate).then(res=>{
// data
this.plan = res.Result_Data
this.plan.percentageMonth = (res.Result_Data.RevenueMonth_Amount / res.Result_Data.BudgetMonth_Amount*100).toFixed(2)
this.plan.percentageYear = (res.Result_Data.RevenueYear_Amount / res.Result_Data.BudgetYear_Amount*100).toFixed(2)
let date = new Date(this.lastDay)
let nowDay = date.getDate()
let day = this.$util.getThisMonthDay(this.lastDay)
//
let oneDay = 100/day
//
let thisDayShould= oneDay*nowDay
this.monthAdd = (this.plan.percentageMonth - thisDayShould).toFixed(2)
this.yearAdd = (((res.Result_Data.RevenueYear_Amount - res.Result_Data.RevenueYear_PlanAmount)/res.Result_Data.BudgetYear_Amount)*100).toFixed(2)
//
this.plan.RevenueMonth_Amount = this.$util.fmoney(res.Result_Data.RevenueMonth_Amount)
this.plan.BudgetMonth_Amount = this.$util.fmoney(res.Result_Data.BudgetMonth_Amount)
this.plan.RevenueYear_Amount = this.$util.fmoney(res.Result_Data.RevenueYear_Amount)
this.plan.BudgetYear_Amount = this.$util.fmoney(res.Result_Data.BudgetYear_Amount)
})
},
handleShowNotice(){
this.showNotice = true
},
handleNoShowNotice(){
this.showNotice = false
},
handleShowNoticeYear(){
this.showNoticeYear = true
},
handleNoShowNoticeYear(){
this.showNoticeYear = false
},
}
}
</script>
<style scoped lang="scss">
.main{
padding: 0 16px;
width: 100%;
box-sizing: border-box;
.thisMonth,.thisYear{
width: 100%;
margin-top: 12px;
margin-bottom: 12px;
.titleTop{
display: flex;
align-items: center;
position: relative;
.title {
font-size: 32rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 44rpx;
}
.question{
width: 16px;
height: 16px;
margin-left: 4px;
display: flex;
align-items: center;
image{
width: 100%;
height: 100%;
}
}
.titleTopNotice{
position: absolute;
padding: 12px;
left:35%;
top: 0;
width: 50vw;
background: #FFFFFF;
box-shadow: 0 10px 10px 0 rgba(22,0,2,0.1);
z-index: 9999;
}
.meng{
width: 100vw;
height: 100vh;
position: fixed;
top: 0;left: 0;
}
}
.box {
width: 100%;
padding: 12px 16px;
box-sizing: border-box;
border-radius: 8px;
background: #f5f2f2;
margin-top: 12px;
.top {
width: 100%;
display: flex;
.big {
width: 40px;
height: 40px;
background: #ffffff;
border-radius: 8px;
border: 1px solid #ebebeb;
display: flex;
justify-content: center;
align-items: center;
margin-right: 8px;
.icon {
width: 20px;
height: 20px;
}
}
.text {
width: calc(100% - 60px);
padding: 2px 0;
.textTop{
display: flex;
align-items: center;
justify-content: space-between;
.left{
display: flex;
align-items: center;
.number {
font-size: 36rpx;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #150002;
line-height: 40rpx;
}
.desc{
display: flex;
align-items: center;
margin-left: 8px;
font-size: 14px;
color: #FF7043;
.success{
width: 20px;
height: 20px;
margin-right: 4px;
}
}
}
.right{
flex: 1;
display: flex;
justify-content: flex-end;
align-items: center;
.comparePlan{
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #a69e9f;
line-height: 36rpx;
white-space: nowrap;
}
.box2{
display: flex;
align-items: center;
.text{
font-size: 14px;
font-family: DINAlternate-Bold, DINAlternate;
color: #150002;
font-weight: bold;
line-height: 40rpx;
}
.addIcon {
width: 16px;
height: 16px;
margin-right: 2px;
}
}
}
}
.progressPlan{
width: 100%;
height: 8px;
border-radius: 5px;
background: #fff;
margin-top: 8px;
position: relative;
overflow: hidden;
.trans{
height: 8px;
position: absolute;
left: 0;top: 0;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
background: url("https://eshangtech.com/ShopICO/ahyd-BID/index/progress_orange.png")no-repeat 100% 100%;
}
.transYear{
height: 8px;
position: absolute;
left: 0;top: 0;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
background: url("https://eshangtech.com/ShopICO/ahyd-BID/index/progress_blue.png")no-repeat 100% 100%;
}
//.img{
// width: 100%;
// height: 100%;
// position: absolute;
// top: 0;
// left: 0;
// z-index:1;
//}
//.pro{
// height: 100%;
// position: absolute;
// top: 0;right: 0;
// background: #fff;
// z-index:2;
//}
}
}
}
.bottom {
display: flex;
margin-top: 16px;
padding-left: 48px;
.success {
.text {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786b6c;
line-height: 40rpx;
margin-bottom: 2px;
.unit {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #a69e9f;
line-height: 40rpx;
margin-left: 2px;
}
}
.money {
font-size: 28rpx;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: 600;
color: #160002;
line-height: 40rpx;
}
}
}
}
}
.list{
width: 100%;
box-sizing: border-box;
padding: 12px;
background: #F5F5F5;
margin-bottom: 12px;
.top{
display: flex;
align-items: center;
justify-content: space-between;
.left{
display: flex;
align-items: center;
.icon{
width: 20px;
height: 20px;
margin-right: 8px;
}
.title{
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #150002;
line-height: 20px;
}
}
.value{
font-size: 14px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #FF6D40;
line-height: 16px;
}
}
.progress{
width: 100%;
height: 8px;
background: #fff;
border-radius: 6px;
margin: 8px 0 16px;
position: relative;
.have{
position: absolute;
height: 100%;
border-radius: 6px;
top: 0;left: 0;
}
}
.bottom {
display: flex;
justify-content: flex-start;
margin-top: 16px;
.success {
width: 50%;
.text {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786b6c;
line-height: 40rpx;
margin-bottom: 2px;
.unit {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #a69e9f;
line-height: 40rpx;
margin-left: 2px;
}
}
.money {
font-size: 28rpx;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: 600;
color: #160002;
line-height: 40rpx;
}
}
}
}
}
</style>

View File

@ -184,7 +184,7 @@
</template>
<template v-else>
<shopCell v-for="(item,i) in regionList" :key="i" :item='item' @toggleShow="toggleShow" :i='i' />
</template>
</view>
<template v-if="theRequest && theRequest.ProvinceCode==620000">
@ -548,13 +548,13 @@
...n,
textColor: '#999',
formatter: function(arg) {
if (typeof arg === 'number') {
return [n.name, (arg * 100).toFixed(2) + '%']
} else {
return [arg.name, (arg._proportion_ * 100).toFixed(2) + '%']
}
}
});
@ -629,18 +629,18 @@
ProvinceCode,
time
} = this.theRequest
const data = await this.$request.$webGet('CommercialApi/Revenue/GetWechatPushSalesList', {
pushProvinceCode: ProvinceCode,
Statistics_Date: time
})
if (data.Result_Code === 100 && data.Result_Data.TotalCount > 0) {
this.wechatPushSalesList = {}
data.Result_Data.List.forEach(n => {
this.wechatPushSalesList[n.Data_Type]= n.GoodsList
})
} else {
this.wechatPushSalesList = {}
}
@ -689,7 +689,7 @@
}
//
if (this.theRequest.ProvinceCode == 620000) {
this.getRankContent()
}
},
@ -738,7 +738,7 @@
}
.new-content {
background: url('/static/images/revenue/banner.png') no-repeat bottom left;
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/banner.png') no-repeat bottom left;
height: 383rpx;
background-size: 100%;
color: #fff;

File diff suppressed because one or more lines are too long

View File

@ -71,8 +71,8 @@ const scene = [{
"name": "扫一扫",
"id": "1",
"modelName": "",
"imagePath": "/static/images/index/saoyisao.png",
"noImagePath": "/static/images/index/saoyisao-no.png",
"imagePath": "https://eshangtech.com/ShopICO/ahyd-BID/index/saoyisao.png",
"noImagePath": "https://eshangtech.com/ShopICO/ahyd-BID/index/saoyisao-no.png",
"homeUrl": ""
}, {
"name": "走动式管理",
@ -96,10 +96,10 @@ const scene = [{
"imagePath": "/static/images/index/syjh.png",
"noImagePath": "/static/images/index/syjh-no.png",
"homeUrl": "/pages/cashAudit/list"
},
},
{
"name": "稽核异常",
"id": "b548740f-a942-4de3-8d55-c0a2370171ba",
"id": "b548740f-a942-4de3-8d55-c0a2370171ba",
"modelName": "abnormalaudit",
"imagePath": "/static/images/index/syjh.png",
"noImagePath": "/static/images/index/syjh-no.png",
@ -156,8 +156,8 @@ const management = [{
"name": "经营报表",
"id": "4a34e1d4-47c9-4c06-8e8e-f38c6bd9450b",
"modelName": "operatingStatements",
"imagePath": "/static/images/index/jybb.png",
"noImagePath": "/static/images/index/jybb-no.png",
"imagePath": "https://eshangtech.com/ShopICO/ahyd-BID/index/jybb.png",
"noImagePath": "https://eshangtech.com/ShopICO/ahyd-BID/index/jybb-no.png",
"homeUrl": "/pages/operatingStatements/index"
},
{

View File

@ -5,7 +5,7 @@
<div class="headerTop" :style="{ height: menu.bottom + 5 + 'px'}">
<view class="selectTime" :style="{ top: menu.top + (menu.height - 22) / 2 + 'px' }">
<image class="dateIcon" src="/static/images/index/dateTime.svg"></image>
<picker mode="date" :value="single" @change="bindDateChange" @click="handleDateClick">
<picker mode="date" :value="single" :start="startDate" :end="endData" @change="bindDateChange" @click="handleDateClick">
<view class="time">
<text class="day">{{ thisDay }}</text>
<view class="uni-input" style="background: transparent;padding: 0;height:100%">{{ single }}</view>
@ -16,17 +16,17 @@
</div>
<view class="other">
<view v-if="user.Membership_Id" >
<view class="topTitle">
<p class="title">对客营收</p>
<view class="topTitle">
<p class="title">对客营收</p>
<span class="text">门店上传: <text style="margin-left: 4px" :style="{color:isBig?'red':''}">{{showTableData.Revenue_Upload?showTableData.Revenue_Upload:'-'}}/{{allShopCount?allShopCount:'-'}}</text></span>
</view>
</view>
<view class="box" @click="handlePage">
<view class="priceBox">
<p :class="priceMove?'allPrice allPriceMove':'allPrice'">{{showTableData.CashPay || '0.00'}}</p>
<view class="priceBox">
<p class="allPrice">{{showTableData.CashPay || '0.00'}}</p>
</view>
<image class="start" src="https://ahyd.eshangtech.com/UploadImageDir/ahyd_DIB/index/start.svg"></image>
</view>
<view class="addBox">
<view class="addBox">
<image class="arrowTop" :src="Number(showTableData.compared)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/arrow_top.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/arrow_reduce.svg'"></image>
<text class="text">{{showTableData.compared?showTableData.compared + '%':'-' + '%'}}</text>
<text class="compare">(相比昨日)</text>
@ -138,7 +138,7 @@
<p class="money" v-else>{{ item.yesterValue }}</p>
<view v-if="index === 0 || index === 2" class="active">
<image v-if="Number(item.add)!==0" class="addIcon" :src="Number(item.add)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<text v-if="Number(item.add)!==0" class="add" :style="{color:Number(item.add)<0?'#07C160':'#FA5151'}">{{ item.add }}</text>
<text v-if="Number(item.add)!==0" class="add" :style="{color:Number(item.add)<0?'#07C160':'#FA5151'}">{{ item.add>0?'+' + item.add:item.add }}</text>
<text v-if="Number(item.add)!==0" class="yesterday">(相比昨日)</text>
</view>
<view class="otherBox" v-else>
@ -233,8 +233,15 @@
</view>
</div>
<div class="thisMonth">
<p class="title">本月自营计划</p>
<div class="thisMonth" @click="handlePlanPageGo('month')">
<div class="titleTop">
<p class="title">本月自营计划</p>
<div class="question" @click.stop="handleShowNotice">
<image src="/static/images/index/noticeQuestion.svg"></image>
</div>
<div v-if="showNotice" class="titleTopNotice">这里是注解文字,这里是注解文字,这里是注解文字,这里是注解文字,这里是注解文字</div>
<div v-if="showNotice" class="meng" @click.stop="handleNoShowNotice"></div>
</div>
<view class="box">
<view class="top">
<view class="big">
@ -275,8 +282,15 @@
</view>
</view>
</div>
<div class="thisYear" style="margin-top: 0px">
<p class="title">年度自营计划</p>
<div class="thisYear" style="margin-top: 0px" @click="handlePlanPageGo('year')">
<div class="titleTop">
<p class="title">年度自营计划</p>
<div class="question" @click.stop="handleShowNoticeYear">
<image src="/static/images/index/noticeQuestion.svg"></image>
</div>
<div v-if="showNoticeYear" class="titleTopNotice">这里是注解文字,这里是注解文字,这里是注解文字,这里是注解文字,这里是注解文字</div>
<div v-if="showNoticeYear" class="meng" @click.stop="handleNoShowNoticeYear"></div>
</div>
<view class="box">
<view class="top">
<view class="big">
@ -319,7 +333,7 @@
</view>
<div class="notice" v-if="isShow">
<view class="left">
<image class="icon" src="/static/images/index/warning.svg"></image>
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/warning.svg"></image>
<view class="text">
<p class="name">{{isShowTitle}}个投诉建议</p>
<!-- <p class="desc"></p>-->
@ -353,6 +367,8 @@ export default {
statusBarHeight:'',//
page:'/pages/index/index',
menu:'', //
startDate:'',//
endData:'', //
detailList:[ { name: '长款金额', unit: '/元', price:0 },
{ name: '短款金额', unit: '/元', price: 0 },
{ name: '优惠金额', unit: '/元', price: 0 },
@ -362,7 +378,7 @@ export default {
{ name: '入区车流', unit: '/辆', price: 0 },
{ name: '入区率', unit: '', price: 0 },
{ name: '停留时长', unit: '', price: 0 },],
tabTypeList:[ { imgUrl: '/static/images/index/car.svg', path: '/pages/commercialBI/carPortrait', name: '车流画像' },
tabTypeList:[ { imgUrl: 'https://eshangtech.com/ShopICO/ahyd-BID/index/car.svg', path: '/pages/commercialBI/carPortrait', name: '车流画像' },
{ imgUrl: '/static/images/index/guest.svg', path: '/pages/commercialBI/guestPortrait', name: '客群画像' },
{ imgUrl: '/static/images/index/business_icon.svg', path: '/pages/commercialBI/managePortrait', name: '经营画像' },
{ imgUrl: '/static/images/index/trade.svg', path: '/pages/commercialBI/businessPortrait', name: '交易画像' },
@ -388,6 +404,8 @@ export default {
buyPriceYes:'',//
regionList: null,
nowTab: 1,
showNotice:false,
showNoticeYear:false,
priceMove:false,//
carInfo:{},//
regionProgress: null,
@ -457,6 +475,21 @@ export default {
if (this.user.Membership_Id){
this.getData(option)
}
//
let y = date.getFullYear()
let m = date.getMonth() + 1
let d = date.getDate()
let howDay
if (d - 8 <0){
let k = 8 - d
m = m - 1
const time = `${y}-${m}`
howDay = this.$util.getThisMonthDay(time)
this.startDate = `${y}-${m}-${howDay - k}`
}else{
this.startDate = `${y}-${m}-${d - 8}`
}
this.endData = this.lastDay
},
onShow(){
// tabbar tabbar
@ -469,8 +502,23 @@ export default {
},
methods:{
...mapActions(['memberLogin','getLoginCode']),
handleShowNotice(){
this.showNotice = true
},
handleNoShowNotice(){
this.showNotice = false
},
handleShowNoticeYear(){
this.showNoticeYear = true
},
handleNoShowNoticeYear(){
this.showNoticeYear = false
},
handlePlanPageGo(type){
this.$util.toNextRoute('navigateTo', `/pages/commercialBI/planMonth?lastDay=${this.lastDay}&type=${type}`)
},
handlePage(){
this.$util.toNextRoute('navigateTo', `/pages/operatingStatements/index?time=${this.lastDay}`)
this.$util.toNextRoute('navigateTo', `/pages/everdayRenven/index?time=${this.lastDay}`)
},
handleGoTab(item){
this.$util.toNextRoute('navigateTo', `${item.path}?time=${this.lastDay}&Serverpart_ID=372`)
@ -549,17 +597,11 @@ export default {
request.$webGet('CommercialApi/Revenue/GetRevenueBudget',monthDate).then(res=>{
// data
this.plan = res.Result_Data
this.plan.percentageMonth = (res.Result_Data.RevenueMonth_Amount / res.Result_Data.BudgetMonth_Amount*100).toFixed(2)
this.plan.percentageYear = (res.Result_Data.RevenueYear_Amount / res.Result_Data.BudgetYear_Amount*100).toFixed(2)
let date = new Date(this.lastDay)
let nowDay = date.getDate()
let day = this.$util.getThisMonthDay(this.lastDay)
//
let oneDay = 100/day
//
let thisDayShould= oneDay*nowDay
this.monthAdd = (this.plan.percentageMonth - thisDayShould).toFixed(2)
this.yearAdd = (((res.Result_Data.RevenueYear_Amount - res.Result_Data.RevenueYear_PlanAmount)/res.Result_Data.BudgetYear_Amount)*100).toFixed(2)
this.plan.percentageMonth = res.Result_Data.MonthBudget_Degree
this.plan.percentageYear = res.Result_Data.YearBudget_Degree
this.monthAdd = this.plan.MonthGrowth_Rate
this.yearAdd = res.Result_Data.YearGrowth_Rate
//
this.plan.RevenueMonth_Amount = this.$util.fmoney(res.Result_Data.RevenueMonth_Amount)
this.plan.BudgetMonth_Amount = this.$util.fmoney(res.Result_Data.BudgetMonth_Amount)
@ -582,7 +624,16 @@ export default {
let _this = this
//
let yesterday = handleYesterday(this.lastDay)
//
console.log(this.lastDay)
if ((yesterday.substr(yesterday.length-1,1)) === '0'){
let date = new Date(this.lastDay)
let y = date.getFullYear()
let m = date.getMonth() //1 1
let day = this.$util.getThisMonthDay(this.lastDay)
yesterday = `${y}-${m}-${day}`
}
console.log('yesterday', yesterday)
//
const data = {
Statistics_Date:yesterday,
Statistics_Month:this.theRequest.month,
@ -627,11 +678,16 @@ export default {
//
const todayData = {
Province_Code:'340000',
Statistics_Date: this.lastDay
Statistics_Date: this.lastDay,//2023-04-02
ShowCompareRate:true
}
request.$webGet('CommercialApi/Revenue/GetMallDeliver',todayData).then(res=>{
// data
this.lastDayBillCount = res.Result_Data.DeliverBill_Count
this.lastDayBillCount = res.Result_Data
this.detailTypeList[2].value = this.lastDayBillCount.DeliverBill_Count
this.detailTypeList[2].add = this.lastDayBillCount.DeliverBillGrowth_Count
this.detailTypeList[3].value = this.$util.fmoney(this.lastDayBillCount.MonthDeliver_Price )
this.detailTypeList[3].yesterValue = this.$util.fmoney(this.lastDayBillCount.Deliver_Price)
})
//
@ -666,14 +722,16 @@ export default {
//
const allPriceData = {
pushProvinceCode:'340000',
Statistics_Date:this.lastDay
Statistics_Date:this.lastDay,
ShowCompareRate: true
}
console.log('allPriceData',allPriceData)
request.$webGet('CommercialApi/Revenue/GetSummaryRevenue',allPriceData).then(res=>{
// data
let result = res.Result_Data
console.log('resultresultresult',result)
for(let key in result){
if (key!=='RevenuePushModel'){
if (key!=='RevenuePushModel' && key!=='GrowthRate'){
let all = 0
//
result[key].forEach(item=>{
@ -693,6 +751,7 @@ export default {
this.regionProgress = result.BusinessTradeList
this.areaProgress = result.SPRegionList
this.showTableData = result.RevenuePushModel
this.showTableData.compared = result.GrowthRate
this.todayAmount()
})
},
@ -864,6 +923,7 @@ export default {
//
const totalData = await request.$webGet('CommercialApi/BaseInfo/GetShopCountList',data)
console.log('totalData',totalData)
let all = 0
totalData.Result_Data.List.forEach(item=>{
all+=item.SHOP_REVENUECOUNT
@ -872,11 +932,19 @@ export default {
//
const shareData = {
Province_Code:'340000',
Statistics_Date:this.lastDay
Province_Code: '340000',
Statistics_Date: this.lastDay,
ShowCompareRate: true
}
const mobileShareData = await request.$webGet('CommercialApi/Revenue/GetMobileShare',shareData)
this.mobileData = mobileShareData.Result_Data
//mobileData
this.detailTypeList[0].value = this.mobileData.ShareShop_Count
this.detailTypeList[0].add = this.mobileData.ShareShopGrowth_Count
this.detailTypeList[1].value = this.$util.fmoney(this.mobileData.MonthRoyalty_Price)
this.detailTypeList[1].yesterValue = this.$util.fmoney(this.mobileData.Royalty_Price) //
//
this.priceMove = true
//
@ -894,21 +962,11 @@ export default {
this.isBig = true
}
//
this.showTableData.compared = (((Number(this.showTableData.CashPay) - this.yesterdayAllPay) / this.yesterdayAllPay) * 100).toFixed(2)
// this.showTableData.compared = (((Number(this.showTableData.CashPay) - this.yesterdayAllPay) / this.yesterdayAllPay) * 100).toFixed(2)
//
this.showTableData.averagePrice = (Number(this.showTableData.CashPay) / Number(this.showTableData.TicketCount)).toFixed(2)
//
this.showTableData.countave = (Number(this.showTableData.CashPay) / Number(this.showTableData.TotalCount)).toFixed(2)
//
//mobileData
this.detailTypeList[0].value =this.mobileData.ShareShop_Count
this.detailTypeList[0].add = this.mobileData.ShareShop_Count - this.ShareShopCountYes
this.detailTypeList[1].value = this.$util.fmoney(this.monthPrice)
this.detailTypeList[1].yesterValue = this.$util.fmoney(this.mobileData.Royalty_Price) //
this.detailTypeList[2].value = this.lastDayBillCount
this.detailTypeList[2].add = this.lastDayBillCount - this.yesterdayBillCount
this.detailTypeList[3].value = this.$util.fmoney(this.buyPriceMonth)
this.detailTypeList[3].yesterValue = this.$util.fmoney(this.buyPriceYes)
//
for (let key in this.showTableData){
if (key==='uploadState' || key==='Revenue_Upload'){
@ -1053,7 +1111,7 @@ $iphoneHeight: env(safe-area-inset-bottom);
margin-left: 8px;
}
}
@keyframes allPriceAnimation {
0%{
transform: translateY(30px);
@ -1062,7 +1120,7 @@ $iphoneHeight: env(safe-area-inset-bottom);
transform: translateY(0px);
}
}
.box {
display: flex;
align-items: center;
@ -1491,12 +1549,42 @@ $iphoneHeight: env(safe-area-inset-bottom);
width: 100%;
margin-top: 28px;
padding-bottom: 28px;
.title {
font-size: 32rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 44rpx;
.titleTop{
display: flex;
align-items: center;
position: relative;
.title {
font-size: 32rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 44rpx;
}
.question{
width: 16px;
height: 16px;
margin-left: 4px;
display: flex;
align-items: center;
image{
width: 100%;
height: 100%;
}
}
.titleTopNotice{
position: absolute;
padding: 12px;
left:35%;
width: 50vw;
background: #FFFFFF;
box-shadow: 0 10px 10px 0 rgba(22,0,2,0.1);
}
.meng{
width: 100vw;
height: 100vh;
position: fixed;
top: 0;left: 0;
}
}
.box {
width: 100%;

View File

@ -1,18 +1,18 @@
<template>
<view class="page-view">
<live-player :src="videoMsg.url" autoplay
:orientation="isfullScreen ? 'horizontal': 'vertical'" class="live-player"
<live-player :src="videoMsg.url" autoplay
:orientation="isfullScreen ? 'horizontal': 'vertical'" class="live-player"
muted="false"
@fullscreenchange="fullscreenchange" :style="isfullScreen? `width: 750rpx;height:${windowHeight}px;`:'width:750rpx;'"
@statechange="videoChange"
@audiovolumenotify="audiovolumenotify"
>
</live-player>
<cover-image
src="/static/images/video/full-video.png"
<cover-image
src="https://eshangtech.com/ShopICO/ahyd-BID/video/full-video.png"
@click="isfullScreen=!isfullScreen"
class="screen-ico"
class="screen-ico"
v-if="!isfullScreen"
style="right:40rpx" ></cover-image>
<cover-image
@ -77,7 +77,7 @@
}
},
onLoad(option) {
let {sc, hd, bt, et, token} = option
this.requestData.startTime= bt
this.requestData.stopTime= et
@ -93,7 +93,7 @@
<style scoped>
.page-view{
position: relative;
}
.live-player {
width: 750rpx;
@ -115,7 +115,7 @@
fnot-size: 24rpx;
}
</style>
<!--
<!--
<template>
<div>
<div
@ -205,4 +205,4 @@ export default {
height: 12.5rem;
}
</style>
-->
-->

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>时间备份_2@2x</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="商业BI切图" transform="translate(-148.000000, -347.000000)">
<g id="编组-3" transform="translate(100.000000, 80.000000)">
<g id="编组-10" transform="translate(48.000000, 267.000000)">
<circle id="椭圆形" fill="#FFD9D9" cx="7" cy="7" r="7"></circle>
<g id="编组-9" transform="translate(4.000000, 3.000000)" fill="#FA5151">
<rect id="矩形" x="2.56066017" y="1.06066017" width="1" height="6" rx="0.5"></rect>
<rect id="矩形备份-6" transform="translate(4.121320, 2.000000) rotate(-225.000000) translate(-4.121320, -2.000000) " x="3.62132034" y="0" width="1" height="4" rx="0.5"></rect>
<rect id="矩形" transform="translate(2.000000, 2.000000) rotate(-225.000000) translate(-2.000000, -2.000000) " x="0" y="1.5" width="4" height="1" rx="0.5"></rect>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,99 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="228px" height="97px" viewBox="0 0 228 97" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>图标/汽车@2x</title>
<svg width="375px" height="396px" viewBox="0 0 375 396" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组_84@2x</title>
<defs>
<linearGradient x1="100%" y1="41.9392792%" x2="4.19207868%" y2="45.6717178%" id="linearGradient-1">
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
<stop stop-color="#A8BFED" offset="0%"></stop>
<stop stop-color="#F0F5FF" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="41.9392792%" x2="4.19207868%" y2="45.6717178%" id="linearGradient-2">
<stop stop-color="#C2D1FF" offset="0%"></stop>
<stop stop-color="#728BCC" offset="100%"></stop>
</linearGradient>
<linearGradient x1="94.1450755%" y1="41.6701374%" x2="0%" y2="58.3298626%" id="linearGradient-2">
<linearGradient x1="94.1450755%" y1="41.6701374%" x2="0%" y2="58.3298626%" id="linearGradient-3">
<stop stop-color="#BECCFB" offset="0%"></stop>
<stop stop-color="#7790CF" offset="100%"></stop>
</linearGradient>
<path d="M7,0 L98,0 L98,0 L98,40 L6,40 C2.6862915,40 1.29399067e-15,37.3137085 0,34 L0,7 C4.14730794e-16,3.13400675 3.13400675,1.59834986e-15 7,0 Z" id="path-3"></path>
<linearGradient x1="97.2664698%" y1="50.6345828%" x2="11.4191956%" y2="50.9645062%" id="linearGradient-5">
<path d="M7,0 L98,0 L98,0 L98,40 L6,40 C2.6862915,40 1.29399067e-15,37.3137085 0,34 L0,7 C4.14730794e-16,3.13400675 3.13400675,1.59834986e-15 7,0 Z" id="path-4"></path>
<linearGradient x1="97.2664698%" y1="50.6345828%" x2="11.4191956%" y2="50.9645062%" id="linearGradient-6">
<stop stop-color="#7389CC" offset="0%"></stop>
<stop stop-color="#5469AA" offset="100%"></stop>
</linearGradient>
<linearGradient x1="0%" y1="53.8204772%" x2="115.74452%" y2="46.1795228%" id="linearGradient-6">
<linearGradient x1="0%" y1="53.8204772%" x2="115.74452%" y2="46.1795228%" id="linearGradient-7">
<stop stop-color="#9CBCFF" offset="0%"></stop>
<stop stop-color="#F5FAFF" offset="100%"></stop>
</linearGradient>
<linearGradient x1="94.3171504%" y1="47.2744025%" x2="27.3265503%" y2="44.9725109%" id="linearGradient-7">
<linearGradient x1="94.3171504%" y1="47.2744025%" x2="27.3265503%" y2="44.9725109%" id="linearGradient-8">
<stop stop-color="#C9DCFF" offset="0%"></stop>
<stop stop-color="#658FEB" offset="100%"></stop>
</linearGradient>
<linearGradient x1="80.8520108%" y1="34.3097823%" x2="43.644595%" y2="50%" id="linearGradient-8">
<linearGradient x1="80.8520108%" y1="34.3097823%" x2="43.644595%" y2="50%" id="linearGradient-9">
<stop stop-color="#E3E6FF" offset="0%"></stop>
<stop stop-color="#97B8F9" offset="100%"></stop>
</linearGradient>
<linearGradient x1="94.1935978%" y1="41.5905314%" x2="0%" y2="52.0645059%" id="linearGradient-9">
<linearGradient x1="94.1935978%" y1="41.5905314%" x2="0%" y2="52.0645059%" id="linearGradient-10">
<stop stop-color="#9FB7F1" offset="0%"></stop>
<stop stop-color="#263878" offset="100%"></stop>
</linearGradient>
<linearGradient x1="58.7425425%" y1="9.61336454%" x2="58.7425425%" y2="100%" id="linearGradient-10">
<linearGradient x1="58.7425425%" y1="9.61336454%" x2="58.7425425%" y2="100%" id="linearGradient-11">
<stop stop-color="#6B80AD" offset="0%"></stop>
<stop stop-color="#1D2F69" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="100%" x2="50%" y2="3.061617e-15%" id="linearGradient-11">
<linearGradient x1="50%" y1="100%" x2="50%" y2="3.061617e-15%" id="linearGradient-12">
<stop stop-color="#0F1F4A" offset="0%"></stop>
<stop stop-color="#1F1D43" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-12">
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-13">
<stop stop-color="#5788AB" offset="0%"></stop>
<stop stop-color="#8AA9FF" offset="93.7986324%"></stop>
<stop stop-color="#7FB8F0" offset="100%"></stop>
</linearGradient>
<ellipse id="path-13" cx="7.5" cy="14.5" rx="7.5" ry="14.5"></ellipse>
<linearGradient x1="50%" y1="100%" x2="50%" y2="3.061617e-15%" id="linearGradient-15">
<ellipse id="path-14" cx="7.5" cy="14.5" rx="7.5" ry="14.5"></ellipse>
<linearGradient x1="50%" y1="100%" x2="50%" y2="3.061617e-15%" id="linearGradient-16">
<stop stop-color="#FFFFFF" offset="0%"></stop>
<stop stop-color="#A6B3E4" offset="100%"></stop>
</linearGradient>
<ellipse id="path-16" cx="7.5" cy="14.5" rx="7.5" ry="14.5"></ellipse>
<linearGradient x1="100%" y1="47.4173554%" x2="0%" y2="52.5826446%" id="linearGradient-18">
<ellipse id="path-17" cx="7.5" cy="14.5" rx="7.5" ry="14.5"></ellipse>
<linearGradient x1="100%" y1="47.4173554%" x2="0%" y2="52.5826446%" id="linearGradient-19">
<stop stop-color="#FFFFFF" offset="0%"></stop>
<stop stop-color="#EFF0F9" offset="100%"></stop>
</linearGradient>
</defs>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="商业BI-车流画像0328" transform="translate(-1215.000000, -325.000000)">
<g id="图标/汽车" transform="translate(1215.000000, 322.000000)">
<g id="编组" transform="translate(0.000000, 4.000000)">
<rect id="矩形" fill="#101F4A" x="179" y="62" width="34" height="34" rx="14"></rect>
<rect id="矩形" fill="#101F4A" x="101" y="62" width="34" height="34" rx="14"></rect>
<rect id="矩形" fill="#101F4A" x="24" y="62" width="34" height="34" rx="14"></rect>
<path d="M44,34 L132,34 L93,47 L98,47 L98,87 L6,87 C2.6862915,87 0,84.3137085 0,81 L0,51.4836744 C5.62554723e-16,48.8247551 1.7499725,46.4829627 4.29992315,45.7295682 L44,34 L44,34 Z" id="路径" fill="url(#linearGradient-1)"></path>
<g id="形状结合备份-2" transform="translate(0.000000, 47.000000)">
<mask id="mask-4" fill="white">
<use xlink:href="#path-3"></use>
</mask>
<use id="蒙版" fill="url(#linearGradient-2)" xlink:href="#path-3"></use>
<path d="M-9,40 C-9.55228475,40 -10,39.5522847 -10,39 L-10,34 C-10,33.4477153 -9.55228475,33 -9,33 L16.333,33 L21.6666667,29 C25.1285901,26.4035574 29.3392624,25 33.6666667,25 L53.3333333,25 C57.6607376,25 61.8714099,26.4035574 65.3333333,29 L70.666,33 L97,33 C97.5522847,33 98,33.4477153 98,34 L98,39 C98,39.5522847 97.5522847,40 97,40 L-9,40 Z" id="形状结合" fill="url(#linearGradient-5)" mask="url(#mask-4)"></path>
<g id="商业BI切图" transform="translate(-503.000000, -220.000000)">
<g id="编组-3" transform="translate(100.000000, 80.000000)">
<g id="编组-84" transform="translate(403.000000, 140.000000)">
<rect id="蒙版" fill="url(#linearGradient-1)" x="0" y="0" width="375" height="396"></rect>
<g id="编组" transform="translate(74.000000, 220.000000)">
<rect id="矩形" fill="#101F4A" x="179" y="62" width="34" height="34" rx="14"></rect>
<rect id="矩形" fill="#101F4A" x="101" y="62" width="34" height="34" rx="14"></rect>
<rect id="矩形" fill="#101F4A" x="24" y="62" width="34" height="34" rx="14"></rect>
<path d="M44,34 L132,34 L93,47 L98,47 L98,87 L6,87 C2.6862915,87 0,84.3137085 0,81 L0,51.4836744 C5.62554723e-16,48.8247551 1.7499725,46.4829627 4.29992315,45.7295682 L44,34 L44,34 Z" id="路径" fill="url(#linearGradient-2)"></path>
<g id="形状结合备份-2" transform="translate(0.000000, 47.000000)">
<mask id="mask-5" fill="white">
<use xlink:href="#path-4"></use>
</mask>
<use id="蒙版" fill="url(#linearGradient-3)" xlink:href="#path-4"></use>
<path d="M-9,40 C-9.55228475,40 -10,39.5522847 -10,39 L-10,34 C-10,33.4477153 -9.55228475,33 -9,33 L16.333,33 L21.6666667,29 C25.1285901,26.4035574 29.3392624,25 33.6666667,25 L53.3333333,25 C57.6607376,25 61.8714099,26.4035574 65.3333333,29 L70.666,33 L97,33 C97.5522847,33 98,33.4477153 98,34 L98,39 C98,39.5522847 97.5522847,40 97,40 L-9,40 Z" id="形状结合" fill="url(#linearGradient-6)" mask="url(#mask-5)"></path>
</g>
<path d="M179.415872,2.56019194 C186.868641,6.23355223 194.396683,11.7134882 202,19 C209.742617,26.4200084 215.221569,34.6986488 218.436854,43.8359213 C222.836604,56.3392339 216.267369,70.0418738 203.764056,74.4416239 C201.145194,75.3631666 198.386295,75.8233304 195.61011,75.8016415 L148.605972,75.4344217 C135.351541,75.3308735 124.690646,64.5020904 124.794197,51.2476598 C124.828389,46.871094 126.058708,42.5871967 128.352044,38.8594487 C129.376282,37.1945826 130.258933,35.5747664 131,34 C134.2984,26.9909007 138.616747,19.5993211 143.955042,11.8252611 L143.955041,11.8252609 C151.831382,0.355092103 166.935429,-3.59123515 179.415872,2.56019194 Z" id="三角形" fill="#D8D8D8" opacity="0.5"></path>
<path d="M96,0 L166,0 C166.552285,-1.01453063e-16 167,0.44771525 167,1 L167,33 C167,33.5522847 166.552285,34 166,34 L44,34 L44,34 C54.7536388,22.5328772 63.0869721,14.8662105 69,11 C74.9130279,7.13378947 83.9130279,3.4671228 96,0 L96,0 Z" id="矩形" fill="url(#linearGradient-7)"></path>
<path d="M179.415872,2.56019194 C186.868641,6.23355223 194.396683,11.7134882 202,19 C209.742617,26.4200084 215.221569,34.6986488 218.436854,43.8359213 C222.836604,56.3392339 216.267369,70.0418738 203.764056,74.4416239 C201.145194,75.3631666 198.386295,75.8233304 195.61011,75.8016415 L148.605972,75.4344217 C135.351541,75.3308735 124.690646,64.5020904 124.794197,51.2476598 C124.828389,46.871094 126.058708,42.5871967 128.352044,38.8594487 C129.376282,37.1945826 130.258933,35.5747664 131,34 C134.2984,26.9909007 138.616747,19.5993211 143.955042,11.8252611 L143.955041,11.8252609 C151.831382,0.355092103 166.935429,-3.59123515 179.415872,2.56019194 Z" id="三角形备份-2" fill="url(#linearGradient-8)"></path>
<path d="M179.654978,21.3399264 C184.102347,23.5241385 188.594573,26.7796577 193.131656,31.1064839 C197.66356,35.4283711 200.89759,40.2401537 202.833746,45.5418316 C205.561889,53.0121643 201.717583,61.2796618 194.24725,64.0078036 C192.629147,64.5987298 190.918142,64.8945269 189.195565,64.8811349 L161.397091,64.6650188 C153.444432,64.6031913 147.047648,58.106166 147.109475,50.1535062 C147.129773,47.542612 147.859557,44.9863641 149.220739,42.7582793 C149.791853,41.823438 150.28709,40.9126216 150.706449,40.0258303 C152.671199,35.8711039 155.241598,31.4903674 158.417644,26.883621 L158.417643,26.88362 C163.144406,20.0276118 172.180294,17.6689263 179.654978,21.3399264 Z" id="三角形备份" fill="url(#linearGradient-9)"></path>
<path d="M213,31 L223,34 L223,34 L227.368507,62.8321471 C227.848193,65.9980728 227.366917,69.2350997 225.98693,72.1245321 C225.084828,74.0133636 224.089184,75.6385196 223,77 C221.200875,79.2489062 217.995435,82.2172442 213.383679,85.9050142 C212.497252,86.6138478 211.396036,87 210.261048,87 L99,87 L99.000839,86.8258699 C98.519064,86.9397414 98.0165691,87 97.5,87 C93.9101491,87 91,84.0898509 91,80.5 L91,53.5 C91,53.3275617 91.0067147,53.1566918 91.019897,52.9876374 L91,53 L91,52.1239362 C91,49.0729912 92.9760387,46.3734511 95.884293,45.4513217 L132,34 L213,31 Z" id="形状结合" fill="url(#linearGradient-10)"></path>
<path d="M223,34 L227.368507,62.8321471 C227.848193,65.9980728 227.366917,69.2350997 225.98693,72.1245321 C225.084828,74.0133636 224.089184,75.6385196 223,77 C221.200875,79.2489062 217.995435,82.2172442 213.383679,85.9050142 C212.497252,86.6138478 211.396036,87 210.261048,87 L99,87 L98.9938262,86.8275233 C98.5141885,86.9403246 98.0140632,87 97.5,87 C93.9101491,87 91,84.0898509 91,80.5 L91,53.5 C91,49.9101491 93.9101491,47 97.5,47 C100.099345,46.5147827 111.099345,45.8481161 130.5,45 C149.801672,44.156211 160.825782,44.3927596 171.638743,44.0900271 L172.636498,44.0605037 C177.790893,43.8995649 182.953716,43.6046284 189,43 C201.742707,41.7257293 213.07604,38.7257293 223,34 Z" id="形状结合备份" fill="url(#linearGradient-11)"></path>
<ellipse id="椭圆形备份" fill="url(#linearGradient-12)" cx="124.5" cy="73.5" rx="11.5" ry="21.5"></ellipse>
<g id="椭圆形备份-2" transform="translate(117.000000, 59.000000)">
<mask id="mask-15" fill="white">
<use xlink:href="#path-14"></use>
</mask>
<use id="蒙版" fill="url(#linearGradient-13)" xlink:href="#path-14"></use>
<ellipse fill="url(#linearGradient-16)" opacity="0.5" mask="url(#mask-15)" cx="4.5" cy="14.5" rx="7.5" ry="14.5"></ellipse>
</g>
<ellipse id="椭圆形备份" fill="url(#linearGradient-12)" cx="202.5" cy="73.5" rx="11.5" ry="21.5"></ellipse>
<g id="椭圆形备份-2" transform="translate(195.000000, 59.000000)">
<mask id="mask-18" fill="white">
<use xlink:href="#path-17"></use>
</mask>
<use id="蒙版" fill="url(#linearGradient-13)" xlink:href="#path-17"></use>
<ellipse fill="url(#linearGradient-16)" opacity="0.5" mask="url(#mask-18)" cx="4.5" cy="14.5" rx="7.5" ry="14.5"></ellipse>
</g>
<rect id="矩形" fill="url(#linearGradient-19)" opacity="0.400000006" x="5" y="52" width="22" height="5" rx="1"></rect>
<rect id="矩形备份" fill="url(#linearGradient-19)" opacity="0.400000006" x="64" y="52" width="22" height="5" rx="1"></rect>
</g>
<path d="M179.415872,2.56019194 C186.868641,6.23355223 194.396683,11.7134882 202,19 C209.742617,26.4200084 215.221569,34.6986488 218.436854,43.8359213 C222.836604,56.3392339 216.267369,70.0418738 203.764056,74.4416239 C201.145194,75.3631666 198.386295,75.8233304 195.61011,75.8016415 L148.605972,75.4344217 C135.351541,75.3308735 124.690646,64.5020904 124.794197,51.2476598 C124.828389,46.871094 126.058708,42.5871967 128.352044,38.8594487 C129.376282,37.1945826 130.258933,35.5747664 131,34 C134.2984,26.9909007 138.616747,19.5993211 143.955042,11.8252611 L143.955041,11.8252609 C151.831382,0.355092103 166.935429,-3.59123515 179.415872,2.56019194 Z" id="三角形" fill="#D8D8D8" opacity="0.5"></path>
<path d="M96,0 L166,0 C166.552285,-1.01453063e-16 167,0.44771525 167,1 L167,33 C167,33.5522847 166.552285,34 166,34 L44,34 L44,34 C54.7536388,22.5328772 63.0869721,14.8662105 69,11 C74.9130279,7.13378947 83.9130279,3.4671228 96,0 L96,0 Z" id="矩形" fill="url(#linearGradient-6)"></path>
<path d="M179.415872,2.56019194 C186.868641,6.23355223 194.396683,11.7134882 202,19 C209.742617,26.4200084 215.221569,34.6986488 218.436854,43.8359213 C222.836604,56.3392339 216.267369,70.0418738 203.764056,74.4416239 C201.145194,75.3631666 198.386295,75.8233304 195.61011,75.8016415 L148.605972,75.4344217 C135.351541,75.3308735 124.690646,64.5020904 124.794197,51.2476598 C124.828389,46.871094 126.058708,42.5871967 128.352044,38.8594487 C129.376282,37.1945826 130.258933,35.5747664 131,34 C134.2984,26.9909007 138.616747,19.5993211 143.955042,11.8252611 L143.955041,11.8252609 C151.831382,0.355092103 166.935429,-3.59123515 179.415872,2.56019194 Z" id="三角形备份-2" fill="url(#linearGradient-7)"></path>
<path d="M179.654978,21.3399264 C184.102347,23.5241385 188.594573,26.7796577 193.131656,31.1064839 C197.66356,35.4283711 200.89759,40.2401537 202.833746,45.5418316 C205.561889,53.0121643 201.717583,61.2796618 194.24725,64.0078036 C192.629147,64.5987298 190.918142,64.8945269 189.195565,64.8811349 L161.397091,64.6650188 C153.444432,64.6031913 147.047648,58.106166 147.109475,50.1535062 C147.129773,47.542612 147.859557,44.9863641 149.220739,42.7582793 C149.791853,41.823438 150.28709,40.9126216 150.706449,40.0258303 C152.671199,35.8711039 155.241598,31.4903674 158.417644,26.883621 L158.417643,26.88362 C163.144406,20.0276118 172.180294,17.6689263 179.654978,21.3399264 Z" id="三角形备份" fill="url(#linearGradient-8)"></path>
<path d="M213,31 L223,34 L223,34 L227.368507,62.8321471 C227.848193,65.9980728 227.366917,69.2350997 225.98693,72.1245321 C225.084828,74.0133636 224.089184,75.6385196 223,77 C221.200875,79.2489062 217.995435,82.2172442 213.383679,85.9050142 C212.497252,86.6138478 211.396036,87 210.261048,87 L99,87 L99.000839,86.8258699 C98.519064,86.9397414 98.0165691,87 97.5,87 C93.9101491,87 91,84.0898509 91,80.5 L91,53.5 C91,53.3275617 91.0067147,53.1566918 91.019897,52.9876374 L91,53 L91,52.1239362 C91,49.0729912 92.9760387,46.3734511 95.884293,45.4513217 L132,34 L213,31 Z" id="形状结合" fill="url(#linearGradient-9)"></path>
<path d="M223,34 L227.368507,62.8321471 C227.848193,65.9980728 227.366917,69.2350997 225.98693,72.1245321 C225.084828,74.0133636 224.089184,75.6385196 223,77 C221.200875,79.2489062 217.995435,82.2172442 213.383679,85.9050142 C212.497252,86.6138478 211.396036,87 210.261048,87 L99,87 L98.9938262,86.8275233 C98.5141885,86.9403246 98.0140632,87 97.5,87 C93.9101491,87 91,84.0898509 91,80.5 L91,53.5 C91,49.9101491 93.9101491,47 97.5,47 C100.099345,46.5147827 111.099345,45.8481161 130.5,45 C149.801672,44.156211 160.825782,44.3927596 171.638743,44.0900271 L172.636498,44.0605037 C177.790893,43.8995649 182.953716,43.6046284 189,43 C201.742707,41.7257293 213.07604,38.7257293 223,34 Z" id="形状结合备份" fill="url(#linearGradient-10)"></path>
<ellipse id="椭圆形备份" fill="url(#linearGradient-11)" cx="124.5" cy="73.5" rx="11.5" ry="21.5"></ellipse>
<g id="椭圆形备份-2" transform="translate(117.000000, 59.000000)">
<mask id="mask-14" fill="white">
<use xlink:href="#path-13"></use>
</mask>
<use id="蒙版" fill="url(#linearGradient-12)" xlink:href="#path-13"></use>
<ellipse fill="url(#linearGradient-15)" opacity="0.5" mask="url(#mask-14)" cx="4.5" cy="14.5" rx="7.5" ry="14.5"></ellipse>
</g>
<ellipse id="椭圆形备份" fill="url(#linearGradient-11)" cx="202.5" cy="73.5" rx="11.5" ry="21.5"></ellipse>
<g id="椭圆形备份-2" transform="translate(195.000000, 59.000000)">
<mask id="mask-17" fill="white">
<use xlink:href="#path-16"></use>
</mask>
<use id="蒙版" fill="url(#linearGradient-12)" xlink:href="#path-16"></use>
<ellipse fill="url(#linearGradient-15)" opacity="0.5" mask="url(#mask-17)" cx="4.5" cy="14.5" rx="7.5" ry="14.5"></ellipse>
</g>
<rect id="矩形" fill="url(#linearGradient-18)" opacity="0.400000006" x="5" y="52" width="22" height="5" rx="1"></rect>
<rect id="矩形备份" fill="url(#linearGradient-18)" opacity="0.400000006" x="64" y="52" width="22" height="5" rx="1"></rect>
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>图标/图表空状态@2x</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="商业BI切图" transform="translate(-380.000000, -301.000000)">
<g id="编组-3" transform="translate(100.000000, 80.000000)">
<g id="图标/图表空状态" transform="translate(280.000000, 221.000000)">
<g id="编组-4" transform="translate(5.000000, 2.000000)">
<path d="M0,40 L50,40 L50,50 C50,51.0309315 48.9166396,52.0011353 47.0082432,52.8486135 L46.5867671,53.0283149 L46.5867671,53.0283149 L46.1405997,53.2041238 C46.0642122,53.2330934 45.9868195,53.2618952 45.9084333,53.2905263 L45.4262879,53.4602423 L45.4262879,53.4602423 L44.9208633,53.625727 L44.9208633,53.625727 L44.3927243,53.7868448 L44.3927243,53.7868448 L43.8424358,53.94346 C43.7489066,53.9691798 43.6544781,53.9947063 43.559162,54.0200368 L42.9767082,54.1696441 L42.9767082,54.1696441 L42.3735171,54.31441 L42.3735171,54.31441 L41.7501534,54.4541989 C41.6446097,54.4770747 41.5382491,54.4997376 41.4310833,54.5221846 L40.7785198,54.6542538 L40.7785198,54.6542538 L40.1071959,54.7810072 L40.1071959,54.7810072 L39.4176764,54.9023091 L39.4176764,54.9023091 L38.7105261,55.018024 L38.7105261,55.018024 L37.98631,55.1280163 L37.98631,55.1280163 L37.2455928,55.2321505 L37.2455928,55.2321505 L36.4889394,55.3302909 L36.4889394,55.3302909 L35.7169146,55.4223021 L35.7169146,55.4223021 L34.9300834,55.5080484 L34.9300834,55.5080484 L34.1290104,55.5873944 L34.1290104,55.5873944 L33.3142607,55.6602044 L33.3142607,55.6602044 L32.4863991,55.7263428 L32.4863991,55.7263428 L31.6459903,55.7856742 L31.6459903,55.7856742 L30.7935993,55.8380629 L30.7935993,55.8380629 L29.9297908,55.8833734 L29.9297908,55.8833734 L29.0551299,55.9214701 L29.0551299,55.9214701 L28.1701812,55.9522175 L28.1701812,55.9522175 L27.2755096,55.97548 L27.2755096,55.97548 L26.37168,55.9911219 L26.37168,55.9911219 L25.4592573,55.9990079 L25.4592573,55.9990079 L24.5407427,55.9990079 L24.5407427,55.9990079 L23.62832,55.9911219 L23.62832,55.9911219 L22.7244904,55.97548 L22.7244904,55.97548 L21.8298188,55.9522175 L21.8298188,55.9522175 L20.9448701,55.9214701 L20.9448701,55.9214701 L20.0702092,55.8833734 L20.0702092,55.8833734 L19.2064007,55.8380629 L19.2064007,55.8380629 L18.3540097,55.7856742 L18.3540097,55.7856742 L17.5136009,55.7263428 L17.5136009,55.7263428 L16.6857393,55.6602044 L16.6857393,55.6602044 L15.8709896,55.5873944 L15.8709896,55.5873944 L15.0699166,55.5080484 L15.0699166,55.5080484 L14.2830854,55.4223021 L14.2830854,55.4223021 L13.5110606,55.3302909 L13.5110606,55.3302909 L12.7544072,55.2321505 L12.7544072,55.2321505 L12.01369,55.1280163 L12.01369,55.1280163 L11.2894739,55.018024 L11.2894739,55.018024 L10.5823236,54.9023091 L10.5823236,54.9023091 L9.89280409,54.7810072 L9.89280409,54.7810072 L9.22148017,54.6542538 L9.22148017,54.6542538 L8.5689167,54.5221846 C8.46175087,54.4997376 8.35539026,54.4770747 8.24984664,54.4541989 L7.62648292,54.31441 L7.62648292,54.31441 L7.02329177,54.1696441 L7.02329177,54.1696441 L6.44083803,54.0200368 L6.44083803,54.0200368 L5.87968656,53.8657237 L5.87968656,53.8657237 L5.3404022,53.7068402 L5.3404022,53.7068402 L4.8235498,53.5435221 C4.73930845,53.5159403 4.65602529,53.4881795 4.5737121,53.4602423 L4.09156674,53.2905263 C4.0131805,53.2618952 3.93578776,53.2330934 3.85940029,53.2041238 L3.41323287,53.0283149 L3.41323287,53.0283149 L2.99175681,52.8486135 C1.15151737,52.0314024 0.0784352247,51.1000753 0.00413374389,50.1102217 L0,50 L0,40 Z" id="路径" fill="#CCCED5"></path>
<ellipse id="椭圆形" fill="#EDEFF5" cx="25" cy="40" rx="25" ry="6"></ellipse>
<path d="M0,24 L50,24 L50,34 C50,35.0309315 48.9166396,36.0011353 47.0082432,36.8486135 L46.5867671,37.0283149 L46.5867671,37.0283149 L46.1405997,37.2041238 C46.0642122,37.2330934 45.9868195,37.2618952 45.9084333,37.2905263 L45.4262879,37.4602423 L45.4262879,37.4602423 L44.9208633,37.625727 L44.9208633,37.625727 L44.3927243,37.7868448 L44.3927243,37.7868448 L43.8424358,37.94346 C43.7489066,37.9691798 43.6544781,37.9947063 43.559162,38.0200368 L42.9767082,38.1696441 L42.9767082,38.1696441 L42.3735171,38.31441 L42.3735171,38.31441 L41.7501534,38.4541989 C41.6446097,38.4770747 41.5382491,38.4997376 41.4310833,38.5221846 L40.7785198,38.6542538 L40.7785198,38.6542538 L40.1071959,38.7810072 L40.1071959,38.7810072 L39.4176764,38.9023091 L39.4176764,38.9023091 L38.7105261,39.018024 L38.7105261,39.018024 L37.98631,39.1280163 L37.98631,39.1280163 L37.2455928,39.2321505 L37.2455928,39.2321505 L36.4889394,39.3302909 L36.4889394,39.3302909 L35.7169146,39.4223021 L35.7169146,39.4223021 L34.9300834,39.5080484 L34.9300834,39.5080484 L34.1290104,39.5873944 L34.1290104,39.5873944 L33.3142607,39.6602044 L33.3142607,39.6602044 L32.4863991,39.7263428 L32.4863991,39.7263428 L31.6459903,39.7856742 L31.6459903,39.7856742 L30.7935993,39.8380629 L30.7935993,39.8380629 L29.9297908,39.8833734 L29.9297908,39.8833734 L29.0551299,39.9214701 L29.0551299,39.9214701 L28.1701812,39.9522175 L28.1701812,39.9522175 L27.2755096,39.97548 L27.2755096,39.97548 L26.37168,39.9911219 L26.37168,39.9911219 L25.4592573,39.9990079 L25.4592573,39.9990079 L24.5407427,39.9990079 L24.5407427,39.9990079 L23.62832,39.9911219 L23.62832,39.9911219 L22.7244904,39.97548 L22.7244904,39.97548 L21.8298188,39.9522175 L21.8298188,39.9522175 L20.9448701,39.9214701 L20.9448701,39.9214701 L20.0702092,39.8833734 L20.0702092,39.8833734 L19.2064007,39.8380629 L19.2064007,39.8380629 L18.3540097,39.7856742 L18.3540097,39.7856742 L17.5136009,39.7263428 L17.5136009,39.7263428 L16.6857393,39.6602044 L16.6857393,39.6602044 L15.8709896,39.5873944 L15.8709896,39.5873944 L15.0699166,39.5080484 L15.0699166,39.5080484 L14.2830854,39.4223021 L14.2830854,39.4223021 L13.5110606,39.3302909 L13.5110606,39.3302909 L12.7544072,39.2321505 L12.7544072,39.2321505 L12.01369,39.1280163 L12.01369,39.1280163 L11.2894739,39.018024 L11.2894739,39.018024 L10.5823236,38.9023091 L10.5823236,38.9023091 L9.89280409,38.7810072 L9.89280409,38.7810072 L9.22148017,38.6542538 L9.22148017,38.6542538 L8.5689167,38.5221846 C8.46175087,38.4997376 8.35539026,38.4770747 8.24984664,38.4541989 L7.62648292,38.31441 L7.62648292,38.31441 L7.02329177,38.1696441 L7.02329177,38.1696441 L6.44083803,38.0200368 L6.44083803,38.0200368 L5.87968656,37.8657237 L5.87968656,37.8657237 L5.3404022,37.7068402 L5.3404022,37.7068402 L4.8235498,37.5435221 C4.73930845,37.5159403 4.65602529,37.4881795 4.5737121,37.4602423 L4.09156674,37.2905263 C4.0131805,37.2618952 3.93578776,37.2330934 3.85940029,37.2041238 L3.41323287,37.0283149 L3.41323287,37.0283149 L2.99175681,36.8486135 C1.15151737,36.0314024 0.0784352247,35.1000753 0.00413374389,34.1102217 L0,34 L0,24 Z" id="路径" fill="#CCCED5"></path>
<path d="M43,25 L43.0008916,38.1636315 C38.5523136,39.2711871 32.3457098,39.9692334 25.4592573,39.9990079 L25,40 L25,25 L43,25 Z" id="路径" fill="#8B8FA0"></path>
<ellipse id="蒙版" fill="#EDEFF5" cx="25" cy="24" rx="25" ry="6"></ellipse>
<path d="M25,24 L43.1512527,28.1258708 C38.7467962,29.2416007 32.5754761,29.9515224 25.7123972,29.9976108 L25,30 L25,24 Z" id="路径" fill="#B4B8CC"></path>
<path d="M15.5,0 L35.5,0 C36.3284271,-1.52179594e-16 37,0.671572875 37,1.5 L37,14.5 C37,15.3284271 36.3284271,16 35.5,16 L28,16 L28,16 L25.5,19.5 L23,16 L15.5,16 C14.6715729,16 14,15.3284271 14,14.5 L14,1.5 C14,0.671572875 14.6715729,1.52179594e-16 15.5,0 Z" id="矩形" fill="#8B8FA0"></path>
<path d="M21.5,7 C21.7761424,7 22,7.22385763 22,7.5 L22,12 L19,12 L19,7.5 C19,7.22385763 19.2238576,7 19.5,7 L21.5,7 Z M26.5,8 C26.7761424,8 27,8.22385763 27,8.5 L27,12 L24,12 L24,8.5 C24,8.22385763 24.2238576,8 24.5,8 L26.5,8 Z M31.5,4 C31.7761424,4 32,4.22385763 32,4.5 L32,12 L29,12 L29,4.5 C29,4.22385763 29.2238576,4 29.5,4 L31.5,4 Z" id="形状结合" fill="#FFFFFF"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>首页图标/月度计划@2x</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="商业BI-年度计划" transform="translate(-28.000000, -408.000000)">
<g id="编组-11" transform="translate(16.000000, 266.000000)">
<g id="编组-4备份" transform="translate(0.000000, 130.000000)">
<g id="编组-5" transform="translate(12.000000, 12.000000)">
<g id="编组" transform="translate(2.000000, 1.000000)">
<polygon id="矩形" fill="#D9C8C1" points="3 12 13 12 16 18 -7.95585819e-13 18"></polygon>
<path d="M8,15 C12,11.209139 14,8.209139 14,6 C14,2.6862915 11.3137085,0 8,0 C4.6862915,0 2,2.6862915 2,6 C2,8.209139 4,11.209139 8,15 Z" id="椭圆形" fill="#FF8E5B"></path>
<path d="M8,8.5 C9.38071187,8.5 10.5,7.38071187 10.5,6 C10.5,4.61928813 9.38071187,3.5 8,3.5 C6.61928813,3.5 5.5,4.61928813 5.5,6 C5.5,7.38071187 6.61928813,8.5 8,8.5 Z" id="椭圆形" fill="#FFFFFF"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>首页图标/月度计划@2x</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="商业BI-月度计划" transform="translate(-28.000000, -278.000000)">
<g id="编组-10" transform="translate(16.000000, 266.000000)">
<g id="编组-5" transform="translate(12.000000, 12.000000)">
<g id="编组" transform="translate(1.000000, 2.000000)">
<rect id="矩形" fill="#778CFD" x="0" y="2" width="18" height="14" rx="1"></rect>
<rect id="矩形" fill="#778CFD" x="4" y="0" width="2" height="4"></rect>
<rect id="矩形备份" fill="#778CFD" x="12" y="0" width="2" height="4"></rect>
<rect id="矩形备份-3" fill="#E8E9EE" x="4" y="2" width="2" height="2"></rect>
<rect id="矩形备份-2" fill="#E8E9EE" x="12" y="2" width="2" height="2"></rect>
<path d="M15,6 L15,13 L12,13 L12,11 L10,11 L10,13 L3,13 L3,6 L15,6 Z" id="形状结合" fill="#E8E9EE"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>图标/优秀备份@2x</title>
<defs>
<linearGradient x1="50%" y1="100%" x2="50%" y2="14.6336203%" id="linearGradient-1">
<stop stop-color="#95BCFA" offset="0%"></stop>
<stop stop-color="#819ADD" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-2">
<stop stop-color="#B9D2FF" offset="0%"></stop>
<stop stop-color="#BCD0FF" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="-2.48949813e-15%" x2="50%" y2="100%" id="linearGradient-3">
<stop stop-color="#384E8B" offset="0%"></stop>
<stop stop-color="#435EAB" offset="100%"></stop>
</linearGradient>
</defs>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="商业BI切图" transform="translate(-276.000000, -261.000000)">
<g id="编组-3" transform="translate(100.000000, 80.000000)">
<g id="图标/优秀备份" transform="translate(176.000000, 181.000000)">
<path d="M11.9510514,1.68522777 C13.4108555,2.92133682 15.358743,3.98239536 17.6470857,4.59555496 C19.0153212,4.96217256 20.3586163,5.12933772 21.6002338,5.12156992 L21.6002338,5.12156992 L21.6,13.2906853 C21.6,14.8503033 21.1407569,16.3367781 20.3252146,17.5917036 C19.5096723,18.8466291 18.3378307,19.8700053 16.9126338,20.5034261 L16.9126338,20.5034261 L12.4873662,22.4702118 C12.1770877,22.6081133 11.8229123,22.6081133 11.5126338,22.4702118 L11.5126338,22.4702118 L7.08736616,20.5034261 C5.66216927,19.8700053 4.49032773,18.8466291 3.67478541,17.5917036 C2.85924309,16.3367781 2.4,14.8503033 2.4,13.2906494 L2.4,13.2906494 L2.39975529,5.12156985 C3.64137579,5.12933869 4.98467475,4.96217363 6.35291427,4.59555496 C8.64144377,3.98234533 10.5856244,2.91830438 11.9510514,1.68522777 Z" id="形状结合" stroke="url(#linearGradient-2)" stroke-width="2.4" fill="url(#linearGradient-1)"></path>
<path d="M16.704,10.572 L16.704,7.32 L7.296,7.32 L7.296,10.572 L16.704,10.572 Z M15.504,9.54 L13.956,9.54 L13.956,8.352 L15.504,8.352 L15.504,9.54 Z M12.804,9.54 L11.196,9.54 L11.196,8.352 L12.804,8.352 L12.804,9.54 Z M10.044,9.54 L8.496,9.54 L8.496,8.352 L10.044,8.352 L10.044,9.54 Z M10.044,12.816 L10.788,11.964 C10.188,11.472 9.552,11.052 8.856,10.692 L8.004,11.46 C8.724,11.844 9.408,12.3 10.044,12.816 Z M15.12,18.012 C16.08,18.012 16.572,17.496 16.572,16.464 L16.572,10.968 L15.3,10.968 L15.3,16.164 C15.3,16.632 15.096,16.872 14.688,16.872 C14.316,16.872 13.92,16.836 13.512,16.788 L13.776,18.012 L15.12,18.012 Z M13.764,15.66 L13.764,11.58 L12.552,11.58 L12.552,15.66 L13.764,15.66 Z M8.976,18.06 C9.96,17.652 10.884,17.172 11.76,16.644 L11.436,15.36 C10.944,15.672 10.476,15.96 10.032,16.212 L10.032,13.032 L6.96,13.032 L6.96,14.208 L8.832,14.208 L8.832,16.356 C8.832,16.596 8.712,16.8 8.496,16.944 L8.976,18.06 Z" id="罚" fill="url(#linearGradient-3)"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>图标/优秀@2x</title>
<defs>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
<stop stop-color="#FF9302" offset="0%"></stop>
<stop stop-color="#6F2D03" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="46.4291211%" id="linearGradient-2">
<stop stop-color="#FFF1C9" offset="0%"></stop>
<stop stop-color="#E1AD36" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-3">
<stop stop-color="#FFB44F" offset="0%"></stop>
<stop stop-color="#FFCF85" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-4">
<stop stop-color="#FFE88D" offset="0%"></stop>
<stop stop-color="#FFE6B7" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-5">
<stop stop-color="#964200" offset="0%"></stop>
<stop stop-color="#A65A04" offset="100%"></stop>
</linearGradient>
</defs>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="商业BI切图" transform="translate(-236.000000, -261.000000)">
<g id="编组-3" transform="translate(100.000000, 80.000000)">
<g id="图标/优秀" transform="translate(136.000000, 181.000000)">
<rect id="矩形" fill="url(#linearGradient-1)" x="1.2" y="0" width="21.6" height="3.6" rx="1.2"></rect>
<path d="M3.6,1.2 L20.4,1.2 L18.248667,8.72966535 C18.1014779,9.24482722 17.6306147,9.6 17.0948383,9.6 L6.9051617,9.6 C6.36938526,9.6 5.89852206,9.24482722 5.75133296,8.72966535 L3.6,1.2 L3.6,1.2 Z" id="矩形" fill="url(#linearGradient-2)"></path>
<rect id="矩形" fill="#EBA61C" x="6" y="1.2" width="3.6" height="6"></rect>
<rect id="矩形备份" fill="#EBA61C" x="14.4" y="1.2" width="3.6" height="6"></rect>
<circle id="椭圆形" stroke="url(#linearGradient-4)" stroke-width="2.4" fill="url(#linearGradient-3)" cx="12" cy="13.2" r="9.6"></circle>
<g id="点赞" opacity="0.800000012" transform="translate(6.000000, 6.000000)">
<rect id="矩形" fill="#000000" fill-rule="nonzero" opacity="0" x="0" y="0" width="12" height="12"></rect>
<path d="M7.62666797,5.02667578 C7.46667187,5.00000391 7.41333984,4.83999609 7.38666797,4.76000391 L7.38666797,2.81333203 C7.38666797,2.28001172 6.96,1.85333203 6.42666797,1.85333203 C5.94666797,1.85333203 5.54667187,2.22666797 5.46666797,2.68000781 C5.17333594,4.52000391 4.05333984,5.13332813 3.33333984,5.32000781 C3.36,5.4 3.36,5.45333203 3.36,5.50667578 L3.36,10.68 C3.36,10.7866758 3.33333984,10.8933398 3.28000781,11.0000039 L8.50666406,11.0000039 C9.01333594,10.8933398 9.36,10.7066719 9.6,10.2 L10.6933359,6.36 C10.9066641,5.66667188 10.56,5.00000391 9.78666797,5.02667578 L7.62666797,5.02667578 Z M2.90667187,5.50667578 C2.90667187,5.34666797 2.69333203,5.21333203 2.45333203,5.21333203 L1.73333203,5.21333203 C1.36000781,5.21333203 1.04000391,5.53333594 1.04000391,5.90667188 L1.04000391,10.2800039 C1.04000391,10.68 1.33333594,11.0000039 1.73333203,11.0000039 L2.45333203,11.0000039 C2.69333203,11.0000039 2.90667187,10.866668 2.90667187,10.7066719 L2.90667187,5.50667578 Z" id="形状" fill="url(#linearGradient-5)"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>时间备份_3@2x</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="商业BI切图" transform="translate(-172.000000, -347.000000)">
<g id="编组-3" transform="translate(100.000000, 80.000000)">
<g id="编组-10" transform="translate(72.000000, 267.000000)">
<circle id="椭圆形" fill="#CDF3DF" cx="7" cy="7" r="7"></circle>
<g id="编组-9" transform="translate(7.000000, 7.000000) scale(1, -1) translate(-7.000000, -7.000000) translate(4.000000, 3.000000)" fill="#07C160">
<rect id="矩形" x="2.56066017" y="1.06066017" width="1" height="6" rx="0.5"></rect>
<rect id="矩形备份-6" transform="translate(4.121320, 2.000000) rotate(-225.000000) translate(-4.121320, -2.000000) " x="3.62132034" y="0" width="1" height="4" rx="0.5"></rect>
<rect id="矩形" transform="translate(2.000000, 2.000000) rotate(-225.000000) translate(-2.000000, -2.000000) " x="0" y="1.5" width="4" height="1" rx="0.5"></rect>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>首页图标/注解@2x</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="商业BI切图" transform="translate(-194.000000, -346.000000)" fill-rule="nonzero">
<g id="编组-3" transform="translate(100.000000, 80.000000)">
<g id="question-circle" transform="translate(94.000000, 266.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M8,1 C4.134375,1 1,4.134375 1,8 C1,11.865625 4.134375,15 8,15 C11.865625,15 15,11.865625 15,8 C15,4.134375 11.865625,1 8,1 Z M8,13.8125 C4.790625,13.8125 2.1875,11.209375 2.1875,8 C2.1875,4.790625 4.790625,2.1875 8,2.1875 C11.209375,2.1875 13.8125,4.790625 13.8125,8 C13.8125,11.209375 11.209375,13.8125 8,13.8125 Z M9.74375,4.9484375 C9.275,4.5375 8.65625,4.3125 8,4.3125 C7.34375,4.3125 6.725,4.5390625 6.25625,4.9484375 C5.76875,5.375 5.5,5.9484375 5.5,6.5625 L5.5,6.68125 C5.5,6.75 5.55625,6.80625 5.625,6.80625 L6.375,6.80625 C6.44375,6.80625 6.5,6.75 6.5,6.68125 L6.5,6.5625 C6.5,5.8734375 7.1734375,5.3125 8,5.3125 C8.8265625,5.3125 9.5,5.8734375 9.5,6.5625 C9.5,7.0484375 9.15625,7.49375 8.6234375,7.6984375 C8.2921875,7.825 8.0109375,8.046875 7.809375,8.3375 C7.6046875,8.634375 7.4984375,8.990625 7.4984375,9.3515625 L7.4984375,9.6875 C7.4984375,9.75625 7.5546875,9.8125 7.6234375,9.8125 L8.3734375,9.8125 C8.4421875,9.8125 8.4984375,9.75625 8.4984375,9.6875 L8.4984375,9.3328125 C8.4984375,9.025 8.6921875,8.74375 8.98125,8.6328125 C9.903125,8.278125 10.4984443,7.465625 10.4984443,6.5625 C10.5,5.9484375 10.23125,5.375 9.74375,4.9484375 Z M7.375,11.4375 C7.375,11.782678 7.65482203,12.0625 8,12.0625 C8.34517797,12.0625 8.625,11.782678 8.625,11.4375 C8.625,11.092322 8.34517797,10.8125 8,10.8125 C7.65482203,10.8125 7.375,11.092322 7.375,11.4375 Z" id="形状" fill="#A69E9F"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 712 B

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 0 B