Merge remote-tracking branch 'origin/master'
| | |
| | | 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"> |
| | |
| | | " CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime, c.REALNAME as bookingUser ," + |
| | | //" CASE WHEN a.START_TIME > now() AND a.`STATUS` = 0 THEN 1 WHEN ( (a.END_TIME < now() AND a.`STATUS` = 0 ) or a.`STATUS` = 2 ) THEN 3 WHEN a.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus ," + |
| | | " CASE WHEN a.START_TIME_REAL IS NULL AND a.`STATUS` = 0 THEN 1 " + |
| | | // " WHEN ( (a.END_TIME < now() AND a.`STATUS` = 0 ) or a.`STATUS` = 2 ) THEN 3 " + |
| | | " WHEN ( (a.END_TIME < now() AND a.`STATUS` = 0 ) or a.`STATUS` = 2 ) THEN 3 " + |
| | | "WHEN a.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus ," + |
| | | " b.IMGURL as imgUrl ," + |
| | | " a.remark " + |
| | |
| | | @Select(" select a.id , a.START_TIME , a.END_TIME , b.id as roomId, b.`NAME` as roomName , a.`NAME` as meetingName ,date_format(a.START_TIME,'%Y年%m月%d日') as meetingDate ," + |
| | | " CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime, c.REALNAME as bookingUserName ," + |
| | | //" CASE WHEN a.START_TIME > now() AND a.`STATUS` = 0 THEN 1 WHEN a.END_TIME < now() AND a.`STATUS` = 0 THEN 3 WHEN a.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus ," + |
| | | " CASE WHEN a.START_TIME_REAL IS NULL AND a.`STATUS` = 0 THEN 1 WHEN a.END_TIME < now() AND a.`STATUS` = 0 THEN 3 WHEN a.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus ," + |
| | | " CASE WHEN a.START_TIME_REAL IS NULL AND a.`STATUS` = 0 THEN 1 WHEN ( (a.END_TIME < now() AND a.`STATUS` = 0 ) or a.status = 2 ) THEN 3 WHEN a.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus ," + |
| | | " a.CONTENT as meetingContent, c.MOBILE as bookingUserMobile , e.`NAME` as bookingUserDepartment , a.CREATOR as bookingUserId , a.remark " + |
| | | " from meeting_book a inner join meeting_rooms b on a.ROOM_ID = b.ID " + |
| | | " left join system_user c on a.CREATOR = c.id " + |
| | |
| | | String carUseBookAuditSuccess = "carUseBookAuditSuccess"; |
| | | //用车申请-审批驳回通知(给申请人):。 |
| | | String carUseBookAuditFail = "carUseBookAuditFail"; |
| | | //用车申请-审批驳回通知(给申请人):。 |
| | | //用车申请-待审批(给申请人):。 |
| | | String carUseBookWaitAudit = "carUseBookWaitAudit"; |
| | | //用车申请-待审批(给申请人):。 |
| | | String carUseBookCancel = "carUseBookCancel"; |
| | | } |
| | | |
| | | |
| | |
| | | List<String> openIds,Integer sendType){ |
| | | try { |
| | | if(CollectionUtils.isNotEmpty(openIds)){ |
| | | WxNoticeConfig wxNoticeConfig = wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.visit) |
| | | WxNoticeConfig wxNoticeConfig = wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.carUse) |
| | | .eq(WxNoticeConfig::getObjCode,objCode) |
| | | .eq(WxNoticeConfig::getStatus, Constants.ZERO) |
| | | .last(" limit 1") |
| | |
| | | Map<String, Object> thing3 = new HashMap<String,Object>(); |
| | | if(Constants.equalsInteger(sendType,Constants.ONE)){ |
| | | thing3.put("value","申请待您审批"); |
| | | }else{ |
| | | }else if(Constants.equalsInteger(sendType,Constants.ZERO)){ |
| | | if(Constants.equalsInteger(carUseBook.getStatus(),Constants.ZERO)){ |
| | | thing3.put("value","申请提交成功待审核"); |
| | | }else if(Constants.equalsInteger(carUseBook.getStatus(),Constants.TWO)){ |
| | |
| | | }else{ |
| | | thing3.put("value","申请已被驳回"); |
| | | } |
| | | }else{ |
| | | thing3.put("value","申请已被取消"); |
| | | } |
| | | //申请人 |
| | | Map<String, Object> thing1 = new HashMap<String,Object>(); |
| | |
| | | dataMap.put("thing1",thing1); |
| | | dataMap.put("thing11",thing11); |
| | | dataMap.put("time14",time14); |
| | | paramMap.put("template_id", wxNoticeConfig.getTempId()); |
| | | paramMap.put("data", dataMap); |
| | | for (String openId:openIds) { |
| | | paramMap.clear(); |
| | | paramMap.put("template_id", wxNoticeConfig.getTempId()); |
| | | paramMap.put("touser", openId); |
| | | paramMap.put("data", dataMap); |
| | | String response = HttpsUtil.postJson(postUrL, JSONObject.toJSONString(paramMap)); |
| | |
| | | private String companyName; |
| | | |
| | | |
| | | @ApiModelProperty(value = "openid", example = "1") |
| | | @ExcelColumn(name="openid") |
| | | @TableField(exist = false) |
| | | private String systemOpenid; |
| | | |
| | | |
| | | @ApiModelProperty(value = "待审批记录", example = "1") |
| | | @TableField(exist = false) |
| | |
| | | import com.doumee.dao.business.join.VisitsJoinMapper; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.business.vo.ApproveDataVO; |
| | | import com.doumee.dao.system.SystemUserMapper; |
| | | import com.doumee.dao.system.dto.NoticesDTO; |
| | | import com.doumee.dao.system.join.NoticesJoinMapper; |
| | | import com.doumee.dao.system.model.Notices; |
| | |
| | | |
| | | @Autowired |
| | | private CarUseBookMapper carUseBookMapper; |
| | | |
| | | @Autowired |
| | | private SystemUserMapper systemUserMapper; |
| | | |
| | | @Autowired |
| | | private CarDriverMapper carDriverMapper; |
| | |
| | | ); |
| | | //公众号通知 |
| | | if(StringUtils.isNotBlank(member.getSystemOpenid())){ |
| | | wxPlatNotice.sendCarUseBookTemplateNotice( |
| | | wxNoticeConfigMapper, |
| | | carUseBookMapper.selectById(businessId), |
| | | WxPlatConstants.carUseBookContent.carUseBookWaitAudit, |
| | | token, |
| | | Arrays.asList(member.getSystemOpenid().split(",")), |
| | | Constants.ONE); |
| | | CarUseBook carUseBook = carUseBookMapper.selectById(businessId); |
| | | if(Objects.nonNull(carUseBook)){ |
| | | SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); |
| | | if(Objects.nonNull(systemUser)){ |
| | | carUseBook.setMemberName(systemUser.getRealname()); |
| | | wxPlatNotice.sendCarUseBookTemplateNotice( |
| | | wxNoticeConfigMapper, |
| | | carUseBookMapper.selectById(businessId), |
| | | WxPlatConstants.carUseBookContent.carUseBookWaitAudit, |
| | | token, |
| | | Arrays.asList(member.getSystemOpenid().split(",")), |
| | | Constants.ONE); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) |
| | | public void approved(ApproveDTO approveDTO){ |
| | | WxPlatNotice wxPlatNotice = new WxPlatNotice(); |
| | | if(Objects.isNull(approveDTO) |
| | | || Objects.isNull(approveDTO.getObjId()) |
| | | || Objects.isNull(approveDTO.getObjType()) |
| | |
| | | new MPJLambdaWrapper<Approve>() |
| | | .selectAll(Approve.class) |
| | | .selectAs(Member::getPhone,Approve::getMemberPhone) |
| | | .selectAs(SystemUser::getOpenid,Approve::getSystemOpenid) |
| | | .leftJoin(Member.class,Member::getId,Approve::getChekorId) |
| | | .leftJoin(SystemUser.class,SystemUser::getMemberId,Member::getId) |
| | | .eq(Approve::getStatus,Constants.approveStatus.wait) |
| | | .eq(Approve::getObjId,approve.getObjId()) |
| | | .eq(Approve::getObjType,approve.getObjType()) |
| | |
| | | .eq(Approve::getObjType,approve.getObjType()) |
| | | .eq(Approve::getLevel,(approve.getLevel()+1)) |
| | | ); |
| | | |
| | | //发送短信通知 下级审批人 |
| | | List<String> memberPhone = waitAuditList.stream().filter(i->StringUtils.isNotBlank(i.getMemberPhone())).map(i->i.getMemberPhone()).collect(Collectors.toList()); |
| | | //物流车预约 |
| | | if(approveDTO.getObjType().equals(Constants.approveObjectType.reason)){ |
| | | SmsEmailServiceImpl.sendPlatformBookSms(systemDictDataBiz, |
| | | emayService,smsEmailMapper,smsConfigMapper,platformBooksMapper,approveDTO.getObjId(), |
| | | SmsConstants.platformBookContent.platformBookWaitAudit, |
| | | approveDTO.getCheckInfo(),memberPhone |
| | | ); |
| | | } |
| | | List<String> openIdList =waitAuditList.stream().filter(i->StringUtils.isNotBlank(i.getSystemOpenid())).map(i->i.getSystemOpenid()).collect(Collectors.toList()); |
| | | |
| | | else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar) |
| | | || approveDTO.getObjType().equals(Constants.approveObjectType.unCityUseCar)){ |
| | | SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz, |
| | | emayService,smsEmailMapper,smsConfigMapper,carUseBookMapper,approveDTO.getObjId(), |
| | | SmsConstants.hiddenDangerContent.hiddenDangerDealUser, |
| | | approveDTO.getCheckInfo(),memberPhone); |
| | | } |
| | | this.sendNextLvSms(approve,approveDTO,memberPhone,openIdList); |
| | | |
| | | //访客申请/报备 |
| | | if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit) |
| | | ||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit) |
| | | ||approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)) { |
| | | Visits visits = visitsMapper.selectById(approve.getObjId()); |
| | | if(Objects.nonNull(visits)){ |
| | | if(Constants.equalsInteger(visits.getStatus(),Constants.ZERO)){ |
| | | visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.ONE).eq(Visits::getId,visits.getId())); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( |
| | | Constants.approveObjectType.unCityUseCar)){ |
| | | this.updDriver(approveDTO,approve,false); |
| | | } |
| | | // if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( |
| | | // Constants.approveObjectType.unCityUseCar)){ |
| | | // this.updDriver(approveDTO,approve,false); |
| | | // } |
| | | }else if(approve.getApproveType().equals(Constants.ONE)){ |
| | | //会签 且终审 |
| | | //无他人审批的情况 则修改数据状态 |
| | |
| | | }else{ |
| | | if(Constants.equalsInteger(approveList.size(),Constants.ZERO)&&Constants.equalsInteger(approve.getIsEndCheck(),Constants.ZERO)){ |
| | | /**开启下一级别的数据为待审核**/ |
| | | |
| | | List<Approve> waitAuditList = approveJoinMapper.selectJoinList(Approve.class, |
| | | new MPJLambdaWrapper<Approve>() |
| | | .selectAll(Approve.class) |
| | | .selectAs(Member::getPhone,Approve::getMemberPhone) |
| | | .selectAs(SystemUser::getOpenid,Approve::getSystemOpenid) |
| | | .leftJoin(Member.class,Member::getId,Approve::getChekorId) |
| | | .leftJoin(SystemUser.class,SystemUser::getMemberId,Member::getId) |
| | | .eq(Approve::getStatus,Constants.approveStatus.wait) |
| | | .eq(Approve::getObjId,approve.getObjId()) |
| | | .eq(Approve::getObjType,approve.getObjType()) |
| | | .eq(Approve::getLevel,(approve.getLevel()+1))); |
| | | |
| | | |
| | | approveJoinMapper.update(null,new UpdateWrapper<Approve>() |
| | | .lambda() |
| | | .set(Approve::getStatus,Constants.approveStatus.auditIng) |
| | |
| | | .eq(Approve::getObjType,approve.getObjType()) |
| | | .eq(Approve::getLevel,(approve.getLevel()+1)) |
| | | ); |
| | | |
| | | |
| | | //发送短信通知 下级审批人 |
| | | List<String> memberPhone = waitAuditList.stream().filter(i->StringUtils.isNotBlank(i.getMemberPhone())).map(i->i.getMemberPhone()).collect(Collectors.toList()); |
| | | List<String> openIdList =waitAuditList.stream().filter(i->StringUtils.isNotBlank(i.getSystemOpenid())).map(i->i.getSystemOpenid()).collect(Collectors.toList()); |
| | | |
| | | this.sendNextLvSms(approve,approveDTO,memberPhone,openIdList); |
| | | |
| | | } |
| | | if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( |
| | | Constants.approveObjectType.unCityUseCar)){ |
| | | this.updDriver(approveDTO,approve,false); |
| | | } |
| | | // if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( |
| | | // Constants.approveObjectType.unCityUseCar)){ |
| | | // this.updDriver(approveDTO,approve,false); |
| | | // } |
| | | } |
| | | } |
| | | this.passNextNotices(dealBusinessBean,notices,approve,approveList,approveCopyList,approveDTO); |
| | |
| | | this.dealBusinessData(approveDTO,approve); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public void sendNextLvSms(Approve approve ,ApproveDTO approveDTO , List<String> memberPhone ,List<String> openIdList){ |
| | | WxPlatNotice wxPlatNotice = new WxPlatNotice(); |
| | | //物流车预约 |
| | | if(approveDTO.getObjType().equals(Constants.approveObjectType.reason)){ |
| | | SmsEmailServiceImpl.sendPlatformBookSms(systemDictDataBiz, |
| | | emayService,smsEmailMapper,smsConfigMapper,platformBooksMapper,approveDTO.getObjId(), |
| | | SmsConstants.platformBookContent.platformBookWaitAudit, |
| | | approveDTO.getCheckInfo(),memberPhone |
| | | ); |
| | | //TODO 发送下级的待审批的通知 |
| | | |
| | | |
| | | } else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar) |
| | | || approveDTO.getObjType().equals(Constants.approveObjectType.unCityUseCar)){ |
| | | |
| | | this.updDriver(approveDTO,approve,false); |
| | | |
| | | SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz, |
| | | emayService,smsEmailMapper,smsConfigMapper,carUseBookMapper,approveDTO.getObjId(), |
| | | SmsConstants.carUseBookContent.carUseBookWaitAudit, |
| | | approveDTO.getCheckInfo(),memberPhone); |
| | | //发送公众号通知 |
| | | if(CollectionUtils.isNotEmpty(openIdList)){ |
| | | CarUseBook carUseBook = carUseBookMapper.selectById(approve.getObjId()); |
| | | if(Objects.nonNull(carUseBook)){ |
| | | SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); |
| | | if(Objects.nonNull(systemUser)){ |
| | | carUseBook.setMemberName(systemUser.getRealname()); |
| | | //发送微信公众号通知 |
| | | wxPlatNotice.sendCarUseBookTemplateNotice( |
| | | wxNoticeConfigMapper,carUseBook, |
| | | WxPlatConstants.carUseBookContent.carUseBookWaitAudit, |
| | | systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), |
| | | openIdList,1); |
| | | } |
| | | } |
| | | } |
| | | }else |
| | | //访客申请/报备 |
| | | if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit) |
| | | ||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit) |
| | | ||approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)) { |
| | | Visits visits = visitsMapper.selectById(approve.getObjId()); |
| | | if(Objects.nonNull(visits)){ |
| | | if(Constants.equalsInteger(visits.getStatus(),Constants.ZERO)){ |
| | | visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.ONE).eq(Visits::getId,visits.getId())); |
| | | } |
| | | SmsEmailServiceImpl.sendVisitSms(systemDictDataBiz, |
| | | emayService,smsEmailMapper,smsConfigMapper,visitsMapper,approveDTO.getObjId(), |
| | | approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)? |
| | | SmsConstants.visitReportingContent.visitReportingNotice:SmsConstants.visitContent.visitNotice, |
| | | null,memberPhone |
| | | ); |
| | | //公众号通知 |
| | | if(CollectionUtils.isNotEmpty(openIdList)){ |
| | | wxPlatNotice.sendVisitTemplateNotice( |
| | | wxNoticeConfigMapper,visitsMapper.selectById(approveDTO.getObjId()), |
| | | approveDTO.getObjType().equals(Constants.approveObjectType.visitReporting)?WxPlatConstants.visitReportContent.visitReportWaitAudit:WxPlatConstants.visitContent.visitWaitAudit, |
| | | systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), |
| | | openIdList |
| | | ); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 处理待办信息 |
| | |
| | | this.updDriver(approveDTO,approve,true); |
| | | CarUseBook carUseBook = carUseBookJoinMapper.selectById(approveDTO.getObjId()); |
| | | if(Objects.nonNull(carUseBook)){ |
| | | Member member = memberMapper.selectById(carUseBook.getMemberId()); |
| | | SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); |
| | | //发送通知短息 |
| | | if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getPhone())){ |
| | | if(Objects.nonNull(systemUser)&&StringUtils.isNotBlank(systemUser.getMobile())){ |
| | | SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz, |
| | | emayService,smsEmailMapper,smsConfigMapper,carUseBookMapper,approveDTO.getObjId(), |
| | | Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?SmsConstants.carUseBookContent.carUseBookAuditSuccess: |
| | | SmsConstants.carUseBookContent.carUseBookAuditFail, |
| | | approveDTO.getCheckInfo(),Arrays.asList(member.getPhone().split(",")) |
| | | approveDTO.getCheckInfo(),Arrays.asList(systemUser.getMobile().split(",")) |
| | | ); |
| | | } |
| | | if(StringUtils.isNotBlank(member.getOpenid())){ |
| | | if(Objects.nonNull(systemUser)&&StringUtils.isNotBlank(systemUser.getOpenid())){ |
| | | carUseBook.setMemberName(systemUser.getRealname()); |
| | | //发送微信公众号通知 |
| | | wxPlatNotice.sendCarUseBookTemplateNotice( |
| | | wxNoticeConfigMapper,carUseBook, |
| | | Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?WxPlatConstants.carUseBookContent.carUseBookAuditSuccess: WxPlatConstants.carUseBookContent.carUseBookAuditFail, |
| | | systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), |
| | | Arrays.asList(member.getOpenid().split(",")),0); |
| | | Arrays.asList(systemUser.getOpenid().split(",")),0); |
| | | } |
| | | } |
| | | |
| | |
| | | import com.doumee.dao.business.vo.ApproveDataVO; |
| | | import com.doumee.dao.business.vo.DateIntervalVO; |
| | | |
| | | import com.doumee.dao.system.SystemUserMapper; |
| | | import com.doumee.dao.system.join.NoticesJoinMapper; |
| | | import com.doumee.dao.system.model.Notices; |
| | | import com.doumee.dao.system.model.SystemDictData; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.ApproveService; |
| | | import com.doumee.service.business.CarUseBookService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | |
| | | @Autowired |
| | | private WxNoticeConfigMapper wxNoticeConfigMapper; |
| | | |
| | | @Autowired |
| | | private SystemUserMapper systemUserMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) |
| | | public Integer create(CarUseBook carUseBook) throws Exception { |
| | |
| | | //发送微信公众号通知 |
| | | //发送微信公众号通知 |
| | | WxPlatNotice wxPlatNotice = new WxPlatNotice(); |
| | | Member member = memberMapper.selectById(carUseBook.getMemberId()); |
| | | if(Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())){ |
| | | SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); |
| | | if(Objects.nonNull(systemUser) && StringUtils.isNotBlank(systemUser.getOpenid())){ |
| | | carUseBook.setMemberName(systemUser.getRealname()); |
| | | wxPlatNotice.sendCarUseBookTemplateNotice( |
| | | wxNoticeConfigMapper,carUseBook, |
| | | WxPlatConstants.carUseBookContent.carUseBookUpload, |
| | | systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), |
| | | Arrays.asList(member.getOpenid().split(",")),0); |
| | | Arrays.asList(systemUser.getOpenid().split(",")),0); |
| | | } |
| | | |
| | | return carUseBook.getId(); |
| | |
| | | ); |
| | | |
| | | |
| | | Member member = memberMapper.selectById(carUseBook.getMemberId()); |
| | | if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getPhone())){ |
| | | SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); |
| | | if(Objects.nonNull(systemUser)&&StringUtils.isNotBlank(systemUser.getMobile())){ |
| | | //用车申请取消 |
| | | SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz, |
| | | emayService,smsEmailMapper,smsConfigMapper,carUseBookMapper,carUseBook.getId(), |
| | | SmsConstants.carUseBookContent.carUseBookCancel, |
| | | null, Arrays.asList(member.getPhone().split(",")) |
| | | info, Arrays.asList(systemUser.getMobile().split(",")) |
| | | ); |
| | | if(StringUtils.isNotBlank(systemUser.getOpenid())){ |
| | | carUseBook.setMemberName(systemUser.getRealname()); |
| | | WxPlatNotice wxPlatNotice = new WxPlatNotice(); |
| | | wxPlatNotice.sendCarUseBookTemplateNotice( |
| | | wxNoticeConfigMapper, |
| | | carUseBook, |
| | | WxPlatConstants.carUseBookContent.carUseBookCancel, |
| | | systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), |
| | | Arrays.asList(systemUser.getOpenid().split(",")), |
| | | Constants.TWO); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | content = content.replace("{提交的出发时间}",DateUtil.getFomartDate(carUseBook.getStartTime(),"yyyy-MM-dd HH:mm")); |
| | | }else if(objCode.equals(SmsConstants.carUseBookContent.carUseBookAuditFail) || objCode.equals(SmsConstants.carUseBookContent.carUseBookCancel)){ |
| | | //您的【用车申请】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系派车员。 |
| | | if(StringUtils.isBlank(msg)){ |
| | | msg = "其他原因"; |
| | | } |
| | | content = content.replace("{驳回原因}",msg); |
| | | //您的【用车申请】已被取消,取消原因为:{取消原因}。如有疑问,请联系派车员。 |
| | | content = content.replace("{取消原因}",msg); |