[工作台改版]

This commit is contained in:
2023-06-28 13:56:36 +08:00
parent 7c56feee3f
commit c79903ac51
17 changed files with 2248 additions and 379 deletions

View File

@@ -13,7 +13,7 @@
"type" : "uniCloud" "type" : "uniCloud"
}, },
{ {
"playground" : "custom", "playground" : "standard",
"type" : "uni-app:app-android" "type" : "uni-app:app-android"
} }
] ]

View File

@@ -60,9 +60,9 @@
}, },
globalData:{ globalData:{
signUrl: "https://web.douhuofalv.com/app/e-sign?sign_type=order", signUrl: "https://web.douhuofalv.com/app/e-sign?sign_type=order",
// https://web.douhuotest.douhuofalv.com/app/e-sign?sign_type=order 测试环境 // signUrl: "https://web.douhuotest.douhuofalv.com/app/e-sign?sign_type=order", //测试环境
certificationUrl: 'http://web.douhuofalv.com/app/e-sign?sign_type=personal', certificationUrl: 'http://web.douhuofalv.com/app/e-sign?sign_type=personal',
// 'https://web.douhuotest.douhuofalv.com/app/e-sign?sign_type=personal' 测试环境 // certificationUrl: 'https://web.douhuotest.douhuofalv.com/app/e-sign?sign_type=personal', //测试环境
} }
} }
</script> </script>

View File

@@ -39,9 +39,32 @@ const synthesisCount = () => {
}) })
} }
// 获取综法法律咨询单统计
const synthesisServices = () => {
return request({
url : 'synthesis/data/services',
data : {
channel : 'manage'
}
})
}
// 获取综法诉讼委托单统计
const synthesisAttorney = () => {
return request({
url : 'synthesis/data/attorney',
data : {
channel : 'manage'
}
})
}
export { export {
index, index,
rights, rights,
sign, sign,
synthesisCount synthesisCount,
synthesisServices,
synthesisAttorney
} }

View File

