更新
This commit is contained in:
parent
2ba476888d
commit
b13a34a3ab
381
components/down-select.vue
Normal file
381
components/down-select.vue
Normal file
@ -0,0 +1,381 @@
|
|||||||
|
<template>
|
||||||
|
<view class='layout-column'>
|
||||||
|
<view id="parent" style="width:fit-content;">
|
||||||
|
<slot></slot>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
:style="'width:'+slotW+';max-height: '+getListContentHei+'rpx;z-index: 9999;position: absolute;margin-top:'+slotH+';'+(isShow ? '' : 'display:none;')"
|
||||||
|
:class="(dataList.length > 0 ? 'data-box-shadow ' : 'data-box ') + animate">
|
||||||
|
<block v-if="dataList.length > 0">
|
||||||
|
<view class="data-box-scroll"
|
||||||
|
:style="'height:'+dataList.length*(itemHeight-1)+'rpx;max-height: '+max*(itemHeight-1)+'rpx;'">
|
||||||
|
<text v-for="(item,index) in dataList" :key="item[identifier]"
|
||||||
|
:class="'layout-row less-center list-item '+(item.enable === false ? '' : 'active')"
|
||||||
|
:style="'color:'+(item.enable === false ? '#dedede' : (checkedIndex.indexOf(index) >= 0 ? itemSelectColor : itemColor))+';font-size:'+itemFontsize+'rpx;'"
|
||||||
|
@click="handleListItem(index, item)">{{item[showKey]}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="layout-row opera-btns less-center" v-if="mode == 'multiple'">
|
||||||
|
<view class="opera-cancel layout-row center" @click='handelCancel'>取消</view>
|
||||||
|
<view class="opera-sure layout-row center" @click='handelSure'>确定</view>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
<view v-else :style="'width:'+slotW+';'" class='status-text'>暂无数据</view>
|
||||||
|
</view>
|
||||||
|
<view class="mask" v-show="isShow" @click="handelCancel"></view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "down-select",
|
||||||
|
props: {
|
||||||
|
//要显示的字段
|
||||||
|
showKey: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
mode: {
|
||||||
|
type: String,
|
||||||
|
default: 'single', //multiple
|
||||||
|
// default: 'multiple'
|
||||||
|
},
|
||||||
|
dataList: {
|
||||||
|
type: Array,
|
||||||
|
default: []
|
||||||
|
},
|
||||||
|
//选中的列表,用作显示列表是展示已选中项
|
||||||
|
checkedDataList: {
|
||||||
|
type: Array,
|
||||||
|
default: []
|
||||||
|
},
|
||||||
|
//最多展示几项后开始滑动
|
||||||
|
max: {
|
||||||
|
type: Number,
|
||||||
|
default: 4
|
||||||
|
},
|
||||||
|
//数据项每个item高度rpx
|
||||||
|
itemHeight: {
|
||||||
|
type: Number,
|
||||||
|
default: 80
|
||||||
|
},
|
||||||
|
//唯一标识符字段,用来比对选中项和维持v-for列表中的key,不填此项无选中效果
|
||||||
|
identifier: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
itemSelectColor: {
|
||||||
|
type: String,
|
||||||
|
default: '#00aaff'
|
||||||
|
},
|
||||||
|
itemColor: {
|
||||||
|
type: String,
|
||||||
|
default: 'black'
|
||||||
|
},
|
||||||
|
itemFontsize: {
|
||||||
|
type: Number,
|
||||||
|
default: 30
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
getListContentHei() {
|
||||||
|
let len = this.dataList.length
|
||||||
|
let signleH = len < this.max ? this.itemHeight * len : this.itemHeight * this.max
|
||||||
|
if (this.mode == 'single') {
|
||||||
|
return len <= 0 ? this.itemHeight : signleH
|
||||||
|
} else {
|
||||||
|
return len <= 0 ? this.itemHeight : (signleH + this.itemHeight)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
dataList: {
|
||||||
|
handler: function(newVal, oldVal) {
|
||||||
|
if (this.checkedDataList.length >= 0 && this.identifier) {
|
||||||
|
this.checkedIndex = []
|
||||||
|
this.checkedDataList.forEach(ele => {
|
||||||
|
let index = newVal.findIndex(ele1 => ele[this.identifier] === ele1[this
|
||||||
|
.identifier])
|
||||||
|
if (index >= 0) {
|
||||||
|
this.checkedIndex.push(index)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediate: true, // 组件创建时立即触发
|
||||||
|
deep: true // 对象内部属性变化时也触发
|
||||||
|
},
|
||||||
|
checkedDataList: {
|
||||||
|
handler: function(newVal, oldVal) {
|
||||||
|
if (newVal.length >= 0 && this.identifier) {
|
||||||
|
this.checkedIndex = []
|
||||||
|
newVal.forEach(ele => {
|
||||||
|
let index = this.dataList.findIndex(ele1 => ele[this.identifier] === ele1[this
|
||||||
|
.identifier])
|
||||||
|
if (index >= 0) {
|
||||||
|
this.checkedIndex.push(index)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediate: true, // 组件创建时立即触发
|
||||||
|
deep: true // 对象内部属性变化时也触发
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
uni.createSelectorQuery().in(this).select('#parent').boundingClientRect(res => {
|
||||||
|
if (res.width) {
|
||||||
|
this.slotW = `${res.width}px`
|
||||||
|
this.slotH = `${res.height+5}px`
|
||||||
|
}
|
||||||
|
}).exec()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
slotW: '0px',
|
||||||
|
slotH: '0px',
|
||||||
|
isShow: false,
|
||||||
|
checkedIndex: [],
|
||||||
|
animate: '',
|
||||||
|
//传进来选中项,后又改成未选中并确认,多选模式生效
|
||||||
|
checkedDels: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open() {
|
||||||
|
if (this.checkedDataList.length >= 0 && this.identifier) {
|
||||||
|
this.checkedIndex = []
|
||||||
|
this.checkedDataList.forEach(ele => {
|
||||||
|
let index = this.dataList.findIndex(ele1 => ele[this.identifier] === ele1[this
|
||||||
|
.identifier])
|
||||||
|
if (index >= 0) {
|
||||||
|
this.checkedIndex.push(index)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.isShow = true
|
||||||
|
this.animate = 'show-animate'
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.animate = 'hide-animate'
|
||||||
|
this.checkedIndex = []
|
||||||
|
this.checkedDels = []
|
||||||
|
this.isShow = false
|
||||||
|
},
|
||||||
|
handleListItem(index, obj) {
|
||||||
|
if(obj.enable === false){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.mode === 'single') {
|
||||||
|
this.checkedIndex = []
|
||||||
|
this.checkedIndex.push(index)
|
||||||
|
this.handelSure()
|
||||||
|
} else {
|
||||||
|
let sindex = this.checkedIndex.indexOf(index)
|
||||||
|
if (sindex >= 0) {
|
||||||
|
if (this.identifier) {
|
||||||
|
//判断未选中的项在传进来的已选项中是否存在
|
||||||
|
let contain = this.checkedDataList.filter(ele => ele[this.identifier] === this.dataList[index][
|
||||||
|
this.identifier
|
||||||
|
])
|
||||||
|
if (contain.length > 0) {
|
||||||
|
//传进来的已选项中是否存在选择为未选中的内容
|
||||||
|
let contain1 = this.checkedDels.filter(ele => ele[this.identifier] === contain[0][this
|
||||||
|
.identifier
|
||||||
|
])
|
||||||
|
if (contain1.length <= 0) {
|
||||||
|
this.checkedDels.push(contain[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.checkedIndex.splice(sindex, 1);
|
||||||
|
} else {
|
||||||
|
if (this.identifier) {
|
||||||
|
let contain2 = this.checkedDels.filter(ele => ele[this.identifier] === this.dataList[index][
|
||||||
|
this.identifier
|
||||||
|
])
|
||||||
|
if (contain2.length > 0) {
|
||||||
|
let tempIndex = this.checkedDels.findIndex(ele => ele[this.identifier] === this.dataList[
|
||||||
|
index][this.identifier])
|
||||||
|
if (tempIndex >= 0) {
|
||||||
|
this.checkedDels.splice(tempIndex, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.checkedIndex.push(index)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handelCancel() {
|
||||||
|
this.close()
|
||||||
|
this.$emit('cancelDimss', '')
|
||||||
|
},
|
||||||
|
handelSure() {
|
||||||
|
let results = []
|
||||||
|
if (this.checkedIndex.length <= 0) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '请选择至少一项',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.checkedIndex.forEach(ele => {
|
||||||
|
if (this.dataList[ele]) {
|
||||||
|
results.push(this.dataList[ele])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
//将本次选中结果清除
|
||||||
|
this.checkedIndex = []
|
||||||
|
this.$emit('resultBack', results, this.checkedDels)
|
||||||
|
this.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.active {}
|
||||||
|
|
||||||
|
.active:active {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-row {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layout-column {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 整体方向居中 */
|
||||||
|
.center {
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 主轴方向居中 */
|
||||||
|
.main-center {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 侧轴方向居中 */
|
||||||
|
.less-center {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data-box-scroll {
|
||||||
|
width: 100%;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data-box-scroll::-webkit-scrollbar {
|
||||||
|
display: none
|
||||||
|
}
|
||||||
|
|
||||||
|
.data-box {
|
||||||
|
background: white;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
z-index: 9999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data-box-shadow {
|
||||||
|
background: white;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
z-index: 9999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item {
|
||||||
|
width: 100%;
|
||||||
|
height: 80rpx;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
margin-right: 20rpx;
|
||||||
|
border-bottom: 1rpx solid #D8DFEC;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.opera-btns {
|
||||||
|
width: 100%;
|
||||||
|
height: 80rpx;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.opera-cancel {
|
||||||
|
width: 100rpx;
|
||||||
|
height: 50rpx;
|
||||||
|
background-color: white;
|
||||||
|
box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 5rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.opera-sure {
|
||||||
|
width: 100rpx;
|
||||||
|
height: 50rpx;
|
||||||
|
background-color: #58a2e4;
|
||||||
|
box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 5rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: white;
|
||||||
|
margin-right: 30rpx;
|
||||||
|
margin-left: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-text {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 28rpx;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #c2c2c2;
|
||||||
|
padding-top: 20rpx;
|
||||||
|
padding-bottom: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mask {
|
||||||
|
position: fixed;
|
||||||
|
background: transparent;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.show-animate {
|
||||||
|
animation-name: open;
|
||||||
|
animation-duration: 1s;
|
||||||
|
animation-iteration-count: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes open {
|
||||||
|
0% {
|
||||||
|
height: 0rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide-animate {
|
||||||
|
animation-name: close;
|
||||||
|
animation-duration: 1s;
|
||||||
|
animation-iteration-count: 1;
|
||||||
|
animation-fill-mode: forwards;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes close {
|
||||||
|
0% {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
height: 0rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
14
pages.json
14
pages.json
@ -148,6 +148,13 @@
|
|||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/index/neworderStatistic",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "订单统计",
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/index/addStaff",
|
"path": "pages/index/addStaff",
|
||||||
"style": {
|
"style": {
|
||||||
@ -204,6 +211,13 @@
|
|||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/statistics/business",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "业务统计二级页",
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/staff/staff",
|
"path": "pages/staff/staff",
|
||||||
"style": {
|
"style": {
|
||||||
|
@ -61,36 +61,36 @@
|
|||||||
{{ driverLicenseTypeArrStr != null ? this.driverLicenseTypeArrStr : '请选择驾照类型' }} >
|
{{ driverLicenseTypeArrStr != null ? this.driverLicenseTypeArrStr : '请选择驾照类型' }} >
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="d_b" v-if="!userId">
|
<view class="d_b">
|
||||||
<view class="">岗位</view>
|
<view class="">岗位</view>
|
||||||
<view class="" @click="showRole = true">
|
<view class="" @click="showRole = true">
|
||||||
{{ roleName != null ? this.roleName : '请选择岗位' }} >
|
{{ roleName != null ? this.roleName : '请选择岗位' }} >
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="d_b" @click="goFile">
|
<view class="d_b" @click="goFile" v-if="userId">
|
||||||
<view class="">附件</view>
|
<view class="">附件</view>
|
||||||
<view class="lan_">查看附件
|
<view class="lan_">查看附件
|
||||||
<image src="/static/imgs/add.png" mode=""></image>
|
<image src="/static/imgs/add.png" mode=""></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- <u-upload-->
|
<!-- <u-upload-->
|
||||||
<!-- ref="uploadRef"-->
|
<!-- ref="uploadRef"-->
|
||||||
<!-- :fileList="fileList1"-->
|
<!-- :fileList="fileList1"-->
|
||||||
<!-- @afterRead="afterRead"-->
|
<!-- @afterRead="afterRead"-->
|
||||||
<!-- @delete="deletePic"-->
|
<!-- @delete="deletePic"-->
|
||||||
<!-- name="1"-->
|
<!-- name="1"-->
|
||||||
<!-- multiple-->
|
<!-- multiple-->
|
||||||
<!-- :maxCount="10"-->
|
<!-- :maxCount="10"-->
|
||||||
<!-- v-show="fileList1.length > 0"-->
|
<!-- v-show="fileList1.length > 0"-->
|
||||||
<!-- >-->
|
<!-- >-->
|
||||||
<!-- </u-upload>-->
|
<!-- </u-upload>-->
|
||||||
<!-- <view class="hui_box" v-if="fileList1.length == 0">-->
|
<!-- <view class="hui_box" v-if="fileList1.length == 0">-->
|
||||||
<!-- <image src="/static/imgs/wod.png" mode=""></image>-->
|
<!-- <image src="/static/imgs/wod.png" mode=""></image>-->
|
||||||
<!-- <view class="">-->
|
<!-- <view class="">-->
|
||||||
<!-- <view class="big_">附件格式 jpg/png</view>-->
|
<!-- <view class="big_">附件格式 jpg/png</view>-->
|
||||||
<!-- <view class="sm_">100KB</view>-->
|
<!-- <view class="sm_">100KB</view>-->
|
||||||
<!-- </view>-->
|
<!-- </view>-->
|
||||||
<!-- </view>-->
|
<!-- </view>-->
|
||||||
|
|
||||||
|
|
||||||
<view class="anniu" @click="submit">
|
<view class="anniu" @click="submit">
|
||||||
@ -103,10 +103,6 @@
|
|||||||
@confirm="chooseEducation" @cancel="showEducation = false"
|
@confirm="chooseEducation" @cancel="showEducation = false"
|
||||||
keyName="label"></u-picker>
|
keyName="label"></u-picker>
|
||||||
|
|
||||||
<u-picker :show="showRole" ref="uPicker" :columns="[roles]"
|
|
||||||
@confirm="chooseRole" @cancel="showRole = false"
|
|
||||||
keyName="name"></u-picker>
|
|
||||||
|
|
||||||
<qianziyu-select
|
<qianziyu-select
|
||||||
:show="showDriveType"
|
:show="showDriveType"
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
@ -144,6 +140,22 @@
|
|||||||
mode="date"
|
mode="date"
|
||||||
return-type='string'
|
return-type='string'
|
||||||
></u-datetime-picker>
|
></u-datetime-picker>
|
||||||
|
<!-- <u-picker :show="showRole" ref="uPicker" :columns="[roles]"-->
|
||||||
|
<!-- @confirm="chooseRole" @cancel="showRole = false"-->
|
||||||
|
<!-- keyName="name"></u-picker>-->
|
||||||
|
<qianziyu-select
|
||||||
|
:show="showRole"
|
||||||
|
type="checkbox"
|
||||||
|
name="name"
|
||||||
|
:dataLists="roles"
|
||||||
|
:showSearch=false
|
||||||
|
@cancel="showRole = false"
|
||||||
|
:checkboxData="staff.roleIds"
|
||||||
|
@submit="chooseRole()"
|
||||||
|
popupTitle='汇报对象选择'
|
||||||
|
@update:checkboxData="staff.roleIds = $event"
|
||||||
|
>
|
||||||
|
</qianziyu-select>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -162,6 +174,7 @@ export default {
|
|||||||
joinDate: null,
|
joinDate: null,
|
||||||
probationPeriod: null,
|
probationPeriod: null,
|
||||||
socialSecurityBuyDate: null,
|
socialSecurityBuyDate: null,
|
||||||
|
roleIds: []
|
||||||
},
|
},
|
||||||
fileList1: [],
|
fileList1: [],
|
||||||
selectJoinDate: new Date().toString(),
|
selectJoinDate: new Date().toString(),
|
||||||
@ -229,6 +242,7 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
submit() {
|
submit() {
|
||||||
|
this.staff.roleIds = this.staff.roleIds.map(item => item.id)
|
||||||
//判断是否是修改
|
//判断是否是修改
|
||||||
if (this.userId) {
|
if (this.userId) {
|
||||||
this.update()
|
this.update()
|
||||||
@ -260,10 +274,18 @@ export default {
|
|||||||
method: 'put',
|
method: 'put',
|
||||||
data: data
|
data: data
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
|
let resp = request({
|
||||||
|
url: '/system/permission/assign-user-role',
|
||||||
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
userId: this.userId,
|
||||||
|
roleIds: this.staff.roleIds
|
||||||
|
}
|
||||||
|
})
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: "编辑成功"
|
title: "编辑成功"
|
||||||
})
|
})
|
||||||
this.getInfoByUserId()
|
uni.navigateBack()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async add() {
|
async add() {
|
||||||
@ -275,7 +297,7 @@ export default {
|
|||||||
let data = {
|
let data = {
|
||||||
nickname: this.staff.nickname,
|
nickname: this.staff.nickname,
|
||||||
mobile: this.staff.mobile,
|
mobile: this.staff.mobile,
|
||||||
username: this.staff.nickname,
|
username: this.staff.mobile,
|
||||||
status: 0,
|
status: 0,
|
||||||
userType: '01',
|
userType: '01',
|
||||||
roleId: this.staff.roleId,
|
roleId: this.staff.roleId,
|
||||||
@ -294,14 +316,13 @@ export default {
|
|||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
let roleIds = []
|
console.log('角色', data)
|
||||||
roleIds.push(this.staff.roleId)
|
|
||||||
let resp = await request({
|
let resp = await request({
|
||||||
url: '/system/permission/assign-user-role',
|
url: '/system/permission/assign-user-role',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: {
|
data: {
|
||||||
userId: res.data,
|
userId: res.data,
|
||||||
roleIds: roleIds
|
roleIds: this.staff.roleIds
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
@ -309,6 +330,7 @@ export default {
|
|||||||
})
|
})
|
||||||
this.show = false
|
this.show = false
|
||||||
this.getindex()
|
this.getindex()
|
||||||
|
uni.navigateBack()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
validData() {
|
validData() {
|
||||||
@ -319,7 +341,7 @@ export default {
|
|||||||
})
|
})
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if (!this.staff.roleId && !this.userId) {
|
if (!this.staff.roleIds && !this.userId) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '请选择岗位',
|
title: '请选择岗位',
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
@ -372,16 +394,21 @@ export default {
|
|||||||
this.driverLicenseTypeArr.push(temp)
|
this.driverLicenseTypeArr.push(temp)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (this?.staff?.fileList) {
|
if (this?.staff?.roleIds) {
|
||||||
this.fileList1 = []
|
console.log('this.staff.roleIds', this.staff.roleIds)
|
||||||
this.staff.fileList.forEach((item) => {
|
this.staff.roleIds = this.staff.roleIds.map(roleId => {
|
||||||
const temp = {
|
return this.roles.find(role => role.id === roleId);
|
||||||
name: item.name,
|
});
|
||||||
url: item.url.startsWith("http") ? item.url : baseImageUrl + '/' + item.url
|
this.roleName = this.staff.roleIds.map(item => item.name).join(',')
|
||||||
}
|
console.log(this.staff.roleIds)
|
||||||
this.fileList1.push(temp)
|
// this.fileList1 = []
|
||||||
})
|
// this.staff.fileList.forEach((item) => {
|
||||||
console.log('tupian', this.fileList1)
|
// const temp = {
|
||||||
|
// name: item.name,
|
||||||
|
// url: item.url.startsWith("http") ? item.url : baseImageUrl + '/' + item.url
|
||||||
|
// }
|
||||||
|
// this.fileList1.push(temp)
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getEducation() {
|
getEducation() {
|
||||||
@ -402,10 +429,8 @@ export default {
|
|||||||
this.staff.educational = e.value[0].label
|
this.staff.educational = e.value[0].label
|
||||||
this.showEducation = false
|
this.showEducation = false
|
||||||
},
|
},
|
||||||
chooseRole(e) {
|
chooseRole() {
|
||||||
console.log(e)
|
this.roleName = this.staff.roleIds.map(item => item.name).join(',')
|
||||||
this.staff.roleId = e.value[0].id
|
|
||||||
this.roleName = e.value[0].name
|
|
||||||
this.showRole = false
|
this.showRole = false
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -430,7 +455,7 @@ export default {
|
|||||||
url: '/pages/manage/deviceManage?type=staff&folderId=' + this.staff.folderId
|
url: '/pages/manage/deviceManage?type=staff&folderId=' + this.staff.folderId
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}else {
|
} else {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/manage/deviceManage?type=staff&folderId=' + this.staff.folderId
|
url: '/pages/manage/deviceManage?type=staff&folderId=' + this.staff.folderId
|
||||||
})
|
})
|
||||||
|
@ -1,180 +1,283 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="">
|
<view class="">
|
||||||
<headersVue :titles="titles"><u-icon name="arrow-left" color="#fff" size="18"></u-icon></headersVue>
|
<headersVue :titles="titles">
|
||||||
<view class="content">
|
<u-icon name="arrow-left" color="#fff" size="18"></u-icon>
|
||||||
<view class="top_">请选择工作内容 <u-icon style="margin-left: 10px;" name="arrow-down" size="18"></u-icon> </view>
|
</headersVue>
|
||||||
<view class="list_">
|
<view class="content">
|
||||||
<view class="list_title">
|
<!-- 顶部选择区域 -->
|
||||||
<view class="list_ds">
|
<view class="top_">
|
||||||
<view class="" style="margin-right: 50px;">排名</view>
|
<view class="select-container" @click="showDropdown">
|
||||||
<view class="">员工</view>
|
<view class="select-text">
|
||||||
</view>
|
{{ queryStr != null ? queryStr : '请选择工作内容' }}
|
||||||
<view class="">服务台次</view>
|
</view>
|
||||||
</view>
|
<!-- 下拉箭头 -->
|
||||||
<view class="list_box" v-for="(item,index) in 10" :key="index">
|
<u-icon
|
||||||
<view class="list_box_top">
|
style="margin-left: 10rpx;"
|
||||||
<view class="pm_"> {{index + 1}} </view>
|
name="arrow-down"
|
||||||
<view class="list_ds">
|
size="18"
|
||||||
<view class="tx_">
|
color="#8D90A6"
|
||||||
<image src="/static/img/touxiang.png" mode=""></image>
|
></u-icon>
|
||||||
</view>
|
</view>
|
||||||
<view class="">
|
|
||||||
<view class="">王一</view>
|
<!-- 清除按钮 -->
|
||||||
<view class="num_hui">13812345678</view>
|
<u-icon
|
||||||
</view>
|
v-if="queryStr"
|
||||||
</view>
|
name="close-circle"
|
||||||
<view class=""> 5000 </view>
|
color="#8D90A6"
|
||||||
</view>
|
size="18"
|
||||||
<view class="list_box_bottom">
|
@click="clearSelection"
|
||||||
<view class="list_ds">
|
></u-icon>
|
||||||
<view class="text_">外检:</view>
|
</view>
|
||||||
<view class="num_">200</view>
|
|
||||||
</view>
|
|
||||||
<view class="list_ds">
|
<!-- 列表区域 -->
|
||||||
<view class="text_">安检:</view>
|
<view class="list_">
|
||||||
<view class="num_">200</view>
|
<view class="list_title">
|
||||||
</view>
|
<view class="list_ds">
|
||||||
<view class="list_ds">
|
<view style="margin-right: 50px;">排名</view>
|
||||||
<view class="text_">其他:</view>
|
<view>员工</view>
|
||||||
<view class="num_">200</view>
|
</view>
|
||||||
</view>
|
<view>服务台次</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="list_box" v-for="(item, index) in List" :key="index">
|
||||||
</view>
|
<view class="list_box_top">
|
||||||
</view>
|
<view class="pm_">{{ index + 1 }}</view>
|
||||||
</view>
|
<view class="list_ds">
|
||||||
|
<view class="tx_">
|
||||||
|
<image
|
||||||
|
v-if="item.avatar"
|
||||||
|
style="border-radius: 50%"
|
||||||
|
:src="baseImageUrl + '/' + item.avatar"
|
||||||
|
mode=""
|
||||||
|
></image>
|
||||||
|
<image src="/static/imgs/touxiang.png" v-else mode=""></image>
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
<view>{{ item.nickname }}</view>
|
||||||
|
<view class="num_hui">{{ item.mobile }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view>{{ item.orderCount }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="list_box_bottom">
|
||||||
|
<view class="list_ds">
|
||||||
|
<view class="text_">外检:</view>
|
||||||
|
<view class="num_">{{ item.waijianCount }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="list_ds">
|
||||||
|
<view class="text_">安检:</view>
|
||||||
|
<view class="num_">{{ item.anjianCount }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="list_ds">
|
||||||
|
<view class="text_">其他:</view>
|
||||||
|
<view class="num_">{{ item.otherCount }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 选择器 -->
|
||||||
|
<u-picker
|
||||||
|
:show="isShowScreen"
|
||||||
|
:columns="[columns]"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
keyName="projectName"
|
||||||
|
@confirm="submitScreen"
|
||||||
|
></u-picker>
|
||||||
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import headersVue from '../../components/header/headers.vue';
|
import headersVue from '../../components/header/headers.vue';
|
||||||
|
import request from "@/utils/request";
|
||||||
|
import config from "config";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
titles: "员工统计",
|
titles: "员工统计",
|
||||||
msg: "1",
|
List: [],
|
||||||
List: [],
|
selectList: [],
|
||||||
show: false,
|
useSelectList: [],
|
||||||
status: 'loading',
|
show: false,
|
||||||
}
|
status: 'loading',
|
||||||
},
|
baseImageUrl: config.baseImageUrl,
|
||||||
components: {
|
isShowScreen: false,
|
||||||
headersVue
|
columns: [],
|
||||||
},
|
queryParams: {},
|
||||||
methods: {
|
queryStr: null,
|
||||||
goManage(num) {
|
};
|
||||||
if (num == 1) {
|
},
|
||||||
uni.navigateTo({
|
components: {
|
||||||
url: '/pages/index/staffManagement'
|
headersVue,
|
||||||
})
|
},
|
||||||
}
|
onLoad() {
|
||||||
if (num == 2) {
|
this.getStaffCount();
|
||||||
uni.navigateTo({
|
this.getInspectionProject();
|
||||||
url: '/pages/index/deviceManage'
|
},
|
||||||
})
|
methods: {
|
||||||
}
|
// 获取员工统计
|
||||||
},
|
getStaffCount() {
|
||||||
}
|
request({
|
||||||
|
url: '/partnerOwn/partner/getStaffCount',
|
||||||
}
|
method: 'post',
|
||||||
|
data: this.queryParams,
|
||||||
|
}).then((res) => {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.List = res.data;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 获取工作内容列表
|
||||||
|
getInspectionProject() {
|
||||||
|
request({
|
||||||
|
url: '/inspection/dl-inspection-project/page',
|
||||||
|
method: 'get',
|
||||||
|
params: {
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10000,
|
||||||
|
},
|
||||||
|
}).then((res) => {
|
||||||
|
this.columns = res.data.records;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 显示下拉框
|
||||||
|
showDropdown() {
|
||||||
|
this.isShowScreen = true;
|
||||||
|
},
|
||||||
|
// 处理选择器确认事件
|
||||||
|
submitScreen(e) {
|
||||||
|
this.isShowScreen = false;
|
||||||
|
this.queryParams.id = e.value[0].id;
|
||||||
|
this.queryStr = e.value[0].projectName;
|
||||||
|
this.getStaffCount();
|
||||||
|
},
|
||||||
|
// 处理选择器取消事件
|
||||||
|
handleCancel() {
|
||||||
|
this.isShowScreen = false;
|
||||||
|
},
|
||||||
|
// 清除选择
|
||||||
|
clearSelection() {
|
||||||
|
this.queryParams.id = null;
|
||||||
|
this.queryStr = null;
|
||||||
|
this.getStaffCount();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.content {
|
.content {
|
||||||
background: #F7F8FC;
|
background: #f7f8fc;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
// height: 100vh;
|
padding-top: 200rpx;
|
||||||
box-sizing: border-box;
|
}
|
||||||
// padding: 30rpx;
|
|
||||||
padding-top: 200rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.top_ {
|
.top_ {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 104rpx;
|
height: 104rpx;
|
||||||
background: #FFFFFF;
|
background: #ffffff;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
box-sizing: border-box;
|
justify-content: space-between;
|
||||||
padding: 30rpx;
|
box-sizing: border-box;
|
||||||
}
|
padding: 0 30rpx;
|
||||||
|
border-bottom: 1rpx solid #f5f5f5;
|
||||||
|
|
||||||
.list_ {
|
.select-container {
|
||||||
width: 100%;
|
display: flex;
|
||||||
box-sizing: border-box;
|
align-items: center;
|
||||||
padding: 30rpx;
|
flex: 1; // 让这个区域撑满可用空间
|
||||||
}
|
}
|
||||||
|
|
||||||
.list_title {
|
.select-text {
|
||||||
display: flex;
|
font-size: 28rpx;
|
||||||
align-items: center;
|
color: #101a3e;
|
||||||
justify-content: space-between;
|
}
|
||||||
font-size: 28rpx;
|
}
|
||||||
color: #101A3E;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 0rpx 30rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list_ds {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list_box {
|
.list_ {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
// height: 230rpx;
|
box-sizing: border-box;
|
||||||
background: #FFFFFF;
|
padding: 30rpx;
|
||||||
border-radius: 8rpx;
|
}
|
||||||
margin-bottom: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list_box_top {
|
.list_title {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
box-sizing: border-box;
|
font-size: 28rpx;
|
||||||
padding: 30rpx 50rpx;
|
color: #101a3e;
|
||||||
border-bottom: 2rpx solid #F5F5F5;
|
box-sizing: border-box;
|
||||||
}
|
padding: 0 30rpx;
|
||||||
.list_box_bottom{
|
margin-bottom: 20rpx;
|
||||||
display: flex;
|
}
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
padding: 30rpx 50rpx;
|
|
||||||
}
|
|
||||||
.tx_{
|
|
||||||
width: 90rpx;
|
|
||||||
height: 90rpx;
|
|
||||||
margin-right: 5px;
|
|
||||||
image{
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.num_hui{
|
|
||||||
font-size: 24rpx;
|
|
||||||
color: #8D90A6;
|
|
||||||
}
|
|
||||||
.text_{
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #8D90A6;
|
|
||||||
}
|
|
||||||
.num_{
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #101A3E;
|
|
||||||
}
|
|
||||||
.pm_{
|
|
||||||
width: 40rpx;
|
|
||||||
height: 40rpx;
|
|
||||||
background: #327DFB;
|
|
||||||
overflow: hidden;
|
|
||||||
border-radius: 50%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
|
|
||||||
}
|
.list_ds {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list_box {
|
||||||
|
width: 100%;
|
||||||
|
background: #ffffff;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
margin-bottom: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list_box_top {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 30rpx 50rpx;
|
||||||
|
border-bottom: 2rpx solid #f5f5f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list_box_bottom {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 30rpx 50rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tx_ {
|
||||||
|
width: 90rpx;
|
||||||
|
height: 90rpx;
|
||||||
|
margin-right: 5px;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.num_hui {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #8d90a6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text_ {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #8d90a6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.num_ {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #101a3e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pm_ {
|
||||||
|
width: 40rpx;
|
||||||
|
height: 40rpx;
|
||||||
|
background: #327dfb;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<view class="d_s">
|
<view class="d_s">
|
||||||
<view class="icon1" @click="goNotice()">
|
<view class="icon1" @click="goNotice()">
|
||||||
<image src="/static/imgs/xiaoxi.png" mode=""></image>
|
<image src="/static/imgs/xiaoxi.png" mode=""></image>
|
||||||
|
<view class="msg-num" v-if="noReadNum>0">{{ noReadNum }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="icon1" @click="showUserDetail">
|
<view class="icon1" @click="showUserDetail">
|
||||||
<image src="/static/imgs/gengduo.png" mode=""></image>
|
<image src="/static/imgs/gengduo.png" mode=""></image>
|
||||||
@ -32,7 +33,7 @@
|
|||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="three_">
|
<view class="three_" @click="goordercount">
|
||||||
<view class="three_box1">
|
<view class="three_box1">
|
||||||
<view class="">当日订单</view>
|
<view class="">当日订单</view>
|
||||||
<view class="num_">{{ threenum.todayOrderNum }}</view>
|
<view class="num_">{{ threenum.todayOrderNum }}</view>
|
||||||
@ -56,7 +57,7 @@
|
|||||||
<view class="">订单管理</view>
|
<view class="">订单管理</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="jg_ys">
|
<view class="jg_ys">
|
||||||
<image src="/static/imgs/jg2.png" mode=""></image>
|
<image src="/static/imgs/jg2.png" mode="" @click="gobusiness"></image>
|
||||||
<view class="">业务统计</view>
|
<view class="">业务统计</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="jg_ys">
|
<view class="jg_ys">
|
||||||
@ -94,6 +95,16 @@
|
|||||||
<view class="">使用说明</view>
|
<view class="">使用说明</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="jg_bt" style="" v-if="show">
|
||||||
|
<view class="jg_ys1" @click="goemployees()">
|
||||||
|
<image src="/static/imgs/jg6.png" mode=""></image>
|
||||||
|
<view class="">员工统计</view>
|
||||||
|
</view>
|
||||||
|
<view class="jg_ys1" @click="goneworderStatistic()">
|
||||||
|
<image src="/static/imgs/jg7.png" mode=""></image>
|
||||||
|
<view class="">当日订单统计</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="hang_"></view>
|
<view class="hang_"></view>
|
||||||
<view class="list_">
|
<view class="list_">
|
||||||
@ -235,6 +246,11 @@ export default {
|
|||||||
url: '/pages/xiaoxi/notice'
|
url: '/pages/xiaoxi/notice'
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
goordercount(){
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/index/neworderStatistic'
|
||||||
|
})
|
||||||
|
},
|
||||||
goback() {
|
goback() {
|
||||||
uni.navigateBack()
|
uni.navigateBack()
|
||||||
},
|
},
|
||||||
@ -288,6 +304,21 @@ export default {
|
|||||||
url: '/pages/Tollannouncement/Tollannouncement'
|
url: '/pages/Tollannouncement/Tollannouncement'
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
goemployees() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/index/countEmployees'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goneworderStatistic() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/index/orderStatistics'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
gobusiness() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/statistics/business'
|
||||||
|
})
|
||||||
|
},
|
||||||
gettel(num) {
|
gettel(num) {
|
||||||
const value = num.buyPhoneNum
|
const value = num.buyPhoneNum
|
||||||
uni.makePhoneCall({
|
uni.makePhoneCall({
|
||||||
@ -528,9 +559,24 @@ image {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.icon1 {
|
.icon1 {
|
||||||
|
position: relative;
|
||||||
width: 56rpx;
|
width: 56rpx;
|
||||||
height: 56rpx;
|
height: 56rpx;
|
||||||
margin-left: 30rpx;
|
margin-left: 30rpx;
|
||||||
|
.msg-num {
|
||||||
|
position: absolute;
|
||||||
|
right: -15rpx;
|
||||||
|
color: white;
|
||||||
|
background: #d74a43;
|
||||||
|
width: 35rpx;
|
||||||
|
height: 35rpx;
|
||||||
|
line-height: 35rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 800;
|
||||||
|
font-size: 11px;
|
||||||
|
border-radius: 50%;
|
||||||
|
top: -15rpx;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.three_ {
|
.three_ {
|
||||||
|
651
pages/index/neworderStatistic.vue
Normal file
651
pages/index/neworderStatistic.vue
Normal file
@ -0,0 +1,651 @@
|
|||||||
|
<template>
|
||||||
|
<view class="content">
|
||||||
|
<headersVue :titles="titles">
|
||||||
|
<u-icon name="arrow-left" color="#fff" size="18"></u-icon>
|
||||||
|
</headersVue>
|
||||||
|
<view class="top_">
|
||||||
|
<view class="t_left" @click="isShowPop = true">全部订单
|
||||||
|
<u-icon name="arrow-down-fill" color="#327DFB" size="14"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view class="" style="display:flex;" @click="cleanSelectTime" v-if="queryParams.startTime">
|
||||||
|
清除时间
|
||||||
|
<u-icon
|
||||||
|
name="close-circle"
|
||||||
|
size="24"
|
||||||
|
color="#327DFB"
|
||||||
|
style="margin-left: 10rpx"
|
||||||
|
></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="container" v-if="tableData">
|
||||||
|
<view class="box_" v-for="(records, date) in tableData" :key="date">
|
||||||
|
<view class="title_" @click="show = true">{{ formatDateChinese(date) }}
|
||||||
|
<u-icon name="arrow-down" size="14"></u-icon>
|
||||||
|
</view>
|
||||||
|
<view class="box_cont">
|
||||||
|
<view class="box_hang" v-for="(item, index) in records" :key="item.id">
|
||||||
|
<view class="d_s">
|
||||||
|
<view class="num_">{{ index + 1 }}</view>
|
||||||
|
<view class="name_">{{ item.carNum }}</view>
|
||||||
|
<view class="icon_" v-if="item.carModel">{{ item.carModel }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="d_b">
|
||||||
|
<view class="d_s">
|
||||||
|
<view class="h_">业务来源:</view>
|
||||||
|
<view class="n_">{{ item.customerSource }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="d_s">
|
||||||
|
<view class="h_">检测状态:</view>
|
||||||
|
<view class="n_">{{ item.status }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="d_s">
|
||||||
|
<view class="h_">支付方式:</view>
|
||||||
|
<view class="n_">{{ item.pay == '未支付' ? item.pay : getPayType(item.payType) }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="container" v-else style="margin: 430rpx 0">
|
||||||
|
<u-empty
|
||||||
|
mode="order"
|
||||||
|
>
|
||||||
|
</u-empty>
|
||||||
|
</view>
|
||||||
|
<u-popup round="55" :show="isShowPop" @close="closePop" @open="openPop" style="z-index: 10070; position: relative;">
|
||||||
|
<view class="popup-content">
|
||||||
|
<view class="popup-header">
|
||||||
|
<text>选择筛选项</text>
|
||||||
|
|
||||||
|
<view style="display: flex;justify-content: space-between" @click="clearSelection">
|
||||||
|
<u-icon
|
||||||
|
name="close-circle"
|
||||||
|
size="18"
|
||||||
|
color="#327DFB"
|
||||||
|
></u-icon>
|
||||||
|
<text style="color:#327DFB;">清除筛选项</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<u-search placeholder="请输入车辆品牌或车牌号" v-model="queryParams.carModelOrCarYear" @custom="search"
|
||||||
|
@search="search"></u-search>
|
||||||
|
<scroll-view scroll-y="true" class="scroll_view_style">
|
||||||
|
<view class="popup-body">
|
||||||
|
<view style="display: flex;justify-content: space-between">
|
||||||
|
<!-- 客户来源选择 -->
|
||||||
|
<view class="filter-section">
|
||||||
|
<text>客户来源</text>
|
||||||
|
<view class="options" @click="handleClick">
|
||||||
|
<text>
|
||||||
|
{{ queryParams.customerSource || '请选择客户来源' }}
|
||||||
|
</text>
|
||||||
|
<u-icon
|
||||||
|
v-if="queryParams.customerSource"
|
||||||
|
name="close-circle"
|
||||||
|
size="24"
|
||||||
|
color="#327DFB"
|
||||||
|
></u-icon>
|
||||||
|
<u-icon
|
||||||
|
v-else
|
||||||
|
name="arrow-down"
|
||||||
|
size="14"
|
||||||
|
color="#327DFB"
|
||||||
|
></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 车型选择 -->
|
||||||
|
<view class="filter-section">
|
||||||
|
<text>车型</text>
|
||||||
|
<view class="options" @click="handleGoodsClick">
|
||||||
|
<text>
|
||||||
|
{{ goodsName || '请选择车型' }}
|
||||||
|
</text>
|
||||||
|
<u-icon
|
||||||
|
v-if="queryParams.goods"
|
||||||
|
name="close-circle"
|
||||||
|
size="24"
|
||||||
|
color="#327DFB"
|
||||||
|
></u-icon>
|
||||||
|
<u-icon
|
||||||
|
v-else
|
||||||
|
name="arrow-down"
|
||||||
|
size="14"
|
||||||
|
color="#327DFB"
|
||||||
|
></u-icon>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 车龄选择 -->
|
||||||
|
<view class="filter-section">
|
||||||
|
<text>车龄选择</text>
|
||||||
|
<u-number-box v-model="queryParams.carYear" :min="0" :max="100"></u-number-box>
|
||||||
|
</view>
|
||||||
|
<!-- 支付方式选择 -->
|
||||||
|
<view class="filter-section">
|
||||||
|
<text>支付方式</text>
|
||||||
|
<view class="options">
|
||||||
|
<text
|
||||||
|
class="options_content"
|
||||||
|
v-for="(item, index) in payTypes"
|
||||||
|
:key="index"
|
||||||
|
@click="selectPayType(item.value)"
|
||||||
|
:class="{ selected: queryParams.payType === item.value }"
|
||||||
|
>
|
||||||
|
{{ item.label }}
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 检测状态选择 -->
|
||||||
|
<view class="filter-section">
|
||||||
|
<text>检测状态</text>
|
||||||
|
<view class="options">
|
||||||
|
<text
|
||||||
|
class="options_content"
|
||||||
|
v-for="(item, index) in inspectionStatus"
|
||||||
|
:key="index"
|
||||||
|
@click="selectInspectionStatus(item.value)"
|
||||||
|
:class="{ selected: queryParams.chooseStatus === item.value }"
|
||||||
|
>
|
||||||
|
{{ item.label }}
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
<view class="popup-footer">
|
||||||
|
<u-button @click="closePop" style="background: #F7F8FC;color: black">取消</u-button>
|
||||||
|
<u-button @click="submitPop">确定</u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
<u-picker
|
||||||
|
:show="isShowCustomer"
|
||||||
|
:columns="[customerSource]"
|
||||||
|
keyName="label"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@cancel="isShowCustomer = false"
|
||||||
|
@close="isShowCustomer = false"
|
||||||
|
@confirm="handleCustomerSourceConfirm"
|
||||||
|
:overlay-style="{ zIndex: '10080' }"
|
||||||
|
style="z-index: 10072"
|
||||||
|
></u-picker>
|
||||||
|
<u-picker
|
||||||
|
:show="isShowGoods"
|
||||||
|
:columns="[goodsList]"
|
||||||
|
keyName="label"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@cancel="isShowGoods = false"
|
||||||
|
@close="isShowGoods = false"
|
||||||
|
@confirm="handleGoodsConfirm"
|
||||||
|
:overlay-style="{ zIndex: '10080' }"
|
||||||
|
style="z-index: 10072"
|
||||||
|
></u-picker>
|
||||||
|
<u-datetime-picker
|
||||||
|
:show="show"
|
||||||
|
v-model="selectTime"
|
||||||
|
mode="date"
|
||||||
|
@close="show = false"
|
||||||
|
@cancel="show = false"
|
||||||
|
closeOnClickOverlay
|
||||||
|
@confirm="confirmTime"
|
||||||
|
></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import headersVue from '../../components/header/headers.vue';
|
||||||
|
import request from "@/utils/request";
|
||||||
|
import {formatDate, formatDateChinese, formatDateTimeToMinute, getDictDataByType} from "@/utils/utils";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
titles: "订单统计",
|
||||||
|
msg: "1",
|
||||||
|
List: [],
|
||||||
|
show: false,
|
||||||
|
status: 'loading',
|
||||||
|
columns: [
|
||||||
|
['选项', '选项', '选项']
|
||||||
|
],
|
||||||
|
queryParams: {
|
||||||
|
queryTime: null,
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
chooseStatus: "1",
|
||||||
|
payType: "",
|
||||||
|
startTime: null,
|
||||||
|
endTime: null,
|
||||||
|
carModelOrCarYear: null,
|
||||||
|
customerSource: null,
|
||||||
|
goods: null,
|
||||||
|
carYear: 0,
|
||||||
|
},
|
||||||
|
loading: false, // 加载更多时的标志位
|
||||||
|
tableData: {},
|
||||||
|
pages: 0,
|
||||||
|
isShowPop: false,
|
||||||
|
isShowCustomer: false,
|
||||||
|
payTypes: [],
|
||||||
|
inspectionStatus: [
|
||||||
|
{
|
||||||
|
label: "全部",
|
||||||
|
value: "1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "检测中",
|
||||||
|
value: "2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "已完成",
|
||||||
|
value: "3",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
selectedPayType: null, // 选中的支付方式
|
||||||
|
selectedInspectionStatus: null, // 选中的检测状态
|
||||||
|
customerSource: [],
|
||||||
|
selectedCustomerSource: null, // 选中的客户来源
|
||||||
|
selectTime: new Date().toString(),
|
||||||
|
goodsList: [],
|
||||||
|
isShowGoods: false,
|
||||||
|
goodsName: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onReachBottom() { // 当用户滚动到底部时触发
|
||||||
|
if (!this.loading && this.queryParams.pageNum < this.pages) {
|
||||||
|
this.queryParams.pageNum += 1;
|
||||||
|
this.getTableData(true);
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: '没有下一页数据',
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
headersVue
|
||||||
|
},
|
||||||
|
onReady() {
|
||||||
|
this.getTableData();
|
||||||
|
this.getDictData();
|
||||||
|
this.getCustomerSource();
|
||||||
|
// this.disabledScroll()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatDateChinese,
|
||||||
|
getTableData(isLoadMore = false) {
|
||||||
|
this.loading = true; // 开始加载更多
|
||||||
|
request({
|
||||||
|
url: '/partnerOwn/partner/getOrderByDate',
|
||||||
|
method: 'get',
|
||||||
|
params: this.queryParams
|
||||||
|
}).then(res => {
|
||||||
|
this.pages = res.data.pages
|
||||||
|
let newData = res.data.records || [];
|
||||||
|
if (isLoadMore) {
|
||||||
|
newData = newData.concat(this.extractAllEntries(this.tableData))
|
||||||
|
this.tableData = this.groupByDate(newData); // 合并新旧数据
|
||||||
|
} else {
|
||||||
|
this.tableData = null
|
||||||
|
if (newData.length !== 0) {
|
||||||
|
this.tableData = newData; // 初始加载或搜索时替换数据
|
||||||
|
this.tableData = this.groupByDate(this.tableData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.loading = false; // 完成加载
|
||||||
|
}).catch(err => {
|
||||||
|
console.error('获取订单数据失败', err);
|
||||||
|
this.loading = false; // 出错也停止加载
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getPayType(type) {
|
||||||
|
if (!this.payTypes || this.payTypes.length === 0) {
|
||||||
|
this.getDictData()
|
||||||
|
}
|
||||||
|
if (type) {
|
||||||
|
const index = this.payTypes.findIndex(item => item.value === type)
|
||||||
|
if (index !== -1) {
|
||||||
|
return this.payTypes[index].label
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getDictData() {
|
||||||
|
if (!this.payTypes || this.payTypes.length === 0) {
|
||||||
|
this.payTypes = [
|
||||||
|
{
|
||||||
|
label: "全部",
|
||||||
|
value: "",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
this.payTypes = this.payTypes.concat(await getDictDataByType("pay_type"))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
groupByDate(records) {
|
||||||
|
return Object.entries(records.reduce((acc, item) => {
|
||||||
|
const dateKey = item.createTime.split(" ")[0]; // 取 "yyyy-MM-dd"
|
||||||
|
if (!acc[dateKey]) {
|
||||||
|
acc[dateKey] = [];
|
||||||
|
}
|
||||||
|
acc[dateKey].push(item);
|
||||||
|
return acc;
|
||||||
|
}, {}))
|
||||||
|
.sort(([a], [b]) => b.localeCompare(a)) // 根据 dateKey 倒序排序
|
||||||
|
.reduce((sortedAcc, [key, value]) => {
|
||||||
|
sortedAcc[key] = value;
|
||||||
|
return sortedAcc;
|
||||||
|
}, {});
|
||||||
|
},
|
||||||
|
extractAllEntries(data) {
|
||||||
|
return Object.values(data).flat(); // 提取所有子数组并展平为一个大数组
|
||||||
|
},
|
||||||
|
closePop() {
|
||||||
|
this.isShowPop = false;
|
||||||
|
this.queryParams.payType = "";
|
||||||
|
this.queryParams.chooseStatus = "1";
|
||||||
|
this.queryParams.carModelOrCarYear = null;
|
||||||
|
},
|
||||||
|
submitPop() {
|
||||||
|
this.queryParams.pageNum = 1;
|
||||||
|
this.tableData = null
|
||||||
|
this.getTableData();
|
||||||
|
this.isShowPop = false;
|
||||||
|
},
|
||||||
|
openPop() {
|
||||||
|
this.isShowPop = true;
|
||||||
|
},
|
||||||
|
selectPayType(value) {
|
||||||
|
this.queryParams.payType = value;
|
||||||
|
},
|
||||||
|
selectInspectionStatus(value) {
|
||||||
|
this.queryParams.chooseStatus = value;
|
||||||
|
},
|
||||||
|
async getCustomerSource() {
|
||||||
|
let res = await request({
|
||||||
|
url: '/partnerOwn/partner/getCustomerSource',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
this.customerSource = res.data
|
||||||
|
|
||||||
|
//商品类型
|
||||||
|
let resx = await request({
|
||||||
|
url: '/system/inspectionGoods/partnerGoodsListCol',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
this.goodsList = resx.data.goodsList
|
||||||
|
},
|
||||||
|
handleCustomerSourceConfirm(e) {
|
||||||
|
this.queryParams.customerSource = e.value[0].value; // 获取用户选择的客户来源
|
||||||
|
this.isShowCustomer = false; // 关闭选择器
|
||||||
|
},
|
||||||
|
handleGoodsConfirm(e) {
|
||||||
|
this.queryParams.goods = e.value[0].value; // 获取用户选择的客户来源
|
||||||
|
this.goodsName = e.value[0].label; // 获取用户选择的客户来源
|
||||||
|
this.isShowGoods = false; // 关闭选择器
|
||||||
|
},
|
||||||
|
search() {
|
||||||
|
this.getTableData();
|
||||||
|
this.isShowPop = false;
|
||||||
|
},
|
||||||
|
clearCustomerSource() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.queryParams.customerSource = null; // 清空客户来源
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleClick() {
|
||||||
|
if (this.queryParams.customerSource) {
|
||||||
|
this.clearCustomerSource();
|
||||||
|
} else {
|
||||||
|
this.isShowCustomer = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleGoodsClick() {
|
||||||
|
if (this.queryParams.goods) {
|
||||||
|
this.queryParams.goods = null;
|
||||||
|
this.goodsName = null
|
||||||
|
} else {
|
||||||
|
this.isShowGoods = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
confirmTime(e) {
|
||||||
|
const time = formatDate(e.value)
|
||||||
|
this.queryParams.startTime = time
|
||||||
|
this.queryParams.endTime = time
|
||||||
|
this.getTableData()
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
cleanSelectTime() {
|
||||||
|
this.queryParams.startTime = null
|
||||||
|
this.queryParams.endTime = null
|
||||||
|
this.getTableData()
|
||||||
|
},
|
||||||
|
clearSelection() {
|
||||||
|
this.queryParams = {
|
||||||
|
queryTime: null,
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
chooseStatus: "1",
|
||||||
|
payType: "",
|
||||||
|
startTime: null,
|
||||||
|
endTime: null,
|
||||||
|
carModelOrCarYear: null,
|
||||||
|
customerSource: null,
|
||||||
|
goods: null,
|
||||||
|
carYear: 0,
|
||||||
|
}
|
||||||
|
this.getTableData()
|
||||||
|
this.isShowPop = false
|
||||||
|
},
|
||||||
|
// disabledScroll(){
|
||||||
|
// const container = document.querySelector('.content'); content.scrollTop = 0;
|
||||||
|
// console.log('container',container)
|
||||||
|
// },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.content {
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-top: 200rpx;
|
||||||
|
background: #f4f5f6;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: #f4f5f6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.t_left {
|
||||||
|
width: 200rpx;
|
||||||
|
border: 2px solid #327DFB;
|
||||||
|
background: #e3ecfb;
|
||||||
|
color: #327DFB;
|
||||||
|
font-size: 28rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 5px 10px;
|
||||||
|
border-radius: 50px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title_ {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
padding-left: 15rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box_ {
|
||||||
|
margin-bottom: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box_cont {
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 30rpx;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #fff;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.d_s {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.d_b {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.num_ {
|
||||||
|
width: 36rpx;
|
||||||
|
height: 36rpx;
|
||||||
|
background: #327DFB;
|
||||||
|
color: #fff;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 50%;
|
||||||
|
justify-content: center;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.name_ {
|
||||||
|
margin-right: 10px;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_ {
|
||||||
|
background: #e3ecfb;
|
||||||
|
color: #327DFB;
|
||||||
|
font-size: 28rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 5rpx 20rpx;
|
||||||
|
border-radius: 50px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h_ {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #8D90A6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.n_ {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
display: inline-block;
|
||||||
|
max-width: 3em; /* 约等于4个汉字的宽度 */
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box_hang {
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-bottom: 20rpx;
|
||||||
|
border-bottom: 2rpx solid #F5F5F5;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-content {
|
||||||
|
padding: 20rpx;
|
||||||
|
background: white;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
//height: 80vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-header {
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
margin-bottom: 40rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-body {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-section {
|
||||||
|
margin-top: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-section text {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.options {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
|
//justify-content: space-between;
|
||||||
|
margin-top: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.options text {
|
||||||
|
margin-right: 20rpx;
|
||||||
|
margin-bottom: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-footer {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 60rpx;
|
||||||
|
margin-bottom: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-footer button {
|
||||||
|
padding: 10rpx 20rpx;
|
||||||
|
margin: 0 10rpx;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #327DFB;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.options_content {
|
||||||
|
background: #F7F8FC;
|
||||||
|
border-radius: 15rpx;
|
||||||
|
width: 210rpx;
|
||||||
|
height: 90rpx;
|
||||||
|
line-height: 90rpx;
|
||||||
|
text-align: center;
|
||||||
|
border: 2rpx solid transparent;
|
||||||
|
margin-top: 10rpx;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
border-color: #327DFB;
|
||||||
|
background-color: rgba(50, 125, 251, 0.1);
|
||||||
|
color: #327DFB;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-section .options u-icon {
|
||||||
|
margin-left: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top_ {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
//position: fixed;
|
||||||
|
//background: coral;
|
||||||
|
width: 100%;
|
||||||
|
//margin-bottom: 1rpx;
|
||||||
|
}
|
||||||
|
</style>
|
@ -39,7 +39,8 @@
|
|||||||
<input type="text" v-model="item.dealUserName" placeholder="请选择检测人员">
|
<input type="text" v-model="item.dealUserName" placeholder="请选择检测人员">
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<u-picker :show="item.show" :columns="columns" @confirm="confirms(item, $event)" @cancel="cancels(item)" :title="'选择'+item.projectName+'的检测人员'"
|
<u-picker :show="item.show" :columns="columns" @confirm="confirms(item, $event)" @cancel="cancels(item)"
|
||||||
|
:title="'选择'+item.projectName+'的检测人员'"
|
||||||
:key="index"
|
:key="index"
|
||||||
keyName="nickname"></u-picker>
|
keyName="nickname"></u-picker>
|
||||||
<view class="xb_" v-if="index != selectProject.length - 1 ">↓</view>
|
<view class="xb_" v-if="index != selectProject.length - 1 ">↓</view>
|
||||||
@ -203,6 +204,7 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.xixi {
|
.xixi {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: #0D2E8D;
|
color: #0D2E8D;
|
||||||
|
@ -48,20 +48,31 @@
|
|||||||
<uni-icons type="right" color="#999999" size="16"></uni-icons>
|
<uni-icons type="right" color="#999999" size="16"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="on-input" @click="goWorkReport()">
|
||||||
<view class="ian-box">
|
|
||||||
<view class="on-input" @click="goWord()">
|
|
||||||
<view class="dix">
|
<view class="dix">
|
||||||
<view class="d-icon">
|
<view class="d-icon">
|
||||||
<image src="../../static/detection/zhaq.png" mode=""></image>
|
<image src="../../static/detection/zhaq.png" mode=""></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="aa">word</view>
|
<view class="aa">工作汇报</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="">
|
<view class="">
|
||||||
<uni-icons type="right" color="#999999" size="16"></uni-icons>
|
<uni-icons type="right" color="#999999" size="16"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<!-- <view class="ian-box">-->
|
||||||
|
<!-- <view class="on-input" @click="goWord()">-->
|
||||||
|
<!-- <view class="dix">-->
|
||||||
|
<!-- <view class="d-icon">-->
|
||||||
|
<!-- <image src="../../static/detection/zhaq.png" mode=""></image>-->
|
||||||
|
<!-- </view>-->
|
||||||
|
<!-- <view class="aa">word</view>-->
|
||||||
|
<!-- </view>-->
|
||||||
|
<!-- <view class="">-->
|
||||||
|
<!-- <uni-icons type="right" color="#999999" size="16"></uni-icons>-->
|
||||||
|
<!-- </view>-->
|
||||||
|
<!-- </view>-->
|
||||||
|
<!-- </view>-->
|
||||||
<view class="ian-box">
|
<view class="ian-box">
|
||||||
<!-- <view class="on-input">
|
<!-- <view class="on-input">
|
||||||
<view class="dix">
|
<view class="dix">
|
||||||
@ -195,6 +206,11 @@ export default {
|
|||||||
url: "/pages/staff/goRoyalty"
|
url: "/pages/staff/goRoyalty"
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
goWorkReport() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: "/pages/manage/workReport/reportList"
|
||||||
|
})
|
||||||
|
},
|
||||||
goWord() {
|
goWord() {
|
||||||
request({
|
request({
|
||||||
url: '/system/info/exportWord',
|
url: '/system/info/exportWord',
|
||||||
|
@ -10,7 +10,10 @@
|
|||||||
<uni-icons type="search" color="#BCBCBC" size="22"></uni-icons>
|
<uni-icons type="search" color="#BCBCBC" size="22"></uni-icons>
|
||||||
<input type="text" v-model="carNum" placeholder="搜索车牌号.....">
|
<input type="text" v-model="carNum" placeholder="搜索车牌号.....">
|
||||||
</view>
|
</view>
|
||||||
<view class="sou" @click="getList()">搜索</view>
|
<view class="icon1" @click="goNotice()">
|
||||||
|
<image src="/static/imgs/staffxiaoxi.png" style="width: 50rpx;height: 50rpx;" mode=""></image>
|
||||||
|
<view class="msg-num" v-if="noReadNum>0">{{ noReadNum }}</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="tap">
|
<view class="tap">
|
||||||
<scroll-view scroll-x="true" style="width: 100%;">
|
<scroll-view scroll-x="true" style="width: 100%;">
|
||||||
@ -140,6 +143,7 @@ export default {
|
|||||||
msg: '1',
|
msg: '1',
|
||||||
carNum: '',
|
carNum: '',
|
||||||
pageNum: 1,//第几页
|
pageNum: 1,//第几页
|
||||||
|
noReadNum: 1,
|
||||||
pageSize: 20,//一页多少张
|
pageSize: 20,//一页多少张
|
||||||
totalPages: 0,//总数
|
totalPages: 0,//总数
|
||||||
// tapList: [
|
// tapList: [
|
||||||
@ -198,6 +202,7 @@ export default {
|
|||||||
onLoad() {
|
onLoad() {
|
||||||
this.$startSocketConnect(uni.getStorageSync('userId'))
|
this.$startSocketConnect(uni.getStorageSync('userId'))
|
||||||
this.msgInfo()
|
this.msgInfo()
|
||||||
|
this.getWarnCount()
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
this.getList()
|
this.getList()
|
||||||
@ -234,6 +239,21 @@ export default {
|
|||||||
this.countMap = new Map(Object.entries(res.data))
|
this.countMap = new Map(Object.entries(res.data))
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
getWarnCount() {
|
||||||
|
request({
|
||||||
|
url: '/warnMsg/warnMsg/getCount',
|
||||||
|
method: 'get',
|
||||||
|
}).then(res => {
|
||||||
|
if (res.data) {
|
||||||
|
this.noReadNum = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goNotice() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/xiaoxi/notice?type=staff'
|
||||||
|
})
|
||||||
|
},
|
||||||
confirms(e) {
|
confirms(e) {
|
||||||
this.takingData.workNodeId = e.value[0].value
|
this.takingData.workNodeId = e.value[0].value
|
||||||
this.show = false
|
this.show = false
|
||||||
@ -661,4 +681,24 @@ export default {
|
|||||||
border-radius: 20rpx; /* 椭圆效果 */
|
border-radius: 20rpx; /* 椭圆效果 */
|
||||||
white-space: nowrap; /* 确保文本不换行 */
|
white-space: nowrap; /* 确保文本不换行 */
|
||||||
}
|
}
|
||||||
|
.icon1 {
|
||||||
|
position: relative;
|
||||||
|
width: 56rpx;
|
||||||
|
height: 56rpx;
|
||||||
|
//margin-left: 30rpx;
|
||||||
|
.msg-num {
|
||||||
|
position: absolute;
|
||||||
|
right: -15rpx;
|
||||||
|
color: white;
|
||||||
|
background: #d74a43;
|
||||||
|
width: 35rpx;
|
||||||
|
height: 35rpx;
|
||||||
|
line-height: 35rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 800;
|
||||||
|
font-size: 11px;
|
||||||
|
border-radius: 50%;
|
||||||
|
top: -15rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
813
pages/statistics/business.vue
Normal file
813
pages/statistics/business.vue
Normal file
@ -0,0 +1,813 @@
|
|||||||
|
<template>
|
||||||
|
<view class="content">
|
||||||
|
<headersVue :titles="titles">
|
||||||
|
<u-icon name="arrow-left" color="#fff" size="18"></u-icon>
|
||||||
|
</headersVue>
|
||||||
|
<view class="container">
|
||||||
|
<view class="title_">检测数量统计</view>
|
||||||
|
<view class="box_">
|
||||||
|
<uni-datetime-picker v-model="ranges" type="daterange" @maskClick="maskClick"/>
|
||||||
|
<view class="d_b"
|
||||||
|
style="border-top: 1px solid #F5F5F5; margin-top: 30rpx;box-sizing: border-box;padding-top: 30rpx;">
|
||||||
|
<view class="three_" @click="goOrderList">
|
||||||
|
<view class="text_">订单数量</view>
|
||||||
|
<view class="">{{ data2.allNum || 0 }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="three_">
|
||||||
|
<view class="text_">完成数量</view>
|
||||||
|
<view class="">{{ data2.ywcNum || 0 }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="three_">
|
||||||
|
<view class="text_">检测中数量</view>
|
||||||
|
<view class="">{{ data2.jxzNum || 0 }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="title_">营业额统计</view>
|
||||||
|
<view class="box_">
|
||||||
|
<uni-datetime-picker v-model="range" type="daterange" @maskClick="maskClick"/>
|
||||||
|
<view class="d_b"
|
||||||
|
style="border-top: 1px solid #F5F5F5; margin-top: 30rpx;box-sizing: border-box;padding-top: 30rpx;">
|
||||||
|
<view class="four_">
|
||||||
|
<view class="text_">公示价格</view>
|
||||||
|
<view class="">{{ data1.gsAmount || 0 }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="four_">
|
||||||
|
<view class="text_">应收款</view>
|
||||||
|
<view class="">{{ data1.ysAmount || 0 }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="four_">
|
||||||
|
<view class="text_">已收款</view>
|
||||||
|
<view class="">{{ data1.yjsAmount || 0 }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="four_">
|
||||||
|
<view class="text_">待收款</view>
|
||||||
|
<view class="">{{ data1.ysAmount - data1.yjsAmount || 0 }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="title_">客户来源统计</view>
|
||||||
|
<view class="box_" v-if="data3.length > 0">
|
||||||
|
<view class="box_top">
|
||||||
|
<view class="l_">客户来源</view>
|
||||||
|
<view class="n_">数量</view>
|
||||||
|
<view class="r_">公示金额</view>
|
||||||
|
</view>
|
||||||
|
<view class="box_cont" v-for="(item,index) in data3">
|
||||||
|
<view class="hang_">
|
||||||
|
<view class="l_">
|
||||||
|
<view :class="'jt_' + (index % 4)">{{ item.remark || '' }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="n_">{{ item.theNum || '' }}</view>
|
||||||
|
<view class="r_">{{ item.theAmount || '' }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="box_" v-else>
|
||||||
|
暂无数据…
|
||||||
|
</view>
|
||||||
|
<view class="title_d">检测车型统计
|
||||||
|
<view class="sm_" @click="goxiangqing(2)">更多 ></view>
|
||||||
|
</view>
|
||||||
|
<view class="box_">
|
||||||
|
<view class="d_b" v-if="data4.length > 0">
|
||||||
|
<view class="four_t" v-for="(item,index) in data4">
|
||||||
|
<view class="text_">{{ item.goodsTitle || '' }}</view>
|
||||||
|
<view class="">{{ item.theNum || '' }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="d_b" v-else>
|
||||||
|
暂无数据…
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="title_d">检测类型统计
|
||||||
|
<view class="sm_" @click="goxiangqing(4)">更多 ></view>
|
||||||
|
</view>
|
||||||
|
<view class="box_">
|
||||||
|
<view class="d_b" style="display: flex; flex-wrap: wrap;" v-if="skuList.length > 0">
|
||||||
|
<view class="three_" v-for="(skuData) in skuList">
|
||||||
|
<view class="text_">{{ skuData.skuName }}</view>
|
||||||
|
<view class=""> {{ skuData.orderCount || 0 }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="d_b" v-else>
|
||||||
|
暂无数据…
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="title_d">代收款
|
||||||
|
<view class="sm_" @click="goxiangqing(3)">更多 ></view>
|
||||||
|
</view>
|
||||||
|
<view class="box_" v-if="data5.length == 0">暂无数据…</view>
|
||||||
|
<view class="sys" v-for="(item) in data5" v-else>
|
||||||
|
<view class="t-title">{{ item.theName || '' }}</view>
|
||||||
|
<view class="t-num">{{ item.theAmount || '' }}</view>
|
||||||
|
</view>
|
||||||
|
<view class="title_">成交金额(已收款)</view>
|
||||||
|
<view class="box_">
|
||||||
|
<qiun-data-charts type="area" :opts="opts" :ontouch='true' :chartData="chartData"/>
|
||||||
|
</view>
|
||||||
|
<view class="title_">检测数量</view>
|
||||||
|
<view class="box_">
|
||||||
|
<qiun-data-charts type="area" :opts="opts2" :chartData="chartData1"/>
|
||||||
|
</view>
|
||||||
|
<view class="title_">已收款金额</view>
|
||||||
|
<view class="box_">
|
||||||
|
<qiun-data-charts type="line" :opts="opts1" :chartData="chartData2"/>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<u-datetime-picker :show="show" v-model="value1" mode="date"></u-datetime-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import headersVue from '../../components/header/headers.vue';
|
||||||
|
import request from "@/utils/request";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data1: '',
|
||||||
|
data2: '',
|
||||||
|
data3: [],
|
||||||
|
data4: '',
|
||||||
|
data5: '',
|
||||||
|
range: ['2023-9-28', '2023-10-7'],
|
||||||
|
ranges: ['2023-9-28', '2023-10-7'],
|
||||||
|
//检测类型统计
|
||||||
|
skuList: [],
|
||||||
|
unit: 'week',
|
||||||
|
unit1: 'week',
|
||||||
|
unit2: 'week',
|
||||||
|
|
||||||
|
titles: "业务统计",
|
||||||
|
value1: Number(new Date()),
|
||||||
|
List: [],
|
||||||
|
show: false,
|
||||||
|
status: 'loading',
|
||||||
|
chartData: {},
|
||||||
|
chartData1: {},
|
||||||
|
chartData2: {},
|
||||||
|
//您可以通过修改 config-ucharts.js 文件中下标为 ['area'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
|
||||||
|
opts: {
|
||||||
|
color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
|
||||||
|
"#ea7ccc"
|
||||||
|
],
|
||||||
|
padding: [15, 15, 0, 15],
|
||||||
|
enableScroll: false,
|
||||||
|
legend: {},
|
||||||
|
xAxis: {
|
||||||
|
disableGrid: true,
|
||||||
|
labelCount: 4, //默认显示个数
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
gridType: "dash",
|
||||||
|
dashLength: 2
|
||||||
|
},
|
||||||
|
extra: {
|
||||||
|
area: {
|
||||||
|
type: "curve",
|
||||||
|
opacity: 0.2,
|
||||||
|
addLine: true,
|
||||||
|
width: 2,
|
||||||
|
gradient: true,
|
||||||
|
activeType: "hollow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
opts1: {
|
||||||
|
color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
|
||||||
|
"#ea7ccc"
|
||||||
|
],
|
||||||
|
padding: [15, 10, 0, 15],
|
||||||
|
enableScroll: false,
|
||||||
|
legend: {},
|
||||||
|
xAxis: {
|
||||||
|
disableGrid: true,
|
||||||
|
labelCount: 3, //默认显示个数
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
gridType: "dash",
|
||||||
|
dashLength: 2
|
||||||
|
},
|
||||||
|
extra: {
|
||||||
|
line: {
|
||||||
|
type: "straight",
|
||||||
|
width: 2,
|
||||||
|
activeType: "hollow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
opts2: {
|
||||||
|
color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
|
||||||
|
"#ea7ccc"
|
||||||
|
],
|
||||||
|
padding: [15, 15, 0, 15],
|
||||||
|
enableScroll: false,
|
||||||
|
legend: {},
|
||||||
|
xAxis: {
|
||||||
|
disableGrid: true,
|
||||||
|
labelCount: 1, //默认显示个数
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
gridType: "dash",
|
||||||
|
dashLength: 4
|
||||||
|
},
|
||||||
|
extra: {
|
||||||
|
area: {
|
||||||
|
type: "curve",
|
||||||
|
opacity: 0.2,
|
||||||
|
addLine: true,
|
||||||
|
width: 2,
|
||||||
|
gradient: true,
|
||||||
|
activeType: "hollow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
headersVue
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// this.getServerData();
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
range(newval) {
|
||||||
|
this.getfive()
|
||||||
|
},
|
||||||
|
ranges(newval) {
|
||||||
|
this.getfive()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.gettime()
|
||||||
|
this.partnerId = uni.getStorageSync('partnerId')
|
||||||
|
// this.getServerData();
|
||||||
|
this.getServerData1();
|
||||||
|
this.getServerData2();
|
||||||
|
this.getServerData3();
|
||||||
|
this.chartLineInspectionAmount()
|
||||||
|
this.chartLineInspectionNum()
|
||||||
|
this.getInspectionSku()
|
||||||
|
// this.sanxiang()
|
||||||
|
this.getfive()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getServerData() {
|
||||||
|
//模拟从服务器获取数据时的延时
|
||||||
|
setTimeout(() => {
|
||||||
|
//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
|
||||||
|
let res = {
|
||||||
|
categories: ["2018", "2019", "2020", "2021", "2022", "2023"],
|
||||||
|
series: [{
|
||||||
|
name: "近7天",
|
||||||
|
data: [35, 8, 25, 37, 4, 20]
|
||||||
|
},
|
||||||
|
],
|
||||||
|
xAxis: {
|
||||||
|
disableGrid: true, // 不绘制纵向网格(即默认绘制网格)
|
||||||
|
scrollShow: true, // 不显示滚动条
|
||||||
|
scrollColor: '#08B66D',
|
||||||
|
itemCount: 6, // x轴显示数据个数
|
||||||
|
fontColor: '#8C8C8C',
|
||||||
|
axisLineColor: "#828282",
|
||||||
|
gridColor: "#828282",
|
||||||
|
// x轴文字倾斜
|
||||||
|
rotateLabel: true
|
||||||
|
},
|
||||||
|
};
|
||||||
|
let res1 = {
|
||||||
|
categories: ["2018", "2019", "2020", "2021", "2022", "2023"],
|
||||||
|
series: [{
|
||||||
|
name: "总数量",
|
||||||
|
data: [35, 8, 25, 37, 4, 20]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "合格数",
|
||||||
|
data: [100, 80, 95, 150, 112, 132]
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
};
|
||||||
|
let res2 = {
|
||||||
|
categories: ["2018", "2019", "2020", "2021", "2022", "2023"],
|
||||||
|
series: [{
|
||||||
|
name: "小型汽车",
|
||||||
|
data: [35, 8, 25, 37, 4, 20]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "中型汽车",
|
||||||
|
data: [70, 40, 65, 100, 44, 68]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "大型汽车",
|
||||||
|
data: [100, 80, 95, 150, 112, 132]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
// this.chartData = JSON.parse(JSON.stringify(res));
|
||||||
|
// this.chartData1 = JSON.parse(JSON.stringify(res1));
|
||||||
|
// this.chartData2 = JSON.parse(JSON.stringify(res2));
|
||||||
|
}, 500);
|
||||||
|
},
|
||||||
|
goCustomerDetail(remark) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/statistics/statislist?id=1&remark=' + remark
|
||||||
|
})
|
||||||
|
},
|
||||||
|
gettime() {
|
||||||
|
// 获取当前时间
|
||||||
|
var now = new Date();
|
||||||
|
|
||||||
|
// 获取年份
|
||||||
|
var year = now.getFullYear();
|
||||||
|
|
||||||
|
// 获取月份
|
||||||
|
var month = now.getMonth() + 1; // 月份从 0 开始,需要加 1
|
||||||
|
if (month < 10) {
|
||||||
|
var month = "0" + month
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取日期
|
||||||
|
var date = now.getDate();
|
||||||
|
|
||||||
|
// 格式化时间
|
||||||
|
var currentTime = year + '-' + month + '-' + date
|
||||||
|
this.range[0] = currentTime
|
||||||
|
this.range[1] = currentTime
|
||||||
|
this.ranges[0] = currentTime
|
||||||
|
this.ranges[1] = currentTime
|
||||||
|
},
|
||||||
|
// 五条
|
||||||
|
async getfive() {
|
||||||
|
|
||||||
|
let data1 = {
|
||||||
|
startTime: this.range[0],
|
||||||
|
endTime: this.range[1]
|
||||||
|
}
|
||||||
|
let res1 = await request({
|
||||||
|
url: '/partnerOwn/partner/staticsTable1',
|
||||||
|
method: 'get',
|
||||||
|
params: data1
|
||||||
|
})
|
||||||
|
this.data1 = res1.data
|
||||||
|
// 2
|
||||||
|
let data2 = {
|
||||||
|
startTime: this.ranges[0],
|
||||||
|
endTime: this.ranges[1]
|
||||||
|
}
|
||||||
|
let res2 = await request({
|
||||||
|
url: '/partnerOwn/partner/staticsTable2',
|
||||||
|
method: 'get',
|
||||||
|
params: data2
|
||||||
|
})
|
||||||
|
this.data2 = res2.data
|
||||||
|
// 3
|
||||||
|
let data3 = {
|
||||||
|
startTime: '',
|
||||||
|
endTime: ''
|
||||||
|
}
|
||||||
|
let res3 = await request({
|
||||||
|
url: '/partnerOwn/partner/staticsTable3',
|
||||||
|
method: 'get',
|
||||||
|
params: data3
|
||||||
|
})
|
||||||
|
this.data3 = res3.data
|
||||||
|
// 4
|
||||||
|
let data4 = {
|
||||||
|
startTime: '',
|
||||||
|
endTime: ''
|
||||||
|
}
|
||||||
|
let res4 = await request({
|
||||||
|
url: '/partnerOwn/partner/staticsTable4',
|
||||||
|
method: 'get',
|
||||||
|
params: data4
|
||||||
|
})
|
||||||
|
this.data4 = res4.data
|
||||||
|
// 5
|
||||||
|
let data5 = {
|
||||||
|
startTime: '',
|
||||||
|
endTime: ''
|
||||||
|
}
|
||||||
|
let res5 = await request({
|
||||||
|
url: '/partnerOwn/partner/staticsTable5',
|
||||||
|
method: 'get',
|
||||||
|
params: data5
|
||||||
|
})
|
||||||
|
this.data5 = res5.data
|
||||||
|
|
||||||
|
},
|
||||||
|
//
|
||||||
|
goxiangqing(id) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/statistics/statislist?id=' + id
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goOrderList() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/index/ordermanage'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 检测类型统计
|
||||||
|
getInspectionSku() {
|
||||||
|
let data = {
|
||||||
|
// partnerId: this.partnerId,
|
||||||
|
// unit: this.unit,
|
||||||
|
}
|
||||||
|
request({
|
||||||
|
url: '/partnerOwn/partner/queryInspectionSkuList',
|
||||||
|
method: 'get',
|
||||||
|
// params: data
|
||||||
|
}).then((res) => {
|
||||||
|
this.skuList = res.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
maskClick(e) {
|
||||||
|
},
|
||||||
|
// 折线图
|
||||||
|
async chartLineInspectionAmount() {
|
||||||
|
let data = {
|
||||||
|
partnerId: this.partnerId,
|
||||||
|
unit: this.unit,
|
||||||
|
}
|
||||||
|
let rex = await request({
|
||||||
|
url: '/partnerOwn/partner/chartLineInspectionAmount',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
let res = rex.data
|
||||||
|
|
||||||
|
this.chartData = JSON.parse(JSON.stringify(res));
|
||||||
|
this.opts.xAxis.itemCount = res.categories.length //x轴数据的长度
|
||||||
|
|
||||||
|
},
|
||||||
|
// 折线图
|
||||||
|
async chartLineInspectionNum() {
|
||||||
|
let data = {
|
||||||
|
partnerId: this.partnerId,
|
||||||
|
unit: this.unit,
|
||||||
|
}
|
||||||
|
let rex = await request({
|
||||||
|
url: '/partnerOwn/partner/chartLineInspectionNum',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
let res = rex.data
|
||||||
|
|
||||||
|
this.chartData1 = JSON.parse(JSON.stringify(res));
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
gbindex(index, unit) {
|
||||||
|
this.qhindex = index
|
||||||
|
this.unit = unit
|
||||||
|
this.getServerData1()
|
||||||
|
},
|
||||||
|
gbindex1(index, unit) {
|
||||||
|
this.qhindex1 = index
|
||||||
|
this.unit1 = unit
|
||||||
|
this.getServerData2()
|
||||||
|
},
|
||||||
|
gbindex2(index, unit) {
|
||||||
|
this.qhindex2 = index
|
||||||
|
this.unit2 = unit
|
||||||
|
this.getServerData3()
|
||||||
|
},
|
||||||
|
getback() {
|
||||||
|
uni.navigateBack()
|
||||||
|
},
|
||||||
|
xinxuanze(name) {
|
||||||
|
this.name = name
|
||||||
|
this.xling = false
|
||||||
|
this.getServerData1()
|
||||||
|
|
||||||
|
},
|
||||||
|
async sanxiang() {
|
||||||
|
let res = await request({
|
||||||
|
url: '/partnerOwn/partner/statisticsInfo?partnerId=' + this.partnerId,
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
let nums = {
|
||||||
|
orderAmount: Math.trunc(res.data.orderAmount / 100),
|
||||||
|
orderNum: res.data.orderNum,
|
||||||
|
todayOrderAmount: res.data.todayOrderAmount / 100,
|
||||||
|
todayOrderNum: res.data.todayOrderNum,
|
||||||
|
workedNum: res.data.workedNum,
|
||||||
|
workingNum: res.data.workingNum
|
||||||
|
}
|
||||||
|
this.threenum = nums
|
||||||
|
},
|
||||||
|
async getstatisticsTop() {
|
||||||
|
let res = await request({
|
||||||
|
url: '/appInspection/order/statisticsTop',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
// this.chartData.series[0].data = res.data.list
|
||||||
|
},
|
||||||
|
async getstatisticsMid() {
|
||||||
|
let res = await request({
|
||||||
|
url: '/appInspection/order/statisticsMid',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
this.carlist = res.data
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
async getgetPartnerList() {
|
||||||
|
let data = {
|
||||||
|
partnerName: this.searchValue
|
||||||
|
}
|
||||||
|
let res = await request({
|
||||||
|
url: '/appInspection/order/getPartnerList',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
this.qubu = res.data
|
||||||
|
|
||||||
|
},
|
||||||
|
async getstatisticsZXT() {
|
||||||
|
let data = {
|
||||||
|
partnerId: this.partnerId,
|
||||||
|
type: this.value
|
||||||
|
}
|
||||||
|
let res = await request({
|
||||||
|
url: '/appInspection/order/statisticsZXT',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
async getstatisticsOrder() {
|
||||||
|
let res = await request({
|
||||||
|
url: '/appInspection/order/statisticsOrder',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
this.phb = res.data
|
||||||
|
|
||||||
|
},
|
||||||
|
// 123123
|
||||||
|
closexl(e) {
|
||||||
|
this.xling = false
|
||||||
|
|
||||||
|
},
|
||||||
|
openxl(e) {
|
||||||
|
},
|
||||||
|
|
||||||
|
// 金额
|
||||||
|
async getServerData1() {
|
||||||
|
let data = {
|
||||||
|
partnerId: this.partnerId,
|
||||||
|
unit: this.unit,
|
||||||
|
}
|
||||||
|
let rex = await request({
|
||||||
|
url: '/partnerOwn/partner/chartInfoAmount',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
let res = rex.data
|
||||||
|
|
||||||
|
this.chartData2 = JSON.parse(JSON.stringify(res));
|
||||||
|
this.opts1.xAxis.itemCount = res.categories.length
|
||||||
|
|
||||||
|
},
|
||||||
|
// 数量
|
||||||
|
async getServerData2() {
|
||||||
|
let data = {
|
||||||
|
partnerId: this.partnerId,
|
||||||
|
unit: this.unit1,
|
||||||
|
}
|
||||||
|
let rex = await request({
|
||||||
|
url: '/partnerOwn/partner/chartInfoNum',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
let res = rex.data
|
||||||
|
|
||||||
|
this.chartData2 = JSON.parse(JSON.stringify(res));
|
||||||
|
|
||||||
|
},
|
||||||
|
// 合格率
|
||||||
|
async getServerData3() {
|
||||||
|
let data = {
|
||||||
|
partnerId: this.partnerId,
|
||||||
|
unit: this.unit2,
|
||||||
|
}
|
||||||
|
let rex = await request({
|
||||||
|
url: '/partnerOwn/partner/chartInfoRatio',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
let res = rex.data
|
||||||
|
|
||||||
|
this.chartData3 = JSON.parse(JSON.stringify(res));
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.content {
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-top: 200rpx;
|
||||||
|
background: #f4f5f6;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 30rpx;
|
||||||
|
background: #f4f5f6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title_ {
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
margin: 30rpx 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title_d {
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
margin: 30rpx 0px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box_ {
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box_cont {
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 20rpx;
|
||||||
|
background: #F7F8FC;
|
||||||
|
border-radius: 0rpx 0rpx 12rpx 12rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sm_ {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #8D90A6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hang_ {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 15rpx 0px;
|
||||||
|
margin: 15rpx 0rpx;
|
||||||
|
border-bottom: 1px solid #E3ECFB;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box_top {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 20rpx;
|
||||||
|
background: #F7F8FC;
|
||||||
|
border-radius: 12rpx 12rpx 0rpx 0rpx;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.d_b {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.d_s {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_ {
|
||||||
|
width: 38rpx;
|
||||||
|
height: 38rpx;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.three_ {
|
||||||
|
width: 196rpx;
|
||||||
|
height: 116rpx;
|
||||||
|
background: #F7F8FC;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
margin-bottom: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.three_k {
|
||||||
|
width: 196rpx;
|
||||||
|
height: 116rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.four_ {
|
||||||
|
width: 142rpx;
|
||||||
|
height: 116rpx;
|
||||||
|
background: #F7F8FC;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
}
|
||||||
|
|
||||||
|
.four_t {
|
||||||
|
width: 142rpx;
|
||||||
|
height: 190rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 15rpx;
|
||||||
|
background: #F7F8FC;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text_ {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.l_ {
|
||||||
|
width: 33%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.n_ {
|
||||||
|
width: 33%;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.r_ {
|
||||||
|
width: 33%;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jt_0 {
|
||||||
|
width: 144rpx;
|
||||||
|
height: 48rpx;
|
||||||
|
background: #f6f0e5;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jt_1 {
|
||||||
|
width: 144rpx;
|
||||||
|
height: 48rpx;
|
||||||
|
background: #e6e6f9;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jt_2 {
|
||||||
|
width: 144rpx;
|
||||||
|
height: 48rpx;
|
||||||
|
background: #e2ebfb;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jt_3 {
|
||||||
|
width: 144rpx;
|
||||||
|
height: 48rpx;
|
||||||
|
background: #e4eff1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #101A3E;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.charts-box {
|
||||||
|
width: 100%;
|
||||||
|
height: 452rpx;
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,15 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<view class="c-top">
|
<headersVue :titles="titles" style="position: static !important;">
|
||||||
<view class="" @click="getback()">
|
<u-icon name="arrow-left" color="#fff" size="18"></u-icon>
|
||||||
<uni-icons type="left" size="18"></uni-icons>
|
</headersVue>
|
||||||
</view>
|
|
||||||
<view class="c-title" v-if="id == 1">客户来源统计</view>
|
|
||||||
<view class="c-title" v-if="id == 2">检测车型统计</view>
|
|
||||||
<view class="c-title" v-if="id == 3">代收款</view>
|
|
||||||
<view class="c-title" v-if="id == 4">检测类型统计</view>
|
|
||||||
<view class=""></view>
|
|
||||||
</view>
|
|
||||||
<view class="ail">
|
<view class="ail">
|
||||||
<view class="ahhh">
|
<view class="ahhh">
|
||||||
<uni-datetime-picker v-model="range" type="daterange" @maskClick="maskClick"/>
|
<uni-datetime-picker v-model="range" type="daterange" @maskClick="maskClick"/>
|
||||||
@ -117,14 +110,17 @@
|
|||||||
<script>
|
<script>
|
||||||
import config from '@/config'
|
import config from '@/config'
|
||||||
import request from '../../utils/request';
|
import request from '../../utils/request';
|
||||||
|
import headersVue from "@/components/header/headers.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
components: {headersVue},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
id: 1,
|
id: 1,
|
||||||
datas: [],
|
datas: [],
|
||||||
remark: '未知类别',
|
remark: '未知类别',
|
||||||
range: ['2023-9-28', '2023-10-7'],
|
range: ['2023-9-28', '2023-10-7'],
|
||||||
|
titles:''
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
@ -139,6 +135,9 @@ export default {
|
|||||||
if (this.id == 3) {
|
if (this.id == 3) {
|
||||||
this.getthree()
|
this.getthree()
|
||||||
}
|
}
|
||||||
|
if (this.id == 4) {
|
||||||
|
this.getfour()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
onLoad(option) {
|
onLoad(option) {
|
||||||
@ -147,15 +146,19 @@ export default {
|
|||||||
if (this.id == 1) {
|
if (this.id == 1) {
|
||||||
this.remark = option.remark
|
this.remark = option.remark
|
||||||
this.getone()
|
this.getone()
|
||||||
|
this.titles = '客户来源统计'
|
||||||
}
|
}
|
||||||
if (this.id == 2) {
|
if (this.id == 2) {
|
||||||
this.gettwo()
|
this.gettwo()
|
||||||
|
this.titles = '检测车型统计'
|
||||||
}
|
}
|
||||||
if (this.id == 3) {
|
if (this.id == 3) {
|
||||||
this.getthree()
|
this.getthree()
|
||||||
|
this.titles = '代收款'
|
||||||
}
|
}
|
||||||
if (this.id == 4) {
|
if (this.id == 4) {
|
||||||
this.getfour()
|
this.getfour()
|
||||||
|
this.titles = '检测类型统计'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
@ -254,7 +257,7 @@ export default {
|
|||||||
.content {
|
.content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100vh);
|
height: calc(100vh);
|
||||||
background-color: #F6F6F6;
|
background-color: #F7F8FC;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
// padding-top: 45px;
|
// padding-top: 45px;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
<!-- 底部 -->
|
<!-- 底部 -->
|
||||||
<view style="width: 100%; height: 50px;"></view>
|
<view style="width: 100%; height: 50px;"></view>
|
||||||
<tabBar :msg="msg "></tabBar>
|
<tabBar :msg="msg " v-if="showTabBar"></tabBar>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@ -79,6 +79,7 @@ export default {
|
|||||||
pageSize: 20,//一页多少张
|
pageSize: 20,//一页多少张
|
||||||
totalPages: 0,//总数
|
totalPages: 0,//总数
|
||||||
baseImageUrl: this.$baseImageUrl,
|
baseImageUrl: this.$baseImageUrl,
|
||||||
|
showTabBar:true,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
@ -101,6 +102,9 @@ export default {
|
|||||||
this.getlistindex()
|
this.getlistindex()
|
||||||
this.getIfSend()
|
this.getIfSend()
|
||||||
}
|
}
|
||||||
|
if (data.type && data.type === 'staff') {
|
||||||
|
this.showTabBar = false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
setIndex(num) {
|
setIndex(num) {
|
||||||
|
BIN
static/imgs/clone.png
Normal file
BIN
static/imgs/clone.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 857 B |
BIN
static/imgs/rq.png
Normal file
BIN
static/imgs/rq.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1018 B |
BIN
static/imgs/staffxiaoxi.png
Normal file
BIN
static/imgs/staffxiaoxi.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
Loading…
Reference in New Issue
Block a user