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({ |
| | |
| | | </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 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> |
| | |
| | | </swiper> |
| | | </view> |
| | | <!-- --> |
| | | <view class="title_wrap"><view class="name">业务办理</view></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')"> |
| | | <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')"> |
| | | <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')"> |
| | | <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')"> |
| | | <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')"> |
| | | <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> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { logoutPost, driverHomeData } from '@/api'; |
| | | import {
|
| | | logoutPost,
|
| | | driverHomeData,
|
| | | app_url
|
| | | } from '@/api'
|
| | | export default { |
| | | data() { |
| | | return { |
| | | taskList: [], |
| | | driverInfo: uni.getStorageSync('driverInfo'), |
| | | |
| | | }; |
| | | }
|
| | | }, |
| | | onShow() { |
| | | this.initData(); |
| | | this.initData()
|
| | | }, |
| | |
|
| | | methods: { |
| | | jump(path) {
|
| | | this.$jump(path)
|
| | | },
|
| | | initData() { |
| | | driverHomeData().then(res => { |
| | | if (res.code == 200) { |
| | |
| | | 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' |
| | | }); |
| | | logoutPost()
|
| | | this.$store.commit('empty')
|
| | | window.location.href = app_url
|
| | | }, |
| | | taskClick(item) { |
| | | const status = item.status |
| | | console.log(item); |
| | | if(status == 0){ |
| | | uni.navigateTo({url: '/pages/driver/taskConfirm?id=' + item.id}); |
| | | 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}`}); |
| | | 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({ |
| | |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | }
|
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | align-items: center; |
| | | margin-bottom: 24rpx; |
| | | padding-top: 10rpx; |
| | |
|
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 34rpx; |
| | | color: #222222; |
| | | } |
| | |
|
| | | .btn { |
| | | width: 144rpx; |
| | | height: 56rpx; |
| | |
| | | align-items: center; |
| | | } |
| | | } |
| | |
|
| | | .main_app { |
| | | padding-top: 12rpx; |
| | | } |
| | |
|
| | | .banner_wrap { |
| | | padding: 54rpx 44rpx; |
| | | color: #fff; |
| | |
| | | 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; |
| | |
| | | box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(39, 155, 170, 0.31); |
| | | border-radius: 24rpx; |
| | | } |
| | |
|
| | | .banner { |
| | | position: absolute; |
| | | top: 0; |
| | |
| | | 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; |
| | |
| | | line-height: 48rpx; |
| | | margin-bottom: 4rpx; |
| | | } |
| | |
|
| | | .h2 { |
| | | font-size: 22rpx; |
| | | color: #7b9da1; |
| | | line-height: 34rpx; |
| | | } |
| | |
|
| | | .img { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | 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; |
| | |
| | | margin-left: -20rpx; |
| | | box-sizing: border-box; |
| | | } |
| | |
|
| | | .item { |
| | | background: #ffffff; |
| | | box-shadow: 0rpx 6rpx 24rpx 0rpx rgba(39, 155, 170, 0.32); |
| | |
| | | height: 280rpx; |
| | | width: 98%; |
| | | margin-left: 1%; |
| | |
|
| | | .head { |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
| | | 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; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .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; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .copyright { |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | margin-top: 44rpx; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | |
|
| | | image { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { wxAuthorize } from '@/api' |
| | | import { wxAuthorize, app_url } from '@/api' |
| | | export default { |
| | | |
| | | data() { |
| | | return { |
| | | |
| | | } |
| | | }, |
| | | onBackPress(options) { |
| | | uni.redirectTo({ |
| | | url: '/pages/login/login' |
| | | }) |
| | | return true |
| | | }, |
| | | onLoad() { |
| | | |
| | |
| | | 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)">
|
| | |
| | | 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
|
| | | // 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
|
| | |
| | | if (res.data.member) {
|
| | | that.$store.commit('setMember', res.data.member)
|
| | | } |
| | | let flag = res.data.member && res.data.member.id
|
| | | 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) |
| | | }) |
| | | }
|
| | | 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') |
| | |
| | | }
|
| | | })
|
| | | }
|
| | | // }
|
| | | // 刷新token
|
| | | // setTimeout(() => {
|
| | | // refreshToken().then(res => {
|
| | | // if (res.code && res.code === 200) {
|
| | | // this.$store.commit('setToken', res.data)
|
| | | // }
|
| | | // })
|
| | | // }, 3000)
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="title_wrap"> |
| | | <view class="name" v-if="userInfo.realname" |
| | | >{{ userInfo.realname || "" }},欢迎登录~</view |
| | | > |
| | | <view class="name" v-if="userInfo.realname">{{ userInfo.realname || "" }},欢迎登录~</view>
|
| | | <view class="name" v-else>请先登录</view> |
| | | <view class="btn" @click="loginOut">{{ |
| | | userInfo.realname ? "退出登录" : "去登录" |
| | |
| | | <view class="banner_wrap"> |
| | | <view class="h1">安泰物流</view> |
| | | <view class="h2">安全重于泰山 服务追求卓越</view> |
| | | <image |
| | | class="banner" |
| | | src="../../static/banner.jpg" |
| | | mode="widthFix" |
| | | ></image> |
| | | <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 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> |
| | | </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 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> |
| | | </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" /> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { logoutPost, stagingHead, wxAuthorize, refreshToken } from '@/api' |
| | | import {
|
| | | logoutPost,
|
| | | stagingHead,
|
| | | wxAuthorize,
|
| | | refreshToken,
|
| | | app_url
|
| | | } from '@/api'
|
| | | export default { |
| | | data() { |
| | | return { |
| | | userInfo: uni.getStorageSync('userInfo') || {permissions: []}, |
| | | 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' }, |
| | | 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' } |
| | | 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('----'); |
| | | },
|
| | |
|
| | | onShow() {
|
| | | setTimeout(() => {
|
| | | this.getTaskInfo() |
| | | }) |
| | | console.log('aaa', this.userInfo.permissions.indexOf('system:user:create')); |
| | | }, 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() { |
| | | this.$store.commit('empty') |
| | | logoutPost() |
| | | uni.redirectTo({ |
| | | url: '/pages/staffLogin/login' |
| | | }) |
| | | this.$store.commit('empty')
|
| | | window.location.href = app_url
|
| | | }, |
| | | getTaskInfo() { |
| | | stagingHead({ |
| | |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | }
|
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | |
| | | align-items: center; |
| | | margin-bottom: 24rpx; |
| | | padding-top: 10rpx; |
| | |
|
| | | .name { |
| | | font-weight: 600; |
| | | font-size: 34rpx; |
| | | color: #222222; |
| | | } |
| | |
|
| | | .btn { |
| | | width: 144rpx; |
| | | height: 56rpx; |
| | |
| | | align-items: center; |
| | | } |
| | | } |
| | |
|
| | | .main_app { |
| | | padding-top: 12rpx; |
| | | } |
| | |
|
| | | .list{ |
| | | display: flex; |
| | | width: 100%; |
| | | flex-wrap: wrap; |
| | |
|
| | | .item{ |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | margin-bottom: 40rpx; |
| | | font-size: 26rpx; |
| | | position: relative; |
| | |
|
| | | image{ |
| | | width: 88rpx; |
| | | height: 88rpx; |
| | | margin-bottom: 20rpx; |
| | | } |
| | |
|
| | | .task_num{ |
| | | position: absolute; |
| | | top: -10rpx; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .banner_wrap { |
| | | padding: 54rpx 44rpx; |
| | | color: #fff; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | width: 100%; |
| | | left: 0; |
| | | bottom: 48rpx; |
| | |
|
| | | image { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | |
| | | 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()
|
| | | }
|
| | |
| | | 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;
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | 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;
|
| | | 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> |
| | | <view class="sub_btn" @click="handleSub">提交</view> |
| | | </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 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="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>
|
| | | <!-- 流程 -->
|
| | |
| | | </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 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 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>
|
| | |
| | | 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> --> |
| | | <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') |
| | | }, |
| | | { |
| | |
| | | <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())){ |
| | | 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), |
| | |
| | | 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); |