@@ -617,6 +617,42 @@
"enablePullDownRefresh": false, "enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF" "navigationBarBackgroundColor": "#FFFFFF"
} }
}, {
"path": "pages/synthesize/consultWork",
"name": "ConsultWork",
"auth": true,
"style": {
"navigationBarTitleText": "协商调解单",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "pages/synthesize/serviceWork",
"name": "ServiceWork",
"auth": true,
"style": {
"navigationBarTitleText": "法律咨询单",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "pages/synthesize/actionWork",
"name": "ActionWork",
"auth": true,
"style": {
"navigationBarTitleText": "诉讼委托单",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, {
"path": "pages/synthesize/enableWork",
"name": "EnableWork",
"auth": true,
"style": {
"navigationBarTitleText": "增收赋能单",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#FFFFFF"
}
}, { }, {
"path": "pages/synthesize/servicesInfo", "path": "pages/synthesize/servicesInfo",
"name": "OrderServicesInfo", "name": "OrderServicesInfo",

View File

@@ -136,7 +136,7 @@
</view> </view>
<view class="the-flex-item"> <view class="the-flex-item">
<view class="cover" :style="'background-image: url(' + require('@/static/synthesize/img_10.png') + ');'"></view> <view class="cover" :style="'background-image: url(' + require('@/static/synthesize/img_10.png') + ');'"></view>
<view class="title nowrap">领袖能量思维</view> <view class="title nowrap">卓越领袖能量思维</view>
<view class="price nowrap"><text></text>5980</view> <view class="price nowrap"><text></text>5980</view>
</view> </view>
<view class="the-flex-item"> <view class="the-flex-item">

View File

@@ -0,0 +1,405 @@
<template>
<view class="content">
<view class="block">
<view class="block-title">统计数据</view>
<view class="total-flex">
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_00.png"></image>
<view class="title">诉讼委托单</view>
<view class="number">{{orderAll.all}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_01.png"></image>
<view class="title">已缴费</view>
<view class="number">{{orderAll.payed}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_03.png"></image>
<view class="title">已退款</view>
<view class="number">{{orderAll.refund}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_05.png"></image>
<view class="title">结算金额</view>
<view class="number">{{orderAll.price}}<text></text></view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">委托订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 0, type: 'entrust' })">
<image class="icon" src="@/static/icons/work_icon_06.png"></image>
<view class="number" v-if="orderEntrust.init > 0">{{orderEntrust.init}}</view>
<view class="text">待支付</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 1, type: 'entrust' })">
<image class="icon" src="@/static/icons/work_icon_21.png"></image>
<view class="number" v-if="orderEntrust.audit > 0">{{orderEntrust.audit}}</view>
<view class="text">待审核</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 2, type: 'entrust' })">
<image class="icon" src="@/static/icons/work_icon_07.png"></image>
<view class="number" v-if="orderEntrust.sign > 0">{{orderEntrust.sign}}</view>
<view class="text">待签约</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 3, type: 'entrust' })">
<image class="icon" src="@/static/icons/work_icon_10.png"></image>
<view class="number" v-if="orderEntrust.signed > 0">{{orderEntrust.signed}}</view>
<view class="text">已签约</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 4, type: 'entrust' })">
<image class="icon" src="@/static/icons/work_icon_08.png"></image>
<view class="number" v-if="orderEntrust.complete > 0">{{orderEntrust.complete}}</view>
<view class="text">已完成</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 5, type: 'entrust' })">
<image class="icon" src="@/static/icons/work_icon_09.png"></image>
<view class="number" v-if="orderEntrust.reject > 0">{{orderEntrust.reject}}</view>
<view class="text">已驳回</view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">拓展订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 0, type: 'expand' })">
<image class="icon" src="@/static/icons/work_icon_06.png"></image>
<view class="number" v-if="orderExpand.init > 0">{{orderExpand.init}}</view>
<view class="text">待支付</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 1, type: 'expand' })">
<image class="icon" src="@/static/icons/work_icon_10.png"></image>
<view class="number" v-if="orderExpand.paid > 0">{{orderExpand.paid}}</view>
<view class="text">已支付</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 2, type: 'expand' })">
<image class="icon" src="@/static/icons/work_icon_08.png"></image>
<view class="number" v-if="orderExpand.refund > 0">{{orderExpand.refund}}</view>
<view class="text">已退款</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { synthesisAttorney } from '@/apis/interfaces/work.js'
export default {
data() {
return {
// 综法订单管理
orderAll : '',
orderEntrust : '',
orderExpand : ''
};
},
onShow() {
this.getIndex()
},
methods: {
// 工作台信息
getIndex(){
uni.showLoading({
title: '加载中...',
mask : true
})
// 综法法律咨询单统计
synthesisAttorney().then(res => {
uni.hideLoading()
this.orderAll = res.all
this.orderEntrust = res.orders.entrust
this.orderExpand = res.orders.expand
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 导航
onNav(name, obj){
let params = obj || {}
this.$Router.push({name, params})
}
}
}
</script>
<style lang="scss" scoped>
.content{
padding: 30rpx 0;
}
// 登录提示
.auth-null{
height: 100vh;
width: 100vw;
background: white;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.auth-null-btn{
height: 90rpx;
line-height: 90rpx;
padding: 0;
width: 70vw;
background: $main-color;
color: white;
font-size: 32rpx;
margin-top: 100rpx;
font-weight: bold;
}
}
// 弹出特权
.privilege-lay{
width: 70vw;
.privilege-lay-img{
width: 70vw;
vertical-align: top;
}
.privilege-lay-content{
background: white;
border-radius: 0 0 20rpx 20rpx;
width: 70vw;
padding: 80rpx 30rpx 50rpx;
box-sizing: border-box;
margin-top: -50rpx;
line-height: 50rpx;
color: #111111;
font-size: 30rpx;
}
.privilege-lay-remove{
padding-top: 30rpx;
text-align: center;
.privilege-lay-icon{
display: inline-block;
}
}
}
// header
.work-bar{
padding: 30rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
&-user{
position: relative;
line-height: 70rpx;
height: 70rpx;
width: calc(100% - 200rpx);
padding-left: 90rpx;
box-sizing: border-box;
.cover{
width: 70rpx;
height: 70rpx;
border-radius: 50%;
position: absolute;
left: 0;
top: 0;
}
.nickname{
font-weight: bold;
font-size: 34rpx;
.card{
color: $main-color;
font-size: 24rpx;
display: inline-block;
height: 40rpx;
line-height: 38rpx;
border-radius: 24rpx;
padding: 0 15rpx;
margin-left: 20rpx;
margin-bottom: 2rpx;
vertical-align: middle;
border:solid 1rpx $main-color;
font-weight: normal;
}
}
}
&-add{
width: 200rpx;
font-size: 30rpx;
text-align: right;
line-height: 70rpx;
.icon{
margin-right: 5rpx;
font-weight: bold;
}
}
}
// 订单管理
.tool-flex{
padding: 0 10rpx;
display: flex;
flex-wrap: wrap;
.tool-flex-item{
width: 25%;
text-align: center;
margin-bottom: 30rpx;
position: relative;
.icon{
width: 78rpx;
height: 78rpx;
background: #ddd;
border-radius: 20rpx;
}
.number{
position: absolute;
right: 20%;
background: #fe4444;
top: -10rpx;
height: 40rpx;
line-height: 40rpx;
min-width: 40rpx;
font-size: 24rpx;
color: white;
border-radius: 50%;
}
.text{
line-height: 40rpx;
font-size: 26rpx;
color: #111;
text-align: center;
}
}
}
// 数据统计单
.total-flex{
padding: 0 20rpx 20rpx;
display: flex;
flex-direction: row;
flex-wrap: wrap;
.total-item{
margin: 0 10rpx 20rpx;
background: #f8f8f8;
width: calc(50% - 20rpx);
padding: 20rpx 20rpx 20rpx 120rpx;
box-sizing: border-box;
border-radius: $radius;
position: relative;
min-height: 140rpx;
.icon{
position: absolute;
left: 20rpx;
top: 50%;
width: 70rpx;
height: 70rpx;
margin-top: -35rpx;
}
.title{
font-size: 28rpx;
color: #111;
line-height: 40rpx;
@extend .nowrap;
}
.number{
padding-top: 5rpx;
font-weight: bold;
font-size: 34rpx;
color: #111;
font-family: Arial, Helvetica, sans-serif;
line-height: 40rpx;
@extend .nowrap;
text{
font-size: 80%;
font-weight: normal;
padding-left: 10rpx;
}
}
}
}
// 通用板块
.block{
background: white;
margin: 0 30rpx 20rpx;
border-radius: $radius;
.block-title{
padding: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: bold;
color: '#111';
font-size: 32rpx;
}
}
// 开通业务员
.open-interest{
padding: 30rpx;
margin-bottom: 30rpx;
.title{
text-align: center;
font-size: 34rpx;
font-weight: bold;
line-height: 80rpx;
}
.open-interest-flex{
display: flex;
flex-wrap: wrap;
padding-top: 30rpx;
justify-content: space-between;
.open-interest-item{
text-align: center;
.open-interest-icon{
width: 88rpx;
height: 88rpx;
vertical-align: top;
margin-bottom: 15rpx;
}
.open-interest-text{
font-size: 28rpx;
color: #111111;
line-height: 40rpx;
}
}
}
// 开通步骤
.open-interest-block{
padding: 30rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.open-interest-icon{
width: 88rpx;
height: 88rpx;
}
.open-interest-text{
width: calc( 100% - 258rpx);
padding:0 30rpx;
box-sizing: border-box;
.open-interest-title{
font-weight: bold;
color: #111111;
line-height: 40rpx;
font-size: 30rpx;
}
.open-interest-submit{
color: #666666;
font-size: 26rpx;
line-height: 40rpx;
}
}
.open-interest-btn[size="mini"]{
width: 170rpx;
height: 70rpx;
line-height: 70rpx;
padding: 0;
border-radius: 35rpx;
background: $main-color;
color: white;
font-size: 30rpx;
&::after{
display: none;
}
&[disabled]{
background: #EEEEEE;
color: #999999;
}
}
}
}
</style>

View File

@@ -0,0 +1,539 @@
<template>
<view class="content">
<view class="block">
<view class="block-title">统计数据</view>
<view class="total-flex">
<view class="total-item" @click="onNav('Orders', { 'type': 2 })">
<image class="icon" src="@/static/icons/work_icon_00.png"></image>
<view class="title">预约咨询单</view>
<view class="number">{{orderCount.init_payed}}<text></text></view>
</view>
<view class="total-item" @click="onNav('Orders', { 'type': 4 })">
<image class="icon" src="@/static/icons/work_icon_01.png"></image>
<view class="title">已缴费</view>
<view class="number">{{orderCount.service_payed}}<text></text></view>
</view>
<view class="total-item" @click="onNav('Orders', { 'type': 10 })">
<image class="icon" src="@/static/icons/work_icon_02.png"></image>
<view class="title">办理完成</view>
<view class="number">{{orderCount.b_complete}}<text></text></view>
</view>
<view class="total-item" @click="onNav('RefundOrder')">
<image class="icon" src="@/static/icons/work_icon_03.png"></image>
<view class="title">已退款</view>
<view class="number">{{orderCount.refund}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_04.png"></image>
<view class="title">完成结算</view>
<view class="number">{{orderCount.settlement_count}}<text></text></view>
</view>
<view class="total-item" @click="onNav('AccountBonus')">
<image class="icon" src="@/static/icons/work_icon_05.png"></image>
<view class="title">结算金额</view>
<view class="number">{{orderCount.settlement_price}}<text></text></view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">协商调解订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 0 })">
<image class="icon" src="@/static/icons/work_icon_06.png"></image>
<view class="number" v-if="orderCount.a_init > 0">{{orderCount.a_init}}</view>
<view class="text">待预约</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 2 })">
<image class="icon" src="@/static/icons/work_icon_21.png"></image>
<view class="number" v-if="orderCount.a_service > 0">{{orderCount.a_service}}</view>
<view class="text">匹配服务包</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 3 })">
<image class="icon" src="@/static/icons/work_icon_07.png"></image>
<view class="number" v-if="orderCount.a_serviced > 0">{{orderCount.a_serviced}}</view>
<view class="text">待缴服务费</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 4 })">
<image class="icon" src="@/static/icons/work_icon_10.png"></image>
<view class="number" v-if="orderCount.b_sign > 0">{{orderCount.b_sign}}</view>
<view class="text">待签约</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 5 })">
<image class="icon" src="@/static/icons/work_icon_08.png"></image>
<view class="number" v-if="orderCount.a_bank > 0">{{orderCount.a_bank}}</view>
<view class="text">待完善资料</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 6 })">
<image class="icon" src="@/static/icons/work_icon_09.png"></image>
<view class="number" v-if="orderCount.b_check > 0">{{orderCount.b_check}}</view>
<view class="text">初审中</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 7 })">
<image class="icon" src="@/static/icons/work_icon_12.png"></image>
<view class="number" v-if="orderCount.b_recheck > 0">{{orderCount.b_recheck}}</view>
<view class="text">复审中</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 8 })">
<image class="icon" src="@/static/icons/work_icon_13.png"></image>
<view class="number" v-if="orderCount.b_process > 0">{{orderCount.b_process}}</view>
<view class="text">办理中</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 9 })">
<image class="icon" src="@/static/icons/work_icon_14.png"></image>
<view class="number" v-if="orderCount.b_confirm > 0">{{orderCount.b_confirm}}</view>
<view class="text">待结案</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 10 })">
<image class="icon" src="@/static/icons/work_icon_15.png"></image>
<!-- <view class="number" v-if="orderCount.b_complete > 0">{{orderCount.b_complete}}</view> -->
<view class="text">办理完成</view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">转让订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('TransfersOrders', { type: 'out' })">
<image class="icon" src="@/static/icons/work_icon_26.png"></image>
<view class="number" v-if="orderCount.transfer_out > 0">{{orderCount.transfer_out}}</view>
<view class="text">转出订单</view>
</view>
<view class="tool-flex-item" @click="onNav('TransfersOrders', { type: 'in' })">
<image class="icon" src="@/static/icons/work_icon_19.png"></image>
<view class="number" v-if="orderCount.transfer_in > 0">{{orderCount.transfer_in}}</view>
<view class="text">转入订单</view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">特殊订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('ModifyOrder', {})">
<image class="icon" src="@/static/icons/work_icon_16.png"></image>
<view class="number" v-if="orderCount.audit_bank > 0">{{orderCount.audit_bank}}</view>
<view class="text">修改资料</view>
</view>
<view class="tool-flex-item" @click="onNav('PoorOrder', {})">
<image class="icon" src="@/static/icons/work_icon_17.png"></image>
<view class="number" v-if="orderCount.diff_prices > 0">{{orderCount.diff_prices}}</view>
<view class="text">补差价</view>
</view>
<view class="tool-flex-item" @click="onNav('RefundOrder')">
<image class="icon" src="@/static/icons/work_icon_18.png"></image>
<view class="number" v-if="orderCount.refund > 0">{{orderCount.refund}}</view>
<view class="text">退款订单</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { index, rights, sign, synthesisCount } from '@/apis/interfaces/work.js'
export default {
data() {
return {
isAuth : false,
rightsArr : [],
userInfo : {
nickname: '',
avatar : ''
},
identity : {},
isAnswer : false,
isCertification : false,
certification : null,
isManager : false,
orderCount : {},
// 权益说明
privilegeShow : false,
privilegeText : '',
// 签约状态
sign : {
isSign : false,
address : ""
},
// 综法订单管理
synthesisData : {}
};
},
onShow() {
let i = 0;
this.isAuth = this.$store.getters.getToken != ''
if(this.isAuth){
this.getIndex()
}
},
methods: {
// 签约
onSign(){
if(!this.isCertification){
uni.showToast({
title: '暂未实名认证,无法签约,请完成实名认证',
icon : 'none'
})
return
}
if(this.sign.address == ''){
uni.showToast({
title: '暂时无法签约,请前往“我的”,点击用户头像,完善通讯地址信息后重试',
icon : 'none'
})
return
}
uni.showLoading({
title : '获取签约地址',
mask : true
})
sign().then(res => {
uni.hideLoading()
this.$Router.push({
name : 'ESign',
params : {
url: res.sign_url
}
})
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 显示业务员权益
onToast(val){
this.privilegeText = val.content
this.privilegeShow = true
},
// 工作台信息
getIndex(){
uni.showLoading({
title: '加载中...',
mask : true
})
Promise.all([rights(), index(), synthesisCount()]).then(res => {
let rightsData = res[0],
indexData = res[1],
synthesisData = res[2]
let { nickname, avatar, business_orders_count, isCertification, certification, isManager, isAnswer, identity, sign } = indexData
this.rightsArr = rightsData
this.userInfo = {
nickname,
avatar
}
this.isCertification = isCertification
this.certification = certification
this.isManager = isManager
this.isAnswer = isAnswer
this.orderCount = business_orders_count
this.identity = identity
this.sign = sign
this.synthesisData = synthesisData
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 导航
onNav(name, obj){
let params = obj || {}
this.$Router.push({name, params})
},
// 创建订单
onCreateOrder(){
uni.showActionSheet({
itemList: ['个人订单', '客户订单'],
success : res => {
this.onNav('OrderCreate', {
type: res.tapIndex === 0 ? 'self' : 'other'
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
.content{
padding: 30rpx 0;
}
// 登录提示
.auth-null{
height: 100vh;
width: 100vw;
background: white;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.auth-null-btn{
height: 90rpx;
line-height: 90rpx;
padding: 0;
width: 70vw;
background: $main-color;
color: white;
font-size: 32rpx;
margin-top: 100rpx;
font-weight: bold;
}
}
// 弹出特权
.privilege-lay{
width: 70vw;
.privilege-lay-img{
width: 70vw;
vertical-align: top;
}
.privilege-lay-content{
background: white;
border-radius: 0 0 20rpx 20rpx;
width: 70vw;
padding: 80rpx 30rpx 50rpx;
box-sizing: border-box;
margin-top: -50rpx;
line-height: 50rpx;
color: #111111;
font-size: 30rpx;
}
.privilege-lay-remove{
padding-top: 30rpx;
text-align: center;
.privilege-lay-icon{
display: inline-block;
}
}
}
// header
.work-bar{
padding: 30rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
&-user{
position: relative;
line-height: 70rpx;
height: 70rpx;
width: calc(100% - 200rpx);
padding-left: 90rpx;
box-sizing: border-box;
.cover{
width: 70rpx;
height: 70rpx;
border-radius: 50%;
position: absolute;
left: 0;
top: 0;
}
.nickname{
font-weight: bold;
font-size: 34rpx;
.card{
color: $main-color;
font-size: 24rpx;
display: inline-block;
height: 40rpx;
line-height: 38rpx;
border-radius: 24rpx;
padding: 0 15rpx;
margin-left: 20rpx;
margin-bottom: 2rpx;
vertical-align: middle;
border:solid 1rpx $main-color;
font-weight: normal;
}
}
}
&-add{
width: 200rpx;
font-size: 30rpx;
text-align: right;
line-height: 70rpx;
.icon{
margin-right: 5rpx;
font-weight: bold;
}
}
}
// 订单管理
.tool-flex{
padding: 0 10rpx;
display: flex;
flex-wrap: wrap;
.tool-flex-item{
width: 25%;
text-align: center;
margin-bottom: 30rpx;
position: relative;
.icon{
width: 78rpx;
height: 78rpx;
background: #ddd;
border-radius: 20rpx;
}
.number{
position: absolute;
right: 20%;
background: #fe4444;
top: -10rpx;
height: 40rpx;
line-height: 40rpx;
min-width: 40rpx;
font-size: 24rpx;
color: white;
border-radius: 50%;
}
.text{
line-height: 40rpx;
font-size: 26rpx;
color: #111;
text-align: center;
}
}
}
// 数据统计单
.total-flex{
padding: 0 20rpx 20rpx;
display: flex;
flex-direction: row;
flex-wrap: wrap;
.total-item{
margin: 0 10rpx 20rpx;
background: #f8f8f8;
width: calc(50% - 20rpx);
padding: 20rpx 20rpx 20rpx 120rpx;
box-sizing: border-box;
border-radius: $radius;
position: relative;
min-height: 140rpx;
.icon{
position: absolute;
left: 20rpx;
top: 50%;
width: 70rpx;
height: 70rpx;
margin-top: -35rpx;
}
.title{
font-size: 28rpx;
color: #111;
line-height: 40rpx;
@extend .nowrap;
}
.number{
padding-top: 5rpx;
font-weight: bold;
font-size: 34rpx;
color: #111;
font-family: Arial, Helvetica, sans-serif;
line-height: 40rpx;
@extend .nowrap;
text{
font-size: 80%;
font-weight: normal;
padding-left: 10rpx;
}
}
}
}
// 通用板块
.block{
background: white;
margin: 0 30rpx 20rpx;
border-radius: $radius;
.block-title{
padding: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: bold;
color: '#111';
font-size: 32rpx;
}
}
// 开通业务员
.open-interest{
padding: 30rpx;
margin-bottom: 30rpx;
.title{
text-align: center;
font-size: 34rpx;
font-weight: bold;
line-height: 80rpx;
}
.open-interest-flex{
display: flex;
flex-wrap: wrap;
padding-top: 30rpx;
justify-content: space-between;
.open-interest-item{
text-align: center;
.open-interest-icon{
width: 88rpx;
height: 88rpx;
vertical-align: top;
margin-bottom: 15rpx;
}
.open-interest-text{
font-size: 28rpx;
color: #111111;
line-height: 40rpx;
}
}
}
// 开通步骤
.open-interest-block{
padding: 30rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.open-interest-icon{
width: 88rpx;
height: 88rpx;
}
.open-interest-text{
width: calc( 100% - 258rpx);
padding:0 30rpx;
box-sizing: border-box;
.open-interest-title{
font-weight: bold;
color: #111111;
line-height: 40rpx;
font-size: 30rpx;
}
.open-interest-submit{
color: #666666;
font-size: 26rpx;
line-height: 40rpx;
}
}
.open-interest-btn[size="mini"]{
width: 170rpx;
height: 70rpx;
line-height: 70rpx;
padding: 0;
border-radius: 35rpx;
background: $main-color;
color: white;
font-size: 30rpx;
&::after{
display: none;
}
&[disabled]{
background: #EEEEEE;
color: #999999;
}
}
}
}
</style>

View File

@@ -0,0 +1,33 @@
<template>
<view class="content">
<view class="null-pages">
<u-empty
mode="order"
icon="http://cdn.uviewui.com/uview/empty/order.png"
text="暂无相关订单"
>
</u-empty>
</view>
</view>
</template>
<script>
export default {
data() {
return {
};
},
onShow() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
// 内容为空
.null-pages{ height: 70vh; display: flex; align-items: center; justify-content: center; }
</style>

View File

@@ -3,6 +3,7 @@
<u-sticky bgColor="#fff" v-if="$Route.query.type != 'synthesis'"> <u-sticky bgColor="#fff" v-if="$Route.query.type != 'synthesis'">
<view class="header-sticky"> <view class="header-sticky">
<u-tabs <u-tabs
:current="tabsCurrent"
:list="tabs" :list="tabs"
:scrollable="tabScroll" :scrollable="tabScroll"
:lineWidth="20" :lineWidth="20"
@@ -133,7 +134,8 @@
current : 1 current : 1
}, },
pagesShow : false, pagesShow : false,
status : '' status : '',
tabsCurrent : null,
}; };
}, },
created() { created() {
@@ -190,6 +192,10 @@
uni.setNavigationBarTitle({ uni.setNavigationBarTitle({
title: tabName title: tabName
}) })
let { status } = this.$Route.query
this.tabType = status
this.tabsCurrent = this.tabs.findIndex(val => val.type == status);
this.getList() this.getList()
}, },
onShow() { onShow() {

View File

@@ -0,0 +1,383 @@
<template>
<view class="content">
<view class="block">
<view class="block-title">统计数据</view>
<view class="total-flex">
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_00.png"></image>
<view class="title">法律咨询单</view>
<view class="number">{{orderAll.all}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_01.png"></image>
<view class="title">已缴费</view>
<view class="number">{{orderAll.payed}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_03.png"></image>
<view class="title">已退款</view>
<view class="number">{{orderAll.refund}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_05.png"></image>
<view class="title">结算金额</view>
<view class="number">{{orderAll.price}}<text></text></view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">咨询单</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { type: 'synthesis' })">
<image class="icon" src="@/static/icons/work_icon_06.png"></image>
<view class="number" v-if="orderSynthesis.all > 0">{{orderSynthesis.all}}</view>
<view class="text">咨询单</view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">年费单</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 0, type: 'service' })">
<image class="icon" src="@/static/icons/work_icon_06.png"></image>
<view class="number" v-if="orderService.init > 0">{{orderService.init}}</view>
<view class="text">待支付</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 1, type: 'service' })">
<image class="icon" src="@/static/icons/work_icon_10.png"></image>
<view class="number" v-if="orderService.paid > 0">{{orderService.paid}}</view>
<view class="text">待签约</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 2, type: 'service' })">
<image class="icon" src="@/static/icons/work_icon_08.png"></image>
<view class="number" v-if="orderService.signed > 0">{{orderService.signed}}</view>
<view class="text">已签约</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { status: 3, type: 'service' })">
<image class="icon" src="@/static/icons/work_icon_09.png"></image>
<view class="number" v-if="orderService.refund > 0">{{orderService.refund}}</view>
<view class="text">已退款</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { synthesisServices } from '@/apis/interfaces/work.js'
export default {
data() {
return {
// 综法订单管理
orderAll : '',
orderService : '',
orderSynthesis : ''
};
},
onShow() {
this.getIndex()
},
methods: {
// 工作台信息
getIndex(){
uni.showLoading({
title: '加载中...',
mask : true
})
// 综法法律咨询单统计
synthesisServices().then(res => {
uni.hideLoading()
this.orderAll = res.all
this.orderService = res.orders.service
this.orderSynthesis = res.orders.synthesis
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 导航
onNav(name, obj){
let params = obj || {}
this.$Router.push({name, params})
}
}
}
</script>
<style lang="scss" scoped>
.content{
padding: 30rpx 0;
}
// 登录提示
.auth-null{
height: 100vh;
width: 100vw;
background: white;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.auth-null-btn{
height: 90rpx;
line-height: 90rpx;
padding: 0;
width: 70vw;
background: $main-color;
color: white;
font-size: 32rpx;
margin-top: 100rpx;
font-weight: bold;
}
}
// 弹出特权
.privilege-lay{
width: 70vw;
.privilege-lay-img{
width: 70vw;
vertical-align: top;
}
.privilege-lay-content{
background: white;
border-radius: 0 0 20rpx 20rpx;
width: 70vw;
padding: 80rpx 30rpx 50rpx;
box-sizing: border-box;
margin-top: -50rpx;
line-height: 50rpx;
color: #111111;
font-size: 30rpx;
}
.privilege-lay-remove{
padding-top: 30rpx;
text-align: center;
.privilege-lay-icon{
display: inline-block;
}
}
}
// header
.work-bar{
padding: 30rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
&-user{
position: relative;
line-height: 70rpx;
height: 70rpx;
width: calc(100% - 200rpx);
padding-left: 90rpx;
box-sizing: border-box;
.cover{
width: 70rpx;
height: 70rpx;
border-radius: 50%;
position: absolute;
left: 0;
top: 0;
}
.nickname{
font-weight: bold;
font-size: 34rpx;
.card{
color: $main-color;
font-size: 24rpx;
display: inline-block;
height: 40rpx;
line-height: 38rpx;
border-radius: 24rpx;
padding: 0 15rpx;
margin-left: 20rpx;
margin-bottom: 2rpx;
vertical-align: middle;
border:solid 1rpx $main-color;
font-weight: normal;
}
}
}
&-add{
width: 200rpx;
font-size: 30rpx;
text-align: right;
line-height: 70rpx;
.icon{
margin-right: 5rpx;
font-weight: bold;
}
}
}
// 订单管理
.tool-flex{
padding: 0 10rpx;
display: flex;
flex-wrap: wrap;
.tool-flex-item{
width: 25%;
text-align: center;
margin-bottom: 30rpx;
position: relative;
.icon{
width: 78rpx;
height: 78rpx;
background: #ddd;
border-radius: 20rpx;
}
.number{
position: absolute;
right: 20%;
background: #fe4444;
top: -10rpx;
height: 40rpx;
line-height: 40rpx;
min-width: 40rpx;
font-size: 24rpx;
color: white;
border-radius: 50%;
}
.text{
line-height: 40rpx;
font-size: 26rpx;
color: #111;
text-align: center;
}
}
}
// 数据统计单
.total-flex{
padding: 0 20rpx 20rpx;
display: flex;
flex-direction: row;
flex-wrap: wrap;
.total-item{
margin: 0 10rpx 20rpx;
background: #f8f8f8;
width: calc(50% - 20rpx);
padding: 20rpx 20rpx 20rpx 120rpx;
box-sizing: border-box;
border-radius: $radius;
position: relative;
min-height: 140rpx;
.icon{
position: absolute;
left: 20rpx;
top: 50%;
width: 70rpx;
height: 70rpx;
margin-top: -35rpx;
}
.title{
font-size: 28rpx;
color: #111;
line-height: 40rpx;
@extend .nowrap;
}
.number{
padding-top: 5rpx;
font-weight: bold;
font-size: 34rpx;
color: #111;
font-family: Arial, Helvetica, sans-serif;
line-height: 40rpx;
@extend .nowrap;
text{
font-size: 80%;
font-weight: normal;
padding-left: 10rpx;
}
}
}
}
// 通用板块
.block{
background: white;
margin: 0 30rpx 20rpx;
border-radius: $radius;
.block-title{
padding: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: bold;
color: '#111';
font-size: 32rpx;
}
}
// 开通业务员
.open-interest{
padding: 30rpx;
margin-bottom: 30rpx;
.title{
text-align: center;
font-size: 34rpx;
font-weight: bold;
line-height: 80rpx;
}
.open-interest-flex{
display: flex;
flex-wrap: wrap;
padding-top: 30rpx;
justify-content: space-between;
.open-interest-item{
text-align: center;
.open-interest-icon{
width: 88rpx;
height: 88rpx;
vertical-align: top;
margin-bottom: 15rpx;
}
.open-interest-text{
font-size: 28rpx;
color: #111111;
line-height: 40rpx;
}
}
}
// 开通步骤
.open-interest-block{
padding: 30rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.open-interest-icon{
width: 88rpx;
height: 88rpx;
}
.open-interest-text{
width: calc( 100% - 258rpx);
padding:0 30rpx;
box-sizing: border-box;
.open-interest-title{
font-weight: bold;
color: #111111;
line-height: 40rpx;
font-size: 30rpx;
}
.open-interest-submit{
color: #666666;
font-size: 26rpx;
line-height: 40rpx;
}
}
.open-interest-btn[size="mini"]{
width: 170rpx;
height: 70rpx;
line-height: 70rpx;
padding: 0;
border-radius: 35rpx;
background: $main-color;
color: white;
font-size: 30rpx;
&::after{
display: none;
}
&[disabled]{
background: #EEEEEE;
color: #999999;
}
}
}
}
</style>

View File

@@ -0,0 +1,641 @@
<template>
<view class="content">
<view v-if="isAuth">
<!-- 状态栏 -->
<u-sticky bgColor="#FFFFFF">
<view class="status_bar"></view>
<view class="work-bar">
<view class="work-bar-user">
<image class="cover" :src="userInfo.avatar || require('@/static/imgs/default-active.png')" mode="aspectFill"></image>
<view class="nickname">{{userInfo.nickname}}<text class="card" v-if="isManager">{{identity.name}}</text></view>
</view>
<view class="work-bar-add" @click="onCreateOrder" v-if="isManager">
<uni-icons class="icon" type="plusempty" size="30rpx" color="#111"></uni-icons>创建订单
</view>
</view>
</u-sticky>
<!-- 未认证或未考试 -->
<block v-if="!isManager">
<view class="block open-interest">
<view class="title">实习顾问专属权益</view>
<view class="open-interest-flex">
<view class="open-interest-item" v-for="(item, index) in rightsArr" :key="index" @click="onToast(item)">
<image class="open-interest-icon" :src="item.icon"></image>
<view class="open-interest-text">{{item.title}}</view>
</view>
</view>
</view>
<view class="block open-interest">
<view class="title">仅需3步即可成为实习顾问</view>
<view class="open-interest-block">
<image class="open-interest-icon" :src="isCertification ? require('@/static/icons/work_icon_25.png'): require('@/static/icons/work_icon_24.png')"></image>
<view class="open-interest-text">
<view class="open-interest-title">实名认证</view>
<view class="open-interest-submit">通过身份证实名认证</view>
</view>
<button class="open-interest-btn" size="mini" :disabled="isCertification" @click="$Router.push({name: 'UserCertification'})">{{isCertification ? '已认证': '去认证'}}</button>
</view>
<view class="open-interest-block">
<image class="open-interest-icon" :src="isAnswer ? require('@/static/icons/work_icon_25.png'): require('@/static/icons/work_icon_23.png')"></image>
<view class="open-interest-text">
<view class="open-interest-title">通过实习顾问考试</view>
<view class="open-interest-submit">通过线上考试即可完成</view>
</view>
<button class="open-interest-btn" size="mini" :disabled="isAnswer" @click="$Router.pushTab({name: 'CollegeTest'})">{{isAnswer ? '已通过': '去考试'}}</button>
</view>
<view class="open-interest-block">
<image class="open-interest-icon" :src="sign.isSign ? require('@/static/icons/work_icon_25.png'): require('@/static/icons/work_icon_27.png')"></image>
<view class="open-interest-text">
<view class="open-interest-title">实习顾问签约</view>
<view class="open-interest-submit">完成实习顾问在线签约</view>
</view>
<button class="open-interest-btn" size="mini" :disabled="sign.isSign" @click="onSign">{{sign.isSign ? '已签约': '去签约'}}</button>
</view>
</view>
<!-- 提示信息 -->
<u-popup :show="privilegeShow" mode="center" bgColor="transparent">
<view class="privilege-lay">
<image class="privilege-lay-img" src="@/static/imgs/privilege-lay-header.png" mode="widthFix"></image>
<view class="privilege-lay-content"><text>{{privilegeText}}</text></view>
<view class="privilege-lay-remove">
<u-icon class="privilege-lay-icon" name="close-circle" color="white" size="30" @click="privilegeShow = false"></u-icon>
</view>
</view>
</u-popup>
</block>
<!-- 管理中台 -->
<block v-else>
<view class="block">
<view class="block-title">统计数据</view>
<view class="total-flex">
<view class="total-item" @click="onNav('Orders', { 'type': 2 })">
<image class="icon" src="@/static/icons/work_icon_00.png"></image>
<view class="title">预约咨询单</view>
<view class="number">{{orderCount.init_payed}}<text></text></view>
</view>
<view class="total-item" @click="onNav('Orders', { 'type': 4 })">
<image class="icon" src="@/static/icons/work_icon_01.png"></image>
<view class="title">已缴费</view>
<view class="number">{{orderCount.service_payed}}<text></text></view>
</view>
<view class="total-item" @click="onNav('Orders', { 'type': 10 })">
<image class="icon" src="@/static/icons/work_icon_02.png"></image>
<view class="title">办理完成</view>
<view class="number">{{orderCount.b_complete}}<text></text></view>
</view>
<view class="total-item" @click="onNav('RefundOrder')">
<image class="icon" src="@/static/icons/work_icon_03.png"></image>
<view class="title">已退款</view>
<view class="number">{{orderCount.refund}}<text></text></view>
</view>
<view class="total-item">
<image class="icon" src="@/static/icons/work_icon_04.png"></image>
<view class="title">完成结算</view>
<view class="number">{{orderCount.settlement_count}}<text></text></view>
</view>
<view class="total-item" @click="onNav('AccountBonus')">
<image class="icon" src="@/static/icons/work_icon_05.png"></image>
<view class="title">结算金额</view>
<view class="number">{{orderCount.settlement_price}}<text></text></view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">金法订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 0 })">
<image class="icon" src="@/static/icons/work_icon_06.png"></image>
<view class="number" v-if="orderCount.a_init > 0">{{orderCount.a_init}}</view>
<view class="text">待预约</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 2 })">
<image class="icon" src="@/static/icons/work_icon_21.png"></image>
<view class="number" v-if="orderCount.a_service > 0">{{orderCount.a_service}}</view>
<view class="text">匹配服务包</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 3 })">
<image class="icon" src="@/static/icons/work_icon_07.png"></image>
<view class="number" v-if="orderCount.a_serviced > 0">{{orderCount.a_serviced}}</view>
<view class="text">待缴服务费</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 4 })">
<image class="icon" src="@/static/icons/work_icon_10.png"></image>
<view class="number" v-if="orderCount.b_sign > 0">{{orderCount.b_sign}}</view>
<view class="text">待签约</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 5 })">
<image class="icon" src="@/static/icons/work_icon_08.png"></image>
<view class="number" v-if="orderCount.a_bank > 0">{{orderCount.a_bank}}</view>
<view class="text">待完善资料</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 6 })">
<image class="icon" src="@/static/icons/work_icon_09.png"></image>
<view class="number" v-if="orderCount.b_check > 0">{{orderCount.b_check}}</view>
<view class="text">初审中</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 7 })">
<image class="icon" src="@/static/icons/work_icon_12.png"></image>
<view class="number" v-if="orderCount.b_recheck > 0">{{orderCount.b_recheck}}</view>
<view class="text">复审中</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 8 })">
<image class="icon" src="@/static/icons/work_icon_13.png"></image>
<view class="number" v-if="orderCount.b_process > 0">{{orderCount.b_process}}</view>
<view class="text">办理中</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 9 })">
<image class="icon" src="@/static/icons/work_icon_14.png"></image>
<view class="number" v-if="orderCount.b_confirm > 0">{{orderCount.b_confirm}}</view>
<view class="text">待结案</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 10 })">
<image class="icon" src="@/static/icons/work_icon_15.png"></image>
<!-- <view class="number" v-if="orderCount.b_complete > 0">{{orderCount.b_complete}}</view> -->
<view class="text">办理完成</view>
</view>
</view>
</view>
<!-- 综法订单 -->
<view class="block">
<view class="block-title">综法订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { type: 'service' })">
<image class="icon" src="@/static/synthesize/icon_00.png"></image>
<view class="number" v-if="synthesisData.service.all > 0">{{synthesisData.service.all}}</view>
<view class="text">年费订单</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { type: 'synthesis' })">
<image class="icon" src="@/static/synthesize/icon_01.png"></image>
<view class="number" v-if="synthesisData.synthesis.all > 0">{{synthesisData.synthesis.all}}</view>
<view class="text">咨询订单</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { type: 'entrust' })">
<image class="icon" src="@/static/synthesize/icon_02.png"></image>
<view class="number" v-if="synthesisData.entrust.all > 0">{{synthesisData.entrust.all}}</view>
<view class="text">委托订单</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { type: 'expand' })">
<image class="icon" src="@/static/synthesize/icon_03.png"></image>
<view class="number" v-if="synthesisData.expand.all > 0">{{synthesisData.expand.all}}</view>
<view class="text">拓展订单</view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">转让订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('TransfersOrders', { type: 'out' })">
<image class="icon" src="@/static/icons/work_icon_26.png"></image>
<view class="number" v-if="orderCount.transfer_out > 0">{{orderCount.transfer_out}}</view>
<view class="text">转出订单</view>
</view>
<view class="tool-flex-item" @click="onNav('TransfersOrders', { type: 'in' })">
<image class="icon" src="@/static/icons/work_icon_19.png"></image>
<view class="number" v-if="orderCount.transfer_in > 0">{{orderCount.transfer_in}}</view>
<view class="text">转入订单</view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">特殊订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('ModifyOrder', {})">
<image class="icon" src="@/static/icons/work_icon_16.png"></image>
<view class="number" v-if="orderCount.audit_bank > 0">{{orderCount.audit_bank}}</view>
<view class="text">修改资料</view>
</view>
<view class="tool-flex-item" @click="onNav('PoorOrder', {})">
<image class="icon" src="@/static/icons/work_icon_17.png"></image>
<view class="number" v-if="orderCount.diff_prices > 0">{{orderCount.diff_prices}}</view>
<view class="text">补差价</view>
</view>
<view class="tool-flex-item" @click="onNav('RefundOrder')">
<image class="icon" src="@/static/icons/work_icon_18.png"></image>
<view class="number" v-if="orderCount.refund > 0">{{orderCount.refund}}</view>
<view class="text">退款订单</view>
</view>
</view>
</view>
</block>
</view>
<!-- 未登录 -->
<view v-else class="auth-null">
<u-empty
mode="permission"
icon="http://cdn.uviewui.com/uview/empty/permission.png"
text="暂未登录"
>
</u-empty>
<button class="auth-null-btn" size="mini" @click="onNav('Auth')">登录</button>
</view>
</view>
</template>
<script>
import { index, rights, sign, synthesisCount } from '@/apis/interfaces/work.js'
export default {
data() {
return {
isAuth : false,
rightsArr : [],
userInfo : {
nickname: '',
avatar : ''
},
identity : {},
isAnswer : false,
isCertification : false,
certification : null,
isManager : false,
orderCount : {},
// 权益说明
privilegeShow : false,
privilegeText : '',
// 签约状态
sign : {
isSign : false,
address : ""
},
// 综法订单管理
synthesisData : {}
};
},
onShow() {
let i = 0;
this.isAuth = this.$store.getters.getToken != ''
if(this.isAuth){
this.getIndex()
}
},
methods: {
// 签约
onSign(){
if(!this.isCertification){
uni.showToast({
title: '暂未实名认证,无法签约,请完成实名认证',
icon : 'none'
})
return
}
if(this.sign.address == ''){
uni.showToast({
title: '暂时无法签约,请前往“我的”,点击用户头像,完善通讯地址信息后重试',
icon : 'none'
})
return
}
uni.showLoading({
title : '获取签约地址',
mask : true
})
sign().then(res => {
uni.hideLoading()
this.$Router.push({
name : 'ESign',
params : {
url: res.sign_url
}
})
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 显示业务员权益
onToast(val){
this.privilegeText = val.content
this.privilegeShow = true
},
// 工作台信息
getIndex(){
uni.showLoading({
title: '加载中...',
mask : true
})
Promise.all([rights(), index(), synthesisCount()]).then(res => {
let rightsData = res[0],
indexData = res[1],
synthesisData = res[2]
let { nickname, avatar, business_orders_count, isCertification, certification, isManager, isAnswer, identity, sign } = indexData
this.rightsArr = rightsData
this.userInfo = {
nickname,
avatar
}
this.isCertification = isCertification
this.certification = certification
this.isManager = isManager
this.isAnswer = isAnswer
this.orderCount = business_orders_count
this.identity = identity
this.sign = sign
this.synthesisData = synthesisData
uni.hideLoading()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 导航
onNav(name, obj){
let params = obj || {}
this.$Router.push({name, params})
},
// 创建订单
onCreateOrder(){
uni.showActionSheet({
itemList: ['个人订单', '客户订单'],
success : res => {
this.onNav('OrderCreate', {
type: res.tapIndex === 0 ? 'self' : 'other'
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
.content{
padding-bottom: 30rpx;
}
// 登录提示
.auth-null{
height: 100vh;
width: 100vw;
background: white;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.auth-null-btn{
height: 90rpx;
line-height: 90rpx;
padding: 0;
width: 70vw;
background: $main-color;
color: white;
font-size: 32rpx;
margin-top: 100rpx;
font-weight: bold;
}
}
// 弹出特权
.privilege-lay{
width: 70vw;
.privilege-lay-img{
width: 70vw;
vertical-align: top;
}
.privilege-lay-content{
background: white;
border-radius: 0 0 20rpx 20rpx;
width: 70vw;
padding: 80rpx 30rpx 50rpx;
box-sizing: border-box;
margin-top: -50rpx;
line-height: 50rpx;
color: #111111;
font-size: 30rpx;
}
.privilege-lay-remove{
padding-top: 30rpx;
text-align: center;
.privilege-lay-icon{
display: inline-block;
}
}
}
// header
.work-bar{
padding: 30rpx;
margin-bottom: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
&-user{
position: relative;
line-height: 70rpx;
height: 70rpx;
width: calc(100% - 200rpx);
padding-left: 90rpx;
box-sizing: border-box;
.cover{
width: 70rpx;
height: 70rpx;
border-radius: 50%;
position: absolute;
left: 0;
top: 0;
}
.nickname{
font-weight: bold;
font-size: 34rpx;
.card{
color: $main-color;
font-size: 24rpx;
display: inline-block;
height: 40rpx;
line-height: 38rpx;
border-radius: 24rpx;
padding: 0 15rpx;
margin-left: 20rpx;
margin-bottom: 2rpx;
vertical-align: middle;
border:solid 1rpx $main-color;
font-weight: normal;
}
}
}
&-add{
width: 200rpx;
font-size: 30rpx;
text-align: right;
line-height: 70rpx;
.icon{
margin-right: 5rpx;
font-weight: bold;
}
}
}
// 订单管理
.tool-flex{
padding: 0 10rpx;
display: flex;
flex-wrap: wrap;
.tool-flex-item{
width: 25%;
text-align: center;
margin-bottom: 30rpx;
position: relative;
.icon{
width: 78rpx;
height: 78rpx;
background: #ddd;
border-radius: 20rpx;
}
.number{
position: absolute;
right: 20%;
background: #fe4444;
top: -10rpx;
height: 40rpx;
line-height: 40rpx;
min-width: 40rpx;
font-size: 24rpx;
color: white;
border-radius: 50%;
}
.text{
line-height: 40rpx;
font-size: 26rpx;
color: #111;
text-align: center;
}
}
}
// 数据统计单
.total-flex{
padding: 0 20rpx 20rpx;
display: flex;
flex-direction: row;
flex-wrap: wrap;
.total-item{
margin: 0 10rpx 20rpx;
background: #f8f8f8;
width: calc(50% - 20rpx);
padding: 20rpx 20rpx 20rpx 120rpx;
box-sizing: border-box;
border-radius: $radius;
position: relative;
min-height: 140rpx;
.icon{
position: absolute;
left: 20rpx;
top: 50%;
width: 70rpx;
height: 70rpx;
margin-top: -35rpx;
}
.title{
font-size: 28rpx;
color: #111;
line-height: 40rpx;
@extend .nowrap;
}
.number{
padding-top: 5rpx;
font-weight: bold;
font-size: 34rpx;
color: #111;
font-family: Arial, Helvetica, sans-serif;
line-height: 40rpx;
@extend .nowrap;
text{
font-size: 80%;
font-weight: normal;
padding-left: 10rpx;
}
}
}
}
// 通用板块
.block{
background: white;
margin: 0 30rpx 20rpx;
border-radius: $radius;
.block-title{
padding: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: bold;
color: '#111';
font-size: 32rpx;
}
}
// 开通业务员
.open-interest{
padding: 30rpx;
margin-bottom: 30rpx;
.title{
text-align: center;
font-size: 34rpx;
font-weight: bold;
line-height: 80rpx;
}
.open-interest-flex{
display: flex;
flex-wrap: wrap;
padding-top: 30rpx;
justify-content: space-between;
.open-interest-item{
text-align: center;
.open-interest-icon{
width: 88rpx;
height: 88rpx;
vertical-align: top;
margin-bottom: 15rpx;
}
.open-interest-text{
font-size: 28rpx;
color: #111111;
line-height: 40rpx;
}
}
}
// 开通步骤
.open-interest-block{
padding: 30rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.open-interest-icon{
width: 88rpx;
height: 88rpx;
}
.open-interest-text{
width: calc( 100% - 258rpx);
padding:0 30rpx;
box-sizing: border-box;
.open-interest-title{
font-weight: bold;
color: #111111;
line-height: 40rpx;
font-size: 30rpx;
}
.open-interest-submit{
color: #666666;
font-size: 26rpx;
line-height: 40rpx;
}
}
.open-interest-btn[size="mini"]{
width: 170rpx;
height: 70rpx;
line-height: 70rpx;
padding: 0;
border-radius: 35rpx;
background: $main-color;
color: white;
font-size: 30rpx;
&::after{
display: none;
}
&[disabled]{
background: #EEEEEE;
color: #999999;
}
}
}
}
</style>

View File

@@ -65,156 +65,38 @@
</block> </block>
<!-- 管理中台 --> <!-- 管理中台 -->
<block v-else> <block v-else>
<view class="block"> <view class="flex">
<view class="block-title">统计数据</view> <view class="flex-item">
<view class="total-flex"> <image class="flex-icon" src="/static/icons/icon_00.png" mode="aspectFill"></image>
<view class="total-item" @click="onNav('Orders', { 'type': 2 })"> <view class="flex-title">
<image class="icon" src="@/static/icons/work_icon_00.png"></image> <view class="flex-name">协商调解类</view>
<view class="title">预约咨询单</view> <view class="flex-tips">信用卡贷款业务</view>
<view class="number">{{orderCount.init_payed}}<text></text></view>
</view> </view>
<view class="total-item" @click="onNav('Orders', { 'type': 4 })"> <view class="flex-btn" @click="onNav('ConsultWork')">去查看</view>
<image class="icon" src="@/static/icons/work_icon_01.png"></image>
<view class="title">已缴费</view>
<view class="number">{{orderCount.service_payed}}<text></text></view>
</view> </view>
<view class="total-item" @click="onNav('Orders', { 'type': 10 })"> <view class="flex-item">
<image class="icon" src="@/static/icons/work_icon_02.png"></image> <image class="flex-icon" src="/static/icons/icon_01.png" mode="aspectFill"></image>
<view class="title">办理完成</view> <view class="flex-title">
<view class="number">{{orderCount.b_complete}}<text></text></view> <view class="flex-name">法律咨询类</view>
<view class="flex-tips">个人企业法律</view>
</view> </view>
<view class="total-item" @click="onNav('RefundOrder')"> <view class="flex-btn" @click="onNav('ServiceWork')">去查看</view>
<image class="icon" src="@/static/icons/work_icon_03.png"></image>
<view class="title">已退款</view>
<view class="number">{{orderCount.refund}}<text></text></view>
</view> </view>
<view class="total-item"> <view class="flex-item">
<image class="icon" src="@/static/icons/work_icon_04.png"></image> <image class="flex-icon" src="/static/icons/icon_02.png" mode="aspectFill"></image>
<view class="title">完成结算</view> <view class="flex-title">
<view class="number">{{orderCount.settlement_count}}<text></text></view> <view class="flex-name">诉讼委托类</view>
<view class="flex-tips">案件委托拓展服务</view>
</view> </view>
<view class="total-item" @click="onNav('AccountBonus')"> <view class="flex-btn" @click="onNav('ActionWork')">去查看</view>
<image class="icon" src="@/static/icons/work_icon_05.png"></image>
<view class="title">结算金额</view>
<view class="number">{{orderCount.settlement_price}}<text></text></view>
</view> </view>
<view class="flex-item">
</view> <image class="flex-icon" src="/static/icons/icon_03.png" mode="aspectFill"></image>
</view> <view class="flex-title">
<view class="block"> <view class="flex-name">增收赋能类</view>
<view class="block-title">金法订单管理</view> <view class="flex-tips">销售领袖演说等</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 0 })">
<image class="icon" src="@/static/icons/work_icon_06.png"></image>
<view class="number" v-if="orderCount.a_init > 0">{{orderCount.a_init}}</view>
<view class="text">待预约</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 2 })">
<image class="icon" src="@/static/icons/work_icon_21.png"></image>
<view class="number" v-if="orderCount.a_service > 0">{{orderCount.a_service}}</view>
<view class="text">匹配服务包</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 3 })">
<image class="icon" src="@/static/icons/work_icon_07.png"></image>
<view class="number" v-if="orderCount.a_serviced > 0">{{orderCount.a_serviced}}</view>
<view class="text">待缴服务费</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 4 })">
<image class="icon" src="@/static/icons/work_icon_10.png"></image>
<view class="number" v-if="orderCount.b_sign > 0">{{orderCount.b_sign}}</view>
<view class="text">待签约</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 5 })">
<image class="icon" src="@/static/icons/work_icon_08.png"></image>
<view class="number" v-if="orderCount.a_bank > 0">{{orderCount.a_bank}}</view>
<view class="text">待完善资料</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 6 })">
<image class="icon" src="@/static/icons/work_icon_09.png"></image>
<view class="number" v-if="orderCount.b_check > 0">{{orderCount.b_check}}</view>
<view class="text">初审中</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 7 })">
<image class="icon" src="@/static/icons/work_icon_12.png"></image>
<view class="number" v-if="orderCount.b_recheck > 0">{{orderCount.b_recheck}}</view>
<view class="text">复审中</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 8 })">
<image class="icon" src="@/static/icons/work_icon_13.png"></image>
<view class="number" v-if="orderCount.b_process > 0">{{orderCount.b_process}}</view>
<view class="text">办理中</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 9 })">
<image class="icon" src="@/static/icons/work_icon_14.png"></image>
<view class="number" v-if="orderCount.b_confirm > 0">{{orderCount.b_confirm}}</view>
<view class="text">待结案</view>
</view>
<view class="tool-flex-item" @click="onNav('Orders', { 'type': 10 })">
<image class="icon" src="@/static/icons/work_icon_15.png"></image>
<!-- <view class="number" v-if="orderCount.b_complete > 0">{{orderCount.b_complete}}</view> -->
<view class="text">办理完成</view>
</view>
</view>
</view>
<!-- 综法订单 -->
<view class="block">
<view class="block-title">综法订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { type: 'service' })">
<image class="icon" src="@/static/synthesize/icon_00.png"></image>
<view class="number" v-if="synthesisData.service.all > 0">{{synthesisData.service.all}}</view>
<view class="text">年费订单</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { type: 'synthesis' })">
<image class="icon" src="@/static/synthesize/icon_01.png"></image>
<view class="number" v-if="synthesisData.synthesis.all > 0">{{synthesisData.synthesis.all}}</view>
<view class="text">咨询订单</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { type: 'entrust' })">
<image class="icon" src="@/static/synthesize/icon_02.png"></image>
<view class="number" v-if="synthesisData.entrust.all > 0">{{synthesisData.entrust.all}}</view>
<view class="text">委托订单</view>
</view>
<view class="tool-flex-item" @click="onNav('SynthesizeOrder', { type: 'expand' })">
<image class="icon" src="@/static/synthesize/icon_03.png"></image>
<view class="number" v-if="synthesisData.expand.all > 0">{{synthesisData.expand.all}}</view>
<view class="text">拓展订单</view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">转让订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('TransfersOrders', { type: 'out' })">
<image class="icon" src="@/static/icons/work_icon_26.png"></image>
<view class="number" v-if="orderCount.transfer_out > 0">{{orderCount.transfer_out}}</view>
<view class="text">转出订单</view>
</view>
<view class="tool-flex-item" @click="onNav('TransfersOrders', { type: 'in' })">
<image class="icon" src="@/static/icons/work_icon_19.png"></image>
<view class="number" v-if="orderCount.transfer_in > 0">{{orderCount.transfer_in}}</view>
<view class="text">转入订单</view>
</view>
</view>
</view>
<view class="block">
<view class="block-title">特殊订单管理</view>
<view class="tool-flex">
<view class="tool-flex-item" @click="onNav('ModifyOrder', {})">
<image class="icon" src="@/static/icons/work_icon_16.png"></image>
<view class="number" v-if="orderCount.audit_bank > 0">{{orderCount.audit_bank}}</view>
<view class="text">修改资料</view>
</view>
<view class="tool-flex-item" @click="onNav('PoorOrder', {})">
<image class="icon" src="@/static/icons/work_icon_17.png"></image>
<view class="number" v-if="orderCount.diff_prices > 0">{{orderCount.diff_prices}}</view>
<view class="text">补差价</view>
</view>
<view class="tool-flex-item" @click="onNav('RefundOrder')">
<image class="icon" src="@/static/icons/work_icon_18.png"></image>
<view class="number" v-if="orderCount.refund > 0">{{orderCount.refund}}</view>
<view class="text">退款订单</view>
</view> </view>
<view class="flex-btn" @click="onNav('EnableWork')">去查看</view>
</view> </view>
</view> </view>
</block> </block>
@@ -346,6 +228,7 @@
}, },
// 导航 // 导航
onNav(name, obj){ onNav(name, obj){
console.log(name)
let params = obj || {} let params = obj || {}
this.$Router.push({name, params}) this.$Router.push({name, params})
}, },
@@ -638,4 +521,47 @@
} }
} }
} }
.flex{
width: 100%;
padding: 0 30rpx;
box-sizing: border-box;
&-item{
background: white;
padding: 30rpx;
border-radius: 30rpx;
margin-top: 30rpx;
display: flex;
box-sizing: border-box;
position: relative;
.flex-icon{ width: 48px; height: 48px; background: #dce1fb; border-radius: 30rpx; }
.flex-title{
box-sizing: border-box;
padding-left: 30rpx;
.flex-name {
color: #293f66;
font-size: 34rpx;
font-weight: bold;
padding: 4rpx 0;
}
.flex-tips {
color: #929db3;
font-size: 28rpx;
}
}
.flex-btn {
position: absolute;
right: 30rpx;
top: 48rpx;
height: 60rpx;
line-height: 60rpx;
border-radius: 80rpx;
color: #468bff;
background-color: #f8fbff;
border: 2rpx solid #d8e6ff;
font-size: 28rpx;
padding: 0 25rpx;
}
}
}
</style> </style>

BIN
static/icons/icon_00.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
static/icons/icon_01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
static/icons/icon_02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
static/icons/icon_03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

335
yarn.lock
View File

@@ -2,250 +2,127 @@
# yarn lockfile v1 # yarn lockfile v1
"@babel/parser@^7.16.4", "@babel/parser@^7.18.4": "@babel/parser@^7.18.4":
"integrity" "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==" version "7.20.5"
"resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz"
"version" "7.20.5" integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==
"@vue/compiler-core@3.2.45":
"integrity" "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A=="
"resolved" "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz"
"version" "3.2.45"
dependencies:
"@babel/parser" "^7.16.4"
"@vue/shared" "3.2.45"
"estree-walker" "^2.0.2"
"source-map" "^0.6.1"
"@vue/compiler-dom@3.2.45":
"integrity" "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw=="
"resolved" "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz"
"version" "3.2.45"
dependencies:
"@vue/compiler-core" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/compiler-sfc@2.7.14": "@vue/compiler-sfc@2.7.14":
"integrity" "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==" version "2.7.14"
"resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz" resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz"
"version" "2.7.14" integrity sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==
dependencies: dependencies:
"@babel/parser" "^7.18.4" "@babel/parser" "^7.18.4"
"postcss" "^8.4.14" postcss "^8.4.14"
"source-map" "^0.6.1" source-map "^0.6.1"
"@vue/compiler-sfc@3.2.45":
"integrity" "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q=="
"resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz"
"version" "3.2.45"
dependencies:
"@babel/parser" "^7.16.4"
"@vue/compiler-core" "3.2.45"
"@vue/compiler-dom" "3.2.45"
"@vue/compiler-ssr" "3.2.45"
"@vue/reactivity-transform" "3.2.45"
"@vue/shared" "3.2.45"
"estree-walker" "^2.0.2"
"magic-string" "^0.25.7"
"postcss" "^8.1.10"
"source-map" "^0.6.1"
"@vue/compiler-ssr@3.2.45":
"integrity" "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ=="
"resolved" "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz"
"version" "3.2.45"
dependencies:
"@vue/compiler-dom" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/devtools-api@^6.0.0-beta.11": "@vue/devtools-api@^6.0.0-beta.11":
"integrity" "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==" version "6.4.5"
"resolved" "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz" resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz"
"version" "6.4.5" integrity sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==
"@vue/reactivity-transform@3.2.45": core-js@^2.6.5:
"integrity" "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==" version "2.6.12"
"resolved" "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz" resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz"
"version" "3.2.45" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
csstype@^3.1.0:
version "3.1.1"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz"
integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
eventemitter3@^4.0.7:
version "4.0.7"
resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
lodash-es@^4.17.21:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
moment@^2.29.4:
version "2.29.4"
resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz"
integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
nanoid@^3.3.4:
version "3.3.4"
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
nim-web-sdk-ng@^0.12.3:
version "0.12.3"
resolved "https://registry.npmjs.org/nim-web-sdk-ng/-/nim-web-sdk-ng-0.12.3.tgz"
integrity sha512-S1RYQDz5n/tCqdHVv5fIBKBB60hdvySLTLo1xSgPVrk725GrGSXXyblWZeaWazUoFuLzfSKyrK0LRCJoAMcHYw==
dependencies: dependencies:
"@babel/parser" "^7.16.4" eventemitter3 "^4.0.7"
"@vue/compiler-core" "3.2.45" lodash-es "^4.17.21"
"@vue/shared" "3.2.45" platform "^1.3.6"
"estree-walker" "^2.0.2"
"magic-string" "^0.25.7"
"@vue/reactivity@3.2.45": picocolors@^1.0.0:
"integrity" "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==" version "1.0.0"
"resolved" "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
"version" "3.2.45" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
platform@^1.3.6:
version "1.3.6"
resolved "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz"
integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==
postcss@^8.4.14:
version "8.4.20"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz"
integrity sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==
dependencies: dependencies:
"@vue/shared" "3.2.45" nanoid "^3.3.4"
picocolors "^1.0.0"
source-map-js "^1.0.2"
"@vue/runtime-core@3.2.45": source-map-js@^1.0.2:
"integrity" "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==" version "1.0.2"
"resolved" "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
"version" "3.2.45" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
source-map@^0.6.1:
version "0.6.1"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
uni-read-pages@^1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz"
integrity sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA==
uni-simple-router@^2.0.7:
version "2.0.7"
resolved "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.7.tgz"
integrity sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA==
uview-ui@^2.0.31:
version "2.0.31"
resolved "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.31.tgz"
integrity sha512-I/0fGuvtiKHH/mBb864SGYk+SJ7WaF32tsBgYgeBOsxlUp+Th+Ac2tgz2cTvsQJl6eZYWsKZ3ixiSXCAcxZ8Sw==
vue-canvas-poster@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/vue-canvas-poster/-/vue-canvas-poster-1.2.1.tgz"
integrity sha512-YY5ygbeQSqhiJyj6QXYgSRZ6Ywhvi1gVsfcvBIoCx4Yq9E/gAV32uOhnZz45qsklP86uGc9ypKJAXiX6Dzrdxw==
dependencies: dependencies:
"@vue/reactivity" "3.2.45" core-js "^2.6.5"
"@vue/shared" "3.2.45" vue "^2.6.10"
"@vue/runtime-dom@3.2.45": vue@^2.6.10:
"integrity" "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==" version "2.7.14"
"resolved" "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz" resolved "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz"
"version" "3.2.45" integrity sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==
dependencies:
"@vue/runtime-core" "3.2.45"
"@vue/shared" "3.2.45"
"csstype" "^2.6.8"
"@vue/server-renderer@3.2.45":
"integrity" "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g=="
"resolved" "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz"
"version" "3.2.45"
dependencies:
"@vue/compiler-ssr" "3.2.45"
"@vue/shared" "3.2.45"
"@vue/shared@3.2.45":
"integrity" "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
"resolved" "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz"
"version" "3.2.45"
"core-js@^2.6.5":
"integrity" "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
"resolved" "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz"
"version" "2.6.12"
"csstype@^2.6.8":
"integrity" "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
"resolved" "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz"
"version" "2.6.21"
"csstype@^3.1.0":
"integrity" "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
"resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz"
"version" "3.1.1"
"estree-walker@^2.0.2":
"integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
"resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
"version" "2.0.2"
"eventemitter3@^4.0.7":
"integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
"resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
"version" "4.0.7"
"lodash-es@^4.17.21":
"integrity" "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
"resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz"
"version" "4.17.21"
"magic-string@^0.25.7":
"integrity" "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ=="
"resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz"
"version" "0.25.9"
dependencies:
"sourcemap-codec" "^1.4.8"
"moment@^2.29.4":
"integrity" "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
"resolved" "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz"
"version" "2.29.4"
"nanoid@^3.3.4":
"integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
"resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
"version" "3.3.4"
"nim-web-sdk-ng@^0.12.3":
"integrity" "sha512-S1RYQDz5n/tCqdHVv5fIBKBB60hdvySLTLo1xSgPVrk725GrGSXXyblWZeaWazUoFuLzfSKyrK0LRCJoAMcHYw=="
"resolved" "https://registry.npmjs.org/nim-web-sdk-ng/-/nim-web-sdk-ng-0.12.3.tgz"
"version" "0.12.3"
dependencies:
"eventemitter3" "^4.0.7"
"lodash-es" "^4.17.21"
"platform" "^1.3.6"
"picocolors@^1.0.0":
"integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
"resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
"version" "1.0.0"
"platform@^1.3.6":
"integrity" "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
"resolved" "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz"
"version" "1.3.6"
"postcss@^8.1.10", "postcss@^8.4.14":
"integrity" "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g=="
"resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz"
"version" "8.4.20"
dependencies:
"nanoid" "^3.3.4"
"picocolors" "^1.0.0"
"source-map-js" "^1.0.2"
"source-map-js@^1.0.2":
"integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
"resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
"version" "1.0.2"
"source-map@^0.6.1":
"integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
"resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
"version" "0.6.1"
"sourcemap-codec@^1.4.8":
"integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
"resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
"version" "1.4.8"
"uni-read-pages@^1.0.5":
"integrity" "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA=="
"resolved" "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz"
"version" "1.0.5"
"uni-simple-router@^2.0.7":
"integrity" "sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA=="
"resolved" "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.7.tgz"
"version" "2.0.7"
"uview-ui@^2.0.31":
"integrity" "sha512-I/0fGuvtiKHH/mBb864SGYk+SJ7WaF32tsBgYgeBOsxlUp+Th+Ac2tgz2cTvsQJl6eZYWsKZ3ixiSXCAcxZ8Sw=="
"resolved" "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.31.tgz"
"version" "2.0.31"
"vue-canvas-poster@^1.2.1":
"integrity" "sha512-YY5ygbeQSqhiJyj6QXYgSRZ6Ywhvi1gVsfcvBIoCx4Yq9E/gAV32uOhnZz45qsklP86uGc9ypKJAXiX6Dzrdxw=="
"resolved" "https://registry.npmjs.org/vue-canvas-poster/-/vue-canvas-poster-1.2.1.tgz"
"version" "1.2.1"
dependencies:
"core-js" "^2.6.5"
"vue" "^2.6.10"
"vue@^2.6.10":
"integrity" "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ=="
"resolved" "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz"
"version" "2.7.14"
dependencies: dependencies:
"@vue/compiler-sfc" "2.7.14" "@vue/compiler-sfc" "2.7.14"
"csstype" "^3.1.0" csstype "^3.1.0"
"vue@^3.2.0", "vue@3.2.45": vuex@^4.0.2:
"integrity" "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==" version "4.1.0"
"resolved" "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz" resolved "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz"
"version" "3.2.45" integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==
dependencies:
"@vue/compiler-dom" "3.2.45"
"@vue/compiler-sfc" "3.2.45"
"@vue/runtime-dom" "3.2.45"
"@vue/server-renderer" "3.2.45"
"@vue/shared" "3.2.45"
"vuex@^4.0.2":
"integrity" "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ=="
"resolved" "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz"
"version" "4.1.0"
dependencies: dependencies:
"@vue/devtools-api" "^6.0.0-beta.11" "@vue/devtools-api" "^6.0.0-beta.11"