| | |
| | | VisitReason: [], |
| | | memberList: [], |
| | | uploadData: { |
| | | folder: 'member' |
| | | folder: 'member', |
| | | isFace: 0 |
| | | }, |
| | | startPickerOptions: { |
| | | disabledDate (time) { |
| | |
| | | <template> |
| | | <div :style="styleEditor"> |
| | | <Toolbar style="border-bottom: 1px solid #ccc" :editor="editor" :defaultConfig="toolbarConfig" :mode="mode" /> |
| | | <Editor style="max-height: 300px;min-height: 100px; overflow-y: hidden;" v-model="html" :defaultConfig="editorConfig" :mode="mode" |
| | | <Editor style="min-height: 80px; overflow-y: hidden;" v-model="html" :defaultConfig="editorConfig" :mode="mode" |
| | | @onCreated="onCreated" @onChange="onChange" /> |
| | | </div> |
| | | </template> |
| | |
| | | this.getCate() |
| | | }, |
| | | methods: { |
| | | handleSelectionChange(e) { |
| | | this.searchForm.ids = e.map(i => i.id).join(',') |
| | | }, |
| | | // handleSelectionChange(e) { |
| | | // this.searchForm.ids = e.map(i => i.id).join(',') |
| | | // }, |
| | | changeSel(e) { |
| | | console.log(e) |
| | | if (e && e.length == 1) { |
| | |
| | | <script> |
| | | import { wxAuthorize, refreshToken } from '@/api' |
| | | import { wxAuthorize, refreshToken, app_url } from '@/api' |
| | | export default { |
| | | onLaunch: function () { |
| | | |
| | | window.addEventListener("popstate", (event) => { |
| | | const path = this.$route.fullPath |
| | | if(path == '/pages/login/login' || path == '/'){ |
| | | window.location.href = app_url |
| | | } |
| | | }) |
| | | }, |
| | | onShow: function () { |
| | | console.log('App Show') |
| | |
| | | method: 'get' |
| | | }) |
| | | } |
| | | export const saveHkUserOpenid = () => { |
| | | return http({ |
| | | url: 'visitsAdmin/cloudService/business/hksync/saveHkUserOpenid', |
| | | method: 'post' |
| | | }) |
| | | } |
| | | // 刷新token |
| | | export const refreshToken = () => { |
| | | return http({ |
| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="title_wrap"> |
| | | <view class="name">{{ driverInfo.realname }},欢迎登录~</view> |
| | | <view class="btn" @click="loginOut">退出登录</view> |
| | | </view> |
| | | <!-- --> |
| | | <view class="banner_wrap"> |
| | | <view class="h1">安泰物流智慧园区</view> |
| | | <view class="h2">物流车专区</view> |
| | | <image class="banner" src="../../static/driver/wuliuche_banner@2x.png" mode="widthFix"></image> |
| | | </view> |
| | | <!-- --> |
| | | <view v-if="taskList && taskList.length > 0" class="task_list"> |
| | | <swiper circular class="task_swiper"> |
| | | <swiper-item v-for="item in taskList" :key="item.id" @click="taskClick(item)"> |
| | | <view class="item"> |
| | | <view class="head"> |
| | | <view class="name">{{ item.contractNum ? '合同单' : '运输单' }}{{ item.billCode || item.contractNum}}</view> |
| | | <view class="status"> |
| | | <view class="text" v-if="item.status == 0">请确认任务</view> |
| | | <view class="text" v-if="item.status == 1">请于{{item.arriveDate.slice(5,11)}}现场签到</view> |
| | | <view class="text" v-if="item.status == 2">前方排队:{{item.lineUpNum}}辆</view> |
| | | <view class="text" v-if="item.status == 3">请入园进入等待区</view> |
| | | <view class="text" v-if="item.status == 4">请入园停靠{{item.platformName}}作业</view> |
| | | <view class="text" v-if="item.status == 5">{{item.platformName}}作业中</view> |
| | | <view class="text" v-if="item.status == 6">作业已完成</view> |
| | | <view class="text" v-if="item.status == 7">转移中</view> |
| | | <view class="text red" v-if="item.status == 8">异常挂起</view> |
| | | <view class="time" v-if="item.waitTime && item.status == 2">{{ item.waitTime }}</view> |
| | | <view class="time" v-if="item.finishTimeStr && item.status == 5">预计完成时间:{{ item.finishTimeStr }}</view> |
| | | </view> |
| | | </view> |
| | | <view class="content"> |
| | | <view class="info"> |
| | | <view class="plate"> |
| | | <image src="@/static/driver/wuliu_ic_car@2x.png" class="icon" mode=""></image> |
| | | <text>{{ item.carCodeFront }}</text> |
| | | </view> |
| | | <view class="plate"> |
| | | <image src="@/static/driver/wuliu_ic_huowu@2x.png" class="icon" mode=""></image> |
| | | <text>{{ item.totalNum }}万支</text> |
| | | </view> |
| | | </view> |
| | | <view class="sub"> |
| | | <view class="time" v-if="item.arriveDate && item.contractNum">{{ item.arriveDate.slice(5) }}</view> |
| | | <view class="time" v-if="item.type != 4 && item.platformWmsJob && item.platformWmsJob.ioCreatedate">{{ item.platformWmsJob.ioCreatedate.slice(5, 19) }}</view> |
| | | <view v-if="item.status == 0" class="sub_btn">确认任务</view> |
| | | <view v-if="item.status == 1" class="sub_btn">立即签到</view> |
| | | <view v-if="item.status == 2" class="sub_btn" @click.stop="handleQueue(item)">查看排队</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </swiper-item> |
| | | </swiper> |
| | | </view> |
| | | <!-- --> |
| | | <view class="title_wrap"><view class="name">业务办理</view></view> |
| | | <view class="container1"> |
| | | <view class="left"> |
| | | <view class="img_wrap img1" @click="$jump('/pages/driver/notice')"> |
| | | <image src="@/static/driver/wuliu_ic_ruyuanyuyue@2x.png" class="img"></image> |
| | | <view class="h1">入园须知</view> |
| | | <view class="h2">RESERVATION</view> |
| | | </view> |
| | | <view class="img_wrap img2" @click="$jump('/pages/driver/reservedGuide?str=bookingTips')"> |
| | | <image src="@/static/driver/wuliu_ic_zhinan@2x.png" class="img"></image> |
| | | <view class="h1">预约指南</view> |
| | | <view class="h2">APPOINTMENT GUIDE</view> |
| | | </view> |
| | | </view> |
| | | <view class="right"> |
| | | <view class="img_wrap img2" @click="$jump('/pages/driver/reservedRecord')"> |
| | | <image src="@/static/driver/wuliu_ic_yuyuejilu@2x.png" class="img"></image> |
| | | <view class="h1">预约记录</view> |
| | | <view class="h2">APPOINTMENT RECORD</view> |
| | | </view> |
| | | <view class="img_wrap img2" @click="$jump('/pages/driver/queueUp')"> |
| | | <image src="@/static/driver/wuliu_ic_paidui@2x.png" class="img"></image> |
| | | <view class="h1">月台排队情况</view> |
| | | <view class="h2">HIDDEN DANGER</view> |
| | | </view> |
| | | <view class="img_wrap img2" @click="$jump('/pages/driver/reservedGuide?str=reservationMap')"> |
| | | <image src="@/static/driver/wuliu_ic_daolan@2x.png" class="img"></image> |
| | | <view class="h1">园区导览图</view> |
| | | <view class="h2">GUIDE MAP</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- --> |
| | | <view class="copyright"> |
| | | <image src="@/static/logo_s@2x.png" class="mr6" mode="widthFix" /> |
| | | <text>安徽安泰物流有限责任公司版权所有</text> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { logoutPost, driverHomeData } from '@/api'; |
| | | export default { |
| | | data() { |
| | | return { |
| | | taskList: [], |
| | | driverInfo: uni.getStorageSync('driverInfo'), |
| | | |
| | | }; |
| | | }, |
| | | onShow() { |
| | | this.initData(); |
| | | }, |
| | | methods: { |
| | | initData() { |
| | | driverHomeData().then(res => { |
| | | if (res.code == 200) { |
| | | uni.setStorageSync('driverGuide', { |
| | | bookingTips: res.data.bookingTips, |
| | | reservationMap: res.data.reservationMap, |
| | | signDistance: res.data.signDistance |
| | | }); |
| | | this.taskList = res.data.platformJobList || [] |
| | | } |
| | | }); |
| | | }, |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="title_wrap">
|
| | | <view class="name">{{ driverInfo.realname }},欢迎登录~</view>
|
| | | <view class="btn" @click="loginOut">退出登录</view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="banner_wrap">
|
| | | <view class="h1">安泰物流智慧园区</view>
|
| | | <view class="h2">物流车专区</view>
|
| | | <image class="banner" src="../../static/driver/wuliuche_banner@2x.png" mode="widthFix"></image>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view v-if="taskList && taskList.length > 0" class="task_list">
|
| | | <swiper circular class="task_swiper">
|
| | | <swiper-item v-for="item in taskList" :key="item.id" @click="taskClick(item)">
|
| | | <view class="item">
|
| | | <view class="head">
|
| | | <view class="name">{{ item.contractNum ? '合同单' : '运输单' }}{{ item.billCode || item.contractNum }}</view>
|
| | | <view class="status">
|
| | | <view class="text" v-if="item.status == 0">请确认任务</view>
|
| | | <view class="text" v-if="item.status == 1">请于{{ item.arriveDate.slice(5, 11) }}现场签到</view>
|
| | | <view class="text" v-if="item.status == 2">前方排队:{{ item.lineUpNum }}辆</view>
|
| | | <view class="text" v-if="item.status == 3">请入园进入等待区</view>
|
| | | <view class="text" v-if="item.status == 4">请入园停靠{{ item.platformName }}作业</view>
|
| | | <view class="text" v-if="item.status == 5">{{ item.platformName }}作业中</view>
|
| | | <view class="text" v-if="item.status == 6">作业已完成</view>
|
| | | <view class="text" v-if="item.status == 7">转移中</view>
|
| | | <view class="text red" v-if="item.status == 8">异常挂起</view>
|
| | | <view class="time" v-if="item.waitTime && item.status == 2">{{ item.waitTime }}</view>
|
| | | <view class="time" v-if="item.finishTimeStr && item.status == 5">预计完成时间:{{ item.finishTimeStr }}</view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="content">
|
| | | <view class="info">
|
| | | <view class="plate">
|
| | | <image src="@/static/driver/wuliu_ic_car@2x.png" class="icon" mode=""></image>
|
| | | <text>{{ item.carCodeFront }}</text>
|
| | | </view>
|
| | | <view class="plate">
|
| | | <image src="@/static/driver/wuliu_ic_huowu@2x.png" class="icon" mode=""></image>
|
| | | <text>{{ item.totalNum }}万支</text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="sub">
|
| | | <view class="time" v-if="item.arriveDate && item.contractNum">{{ item.arriveDate.slice(5) }}</view>
|
| | | <view class="time" v-if="item.type != 4 && item.platformWmsJob && item.platformWmsJob.ioCreatedate">
|
| | | {{ item.platformWmsJob.ioCreatedate.slice(5, 19) }}</view>
|
| | | <view v-if="item.status == 0" class="sub_btn">确认任务</view>
|
| | | <view v-if="item.status == 1" class="sub_btn">立即签到</view>
|
| | | <view v-if="item.status == 2" class="sub_btn" @click.stop="handleQueue(item)">查看排队</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </swiper-item>
|
| | | </swiper>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="title_wrap">
|
| | | <view class="name">业务办理</view>
|
| | | </view>
|
| | | <view class="container1">
|
| | | <view class="left">
|
| | | <view class="img_wrap img1" @click="jump('/pages/driver/notice')">
|
| | | <image src="@/static/driver/wuliu_ic_ruyuanyuyue@2x.png" class="img"></image>
|
| | | <view class="h1">入园须知</view>
|
| | | <view class="h2">RESERVATION</view>
|
| | | </view>
|
| | | <view class="img_wrap img2" @click="jump('/pages/driver/reservedGuide?str=bookingTips')">
|
| | | <image src="@/static/driver/wuliu_ic_zhinan@2x.png" class="img"></image>
|
| | | <view class="h1">预约指南</view>
|
| | | <view class="h2">APPOINTMENT GUIDE</view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="right">
|
| | | <view class="img_wrap img2" @click="jump('/pages/driver/reservedRecord')">
|
| | | <image src="@/static/driver/wuliu_ic_yuyuejilu@2x.png" class="img"></image>
|
| | | <view class="h1">预约记录</view>
|
| | | <view class="h2">APPOINTMENT RECORD</view>
|
| | | </view>
|
| | | <view class="img_wrap img2" @click="jump('/pages/driver/queueUp')">
|
| | | <image src="@/static/driver/wuliu_ic_paidui@2x.png" class="img"></image>
|
| | | <view class="h1">月台排队情况</view>
|
| | | <view class="h2">HIDDEN DANGER</view>
|
| | | </view>
|
| | | <view class="img_wrap img2" @click="jump('/pages/driver/reservedGuide?str=reservationMap')">
|
| | | <image src="@/static/driver/wuliu_ic_daolan@2x.png" class="img"></image>
|
| | | <view class="h1">园区导览图</view>
|
| | | <view class="h2">GUIDE MAP</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="copyright">
|
| | | <image src="@/static/logo_s@2x.png" class="mr6" mode="widthFix" />
|
| | | <text>安徽安泰物流有限责任公司版权所有</text>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import {
|
| | | logoutPost,
|
| | | driverHomeData,
|
| | | app_url
|
| | | } from '@/api'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | taskList: [],
|
| | | driverInfo: uni.getStorageSync('driverInfo'),
|
| | |
|
| | | }
|
| | | },
|
| | | onShow() {
|
| | | this.initData()
|
| | | },
|
| | |
|
| | | methods: {
|
| | | jump(path) {
|
| | | this.$jump(path)
|
| | | },
|
| | | initData() {
|
| | | driverHomeData().then(res => {
|
| | | if (res.code == 200) {
|
| | | uni.setStorageSync('driverGuide', {
|
| | | bookingTips: res.data.bookingTips,
|
| | | reservationMap: res.data.reservationMap,
|
| | | signDistance: res.data.signDistance
|
| | | })
|
| | | this.taskList = res.data.platformJobList || []
|
| | | }
|
| | | })
|
| | | },
|
| | | loginOut() { |
| | | this.$store.commit('empty'); |
| | | logoutPost(); |
| | | uni.redirectTo({ |
| | | url: '/pages/driver/login' |
| | | }); |
| | | }, |
| | | taskClick(item) { |
| | | const status = item.status |
| | | console.log(item); |
| | | if(status == 0){ |
| | | uni.navigateTo({url: '/pages/driver/taskConfirm?id=' + item.id}); |
| | | } |
| | | // else if(status == 2){ |
| | | // uni.navigateTo({url:'/pages/driver/queueUp?jobId=' + item.id}) |
| | | // } |
| | | else{ |
| | | uni.navigateTo({url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}`}); |
| | | } |
| | | }, |
| | | handleTask(item) { |
| | | uni.navigateTo({ |
| | | url: '/pages/driver/taskConfirm?id=' + item.id |
| | | }); |
| | | }, |
| | | handleSign(item) { |
| | | uni.navigateTo({ |
| | | url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}` |
| | | }); |
| | | }, |
| | | handleQueue(item) { |
| | | uni.navigateTo({ |
| | | url:'/pages/driver/queueUp?jobId=' + item.id |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | .title_wrap { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | margin-bottom: 24rpx; |
| | | padding-top: 10rpx; |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 34rpx; |
| | | color: #222222; |
| | | } |
| | | .btn { |
| | | width: 144rpx; |
| | | height: 56rpx; |
| | | border-radius: 36rpx; |
| | | border: 1rpx solid $uni-color-primary; |
| | | font-size: 26rpx; |
| | | color: $uni-color-primary; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | } |
| | | .main_app { |
| | | padding-top: 12rpx; |
| | | } |
| | | .banner_wrap { |
| | | padding: 54rpx 44rpx; |
| | | color: #fff; |
| | | position: relative; |
| | | width: 688rpx; |
| | | height: 270rpx; |
| | | margin-bottom: 28rpx; |
| | | .h1 { |
| | | font-weight: bold; |
| | | line-height: 66rpx; |
| | | font-size: 44rpx; |
| | | margin-bottom: 14rpx; |
| | | } |
| | | .h2 { |
| | | font-weight: 600; |
| | | font-size: 28rpx; |
| | | width: 192rpx; |
| | | color: $uni-color-primary; |
| | | height: 48rpx; |
| | | line-height: 48rpx; |
| | | text-align: center; |
| | | background: #ffffff; |
| | | box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(39, 155, 170, 0.31); |
| | | border-radius: 24rpx; |
| | | } |
| | | .banner { |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | z-index: -1; |
| | | } |
| | | } |
| | | .container1 { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | view { |
| | | width: 336rpx; |
| | | } |
| | | .left { |
| | | margin-right: 18rpx; |
| | | } |
| | | .img_wrap { |
| | | position: relative; |
| | | padding: 24rpx 0rpx 0 28rpx; |
| | | border-radius: 8rpx; |
| | | overflow: hidden; |
| | | .h1 { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | line-height: 48rpx; |
| | | margin-bottom: 4rpx; |
| | | } |
| | | .h2 { |
| | | font-size: 22rpx; |
| | | color: #7b9da1; |
| | | line-height: 34rpx; |
| | | } |
| | | .img { |
| | | width: 100%; |
| | | height: 100%; |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | z-index: -1; |
| | | } |
| | | } |
| | | .img1 { |
| | | width: 336rpx; |
| | | height: 296rpx; |
| | | margin-bottom: 16rpx; |
| | | } |
| | | .img2 { |
| | | width: 336rpx; |
| | | height: 140rpx; |
| | | margin-bottom: 16rpx; |
| | | } |
| | | } |
| | | .task_list { |
| | | margin-bottom: 0rpx; |
| | | .task_swiper { |
| | | padding: 12rpx 10rpx; |
| | | height: 340rpx; |
| | | width: 730rpx; |
| | | margin-left: -20rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | .item { |
| | | background: #ffffff; |
| | | box-shadow: 0rpx 6rpx 24rpx 0rpx rgba(39, 155, 170, 0.32); |
| | | border-radius: 16rpx; |
| | | height: 280rpx; |
| | | width: 98%; |
| | | margin-left: 1%; |
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%); |
| | | padding: 0rpx 30rpx; |
| | | height: 92rpx; |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 36rpx; |
| | | color: #222222; |
| | | } |
| | | .status { |
| | | color: $uni-color-primary; |
| | | font-weight: 600; |
| | | text-align: right; |
| | | .time { |
| | | font-size: 24rpx; |
| | | font-weight: 360; |
| | | } |
| | | } |
| | | } |
| | | .content { |
| | | height: 180rpx; |
| | | .info { |
| | | display: flex; |
| | | padding: 24rpx 30rpx; |
| | | .plate { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | .icon { |
| | | width: 26rpx; |
| | | height: 26rpx; |
| | | margin-right: 10rpx; |
| | | } |
| | | } |
| | | } |
| | | .sub { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 68rpx; |
| | | padding: 0 30rpx 0; |
| | | .time { |
| | | font-size: 26rpx; |
| | | color: #999999; |
| | | } |
| | | .sub_btn { |
| | | height: 68rpx; |
| | | line-height: 68rpx; |
| | | padding: 0 34rpx; |
| | | color: #ffffff; |
| | | background: $uni-color-primary; |
| | | box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(39, 155, 170, 0.4); |
| | | border-radius: 40rpx; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .copyright { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-top: 44rpx; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | image { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | } |
| | | } |
| | | </style> |
| | | logoutPost()
|
| | | this.$store.commit('empty')
|
| | | window.location.href = app_url
|
| | | },
|
| | | taskClick(item) {
|
| | | const status = item.status
|
| | | if (status == 0) {
|
| | | uni.navigateTo({
|
| | | url: '/pages/driver/taskConfirm?id=' + item.id
|
| | | })
|
| | | }
|
| | | // else if(status == 2){
|
| | | // uni.navigateTo({url:'/pages/driver/queueUp?jobId=' + item.id})
|
| | | // }
|
| | | else {
|
| | | uni.navigateTo({
|
| | | url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}`
|
| | | })
|
| | | }
|
| | | },
|
| | | handleTask(item) {
|
| | | uni.navigateTo({
|
| | | url: '/pages/driver/taskConfirm?id=' + item.id
|
| | | })
|
| | | },
|
| | | handleSign(item) {
|
| | | uni.navigateTo({
|
| | | url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}`
|
| | | })
|
| | | },
|
| | | handleQueue(item) {
|
| | | uni.navigateTo({
|
| | | url: '/pages/driver/queueUp?jobId=' + item.id
|
| | | })
|
| | | },
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss">
|
| | | .title_wrap {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | | margin-bottom: 24rpx;
|
| | | padding-top: 10rpx;
|
| | |
|
| | | .name {
|
| | | font-weight: 600;
|
| | | font-size: 34rpx;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .btn {
|
| | | width: 144rpx;
|
| | | height: 56rpx;
|
| | | border-radius: 36rpx;
|
| | | border: 1rpx solid $uni-color-primary;
|
| | | font-size: 26rpx;
|
| | | color: $uni-color-primary;
|
| | | display: flex;
|
| | | justify-content: center;
|
| | | align-items: center;
|
| | | }
|
| | | }
|
| | |
|
| | | .main_app {
|
| | | padding-top: 12rpx;
|
| | | }
|
| | |
|
| | | .banner_wrap {
|
| | | padding: 54rpx 44rpx;
|
| | | color: #fff;
|
| | | position: relative;
|
| | | width: 688rpx;
|
| | | height: 270rpx;
|
| | | margin-bottom: 28rpx;
|
| | |
|
| | | .h1 {
|
| | | font-weight: bold;
|
| | | line-height: 66rpx;
|
| | | font-size: 44rpx;
|
| | | margin-bottom: 14rpx;
|
| | | }
|
| | |
|
| | | .h2 {
|
| | | font-weight: 600;
|
| | | font-size: 28rpx;
|
| | | width: 192rpx;
|
| | | color: $uni-color-primary;
|
| | | height: 48rpx;
|
| | | line-height: 48rpx;
|
| | | text-align: center;
|
| | | background: #ffffff;
|
| | | box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(39, 155, 170, 0.31);
|
| | | border-radius: 24rpx;
|
| | | }
|
| | |
|
| | | .banner {
|
| | | position: absolute;
|
| | | top: 0;
|
| | | left: 0;
|
| | | width: 100%;
|
| | | z-index: -1;
|
| | | }
|
| | | }
|
| | |
|
| | | .container1 {
|
| | | display: flex;
|
| | | flex-wrap: wrap;
|
| | |
|
| | | view {
|
| | | width: 336rpx;
|
| | | }
|
| | |
|
| | | .left {
|
| | | margin-right: 18rpx;
|
| | | }
|
| | |
|
| | | .img_wrap {
|
| | | position: relative;
|
| | | padding: 24rpx 0rpx 0 28rpx;
|
| | | border-radius: 8rpx;
|
| | | overflow: hidden;
|
| | |
|
| | | .h1 {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | line-height: 48rpx;
|
| | | margin-bottom: 4rpx;
|
| | | }
|
| | |
|
| | | .h2 {
|
| | | font-size: 22rpx;
|
| | | color: #7b9da1;
|
| | | line-height: 34rpx;
|
| | | }
|
| | |
|
| | | .img {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | position: absolute;
|
| | | top: 0;
|
| | | left: 0;
|
| | | z-index: -1;
|
| | | }
|
| | | }
|
| | |
|
| | | .img1 {
|
| | | width: 336rpx;
|
| | | height: 296rpx;
|
| | | margin-bottom: 16rpx;
|
| | | }
|
| | |
|
| | | .img2 {
|
| | | width: 336rpx;
|
| | | height: 140rpx;
|
| | | margin-bottom: 16rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .task_list {
|
| | | margin-bottom: 0rpx;
|
| | |
|
| | | .task_swiper {
|
| | | padding: 12rpx 10rpx;
|
| | | height: 340rpx;
|
| | | width: 730rpx;
|
| | | margin-left: -20rpx;
|
| | | box-sizing: border-box;
|
| | | }
|
| | |
|
| | | .item {
|
| | | background: #ffffff;
|
| | | box-shadow: 0rpx 6rpx 24rpx 0rpx rgba(39, 155, 170, 0.32);
|
| | | border-radius: 16rpx;
|
| | | height: 280rpx;
|
| | | width: 98%;
|
| | | margin-left: 1%;
|
| | |
|
| | | .head {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | | background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%);
|
| | | padding: 0rpx 30rpx;
|
| | | height: 92rpx;
|
| | |
|
| | | .name {
|
| | | font-weight: 600;
|
| | | font-size: 36rpx;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .status {
|
| | | color: $uni-color-primary;
|
| | | font-weight: 600;
|
| | | text-align: right;
|
| | |
|
| | | .time {
|
| | | font-size: 24rpx;
|
| | | font-weight: 360;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .content {
|
| | | height: 180rpx;
|
| | |
|
| | | .info {
|
| | | display: flex;
|
| | | padding: 24rpx 30rpx;
|
| | |
|
| | | .plate {
|
| | | flex: 1;
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | .icon {
|
| | | width: 26rpx;
|
| | | height: 26rpx;
|
| | | margin-right: 10rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .sub {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | | height: 68rpx;
|
| | | padding: 0 30rpx 0;
|
| | |
|
| | | .time {
|
| | | font-size: 26rpx;
|
| | | color: #999999;
|
| | | }
|
| | |
|
| | | .sub_btn {
|
| | | height: 68rpx;
|
| | | line-height: 68rpx;
|
| | | padding: 0 34rpx;
|
| | | color: #ffffff;
|
| | | background: $uni-color-primary;
|
| | | box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(39, 155, 170, 0.4);
|
| | | border-radius: 40rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .copyright {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | margin-top: 44rpx;
|
| | | font-size: 24rpx;
|
| | | color: #666666;
|
| | |
|
| | | image {
|
| | | width: 40rpx;
|
| | | height: 40rpx;
|
| | | }
|
| | | }
|
| | | </style> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { wxAuthorize } from '@/api' |
| | | import { wxAuthorize, app_url } from '@/api' |
| | | export default { |
| | | |
| | | data() { |
| | |
| | | |
| | | } |
| | | }, |
| | | onBackPress(options) { |
| | | uni.redirectTo({ |
| | | url: '/pages/login/login' |
| | | }) |
| | | return true |
| | | }, |
| | | onLoad() { |
| | | |
| | | |
| | | }, |
| | | methods: { |
| | | jump(type) { |
| | |
| | | display: flex; |
| | | flex-direction: column; |
| | | position: relative; |
| | | |
| | | .banner_bg { |
| | | position: absolute; |
| | | top: 0; |
| | |
| | | width: 100%; |
| | | z-index: -1; |
| | | } |
| | | |
| | | .h2 { |
| | | font-size: 28rpx; |
| | | font-family: SourceHanSansSC, SourceHanSansSC; |
| | |
| | | color: #ffffff; |
| | | margin-top: 14rpx; |
| | | } |
| | | |
| | | text { |
| | | &:first-child { |
| | | font-size: 44rpx; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .main_title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin: 40rpx 0 32rpx; |
| | | } |
| | | |
| | | .box_list { |
| | | width: 100%; |
| | | display: flex; |
| | |
| | | .box_list_item { |
| | | width: 100%; |
| | | margin-bottom: 20rpx; |
| | | |
| | | image { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .copyright { |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | margin-top: 84rpx; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | |
| | | image { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <image class="login_bg" src="@/static/login_bg@2x.png" mode="widthFix" />
|
| | | <image class="login_bg" src="@/static/staff/shenfen_bg@2x.png" mode="widthFix" />
|
| | | <view class="h1">安泰物流智慧园区</view>
|
| | | <view class="placeholder6 place">请选择您的身份</view>
|
| | | <view class="item" @click="userAuth(1)">
|
| | |
| | |
|
| | | <script>
|
| | | import {
|
| | | wxAuthorizea, |
| | | wxAuthorizea,
|
| | | getUserInfo
|
| | | } from '@/api'
|
| | | import {
|
| | |
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | code: '091RVIkl2SZXDe4WySll2pAL8D1RVIkb'
|
| | | code: ''
|
| | | }
|
| | | },
|
| | | onLoad() {
|
| | | onShow() {
|
| | | var that = this
|
| | | let url = window.location.href
|
| | | let url = 'https://atwl.ahzyssl.com/zhyq_h5/#/'
|
| | | let code = ''
|
| | | if (url.indexOf('code=') !== -1) {
|
| | | if (window.location.href.indexOf('code=') !== -1 || this.code) {
|
| | |
|
| | | } else { |
| | | return
|
| | | let url = window.location.href
|
| | | } else {
|
| | | // let url = window.location.href
|
| | | const appID = 'wx173e6caf5abc718a'
|
| | | let uri = encodeURIComponent(url)
|
| | | let authURL =
|
| | |
| | | let url = window.location.href
|
| | | let code = ''
|
| | | if (url.indexOf('code=') !== -1 || this.code) {
|
| | | // const query = url.split('?')
|
| | | // for (const q of query) {
|
| | | // if (q.indexOf('code=') !== -1) {
|
| | | // let statusIndex = q.indexOf('&state') - 1
|
| | | // code = q.substring(q.indexOf('code=') + 5, statusIndex)
|
| | | // }
|
| | | // }
|
| | | const query = url.split('?')
|
| | | for (const q of query) {
|
| | | if (q.indexOf('code=') !== -1) {
|
| | | let statusIndex = q.indexOf('&state')
|
| | | code = q.substring(q.indexOf('code=') + 5, statusIndex)
|
| | | }
|
| | | }
|
| | | wxAuthorizea({
|
| | | code: code || this.code,
|
| | | source: source
|
| | |
| | | that.$store.commit('setOpenId', res.data.openid)
|
| | | if (res.data.member) {
|
| | | that.$store.commit('setMember', res.data.member)
|
| | | } |
| | | if (res.data.token) { |
| | | that.$store.commit('setToken', res.data.token) |
| | | getUserInfo().then(ress => { |
| | | that.$store.commit('setUserInfo', ress.data) |
| | | }) |
| | | }
|
| | | let flag = res.data.member && res.data.member.id
|
| | | setTimeout(() => { |
| | | if (source == 0) { |
| | | this.driverLogin(flag) |
| | | } else if (source == 2) { |
| | | this.staffLogin(flag) |
| | | } else { |
| | | this.jump('/pages/index/index') |
| | | } |
| | | setTimeout(() => {
|
| | | if (source == 0) {
|
| | | if (res.data.token) {
|
| | | that.$store.commit('setToken', res.data.token)
|
| | | getUserInfo().then(ress => {
|
| | | that.$store.commit('setDriverInfo', ress.data)
|
| | | })
|
| | | }
|
| | | this.driverLogin(flag)
|
| | | } else if (source == 2) {
|
| | | if (res.data.token) {
|
| | | that.$store.commit('setToken', res.data.token)
|
| | | getUserInfo().then(ress => {
|
| | | that.$store.commit('setUserInfo', ress.data)
|
| | | })
|
| | | }
|
| | | this.staffLogin(flag)
|
| | | } else {
|
| | | this.jump('/pages/index/index')
|
| | | }
|
| | | }, 300)
|
| | | }
|
| | | })
|
| | | }
|
| | | // }
|
| | | // 刷新token
|
| | | // setTimeout(() => {
|
| | | // refreshToken().then(res => {
|
| | | // if (res.code && res.code === 200) {
|
| | | // this.$store.commit('setToken', res.data)
|
| | | // }
|
| | | // })
|
| | | // }, 3000)
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | |
|
| | | <style lang="scss">
|
| | | .main_app {
|
| | | width: 100vw; |
| | | box-sizing: border-box; |
| | | overflow: hidden; |
| | | width: 100vw;
|
| | | box-sizing: border-box;
|
| | | overflow: hidden;
|
| | | margin: 0;
|
| | | height: 100vh;
|
| | | padding-top: 80rpx;
|
| | |
| | |
|
| | | .login_bg {
|
| | | position: absolute;
|
| | | top: 0; |
| | | top: 0;
|
| | | left: 0;
|
| | | width: 100%;
|
| | | z-index: -1;
|
| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="title_wrap"> |
| | | <view class="name" v-if="userInfo.realname" |
| | | >{{ userInfo.realname || "" }},欢迎登录~</view |
| | | > |
| | | <view class="name" v-else>请先登录</view> |
| | | <view class="btn" @click="loginOut">{{ |
| | | userInfo.realname ? "退出登录" : "去登录" |
| | | }}</view> |
| | | </view> |
| | | <view class="banner_wrap"> |
| | | <view class="h1">安泰物流</view> |
| | | <view class="h2">安全重于泰山 服务追求卓越</view> |
| | | <image |
| | | class="banner" |
| | | src="../../static/banner.jpg" |
| | | mode="widthFix" |
| | | ></image> |
| | | </view> |
| | | <view v-if="list1.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap"><view class="name">业务办理</view></view> |
| | | <view class="container1"> |
| | | <view class="list"> |
| | | <block v-for="item in list1" :key="item.name"> |
| | | <view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)"> |
| | | <image :src="item.img" class="icon" /> |
| | | <view class="name">{{item.name}}</view> |
| | | </view> |
| | | </block> |
| | | </view> |
| | | <!-- <view class="left"> |
| | | <view class="img_wrap img1" @click="jump('/pages/staff/visitorReport')"> |
| | | <image src="@/static/staff/ic_fangkebaobei.png" class="img"></image> |
| | | <view class="h1">访客报备</view> |
| | | <view class="h2">VISITOR REPORTING</view> |
| | | </view> |
| | | <view class="img_wrap img2" @click="jump('/pages/staff/meetingSub')"> |
| | | <image src="@/static/staff/ic_yuyuehuiyishi.png" class="img"></image> |
| | | <view class="h1">预约会议室</view> |
| | | <view class="h2">BOOK A MEETING ROOM</view> |
| | | </view> |
| | | </view> |
| | | <view class="right"> |
| | | <view class="img_wrap img2" @click="jump('/pages/staff/snapshot')"> |
| | | <image src="@/static/staff/ic_yinhuansuipai.png" class="img"></image> |
| | | <view class="h1">隐患随手拍</view> |
| | | <view class="h2">HIDDEN DANGER</view> |
| | | </view> |
| | | <view class="img_wrap img2" @click="jump('/pages/staff/vehicle/index')"> |
| | | <image |
| | | src="@/static/staff/ic_yongcheshenqing.png" |
| | | class="img" |
| | | ></image> |
| | | <view class="h1">用车申请</view> |
| | | <view class="h2">VEHICLE APPLICATION</view> |
| | | </view> |
| | | <view |
| | | class="img_wrap img2" |
| | | @click="jump('/pages/changePassword/changePassword')" |
| | | > |
| | | <image src="@/static/staff/ic_xiugaimima.png" class="img"></image> |
| | | <view class="h1">修改密码</view> |
| | | <view class="h2">CHANGE PASSWORD</view> |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | <!-- --> |
| | | <view v-if="list2.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap"><view class="name">业务查询</view></view> |
| | | <view class="container2"> |
| | | <view class="list"> |
| | | <block v-for="item in list2" :key="item.name"> |
| | | <view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)"> |
| | | <image :src="item.img" class="icon" /> |
| | | <view class="name">{{item.name}}</view> |
| | | <view v-if="item.name == '任务中心' && taskInfo" class="task_num">{{ taskInfo }}</view> |
| | | </view> |
| | | </block> |
| | | </view> |
| | | |
| | | <!-- <view class="img_wrap" @click="jump('/pages/staff/task/index')"> |
| | | <image class="img" src="@/static/staff/ic_renwuzhongxin.png"></image> |
| | | <view class="h1">任务中心</view> |
| | | <view class="h2">TASK CENTER</view> |
| | | <view class="task_num">{{ |
| | | taskInfo |
| | | }}</view> |
| | | </view> |
| | | <view class="img_wrap" @click="jump('/pages/staff/meetingCalendar')"> |
| | | <image class="img" src="@/static/staff/ic_wodehuiyi.png"></image> |
| | | <view class="h1">我的会议日历</view> |
| | | <view class="h2">MY MEETING CALENDAR</view> |
| | | </view> |
| | | <view class="img_wrap" @click="jump('/pages/staff/vehicle/sendACar')"> |
| | | <image class="img" src="@/static/staff/ic_paichejilu.png"></image> |
| | | <view class="h1">派车记录</view> |
| | | <view class="h2">VEHICLE DISPATCH</view> |
| | | </view> |
| | | <view class="img_wrap" @click="jump('/pages/staff/meetingManager')"> |
| | | <image class="img" src="@/static/staff/ic_huiyishiguanli.png"></image> |
| | | <view class="h1">会议室管理</view> |
| | | <view class="h2">MANAGE MEETING ROOMS</view> |
| | | </view> --> |
| | | </view> |
| | | <view class="copyright"> |
| | | <image src="@/static/logo_s@2x.png" mode="widthFix" /> |
| | | <text>安徽安泰物流有限责任公司版权所有</text> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { logoutPost, stagingHead, wxAuthorize, refreshToken } from '@/api' |
| | | export default { |
| | | data() { |
| | | return { |
| | | userInfo: uni.getStorageSync('userInfo') || {permissions: []}, |
| | | taskInfo: 0, |
| | | list1: [ |
| | | { name: '访客报备', url: '/pages/staff/visitorReport', img: require('@/static/home/ic_fangkebaobei@3x.png'),auth: 'weixin:menu:visitcar' }, |
| | | { name: '隐患随手拍', url: '/pages/staff/snapshot', img: require('@/static/home/ic_yinhuansuishoupai@3x.png'),auth: 'weixin:menu:hiddendanger' }, |
| | | { name: '用车申请', url: '/pages/staff/vehicle/index', img: require('@/static/home/ic_yongcheshenqing@3x.png'),auth: 'weixin:menu:usecar' }, |
| | | { name: '预约会议室', url: '/pages/staff/meetingSub', img: require('@/static/home/ic_yuyuehuiyishi@3x.png'),auth: 'weixin:menu:meeting' }, |
| | | { name: '修改密码', url: '/pages/changePassword/changePassword', img: require('@/static/home/ic_xiugaimima@3x.png'),auth: 'weixin:menu:password' }, |
| | | { name: '我的考勤', url: '/pages/staff/signin', img: require('@/static/home/ic_kaoqin@3x.png'),auth: 'weixin:menu:attendance' }, |
| | | ], |
| | | list2: [ |
| | | { name: '任务中心', url: '/pages/staff/task/index', img: require('@/static/home/ic_renwuzhongxin@3x.png'),auth: 'weixin:menu:taskcenter' }, |
| | | { name: '我的会议日历', url: '/pages/staff/meetingCalendar', img: require('@/static/home/ic_wodehuiyi@3x.png'),auth: 'weixin:menu:meetingcalendar' }, |
| | | { name: '派车记录', url: '/pages/staff/vehicle/sendACar', img: require('@/static/home/ic_paichejilu@3x.png'),auth: 'weixin:menu:usecarrecord' }, |
| | | { name: '会议室管理', url: '/pages/staff/meetingManager', img: require('@/static/home/ic_huiyishiguanli@3x.png'),auth: 'weixin:menu:meetingmanage' } |
| | | ], |
| | | |
| | | } |
| | | }, |
| | | onLoad() { |
| | | |
| | | this.getTaskInfo() |
| | | // 刷新token |
| | | // setTimeout(() => { |
| | | // refreshToken().then(res => { |
| | | // if (res.code && res.code === 200) { |
| | | // this.$store.commit('setToken', res.data) |
| | | // } |
| | | // }) |
| | | // }, 3000) |
| | | }, |
| | | mounted() { |
| | | this.$eventBus.$on('taskBack', () => { |
| | | console.log('----'); |
| | | this.getTaskInfo() |
| | | }) |
| | | console.log('aaa', this.userInfo.permissions.indexOf('system:user:create')); |
| | | }, |
| | | methods: { |
| | | jump(path) { |
| | | uni.navigateTo({ |
| | | url: path |
| | | }) |
| | | }, |
| | | checkAuth(str) { |
| | | const permissions = this.userInfo.permissions |
| | | return permissions.indexOf(str) > -1 |
| | | }, |
| | | loginOut() { |
| | | this.$store.commit('empty') |
| | | logoutPost() |
| | | uni.redirectTo({ |
| | | url: '/pages/staffLogin/login' |
| | | }) |
| | | }, |
| | | getTaskInfo() { |
| | | stagingHead({ |
| | | isDetail: '1' |
| | | }).then(res => { |
| | | this.taskInfo = res.data.noticeWaitNum + res.data.noticeCopyNum |
| | | if(this.taskInfo && this.taskInfo > 99){ |
| | | this.taskInfo = 99 |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .title_wrap { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | margin-bottom: 24rpx; |
| | | padding-top: 10rpx; |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 34rpx; |
| | | color: #222222; |
| | | } |
| | | .btn { |
| | | width: 144rpx; |
| | | height: 56rpx; |
| | | border-radius: 36rpx; |
| | | border: 1rpx solid $uni-color-primary; |
| | | font-size: 26rpx; |
| | | color: $uni-color-primary; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | } |
| | | .main_app { |
| | | padding-top: 12rpx; |
| | | } |
| | | .list{ |
| | | display: flex; |
| | | width: 100%; |
| | | flex-wrap: wrap; |
| | | .item{ |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: center; |
| | | width: 25%; |
| | | margin-bottom: 40rpx; |
| | | font-size: 26rpx; |
| | | position: relative; |
| | | image{ |
| | | width: 88rpx; |
| | | height: 88rpx; |
| | | margin-bottom: 20rpx; |
| | | } |
| | | .task_num{ |
| | | position: absolute; |
| | | top: -10rpx; |
| | | right: 28rpx; |
| | | font-size: 24rpx; |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | background-color: red; |
| | | color: #fff; |
| | | border-radius: 50%; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | } |
| | | } |
| | | .banner_wrap { |
| | | padding: 54rpx 44rpx; |
| | | color: #fff; |
| | | position: relative; |
| | | width: 688rpx; |
| | | height: 270rpx; |
| | | margin-bottom: 40rpx; |
| | | .h1 { |
| | | font-weight: bold; |
| | | line-height: 66rpx; |
| | | font-size: 44rpx; |
| | | margin-bottom: 14rpx; |
| | | } |
| | | .banner { |
| | | position: absolute; |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | z-index: -1; |
| | | } |
| | | } |
| | | .container1 { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | padding: 10rpx 0 10rpx; |
| | | } |
| | | .container2 { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | } |
| | | .copyright { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | position: fixed; |
| | | width: 100%; |
| | | left: 0; |
| | | bottom: 48rpx; |
| | | image { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | } |
| | | } |
| | | </style> |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="title_wrap">
|
| | | <view class="name" v-if="userInfo.realname">{{ userInfo.realname || "" }},欢迎登录~</view>
|
| | | <view class="name" v-else>请先登录</view>
|
| | | <view class="btn" @click="loginOut">{{
|
| | | userInfo.realname ? "退出登录" : "去登录"
|
| | | }}</view>
|
| | | </view>
|
| | | <view class="banner_wrap">
|
| | | <view class="h1">安泰物流</view>
|
| | | <view class="h2">安全重于泰山 服务追求卓越</view>
|
| | | <image class="banner" src="../../static/banner.jpg" mode="widthFix"></image>
|
| | | </view>
|
| | | <view v-if="list1.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap">
|
| | | <view class="name">业务办理</view>
|
| | | </view>
|
| | | <view class="container1">
|
| | | <view class="list">
|
| | | <block v-for="item in list1" :key="item.name">
|
| | | <view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)">
|
| | | <image :src="item.img" class="icon" />
|
| | | <view class="name">{{ item.name }}</view>
|
| | | </view>
|
| | | </block>
|
| | | </view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view v-if="list2.filter(i => checkAuth(i.auth)).length > 0" class="title_wrap">
|
| | | <view class="name">业务查询</view>
|
| | | </view>
|
| | | <view class="container2">
|
| | | <view class="list">
|
| | | <block v-for="item in list2" :key="item.name">
|
| | | <view v-if="checkAuth(item.auth)" class="item" @click="jump(item.url)">
|
| | | <image :src="item.img" class="icon" />
|
| | | <view class="name">{{ item.name }}</view>
|
| | | <view v-if="item.name == '任务中心' && taskInfo" class="task_num">{{ taskInfo }}</view>
|
| | | </view>
|
| | | </block>
|
| | | </view>
|
| | | </view>
|
| | | <view class="copyright">
|
| | | <image src="@/static/logo_s@2x.png" mode="widthFix" />
|
| | | <text>安徽安泰物流有限责任公司版权所有</text>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import {
|
| | | logoutPost,
|
| | | stagingHead,
|
| | | wxAuthorize,
|
| | | refreshToken,
|
| | | app_url
|
| | | } from '@/api'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | userInfo: uni.getStorageSync('userInfo') || {
|
| | | permissions: []
|
| | | },
|
| | | taskInfo: 0,
|
| | | list1: [{
|
| | | name: '访客报备',
|
| | | url: '/pages/staff/visitorReport',
|
| | | img: require('@/static/home/ic_fangkebaobei@3x.png'),
|
| | | auth: 'weixin:menu:visitcar'
|
| | | },
|
| | | {
|
| | | name: '隐患随手拍',
|
| | | url: '/pages/staff/snapshot',
|
| | | img: require('@/static/home/ic_yinhuansuishoupai@3x.png'),
|
| | | auth: 'weixin:menu:hiddendanger'
|
| | | },
|
| | | {
|
| | | name: '用车申请',
|
| | | url: '/pages/staff/vehicle/index',
|
| | | img: require('@/static/home/ic_yongcheshenqing@3x.png'),
|
| | | auth: 'weixin:menu:usecar'
|
| | | },
|
| | | {
|
| | | name: '预约会议室',
|
| | | url: '/pages/staff/meetingSub',
|
| | | img: require('@/static/home/ic_yuyuehuiyishi@3x.png'),
|
| | | auth: 'weixin:menu:meeting'
|
| | | },
|
| | | {
|
| | | name: '修改密码',
|
| | | url: '/pages/changePassword/changePassword',
|
| | | img: require('@/static/home/ic_xiugaimima@3x.png'),
|
| | | auth: 'weixin:menu:password'
|
| | | },
|
| | | {
|
| | | name: '我的考勤',
|
| | | url: '/pages/staff/signin',
|
| | | img: require('@/static/home/ic_kaoqin@3x.png'),
|
| | | auth: 'weixin:menu:attendance'
|
| | | },
|
| | | ],
|
| | | list2: [{
|
| | | name: '任务中心',
|
| | | url: '/pages/staff/task/index',
|
| | | img: require('@/static/home/ic_renwuzhongxin@3x.png'),
|
| | | auth: 'weixin:menu:taskcenter'
|
| | | },
|
| | | {
|
| | | name: '我的会议日历',
|
| | | url: '/pages/staff/meetingCalendar',
|
| | | img: require('@/static/home/ic_wodehuiyi@3x.png'),
|
| | | auth: 'weixin:menu:meetingcalendar'
|
| | | },
|
| | | {
|
| | | name: '派车记录',
|
| | | url: '/pages/staff/vehicle/sendACar',
|
| | | img: require('@/static/home/ic_paichejilu@3x.png'),
|
| | | auth: 'weixin:menu:usecarrecord'
|
| | | },
|
| | | {
|
| | | name: '会议室管理',
|
| | | url: '/pages/staff/meetingManager',
|
| | | img: require('@/static/home/ic_huiyishiguanli@3x.png'),
|
| | | auth: 'weixin:menu:meetingmanage'
|
| | | }
|
| | | ],
|
| | |
|
| | | }
|
| | | },
|
| | | mounted() {
|
| | | },
|
| | |
|
| | | onShow() {
|
| | | setTimeout(() => {
|
| | | this.getTaskInfo()
|
| | | }, 300)
|
| | | },
|
| | | methods: {
|
| | | jump(path) {
|
| | | if (path == '/pages/staff/signin') {
|
| | | window.open('https://atwl.ahzyssl.com/dps/web/wxAuth/loginV2?oaId=atwl&redirectId=index')
|
| | | } else {
|
| | | uni.navigateTo({
|
| | | url: path
|
| | | })
|
| | | }
|
| | |
|
| | | },
|
| | | checkAuth(str) {
|
| | | const permissions = this.userInfo.permissions
|
| | | return permissions.indexOf(str) > -1
|
| | | },
|
| | | loginOut() { |
| | | logoutPost()
|
| | | this.$store.commit('empty')
|
| | | window.location.href = app_url
|
| | | },
|
| | | getTaskInfo() {
|
| | | stagingHead({
|
| | | isDetail: '1'
|
| | | }).then(res => {
|
| | | this.taskInfo = res.data.noticeWaitNum + res.data.noticeCopyNum
|
| | | if (this.taskInfo && this.taskInfo > 99) {
|
| | | this.taskInfo = 99
|
| | | }
|
| | | })
|
| | | },
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | .title_wrap {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | | margin-bottom: 24rpx;
|
| | | padding-top: 10rpx;
|
| | |
|
| | | .name {
|
| | | font-weight: 600;
|
| | | font-size: 34rpx;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .btn {
|
| | | width: 144rpx;
|
| | | height: 56rpx;
|
| | | border-radius: 36rpx;
|
| | | border: 1rpx solid $uni-color-primary;
|
| | | font-size: 26rpx;
|
| | | color: $uni-color-primary;
|
| | | display: flex;
|
| | | justify-content: center;
|
| | | align-items: center;
|
| | | }
|
| | | }
|
| | |
|
| | | .main_app {
|
| | | padding-top: 12rpx;
|
| | | }
|
| | |
|
| | | .list {
|
| | | display: flex;
|
| | | width: 100%;
|
| | | flex-wrap: wrap;
|
| | |
|
| | | .item {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | justify-content: center;
|
| | | align-items: center;
|
| | | width: 25%;
|
| | | margin-bottom: 40rpx;
|
| | | font-size: 26rpx;
|
| | | position: relative;
|
| | |
|
| | | image {
|
| | | width: 88rpx;
|
| | | height: 88rpx;
|
| | | margin-bottom: 20rpx;
|
| | | }
|
| | |
|
| | | .task_num {
|
| | | position: absolute;
|
| | | top: -10rpx;
|
| | | right: 28rpx;
|
| | | font-size: 24rpx;
|
| | | width: 36rpx;
|
| | | height: 36rpx;
|
| | | background-color: red;
|
| | | color: #fff;
|
| | | border-radius: 50%;
|
| | | display: flex;
|
| | | justify-content: center;
|
| | | align-items: center;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .banner_wrap {
|
| | | padding: 54rpx 44rpx;
|
| | | color: #fff;
|
| | | position: relative;
|
| | | width: 688rpx;
|
| | | height: 270rpx;
|
| | | margin-bottom: 40rpx;
|
| | |
|
| | | .h1 {
|
| | | font-weight: bold;
|
| | | line-height: 66rpx;
|
| | | font-size: 44rpx;
|
| | | margin-bottom: 14rpx;
|
| | | }
|
| | |
|
| | | .banner {
|
| | | position: absolute;
|
| | | top: 0;
|
| | | left: 0;
|
| | | width: 100%;
|
| | | z-index: -1;
|
| | | }
|
| | | }
|
| | |
|
| | | .container1 {
|
| | | display: flex;
|
| | | flex-wrap: wrap;
|
| | | padding: 10rpx 0 10rpx;
|
| | | }
|
| | |
|
| | | .container2 {
|
| | | display: flex;
|
| | | flex-wrap: wrap;
|
| | | }
|
| | |
|
| | | .copyright {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | font-size: 24rpx;
|
| | | color: #666666;
|
| | | position: fixed;
|
| | | width: 100%;
|
| | | left: 0;
|
| | | bottom: 48rpx;
|
| | |
|
| | | image {
|
| | | width: 40rpx;
|
| | | height: 40rpx;
|
| | | }
|
| | | }
|
| | | </style> |
| | |
| | | console.log(total); |
| | | console.log(recordList);
|
| | | if (activeTab == '0') { |
| | | // if(total <= myMeetingList.length) return this.showToast('暂无更多数据')
|
| | | if(total <= myMeetingList.length) return this.showToast('暂无更多数据')
|
| | | this.myPage = this.myPage + 1
|
| | | this.getDayMeeting()
|
| | | } else { |
| | | // if(total <= recordList.length) return this.showToast('暂无更多数据')
|
| | | if(total <= recordList.length) return this.showToast('暂无更多数据')
|
| | | this.recordPage = this.recordPage + 1
|
| | | this.getRecordList()
|
| | | }
|
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="main_wrap">
|
| | | <!-- --> |
| | | <view class="line"> |
| | | <view class="label"> |
| | | <text>*</text> |
| | | <text>责任部门</text> |
| | | </view> |
| | | <view class="value" @click="isShowCompany = true"> |
| | | <text class="mr6" |
| | | :style="{ color: param.companyName ? '#000000' : '#999999' }">{{ param.companyName ? param.companyName : "请选择" }}</text> |
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> |
| | | </view> |
| | | <!-- -->
|
| | | <view class="line">
|
| | | <view class="label">
|
| | | <text>*</text>
|
| | | <text>责任部门</text>
|
| | | </view>
|
| | | <view class="value" @click="isShowCompany = true">
|
| | | <text class="mr6"
|
| | | :style="{ color: param.companyName ? '#000000' : '#999999' }">{{ param.companyName ? param.companyName : "请选择" }}</text>
|
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="label">
|
| | |
| | | <view class="footer_btn" @click="onSubmit">提交</view>
|
| | | </view>
|
| | | </view>
|
| | | <!-- --> |
| | | <u-picker keyName="name" :show="isShowCompany" closeOnClickOverlay :columns="deptList" @confirm="seletedCompany" |
| | | <!-- -->
|
| | | <u-picker keyName="name" :show="isShowCompany" closeOnClickOverlay :columns="deptList" @confirm="seletedCompany"
|
| | | @close="isShowCompany = false" @cancel="isShowCompany = false"></u-picker>
|
| | | <!-- 区域 -->
|
| | | <u-picker keyName="name" :show="isShowArea" closeOnClickOverlay :columns="areaOptions" @confirm="seletedArea"
|
| | |
| | | import {
|
| | | uploadUrl,
|
| | | DangerCreate,
|
| | | DangerConfigType, |
| | | DangerConfigType,
|
| | | deptListPost
|
| | | } from '@/api'
|
| | | import dayjs from 'dayjs'
|
| | |
| | | param: {},
|
| | | submitFileList: [],
|
| | |
|
| | | isShowCompany: false, |
| | | isShowCompany: false,
|
| | | isShowArea: false,
|
| | | isShowType: false,
|
| | | isShowTime: false,
|
| | | showUpload: false,
|
| | |
|
| | | deptList: [], |
| | | deptList: [],
|
| | | areaOptions: [],
|
| | | areaType: [],
|
| | | }
|
| | |
| | | const {
|
| | | param,
|
| | | submitFileList
|
| | | } = this |
| | | if (!param.companyName) return uni.showToast({ |
| | | title: '请选择责任部门', |
| | | icon: 'none' |
| | | } = this
|
| | | if (!param.companyName) return uni.showToast({
|
| | | title: '请选择责任部门',
|
| | | icon: 'none'
|
| | | })
|
| | | if (!param.areaName) return uni.showToast({
|
| | | title: '请选择隐患区域',
|
| | |
| | | this.$jump('/pages/staff/snapshotResult')
|
| | | }
|
| | | })
|
| | | }, |
| | | seletedCompany(e) { |
| | | const item = e.value[0] |
| | | this.$set(this.param, 'companyId', item.id) |
| | | this.$set(this.param, 'companyName', item.name) |
| | | this.$set(this.param, 'areaId', '') |
| | | this.$set(this.param, 'areaName', '') |
| | | DangerConfigType({ |
| | | type: '0', |
| | | companyId: item.id |
| | | }).then(res => { |
| | | this.areaOptions = [res.data] |
| | | }) |
| | | this.isShowCompany = false |
| | | },
|
| | | seletedCompany(e) {
|
| | | const item = e.value[0]
|
| | | this.$set(this.param, 'companyId', item.id)
|
| | | this.$set(this.param, 'companyName', item.name)
|
| | | this.$set(this.param, 'areaId', '')
|
| | | this.$set(this.param, 'areaName', '')
|
| | | DangerConfigType({
|
| | | type: '0',
|
| | | companyId: item.id
|
| | | }).then(res => {
|
| | | this.areaOptions = [res.data]
|
| | | })
|
| | | this.isShowCompany = false
|
| | | },
|
| | | seletedArea(e) {
|
| | | const item = e.value[0]
|
| | |
| | | this.$set(this.param, 'submitTime', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'))
|
| | | this.isShowTime = false
|
| | | },
|
| | | initConfig() { |
| | | deptListPost({queryHiddenDanger: 1}).then(res => { |
| | | this.deptList = [res.data] |
| | | initConfig() {
|
| | | deptListPost({queryHiddenDanger: 1}).then(res => {
|
| | | this.deptList = [res.data]
|
| | | })
|
| | | DangerConfigType({
|
| | | type: '1'
|
| | |
| | | this.showUpload = false
|
| | | let token = uni.getStorageSync('token') || ''
|
| | | uni.chooseImage({
|
| | | count: 4,
|
| | | count: 9,
|
| | | success: (chooseImageRes) => {
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | |
| | |
|
| | | .adduser_list_item_ipt1_upload {
|
| | | margin-top: 24rpx;
|
| | | width: 120rpx;
|
| | | height: 120rpx;
|
| | | margin-right: 24rpx;
|
| | | width: 156rpx;
|
| | | height: 156rpx;
|
| | | margin-right: 20rpx;
|
| | | border: 2rpx solid #e5e5e5;
|
| | | background: #f7f7f7;
|
| | | color: #666666;
|
| | |
| | | align-items: center;
|
| | | justify-content: center;
|
| | | position: relative;
|
| | |
|
| | | &:nth-of-type(4n){ |
| | | margin-right: 0; |
| | | }
|
| | | .close {
|
| | | position: absolute;
|
| | | right: -20rpx;
|
| | |
| | |
|
| | | video {
|
| | | width: 100%;
|
| | | max-height: 120rpx;
|
| | | max-height: 156rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | |
|
| | | .footer {
|
| | | width: 100%;
|
| | | padding: 0 30rpx; |
| | | padding: 0 30rpx;
|
| | | margin-top: 80rpx;
|
| | | padding-bottom: env(safe-area-inset-bottom);
|
| | | box-sizing: border-box;
|
| | |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #999999; |
| | | width: 120rpx; |
| | | } |
| | | .loading { |
| | | color: $uni-color-primary; |
| | |
| | | class="status_img"></image>
|
| | | <view>{{ info.content }}</view>
|
| | | <view class="file_list">
|
| | | <view class="img_wrap" v-for="item in info.submitFileList" :key="item.id">
|
| | | <view class="img_wrap" v-for="item,i in info.submitFileList" :key="item.id">
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" @click="priviewImage(item.fileurlFull)" mode="widthFix"
|
| | | class="img" />
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" class="video" :controls="false" />
|
| | | <view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap"> |
| | | <video :id="'id' + i" :show-center-play-btn="false" |
| | | :src="item.fileurlFull" muted class="video" :controls="false" /> |
| | | <image src="@/static/play.png" class="play" mode=""></image> |
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="text_wrap">
|
| | |
| | |
|
| | | <u-datetime-picker :minDate="new Date().getTime()" :show="isShowHandleDate" @confirm="confirmHandleDate"
|
| | | @cancel="isShowHandleDate = false" mode="datetime"></u-datetime-picker>
|
| | | <!-- -->
|
| | |
|
| | | <view v-if="videoPlay" class="video_app">
|
| | | <video controls id="myvideo" :src="videoUrl" @fullscreenchange="screenChange"></video>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | |
| | | page: 1,
|
| | | capacity: 50
|
| | | },
|
| | | memberList: []
|
| | | memberList: [],
|
| | |
|
| | | videoPlay: false,
|
| | | videoContext: null, |
| | | videoUrl: ''
|
| | | };
|
| | | },
|
| | | onLoad(op) {
|
| | |
| | | uni.previewImage({
|
| | | urls: [url]
|
| | | });
|
| | | },
|
| | | screenChange(e) {
|
| | | let fullScreen = e.detail.fullScreen; // 值true为进入全屏,false为退出全屏
|
| | | if (!fullScreen) {
|
| | | //退出全屏
|
| | | this.videoPlay = false; // 隐藏播放盒子
|
| | | }
|
| | | },
|
| | | videoClick(item, i) {
|
| | | this.videoContext = uni.createVideoContext("myvideo", this); // this这个是实例对象 必传
|
| | | console.log(item)
|
| | | this.videoUrl = item.fileurlFull;
|
| | | this.videoContext.requestFullScreen({
|
| | | direction: 90
|
| | | });
|
| | | this.videoContext.play();
|
| | | this.videoPlay = true;
|
| | | },
|
| | | handleOpen() {
|
| | | this.isShowHandle = true;
|
| | |
| | | this.showUploadBe = false;
|
| | | let token = uni.getStorageSync('token') || '';
|
| | | uni.chooseImage({
|
| | | count: 4,
|
| | | count: 9,
|
| | | success: chooseImageRes => {
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | |
| | | this.showUploadAf = false;
|
| | | let token = uni.getStorageSync('token') || '';
|
| | | uni.chooseImage({
|
| | | count: 4,
|
| | | count: 9,
|
| | | success: chooseImageRes => {
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | |
| | | this.showUpload = false;
|
| | | let token = uni.getStorageSync('token') || '';
|
| | | uni.chooseImage({
|
| | | count: 4,
|
| | | count: 9,
|
| | | success: chooseImageRes => {
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | |
| | | }
|
| | |
|
| | | .adduser_list_item_ipt1_upload {
|
| | | width: 120rpx;
|
| | | height: 120rpx;
|
| | | margin-right: 24rpx;
|
| | | width: 156rpx;
|
| | | height: 156rpx;
|
| | | margin-right: 20rpx;
|
| | | border: 2rpx solid #e5e5e5;
|
| | | background: #f7f7f7;
|
| | | color: #666666;
|
| | |
| | | align-items: center;
|
| | | justify-content: center;
|
| | | position: relative;
|
| | |
|
| | | &:nth-of-type(4n) {
|
| | | margin-right: 0;
|
| | | }
|
| | |
|
| | | .close {
|
| | | position: absolute;
|
| | |
| | |
|
| | | video {
|
| | | width: 100%;
|
| | | max-height: 120rpx;
|
| | | max-height: 156rpx;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | .file_list {
|
| | | display: flex;
|
| | | margin-bottom: 20rpx;
|
| | | overflow-x: auto;
|
| | | flex-wrap: wrap;
|
| | |
|
| | | .img_wrap {
|
| | | margin-top: 24rpx;
|
| | | min-width: 160rpx;
|
| | | height: 160rpx;
|
| | | width: 156rpx;
|
| | | height: 156rpx;
|
| | | border: 2rpx solid #e5e5e5;
|
| | | background: #f7f7f7;
|
| | | color: #666666;
|
| | | font-size: 22rpx;
|
| | | display: flex;
|
| | | display: flex; |
| | | border-radius: 4rpx;
|
| | | flex-direction: column;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | position: relative;
|
| | | margin-right: 16rpx;
|
| | | margin-right: 20rpx;
|
| | | flex-shrink: 0;
|
| | | }
|
| | |
|
| | | &:nth-of-type(4n) {
|
| | | margin-right: 0;
|
| | | }
|
| | | }
|
| | | .video_wrap{ |
| | | position: relative; |
| | | border: 1px solid; |
| | | width: 156rpx; |
| | | height: 156rpx; |
| | | border-radius: 4rpx; |
| | | .play{ |
| | | width: 60rpx; |
| | | height: 60rpx; |
| | | position: absolute; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%); |
| | | } |
| | | }
|
| | | .img {
|
| | | width: 100%;
|
| | | max-height: 100%;
|
| | |
| | | margin-top: 20rpx;
|
| | |
|
| | | .line {
|
| | | margin-bottom: 12rpx;
|
| | | margin-bottom: 18rpx;
|
| | | display: flex;
|
| | | font-size: 24rpx;
|
| | |
|
| | | &:nth-last-child(1) {
|
| | | margin-bottom: 0;
|
| | | }
|
| | |
|
| | | .label {
|
| | | color: #999999;
|
| | |
| | | line-height: 60rpx;
|
| | | padding: 0 32rpx;
|
| | | border-radius: 0rpx 0rpx 0rpx 30rpx;
|
| | | background-color: #e9edff;
|
| | | background: rgba(39, 155, 170, 0.12);
|
| | | color: $uni-color-primary;
|
| | | }
|
| | |
|
| | |
| | | }
|
| | |
|
| | | .adduser_list_item_ipt1_upload {
|
| | | margin-top: 24rpx;
|
| | | width: 120rpx;
|
| | | height: 120rpx;
|
| | | margin-right: 24rpx;
|
| | | margin-top: 20rpx;
|
| | | width: 156rpx;
|
| | | height: 156rpx;
|
| | | margin-right: 20rpx;
|
| | | border: 2rpx solid #e5e5e5;
|
| | | background: #f7f7f7;
|
| | | color: #666666;
|
| | |
| | | justify-content: center;
|
| | | position: relative;
|
| | |
|
| | | &:nth-of-type(4n) {
|
| | | margin-right: 0;
|
| | | }
|
| | |
|
| | | .close {
|
| | | position: absolute;
|
| | | right: -20rpx;
|
| | |
| | | <view class="line" |
| | | >4、公司借给申请人用车,申请借车人为第一责任人,不允许转借给其他人使用,若要借给他人使用。责任人要承担全部责任。</view |
| | | > |
| | | <view class="sub_btn" @click="handleSub">提交</view> |
| | | </view> |
| | | <view class="sub_btn" @click="handleSub">提交</view> |
| | | <!-- --> |
| | | <!-- :minDate="new Date(param.startTime).getTime()" |
| | | :maxDate="new Date(param.endTime).getTime()" --> |
| | |
| | | } |
| | | } |
| | | .sub_btn { |
| | | position: fixed; |
| | | bottom: 84rpx; |
| | | left: 30rpx; |
| | | // position: fixed; |
| | | // bottom: 84rpx; |
| | | // left: 30rpx; |
| | | margin-top: 60rpx; |
| | | width: 690rpx; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | |
| | | carsList: [], |
| | | param: { |
| | | queryDate: dayjs().format('YYYY-MM-DD'), |
| | | memberId: uni.getStorageSync('userInfo').memberId |
| | | // memberId: uni.getStorageSync('userInfo').memberId |
| | | }, |
| | | minDate: '', |
| | | pagination: { |
| | |
| | | }, |
| | | itemDetail(item) { |
| | | uni.navigateTo({ |
| | | url: "/pages/staff/vehicle/sendACarDetail?id=" + item.id |
| | | url: `/pages/staff/vehicle/sendACarDetail?id=${item.id}` |
| | | }) |
| | | }, |
| | | seletedCar(e) { |
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="status_wrap"> |
| | | <view class="name">{{ info.createMemberName }}提交的用车申请</view> |
| | | <view |
| | | class="desc" |
| | | :class="{ |
| | | gray: info.status == '2' || info.status == '3' || info.status == '4', |
| | | }" |
| | | >{{ infoStatus }}</view |
| | | > |
| | | <view v-if="info.status == '0' || info.status == '1'" class="status">{{ |
| | | statusMap[info.status] |
| | | }}</view> |
| | | <image v-if="info.status == '2'" src="@/static/ic_passed@2x.png" mode="widthFix" class="status_img"></image> |
| | | <image v-if="info.status == '3' || info.status == '6'" src="@/static/ic_refused@2x.png" mode="widthFix" |
| | | class="status_img"></image> |
| | | <view class="status_wrap">
|
| | | <view class="name">{{ info.createMemberName || info.creatorName || info.memberName}}提交的用车申请</view>
|
| | | <view class="desc gray">{{ info.companyName }}</view> |
| | | <view class="desc" style="margin-top: 16rpx;" v-if="info.status == 0">处理中</view>
|
| | | <view v-if="info.status == '0' || info.status == '1'" class="status">{{
|
| | | statusMap[info.status]
|
| | | }}</view>
|
| | | <image v-if="info.status == '2'" src="@/static/ic_passed@2x.png" mode="widthFix" class="status_img"></image>
|
| | | <image v-if="info.status == '4'" src="@/static/ic_cancel.png" mode="widthFix" class="status_img"></image>
|
| | | <image v-if="info.status == '3' || info.status == '6'" src="@/static/ic_refused@2x.png" mode="widthFix"
|
| | | class="status_img"></image>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="emyty"></view>
|
| | |
| | | <view class="label">车辆信息</view>
|
| | | <view class="value">{{ info.carCode }}</view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="item" v-if="info.driverName">
|
| | | <view class="label">司机信息</view>
|
| | | <view class="value">{{ info.driverName }} {{ info.driverPhone }}</view>
|
| | | <view class="value">{{ info.driverName }} {{ info.driverPhone || '' }}</view>
|
| | | </view>
|
| | | </view>
|
| | | <!-- 流程 -->
|
| | | <view class="flow_wrap">
|
| | | <view class="flow_title">流程</view>
|
| | | <view class="list" v-if=" |
| | | info.approveDateVO != null && info.approveDateVO.approveList != null |
| | | "> |
| | | <view class="item" v-for="(item, index) in info.approveDateVO.approveList" :key="item.id"> |
| | | <view class="separate"></view> |
| | | <view class="avatar"> |
| | | <image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" /> |
| | | <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img" |
| | | src="@/static/staff/ic_shenpiren@2x.png" /> |
| | | <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image> |
| | | <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span> |
| | | <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png" |
| | | mode="widthFix" /> |
| | | <image v-if="item.status == 3" class="status" src="@/static/staff/liucheng_fail@2x.png" mode="widthFix" /> |
| | | </view> |
| | | <view class="content"> |
| | | <view class="head"> |
| | | <view class="event">{{ item.title }}</view> |
| | | <view class="time">{{ item.checkDate }}</view> |
| | | </view> |
| | | <view class="name_wrap"> |
| | | <text>{{ item.memberName |
| | | }}<text :class="{ status: item.statusInfo == '处理中' || item.status == '1' }" |
| | | v-if="item.statusInfo">({{ item.statusInfo }})</text></text> |
| | | </view> |
| | | <view v-if="item.checkInfo" class="remark">{{ |
| | | item.checkInfo |
| | | }}</view> |
| | | <!-- 抄送人 --> |
| | | <view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children"> |
| | | <view class="child" v-for="child in item.approveList" :key="child.id"> |
| | | <image v-if="child.faceImg" class="child_img" :src="child.faceImg" /> |
| | | <view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view> |
| | | <view>{{ child.memberName }}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="list" v-if="
|
| | | info.approveDateVO != null && info.approveDateVO.approveList != null
|
| | | ">
|
| | | <view class="item" v-for="(item, index) in info.approveDateVO.approveList" :key="item.id">
|
| | | <view class="separate"></view>
|
| | | <view class="avatar">
|
| | | <image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" />
|
| | | <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img"
|
| | | src="@/static/staff/ic_shenpiren@2x.png" />
|
| | | <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image>
|
| | | <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span>
|
| | | <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png"
|
| | | mode="widthFix" />
|
| | | <image v-if="item.status == 3" class="status" src="@/static/staff/liucheng_fail@2x.png" mode="widthFix" />
|
| | | </view>
|
| | | <view class="content">
|
| | | <view class="head">
|
| | | <view class="event">{{ item.title }}</view>
|
| | | <view class="time">{{ item.checkDate }}</view>
|
| | | </view>
|
| | | <view class="name_wrap">
|
| | | <text>{{ item.memberName
|
| | | }}<text :class="{ status: item.statusInfo == '处理中' || item.status == '1' }"
|
| | | v-if="item.statusInfo">({{ item.statusInfo }})</text></text>
|
| | | </view>
|
| | | <view v-if="item.checkInfo" class="remark">{{
|
| | | item.checkInfo
|
| | | }}</view>
|
| | | <!-- 抄送人 -->
|
| | | <view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children">
|
| | | <view class="child" v-for="child in item.approveList" :key="child.id">
|
| | | <image v-if="child.faceImg" class="child_img" :src="child.faceImg" />
|
| | | <view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view>
|
| | | <view>{{ child.memberName }}</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="emyty"></view>
|
| | |
| | | <view class="btn" @click="handleSub(3)">拒绝</view>
|
| | | <view class="btn agree" @click="handleSub(2)">同意</view>
|
| | | </template>
|
| | | </view> |
| | | <template v-else> |
| | | <view v-if="(info.approveDateVO.canBeApproved == 1 || userInfo.memberId == info.memberId) && info.status == 0" class="main_footer" @click="isShowBack = true"> |
| | | <view class="agree btn">撤回用车</view> |
| | | </view> |
| | | </template> |
| | | |
| | | </view>
|
| | | <template v-else>
|
| | | <view v-if="(info.approveDateVO.canBeApproved == 1 || userInfo.memberId == info.memberId) && info.status == 0"
|
| | | class="main_footer" @click="isShowBack = true">
|
| | | <view class="agree btn">撤回用车</view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | |
|
| | | <!-- 撤销 -->
|
| | | <u-popup :show="isShowBack" :round="10" :safeAreaInsetBottom="true" mode="bottom" @close="isShowBack = false">
|
| | |
| | | <view class="appr_modal">
|
| | | <view class="title">{{ param.status == 2 ? "同意" : "拒绝" }}</view>
|
| | | <view v-if="param.status == 2" class="line" @click="openModal">
|
| | | <text :class="{placeholder9: info.approveDateVO.driverParam == 0}" v-if="param.driverName">{{ param.driverName }}</text>
|
| | | <text :class="{placeholder9: info.approveDateVO.driverParam == 0}"
|
| | | v-if="param.driverName">{{ param.driverName }}</text>
|
| | | <text v-else class="placeholder9">派车司机</text>
|
| | | <u-icon v-if="info.approveDateVO.driverParam == 1" class="ml12" name="arrow-right" color="#999999" />
|
| | | </view>
|
| | |
| | | showApprModal: false,
|
| | | isShowBack: false,
|
| | | backParam: {},
|
| | | isShowDrive: false, |
| | | isShowDrive: false,
|
| | | userInfo: uni.getStorageSync('userInfo') || {},
|
| | | id: '',
|
| | | appr: '',
|
| | |
| | | })
|
| | | }
|
| | | })
|
| | | }, |
| | | openModal() { |
| | | if(this.info.approveDateVO.driverParam == 0) return |
| | | this.isShowDrive = true |
| | | |
| | | },
|
| | | openModal() {
|
| | | if (this.info.approveDateVO.driverParam == 0) return
|
| | | this.isShowDrive = true
|
| | |
|
| | | },
|
| | | onSubBack() {
|
| | | carUseBookBack({
|
| | |
| | | this.getDriveList()
|
| | | } else {
|
| | |
|
| | | } |
| | | if(this.info.driverId && this.info.driverName){ |
| | | this.$set(this.param, 'driverId', this.info.driverId) |
| | | this.$set(this.param, 'driverName', this.info.driverName) |
| | | }
|
| | | if (this.info.driverId && this.info.driverName) {
|
| | | this.$set(this.param, 'driverId', this.info.driverId)
|
| | | this.$set(this.param, 'driverName', this.info.driverName)
|
| | | }
|
| | | this.showApprModal = true
|
| | | },
|
| | | getDriveList() {
|
| | | driveListPost({}).then(res => { |
| | | driveListPost({}).then(res => {
|
| | | const temp = res.data || []
|
| | | this.driveList = [res.data] |
| | | if(this.param.driverId){ |
| | | const item = temp.find(i=>i.id == this.param.driverId) |
| | | this.$set(this.param, 'driverName', item.name) |
| | | this.driveList = [res.data]
|
| | | if (this.param.driverId) {
|
| | | const item = temp.find(i => i.id == this.param.driverId)
|
| | | this.$set(this.param, 'driverName', item.name)
|
| | | }
|
| | | })
|
| | | },
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | .status_wrap { |
| | | position: relative; |
| | | padding: 30rpx 0; |
| | | |
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | margin-bottom: 20rpx; |
| | | color: #222222; |
| | | } |
| | | |
| | | .desc { |
| | | font-size: 26rpx; |
| | | color: #ed4545; |
| | | } |
| | | |
| | | .gray { |
| | | color: #999999; |
| | | } |
| | | |
| | | .status { |
| | | position: absolute; |
| | | right: -30rpx; |
| | | top: 0; |
| | | height: 60rpx; |
| | | line-height: 60rpx; |
| | | padding: 0 32rpx; |
| | | border-radius: 0rpx 0rpx 0rpx 30rpx; |
| | | background-color: #e9edff; |
| | | color: $uni-color-primary; |
| | | } |
| | | |
| | | .status_img { |
| | | position: absolute; |
| | | right: 0rpx; |
| | | top: 20rpx; |
| | | width: 120rpx; |
| | | } |
| | | }
|
| | | .status_wrap {
|
| | | position: relative;
|
| | | padding: 30rpx 0;
|
| | |
|
| | | .name {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | margin-bottom: 20rpx;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .desc {
|
| | | font-size: 26rpx;
|
| | | color: #ed4545;
|
| | | }
|
| | |
|
| | | .gray {
|
| | | color: #999999;
|
| | | }
|
| | |
|
| | | .status {
|
| | | position: absolute;
|
| | | right: -30rpx;
|
| | | top: 0;
|
| | | height: 60rpx;
|
| | | line-height: 60rpx;
|
| | | padding: 0 32rpx;
|
| | | border-radius: 0rpx 0rpx 0rpx 30rpx;
|
| | | background-color: #e9edff;
|
| | | color: $uni-color-primary;
|
| | | }
|
| | |
|
| | | .status_img {
|
| | | position: absolute;
|
| | | right: 0rpx;
|
| | | top: 20rpx;
|
| | | width: 120rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .main_footer {
|
| | | padding-bottom: 64rpx;
|
| | | display: flex;
|
| | |
| | | <template> |
| | | <view class="login"> |
| | | <view class="login" :style="{height: windowHeight + 'px'}"> |
| | | <image class="login_bg" src="@/static/login_bg@2x.png" mode="widthFix" /> |
| | | <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" /> |
| | | <view class="login_title">安泰物流智慧园区</view> |
| | |
| | | > |
| | | </view> |
| | | |
| | | <view class="deal_wrap" v-show="!showKeyboard"> |
| | | <view class="deal_wrap"> |
| | | <image |
| | | @click="changeFalg" |
| | | v-if="ProtocolFlag" |
| | |
| | | src="@/static/meeting/icon/ic_choose@2x.png" |
| | | mode="widthFix" |
| | | class="checked" |
| | | |
| | | ></image> |
| | | <text>登录即同意</text> |
| | | <text class="deal" @click="showContent">《安泰物流用户协议》</text> |
| | |
| | | <u-popup |
| | | :show="isShowProtocol" |
| | | @close="isShowProtocol = false" |
| | | closeable |
| | | :round="8" |
| | | mode="center" |
| | | > |
| | | <view class="modal"> |
| | | <!-- <view v-html="htmlText"></view> --> |
| | | <mp-html :content="htmlText" /> |
| | | <view class="content"> |
| | | <mp-html :content="htmlText" /> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { loginPost, loginCaptcha, getUserInfo, getSystemDictData } from '@/api' |
| | | import { loginPost, loginCaptcha, getUserInfo, getSystemDictData, saveHkUserOpenid } from '@/api' |
| | | import { mapState, mapMutations } from 'vuex' |
| | | export default { |
| | | name: 'login', |
| | |
| | | isShowProtocol: false, |
| | | ProtocolFlag: false, |
| | | captcha: {}, |
| | | htmlText: '' |
| | | htmlText: '', |
| | | windowHeight: '' |
| | | } |
| | | }, |
| | | |
| | | onLoad() { |
| | | this.initCaptcha() |
| | | const result = uni.getWindowInfo() |
| | | this.windowHeight = result.windowHeight |
| | | console.log('result', result); |
| | | }, |
| | | onBackPress(options) { |
| | | uni.redirectTo({ |
| | |
| | | url: "/pages/staff/index" |
| | | }) |
| | | }) |
| | | saveHkUserOpenid({}) |
| | | } |
| | | }) |
| | | } |
| | |
| | | box-sizing: border-box; |
| | | align-items: center; |
| | | flex-direction: column; |
| | | position: relative; |
| | | background: linear-gradient( |
| | | 180deg, |
| | | rgba(39, 155, 170, 0.2) 0%, |
| | |
| | | } |
| | | } |
| | | .deal_wrap { |
| | | position: fixed; |
| | | position: absolute; |
| | | width: 100%; |
| | | left: 0; |
| | | text-align: center; |
| | |
| | | margin-right: 12rpx; |
| | | } |
| | | } |
| | | .rela_wrap{ |
| | | position: relative; |
| | | margin-top: 360rpx; |
| | | } |
| | | } |
| | | .modal { |
| | | width: 690rpx; |
| | | min-height: 820rpx; |
| | | max-height: 720px; |
| | | max-height: 80vh; |
| | | border-radius: 24rpx; |
| | | padding: 32rpx; |
| | | padding: 30rpx 30rpx; |
| | | overflow: auto; |
| | | // .content{ |
| | | // height: 100%; |
| | | // overflow: auto; |
| | | // } |
| | | } |
| | | </style> |
| | |
| | | filePath: file.tempFilePath, |
| | | name: 'file', |
| | | formData: { |
| | | folderCode: 'MEMBER_IMG' |
| | | folderCode: 'MEMBER_IMG', |
| | | isFace: 0 |
| | | }, |
| | | success: (uploadFileRes) => { |
| | | let res = JSON.parse(uploadFileRes.data) |
| | |
| | | |
| | | state: { |
| | | openId: openId || '', |
| | | // openId: openId || '123123', |
| | | member: member || null, |
| | | statusbarHeight: statusbarHeight || '0', |
| | | navHeight: navHeight || '0', |
| | |
| | | }, |
| | | // 清空登录缓存 |
| | | empty(state) { |
| | | uni.clearStorageSync() |
| | | state.token = '' |
| | | state.openId = '' |
| | | state.userInfo = {} |
| | | state.driverInfo = {} |
| | | uni.removeStorageSync('userInfo') |
| | | uni.removeStorageSync('driverInfo') |
| | | uni.removeStorageSync('token') |
| | | } |
| | | }, |
| | | actions: { |
| | |
| | | |
| | | export const baseUrl = 'zhyq_interface/' |
| | | // export const baseUrl = 'zhyq_interface/' |
| | | // export const baseUrl = 'http://192.168.0.173/gateway_interface/' |
| | | // export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/' |
| | | // export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/' |
| | | export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/' |
| | | |
| | | export const app_url = 'https://atwl.ahzyssl.com/zhyq_h5/#/' |
| | | |
| | | export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do` |
| | | export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch` |
| | |
| | | "disableHostCheck" : true, |
| | | "proxy" : { |
| | | "/gateway_interface" : { |
| | | // "target" : "http://10.50.250.253:8088/gateway_interface", // 代理服务器域名或IP地址 |
| | | "target" : "http://10.50.250.253:8088/gateway_interface", // 代理服务器域名或IP地址 |
| | | // "target" : "http://192.168.0.173/gateway_interface", // 代理服务器域名或IP地址 |
| | | "target" : "http://192.168.0.173/gateway_interface", // 代理服务器域名或IP地址 |
| | | // "target" : "http://192.168.0.173/gateway_interface", // 代理服务器域名或IP地址 |
| | | "changeOrigin" : true, // 允许跨域 |
| | | "pathRewrite" : { |
| | | "^/gateway_interface" : "" |
| | |
| | | |
| | | // export const baseUrl = 'gateway_interface/'/ |
| | | export const baseUrl = 'http://192.168.5.13/gateway_interface/' |
| | | export const baseUrl = 'gateway_interface/' |
| | | // export const baseUrl = 'http://192.168.5.13/gateway_interface/' |
| | | // export const baseUrl = 'http://192.168.0.173/gateway_interface/' |
| | | |
| | | export const statusMap = { |
| | |
| | | { |
| | | path: '/PlatformCall', // 月台叫号大屏 |
| | | name: 'PlatformCall', |
| | | meta: { |
| | | title: '安泰物流月台叫号大屏' |
| | | }, |
| | | component: () => import('../views/PlatformCall.vue') |
| | | }, |
| | | { |
| | |
| | | |
| | | |
| | | router.beforeEach((to, from, next) => { |
| | | window.document.title = to.meta.title |
| | | window.document.title = to.meta.title |
| | | next() |
| | | }) |
| | | |
| | |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>实时园区车辆</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="second_title"> |
| | | <div class="title"> |
| | |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>在园人员分析</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="second_title"> |
| | | <div class="title"> |
| | |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>当前车辆滞留预警</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="table"> |
| | | <div class="line header"> |
| | |
| | | <div class="separate"></div> |
| | | <div class="tab" :class="{ active: warningTab == '2' }" @click="tasClick('2')">行为告警</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="one_swiper_wrap"> |
| | | <div class="list one-swiper"> |
| | |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>园区安防设备</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="monitoring" @click="showJk = !showJk"> |
| | | <img src="@/assets/images/SecurityControl/ic_jiankong@2x.png" class="icon" alt=""> |
| | |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>今日访客滞留情况</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="table"> |
| | | <div class="line header"> |
| | |
| | | show: true, |
| | | position: 'outside', |
| | | formatter: (params) => { |
| | | const index = params.dataIndex; |
| | | const index = params.dataIndex |
| | | return `{color${index}|${params.data.name} ${params.data.rate}%}` |
| | | // return `<div>${params.data.name}</div>` |
| | | }, |
| | |
| | | margin-bottom: 20px; |
| | | font-size: 14px; |
| | | color: #D2E0FF; |
| | | background: rgba(0, 86, 255, 0.05); |
| | | backdrop-filter: blur(5px); |
| | | |
| | | .second_title { |
| | | margin-top: 24px; |
| | |
| | | |
| | | .right_box_one { |
| | | margin-bottom: 20px; |
| | | background: rgba(0, 86, 255, 0.05); |
| | | backdrop-filter: blur(5px); |
| | | |
| | | .second_title { |
| | | margin-top: 20px; |
| | |
| | | } |
| | | } |
| | | |
| | | .right_box_two {} |
| | | .right_box_two { |
| | | background: rgba(0, 86, 255, 0.05); |
| | | backdrop-filter: blur(5px); |
| | | } |
| | | |
| | | .right_box_three {} |
| | | .right_box_three { |
| | | background: rgba(0, 86, 255, 0.05); |
| | | backdrop-filter: blur(5px); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | .one_swiper_wrap { |
| | | height: 140px; |
| | | overflow: hidden; |
| | | background: rgba(0, 86, 255, 0.05); |
| | | backdrop-filter: blur(5px); |
| | | } |
| | | |
| | | .list { |
| | |
| | | flex: 1; |
| | | margin-right: 20px; |
| | | position: relative; |
| | | background: rgba(0, 86, 255, 0.05); |
| | | backdrop-filter: blur(5px); |
| | | |
| | | .content { |
| | | display: flex; |
| | |
| | | |
| | | .visitor_warning { |
| | | width: 360px; |
| | | background: rgba(0, 86, 255, 0.05); |
| | | backdrop-filter: blur(5px); |
| | | |
| | | .table { |
| | | .list { |
| | |
| | | align-items: center; |
| | | font-weight: bold; |
| | | font-size: 16px; |
| | | background-image: -webkit-linear-gradient(top, |
| | | #ffffff 0%, |
| | | #c8ddff 66%, |
| | | #85b4ff 72%, |
| | | #74a9ff 100%); |
| | | -webkit-background-clip: text; |
| | | -webkit-text-fill-color: transparent; |
| | | |
| | | .icon { |
| | | width: 16px; |
| | |
| | | <template> |
| | | <v-scale-screen width="1920" height="960"> |
| | | <div class="main_app"> |
| | | <img src="@/assets/images/FireFighting/bg@2x.png" class="main_bg" alt="" /> |
| | | <img src="@/assets/images/task/bg@2x.png" class="main_bg" alt="" /> |
| | | <div class="main_header"> |
| | | <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" /> |
| | | <div class="title">安泰智慧物流园区-作业效能统筹</div> |
| | |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>今日月台完成订单统计</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="car_static"> |
| | | <div class="echart_wrap"> |
| | |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>今日月台工作时长趋势</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="list one-swiper"> |
| | | <div class="swiper-wrapper"> |
| | |
| | | <div class="separate"></div> |
| | | <div class="tab" :class="{ active: activeTab3 == 0 }" @click="tabClick3(0)">入库</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="echart_wrap"> |
| | | <div class="echart2" id="echart2"></div> |
| | |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>今日车辆作业情况</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="static_wrap"> |
| | | <div class="item"> |
| | |
| | | <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> |
| | | <div>实时告警</div> |
| | | </div> |
| | | <img src="@/assets/images/title@2x.png" class="bg" alt="" /> |
| | | <img src="@/assets/images/task/title@2x.png" class="bg" alt="" /> |
| | | </div> |
| | | <div class="list three-swiper"> |
| | | <div class="swiper-wrapper"> |