| | |
| | | <div class="df_ac mb20"> |
| | | <span>æç´¢è½¦è¾ï¼</span> |
| | | <el-input class="flex1 mr20" v-model="carCodeFront" placeholder="请è¾å
¥è½¦çå·"></el-input> |
| | | <el-button type="primary" @click="getList">æ¥æ¾</el-button> |
| | | <el-button type="primary" @click="getList(1)">æ¥æ¾</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </div> |
| | | <div class="list"> |
| | |
| | | this.getList() |
| | | }) |
| | | }, |
| | | getList() { |
| | | getList(page) { |
| | | const { activePlat, pagination, carCodeFront } = this |
| | | if(page){ |
| | | pagination.page = page |
| | | } |
| | | platformJobPage({ |
| | | model: { platformGroupId: activePlat.id, queryStatus: '0,1', carCodeFront }, |
| | | page: pagination.page, |
| | |
| | | <el-button v-if="task.status == 5 || task.status == 8" plain |
| | | @click="handleTransform(item, task)">转移æå°</el-button> |
| | | <el-button v-if="task.status == 4" plain @click="handlePass(task)">è¿å·</el-button> |
| | | <el-button v-preventReClick :loading="loadingFinish" v-if="task.status == 5 || task.status == 8" type="primary" |
| | | @click="handleFinish(task)">ä½ä¸å®æ</el-button> |
| | | <el-button v-preventReClick :loading="loadingOpen" v-if="task.status == 4" type="primary" @click="handleWork(task)">å¼å§ä½ä¸</el-button> |
| | | <el-button v-preventReClick :loading="loadingFinish" v-if="task.status == 5 || task.status == 8" |
| | | type="primary" @click="handleFinish(task)">ä½ä¸å®æ</el-button> |
| | | <el-button v-preventReClick :loading="loadingOpen" v-if="task.status == 4" type="primary" |
| | | @click="handleWork(task)">å¼å§ä½ä¸</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | {
|
| | | "path": "pages/staff/task/visitorApprove",
|
| | | "style": {
|
| | | "navigationBarTitleText": "访客审æ¹",
|
| | | "navigationBarTitleText": "å
¥å审æ¹",
|
| | | "enablePullDownRefresh": false
|
| | | }
|
| | | },
|
| | |
| | | <view class="h1">访客é¢çº¦å®¡æ ¸ä¸éè¿</view> |
| | | <view class="h2">æ¨çæ¥è®¿ç³è¯·å·²è¢«é©³åï¼å¦æçé®ï¼å¯è系被访人</view> |
| | | </view> |
| | | <view class="head_wrap head_error" v-if="info.status == 4"> |
| | | <view class="h1">访客é¢çº¦å®¡æ ¸å·²åæ¶</view> |
| | | <view class="h2">æ¨çæ¥è®¿ç³è¯·å·²åæ¶ï¼è¯·éæ°ç³è¯·</view> |
| | | </view> |
| | | <view class="head_wrap head_success" v-if="info.status == 7"> |
| | | <view class="h1">访客é¢çº¦æè®¿ä¸</view> |
| | | <view class="h2">ä½ ç访ç³è¯·æ£å¨è¿è¡,妿çé®ï¼å¯è系被访人</view> |
| | | </view> |
| | | <view class="head_wrap head_success" v-if="info.status == 8"> |
| | | <view class="h1">访客é¢çº¦å·²ç¾ç¦»</view> |
| | | <view class="h2">æ¨çæ¥è®¿ç³è¯·å·²å¤±æï¼è¯·éæ°ç³è¯·</view> |
| | | </view> |
| | | <view class="head_wrap head_error" v-if="info.status == 9"> |
| | | <view class="h1">访客é¢çº¦å·²å¤±æ</view> |
| | | <view class="h2">æ¨çæ¥è®¿ç³è¯·å·²å¤±æï¼è¯·éæ°ç³è¯·</view> |
| | |
| | | return true |
| | | }, |
| | | onLoad(option) { |
| | | uni.setStorageSync('ywinfo',{}) |
| | | this.detail = option.detail || '' |
| | | this.getDetail(option.id) |
| | | // visitorSubDetail({ id: option.id }) |
| | |
| | | color: #ffffff; |
| | | } |
| | | } |
| | | .head_gray{ |
| | | background-color: #666666; |
| | | color: #fff; |
| | | } |
| | | .head_error { |
| | | background: #fdeded; |
| | | .h1 { |
| | |
| | | <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>
|
| | | {{ 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>
|
| | |
| | | return {
|
| | | taskList: [],
|
| | | driverInfo: uni.getStorageSync('driverInfo'),
|
| | |
|
| | | }
|
| | | }, |
| | | onLoad() { |
| | | const ywinfo = uni.getStorageSync('ywinfo') || {} |
| | | if(ywinfo.ywid && ywinfo.type == 0){ |
| | | setTimeout(() => { |
| | | uni.removeStorageSync('ywinfo') |
| | | }, 500) |
| | | uni.setStorageSync('ywinfo',{})
|
| | | const yw = ywinfo.yw |
| | | setTimeout(() => {
|
| | | if(yw == 7){ |
| | | this.jump('/pages/driver/reservedDetail?id=' + ywinfo.ywid) |
| | | }else if(yw == 8){ |
| | | this.jump('/pages/driver/taskDetail?id=' + ywinfo.ywid) |
| | | }else if(yw == 0) { |
| | | getLastWaitJob({ uuid: ywinfo.ywid }).then(res => { |
| | | getLastWaitJob({
|
| | | uuid: ywinfo.ywid
|
| | | }).then(res => {
|
| | | if(res.data && res.data.id){ |
| | | this.taskClick(res.data) |
| | | } |
| | | }) |
| | | } |
| | | }, 100)
|
| | | } |
| | | },
|
| | | onShow() {
|
| | |
| | | })
|
| | | },
|
| | | loginOut() { |
| | | logoutPost({isH5: 1}).then(res => { |
| | | logoutPost({
|
| | | isH5: 1
|
| | | }).then(res => {
|
| | | this.$store.commit('empty') |
| | | setTimeout(() => { |
| | | window.location.href = app_url |
| | |
| | | <view class="address">{{ item.platformName || 'çå¾
åé
æå°' }}</view> |
| | | <view class="time" v-if="item.status == 5"> |
| | | <u-icon class="mr6" name="clock" color="#4d98a8"></u-icon> |
| | | <text>{{item.callDateTemp}}</text> |
| | | <text>{{item.startDateTemp}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | uni.setStorageSync('ywinfo',{}) |
| | | this.getDetail(option.id) |
| | | }, |
| | | methods: { |
| | |
| | | }
|
| | | },
|
| | | onLoad(option) {
|
| | | uni.setStorageSync('ywinfo',{})
|
| | | this.jobId = option.id
|
| | | if (option.status && option.status == '1') {
|
| | | // wx.config({
|
| | |
| | | onLoad() {
|
| | | const ywinfo = uni.getStorageSync('ywinfo') || {}
|
| | | if (ywinfo.ywid && ywinfo.type == 1) {
|
| | | setTimeout(() => {
|
| | | uni.removeStorageSync('ywinfo')
|
| | | }, 500)
|
| | | uni.setStorageSync('ywinfo',{})
|
| | | const yw = ywinfo.yw
|
| | | setTimeout(() => {
|
| | | if (yw == 2) { |
| | | uni.navigateTo({ |
| | | url: '/pages/appointmentDetails/appointmentDetails?id=' + ywinfo.ywid |
| | | })
|
| | | }
|
| | | }, 100)
|
| | | }
|
| | | },
|
| | | methods: {
|
| | |
| | | onLoad() {
|
| | | const ywinfo = uni.getStorageSync('ywinfo') || {}
|
| | | if (ywinfo.ywid && ywinfo.type == 2) {
|
| | | setTimeout(() => {
|
| | | uni.removeStorageSync('ywinfo')
|
| | | }, 500)
|
| | | uni.setStorageSync('ywinfo',{})
|
| | | const yw = ywinfo.yw
|
| | | setTimeout(() => {
|
| | | if (yw == 1 || yw == 6) {
|
| | | this.jump('/pages/staff/meetingDetail?id=' + ywinfo.ywid)
|
| | | } else if (yw == 2) {
|
| | |
| | | } else if (yw == 5) {
|
| | | this.jump('/pages/staff/vehicle/index')
|
| | | }
|
| | | }, 100)
|
| | | }
|
| | | },
|
| | | onShow() {
|
| | |
| | | },
|
| | | onLoad() {
|
| | | this.currentDate = dayja().format('YYYY-MM-DD')
|
| | | this.initData()
|
| | | this.getRoomList() |
| | | this.tabClick('0')
|
| | | },
|
| | | onShow() {
|
| | | // this.tabClick('0') |
| | | |
| | | this.initData() |
| | | this.tabClick(this.activeTab)
|
| | | },
|
| | | onReachBottom() {
|
| | | const { activeTab, total, myMeetingList, recordList } = this |
| | | console.log(total); |
| | | console.log(recordList);
|
| | | if (activeTab == '0') { |
| | | if(total <= myMeetingList.length) return this.showToast('ææ æ´å¤æ°æ®')
|
| | | this.myPage = this.myPage + 1
|
| | |
| | | </view> |
| | | </view> |
| | | <view class="empty empty2"></view> |
| | | <view class="main_footer" v-if="detail.meetingStatus == '1'"> |
| | | <view class="main_footer" v-if="detail.meetingStatus == '1' && (detail.isAdmin == 1 || detail.showHandle)"> |
| | | <view class="btn" @click="openCancel">æ¤å</view> |
| | | <view class="btn edit" @click="handleEdit">ä¿®æ¹</view> |
| | | <view class="btn agree" @click="handleStart">å¼å§ä¼è®®</view> |
| | | </view> |
| | | <view class="main_footer" v-if="detail.meetingStatus == '2' && detail.isAdmin == 1"> |
| | | <view class="btn agree" @click="openClose">ç»æ</view> |
| | | <view class="btn" @click="openClose">ç»æä¼è®®</view> |
| | | </view> |
| | | <!-- æ¤å --> |
| | | <u-popup |
| | |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | uni.setStorageSync('ywinfo',{}) |
| | | this.id = option.id |
| | | this.getDetail() |
| | | }, |
| | |
| | | const { id } = this |
| | | meetingDetail({ id }).then(res => { |
| | | this.detail = res.data |
| | | const userInfo = uni.getStorageSync('userInfo') || {} |
| | | // const index = this.detail.userResponseList.findIndex(i => i.id == userInfo.id) |
| | | |
| | | this.$set(this.detail, 'showHandle', this.detail.bookingUserId == userInfo.id) |
| | | }) |
| | | }, |
| | | openCancel() { |
| | |
| | | } = this
|
| | | userPagePost({
|
| | | model: {
|
| | | ...param
|
| | | ...param, |
| | | workStatus: 0
|
| | | },
|
| | | ...pagination,
|
| | |
|
| | |
| | | <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in submitFileList" :key="i">
|
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red" @click="fileDel(i)"></u-icon>
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image> |
| | | <video v-if="item.type == 1"
|
| | | :src="item.fileurlFull" :controls="false" :show-center-play-btn="false"></video>
|
| | | <!-- <video v-if="item.type == 1"
|
| | | :src="item.fileurlFull" :controls="false" :show-center-play-btn="false"></video> -->
|
| | | <view v-if="item.type == 1" class="video_wrap">
|
| | | <video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
|
| | | class="video" :enable-progress-gesture="false" muted />
|
| | | <image src="@/static/play.png" class="play" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | this.isShowTime = false
|
| | | },
|
| | | initConfig() {
|
| | | deptListPost({queryHiddenDanger: 1}).then(res => {
|
| | | deptListPost({
|
| | | queryHiddenDanger: 1
|
| | | }).then(res => {
|
| | | this.deptList = [res.data]
|
| | | })
|
| | | DangerConfigType({
|
| | |
| | | display: flex;
|
| | | flex-wrap: wrap;
|
| | | }
|
| | |
|
| | | textarea{ |
| | | width: 100%; |
| | | }
|
| | | .adduser_list_item_ipt1_upload {
|
| | | margin-top: 24rpx;
|
| | | width: 156rpx;
|
| | |
| | | align-items: center;
|
| | | justify-content: center;
|
| | | position: relative;
|
| | |
|
| | | &:nth-of-type(4n){ |
| | | margin-right: 0; |
| | | }
|
| | |
|
| | | .close {
|
| | | position: absolute;
|
| | | right: -20rpx;
|
| | |
| | | z-index: 9999;
|
| | | }
|
| | |
|
| | | .video_wrap {
|
| | | position: relative;
|
| | | border: 1px solid;
|
| | | width: 156rpx;
|
| | | height: 156rpx;
|
| | | border-radius: 4rpx;
|
| | |
|
| | | .play {
|
| | | width: 60rpx !important;
|
| | | height: 60rpx !important;
|
| | | position: absolute;
|
| | | top: 50%;
|
| | | left: 50%;
|
| | | transform: translate(-50%, -50%);
|
| | | }
|
| | | }
|
| | |
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | uni.setStorageSync('ywinfo',{}) |
| | | this.type = option.objType |
| | | this.infoStatus = option.info |
| | | this.getDetail(option.id) |
| | |
| | | } |
| | | if (objType === 2) { |
| | | uni.navigateTo({ |
| | | url: `/pages/staff/vehicle/sendACarDetail?id=${objId}&appr=1&info=${info}` |
| | | url: `/pages/staff/vehicle/sendACarDetail?id=${objId}&info=${info}` |
| | | }) |
| | | } else if (objType === 1) { |
| | | uni.navigateTo({ |
| | |
| | | <image v-if="item.type == 0" :src="item.fileurlFull" @click="priviewImage(item.fileurlFull)" mode="widthFix"
|
| | | class="img" />
|
| | | <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" />
|
| | | <video :src="item.fileurlFull" initial-time="0.01" :show-center-play-btn="false" :controls="false"
|
| | | class="video" :enable-progress-gesture="false" autoplay muted />
|
| | | <image src="@/static/play.png" class="play" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | |
| | | <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealBeforeFileList" :key="i">
|
| | | <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull"
|
| | | mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video>
|
| | | <!-- <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :show-center-play-btn="false" :controls="false" class="video"
|
| | | :enable-progress-gesture="false" autoplay muted></video> -->
|
| | | <view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap">
|
| | | <video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
|
| | | class="video" :enable-progress-gesture="false" muted />
|
| | | <image src="@/static/play.png" class="play" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealAfterFileList" :key="i">
|
| | | <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull"
|
| | | mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video>
|
| | | <!-- <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" initial-time="0.01" :show-center-play-btn="false" :controls="false" class="video"
|
| | | :enable-progress-gesture="false" autoplay muted></video> -->
|
| | | <view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap">
|
| | | <video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
|
| | | class="video" :enable-progress-gesture="false" muted />
|
| | | <image src="@/static/play.png" class="play" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | @click="fileDel('dealBeforeFileList', i)"></u-icon>
|
| | | <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull"
|
| | | mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video>
|
| | | <!-- <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" show-center-play-btn="false" :controls="false" class="video"
|
| | | :enable-progress-gesture="false" autoplay muted></video> -->
|
| | | <view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap">
|
| | | <video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
|
| | | class="video" :enable-progress-gesture="false" muted />
|
| | | <image src="@/static/play.png" class="play" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="label">éå说æ</view>
|
| | |
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red"
|
| | | @click="fileDel('dealBeforeFileList', i)"></u-icon>
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | <!-- <video v-if="item.type == 1" :src="item.fileurlFull" :show-center-play-btn="false" :controls="false" class="video"
|
| | | :enable-progress-gesture="false" muted></video> -->
|
| | | <view v-if="item.type == 1" class="video_wrap">
|
| | | <video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
|
| | | class="video" :enable-progress-gesture="false" muted />
|
| | | <image src="@/static/play.png" class="play" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="label">
|
| | |
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red"
|
| | | @click="fileDel('dealAfterFileList', i)"></u-icon>
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | <!-- <video v-if="item.type == 1" :src="item.fileurlFull" :show-center-play-btn="false" :controls="false"></video> -->
|
| | | <view v-if="item.type == 1" class="video_wrap">
|
| | | <video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
|
| | | class="video" :enable-progress-gesture="false" muted />
|
| | | <image src="@/static/play.png" class="play" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="label">æ´æ¹è¯´æ</view>
|
| | |
| | | <!-- -->
|
| | |
|
| | | <view v-if="videoPlay" class="video_app" >
|
| | | <video controls autoplay muted x5-video-player-type="h5" |
| | | x5-video-player-fullscreen="true" id="myvideo" :src="videoUrl" @fullscreenchange="screenChange"></video> |
| | | <video controls autoplay muted x5-video-player-type="h5" x5-video-player-fullscreen="true" id="myvideo"
|
| | | :src="videoUrl" @fullscreenchange="screenChange"></video>
|
| | | <view class="bg" @click="closeVideo"></view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | };
|
| | | },
|
| | | onLoad(op) {
|
| | | uni.setStorageSync('ywinfo',{})
|
| | | this.id = op.id;
|
| | | this.type = op.objType;
|
| | | this.getDetail();
|
| | | },
|
| | | methods: {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | .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%;
|
| | |
| | | position: absolute;
|
| | | right: -20rpx;
|
| | | top: -20rpx;
|
| | | z-index: 9999;
|
| | | z-index: 999999999999;
|
| | | color: #fff;
|
| | | }
|
| | |
|
| | | image {
|
| | |
| | | margin: 0 -30rpx;
|
| | | }
|
| | | }
|
| | | .video_wrap {
|
| | | position: relative;
|
| | | border: 1px solid;
|
| | | width: 156rpx;
|
| | | height: 156rpx;
|
| | | border-radius: 4rpx;
|
| | |
|
| | | .play {
|
| | | width: 60rpx !important;
|
| | | height: 60rpx !important;
|
| | | position: absolute;
|
| | | top: 50%;
|
| | | left: 50%;
|
| | | transform: translate(-50%, -50%);
|
| | | }
|
| | | }
|
| | | .sel_upload_wrap {
|
| | | width: 100%;
|
| | | border-top: 1px solid #333333;
|
| | |
| | | height: 100vh; |
| | | display: flex; |
| | | align-items: center;
|
| | | z-index: 9990;
|
| | | .bg{ |
| | | background-color: rgba(0,0,0,.6); |
| | | position: absolute; |
| | |
| | | height: 100%; |
| | | z-index: -1; |
| | | }
|
| | |
|
| | | video {
|
| | | width: 100%;
|
| | | height: 42vh;
|
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="status_wrap">
|
| | | <view class="name">{{ info.name }}æäº¤ç{{ cateList[type].name }}</view>
|
| | | <view class="name">{{ info.name }}æäº¤ç访客ç³è¯·</view>
|
| | | <view class="desc" :class="{
|
| | | gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
|
| | | }">{{ infoStatus }}</view>
|
| | | }">{{ statusMap[info.businessStatus] }}</view>
|
| | | <view v-if="info.businessStatus == '0' || info.businessStatus == '1'" class="status">{{
|
| | | statusMap[info.businessStatus]
|
| | | info.info
|
| | | }}</view>
|
| | | <image v-if="info.businessStatus == '2'" src="@/static/ic_passed@2x.png" mode="widthFix" class="status_img">
|
| | | </image>
|
| | |
| | | }
|
| | | },
|
| | | onLoad(op) {
|
| | | uni.setStorageSync('ywinfo',{})
|
| | | this.id = op.id
|
| | | this.type = op.objType
|
| | | this.infoStatus = op.info
|
| | | this.getDetail()
|
| | | },
|
| | | methods: {
|
| | |
| | | <template> |
| | | <view class="main_app"> |
| | | <view class="status_wrap"> |
| | | <view class="name">{{ info.createMemberName }}æäº¤ç{{ cateList[type].name }}</view> |
| | | <view class="name">{{ info.createMemberName }}æäº¤ç访客æ¥å¤</view> |
| | | <view |
| | | class="desc" |
| | | :class="{ |
| | | gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4', |
| | | }" |
| | | >{{ infoStatus }}</view |
| | | >{{ info.info }}</view |
| | | > |
| | | <view v-if="info.businessStatus == '0' || info.businessStatus == '1'" class="status">{{ |
| | | statusMap[info.businessStatus] |
| | |
| | | } |
| | | }, |
| | | onLoad(op) { |
| | | uni.setStorageSync('ywinfo',{}) |
| | | this.id = op.id |
| | | this.type = op.objType |
| | | this.infoStatus = op.info |
| | | this.getDetail() |
| | | }, |
| | | methods: { |
| | |
| | | return { |
| | | param: {} |
| | | } |
| | | }, |
| | | onLoad() { |
| | | uni.setStorageSync('ywinfo',{}) |
| | | } |
| | | } |
| | | </script> |
| | |
| | | userInfo: uni.getStorageSync('userInfo') || {},
|
| | | id: '',
|
| | | appr: '',
|
| | | infoStatus: '',
|
| | | info: {},
|
| | | param: {
|
| | | status: ''
|
| | |
| | | },
|
| | | onLoad(option) {
|
| | | this.id = option.id
|
| | | this.appr = option.appr || ''
|
| | | this.infoStatus = option.info
|
| | | this.appr = 1
|
| | | this.getDetail()
|
| | | },
|
| | | methods: {
|
| | |
| | | },
|
| | | success: (uploadFileRes) => {
|
| | | let res = JSON.parse(uploadFileRes.data)
|
| | | if(res.code !== 200){ |
| | | return this.showToast(res.message) |
| | | }
|
| | | this.visitorData.faceImg = res.data.halfPath
|
| | | this.visitorData.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
|
| | | },
|
| | | fail(err) {
|
| | | alert('失败')
|
| | | fail: (err) => {
|
| | | // this.showToast(err)
|
| | | },
|
| | | complete() {
|
| | | uni.hideLoading();
|
| | |
| | | v-model="form.code" |
| | | placeholder="请è¾å
¥éªè¯ç " |
| | | placeholder-class="placeholder9" |
| | | :maxlength="6" |
| | | type="number" |
| | | /> |
| | | <text class="captcha" v-if="countDown == 0" @click="initCaptcha" |
| | |
| | | </view>
|
| | | </u-popup>
|
| | | <!-- -->
|
| | | <u-datetime-picker :show="showStarttime" v-model="form.starttime" mode="date" @confirm="confirmStart"
|
| | | <u-datetime-picker :show="showStarttime" v-model="defaultDate" mode="date" @confirm="confirmStart"
|
| | | @cancel="showStarttime = false"></u-datetime-picker>
|
| | | <u-datetime-picker :show="showEndtime" v-model="form.endtime" mode="date" @confirm="confirmEnd"
|
| | | <u-datetime-picker :show="showEndtime" v-model="defaultDate2" mode="date" :minDate="defaultDate" @confirm="confirmEnd"
|
| | | @cancel="showEndtime = false"></u-datetime-picker>
|
| | | <u-picker :show="showPri" :columns="provinceList" @cancel="showPri = false" @confirm="confirmPro"></u-picker>
|
| | |
|
| | |
| | | showModal: false,
|
| | | showStarttime: false,
|
| | | showEndtime: false,
|
| | | defaultDate: Number(new Date()), |
| | | defaultDate2: Number(new Date()),
|
| | | showPri: false,
|
| | | form: {},
|
| | | provinceList: [
|
| | |
| | | this.$nextTick(() => {
|
| | | this.$set(this.form, 'ncCreateDateTimeStart', dayjs(e.value).format('YYYY-MM-DD'))
|
| | | })
|
| | | this.defaultDate2 = Number(new Date()) |
| | | this.$set(this.form, 'ncCreateDateTimeEnd', '')
|
| | | this.showStarttime = false
|
| | | },
|
| | | confirmEnd(e) {
|
| | |
| | | </div> |
| | | </div> |
| | | <div class="center_box_bg"> |
| | | <img class="point_icon" src="@/assets/ani/apngb-animated.png" alt=""> |
| | | <div class="work_modal" @click="showWorkModal = false" v-if="showWorkModal"> |
| | | <img v-if="showWorkModal" class="point_icon" :style="{ left: workModalParam.left + 'px', top: workModalParam.top + 'px' }" |
| | | src="@/assets/ani/apngb-animated.png" alt=""> |
| | | <div class="work_modal" :style="{ left: workModalParam.left2 + 'px', top: workModalParam.top + 'px' }" |
| | | @click="showWorkModal = false" v-if="showWorkModal"> |
| | | <img class="bg" src="@/assets/images/LogisticsCenter/bg_yuetai@2x.png" alt=""> |
| | | <div class="head"> |
| | | <div class="left"> |
| | |
| | | <div class="val">{{ workModalParam.finishTimeStr }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="modal_bg" v-if="showWorkModal" @click="showWorkModal = false"></div> |
| | | </div> |
| | | <div class="center_box_two"> |
| | | <div v-if="data4.videoIndexCodes && data4.videoIndexCodes.length > 0" class="videos"> |
| | | <div class="video" v-for="indexCode in data4.videoIndexCodes"> |
| | | <Video v-if="indexCode" :href="data4.videoPluginUrl" :indexCode="indexCode" /> |
| | | </div> |
| | | </div> |
| | | <!-- <div v-if="data4.videoIndexCodes && data4.videoIndexCodes.length > 0" class="videos"> |
| | | <Videos :href="data4.videoPluginUrl" :indexCodes="data4.videoIndexCodes" /> |
| | | </div> --> |
| | | <div class="list"> |
| | | <div class="line header"> |
| | | <div>æå°åç§°</div> |
| | |
| | | dayjs.extend(duration) |
| | | import 'swiper/css/swiper.min.css' |
| | | import Swiper from 'swiper' |
| | | import Video from './videoUrl/Video.vue' |
| | | import Videos from './videoUrl/Videos.vue' |
| | | import { |
| | | cnplatformGroupFinish, |
| | | cnplatformDuration, |
| | |
| | | temp.push({ name: 'å·²å«å·', value: data4.value?.calledNum || 0, rate: data4.value?.signedNum ? (data4.value.calledNum / data4.value?.signedNum * 100).toFixed(1) : 0 }) |
| | | temp.push({ name: 'å·²ä½ä¸', value: data4.value?.workedNum || 0, rate: data4.value?.signedNum ? (data4.value.workedNum / data4.value?.signedNum * 100).toFixed(1) : 0 }) |
| | | temp.push({ name: '已宿', value: data4.value?.doneNum || 0, rate: data4.value?.signedNum ? (data4.value.doneNum / data4.value?.signedNum * 100).toFixed(1) : 0 }) |
| | | console.log('temp', temp) |
| | | |
| | | const option = { |
| | | color: colors, |
| | |
| | | i.finishTime = dayjs(i.finishTime).format('HH:mm') |
| | | return i |
| | | }) |
| | | console.log('dataList5', dataList5.value) |
| | | |
| | | }) |
| | | } |
| | | |
| | |
| | | const showWorkModal = ref(false) |
| | | const workModalParam = ref({}) |
| | | // point_icon |
| | | const pointList = ref([ |
| | | { left: 230, top: 190 }, |
| | | { left: 265, top: 180 }, |
| | | { left: 300, top: 170 }, |
| | | { left: 335, top: 160 }, |
| | | { left: 370, top: 150 }, |
| | | const pointList = [ |
| | | { left: 230, top: 190, left2: 290, top2: 190, name: 'åºåºæå°3' }, |
| | | { left: 265, top: 180, left2: 325, top2: 190, name: 'åºåºæå°2' }, |
| | | { left: 300, top: 170, left2: 360, top2: 190, name: 'åºåºæå°1' }, |
| | | { left: 335, top: 160, left2: 390, top2: 190, name: 'æ´æçåºåº2' }, |
| | | { left: 370, top: 150, left2: 430, top2: 190, name: 'æ´æçåºåº1' }, |
| | | |
| | | { left: 530, top: 50 }, |
| | | { left: 550, top: 65 }, |
| | | { left: 570, top: 75 }, |
| | | { left: 590, top: 75 }, |
| | | { left: 600, top: 80 }, |
| | | { left: 850, top: 60 }, |
| | | { left: 530, top: 50, left2: 590, top2: 190, name: 'å
¥åºæå°2' }, |
| | | { left: 550, top: 65, left2: 610, top2: 190, name: 'å
¥åºæå°1' }, |
| | | { left: 570, top: 75, left2: 630, top2: 190, name: 'å
¥åºæå°3' }, |
| | | { left: 590, top: 75, left2: 650, top2: 190, name: '1095æ´æçå
¥åº' }, |
| | | { left: 600, top: 80, left2: 660, top2: 190, name: '1099æ´æçå
¥åº' }, |
| | | { left: 850, top: 60, left2: 520, top2: 190, name: 'å¸å
¬å¸æå°' }, |
| | | |
| | | ]) |
| | | ] |
| | | |
| | | const platformClick = (val) => { |
| | | workModalParam.value = val |
| | | console.log(val) |
| | | |
| | | showWorkModal.value = !showWorkModal.value |
| | | const index = pointList.findIndex(i => i.name == val.platformName) |
| | | workModalParam.value = { ...val, ...pointList[index], index: pointList } |
| | | showWorkModal.value = true |
| | | } |
| | | const loopFn2 = () => { |
| | | var newSwiper1 = new Swiper('.one-swiper', { |
| | |
| | | justify-content: center; |
| | | align-items: center; |
| | | position: relative; |
| | | |
| | | .point_icon { |
| | | position: absolute; |
| | | left: 850px; |
| | |
| | | .work_modal { |
| | | width: 314px; |
| | | height: 180px; |
| | | position: relative; |
| | | position: absolute; |
| | | padding: 22px 20px; |
| | | left: 850px; |
| | | top: 60px; |
| | | |
| | | .head { |
| | | display: flex; |
| | |
| | | } |
| | | |
| | | } |
| | | .modal_bg{ |
| | | position: fixed; |
| | | left: 0; |
| | | top: 0; |
| | | width: 100vw; |
| | | height: 100vh; |
| | | /* background-color: rgba(0,0,0,.1); */ |
| | | } |
| | | } |
| | | |
| | | .center_box_two { |
| | | width: 100%; |
| | | |
| | | |
| | | .videos { |
| | | width: 100%; |
| | | height: 150px; |
| | | display: flex; |
| | | margin-bottom: 15px; |
| | | |
| | |
| | | overflow-y: auto; |
| | | background: rgba(0, 86, 255, 0.05); |
| | | backdrop-filter: blur(5px); |
| | | |
| | | .two-swiper { |
| | | height: 180px; |
| | | overflow: hidden; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="video_app"> |
| | | <div class="player_bg" ref="videoRef" style="width: 100%;height: 100%;" id="playWnd"> </div> |
| | | </div> |
| | | <!-- <img style="width: 34px;margin-bottom: 16px;" src="../../assets/images/SecurityControl/ic_unable@2x.png" > --> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { defineProps, ref, onMounted, onUnmounted, watch } from 'vue' |
| | | const props = defineProps({ |
| | | indexCodes: Array, |
| | | href: String, |
| | | }) |
| | | const templateA = ` |
| | | <div style="width:100%;height: 100%;display: flex;justify-content: center;align-items: center;flex-direction: column;"> |
| | | <div style="font-weight: 500;font-size: 15px;color: #CCCCCC;margin-bottom: 4px;">æ æ³ææ¾çæ§ç»é¢ï¼</div> |
| | | <div style="font-weight: 500;font-size: 15px;color: #CCCCCC;margin-bottom: 20px;">ç¹å»ä¸è½½å¹¶å®è£
è§å±ææ¾æä»¶</div> |
| | | <a href="${props.href}" target="_blank" style="font-weight: 500;font-size: 15px;color: #01D9FE;">ç¹å»ä¸è½½</a> |
| | | </div> |
| | | ` |
| | | |
| | | |
| | | const width = ref(0) |
| | | const height = ref(0) |
| | | const videoRef = ref(null) |
| | | |
| | | onMounted(() => { |
| | | const rect = videoRef.value.getBoundingClientRect() |
| | | width.value = rect.width |
| | | height.value = rect.height |
| | | console.log('rect', rect); |
| | | |
| | | initPlugin() |
| | | window.addEventListener('resize', function () { // æ§è¡ |
| | | if (oWebControl.value) { |
| | | const rect = videoRef.value.getBoundingClientRect() |
| | | width.value = rect.width |
| | | height.value = rect.height |
| | | oWebControl.value.JS_Resize($('#playWnd').width(), $('#playWnd').height()) |
| | | } |
| | | }) |
| | | }) |
| | | onUnmounted(() => { |
| | | destroyed() |
| | | }) |
| | | const oWebControl = ref(null) |
| | | const initCount = ref() |
| | | const pubKey = ref('') |
| | | |
| | | watch( |
| | | () => props.indexCodes, |
| | | (newValue, oldValue) => { |
| | | console.log('ç¶ç»ä»¶ä¼ å¼ååï¼', newValue) |
| | | videoPlayFor() |
| | | } |
| | | ) |
| | | |
| | | const initPlugin = () => { |
| | | oWebControl.value = new WebControl({ |
| | | szPluginContainer: "playWnd", // æå®å®¹å¨id |
| | | iServicePortStart: 15900, // æå®èµ·æ¢ç«¯å£å·ï¼å»ºè®®ä½¿ç¨è¯¥å¼ |
| | | iServicePortEnd: 15900, |
| | | szClassId: "23BF3B0A-2C56-4D97-9C03-0CB103AA8F11", // ç¨äºIE10使ç¨ActiveXçclsid |
| | | cbConnectSuccess: function () { |
| | | // å建WebControlå®ä¾æå |
| | | console.log('1--å建WebControlå®ä¾æå') |
| | | |
| | | oWebControl.value.JS_StartService("window", { // WebControlå®ä¾å建æååéè¦å¯å¨æå¡ |
| | | dllPath: "./VideoPluginConnect.dll" // å¼"./VideoPluginConnect.dll"åæ» |
| | | }).then(function () { |
| | | oWebControl.value.JS_SetWindowControlCallback({ // è®¾ç½®æ¶æ¯åè° |
| | | cbIntegrationCallBack: cbIntegrationCallBack |
| | | })// å¯å¨æä»¶æå¡æå |
| | | console.log('----',width.value, height.value); |
| | | |
| | | oWebControl.value.JS_CreateWnd("playWnd", width.value, height.value).then(function () { //JS_CreateWndå建è§é¢ææ¾çªå£ï¼å®½é«å¯è®¾å®ï¼boxWidth, boxHeightå®¹å¨ |
| | | // oWebControl.value.JS_CreateWnd("playWnd").then(function () { //JS_CreateWndå建è§é¢ææ¾çªå£ï¼å®½é«å¯è®¾å®ï¼boxWidth, boxHeightå®¹å¨ |
| | | init() // åå»ºææ¾å®ä¾æåååå§å |
| | | }) |
| | | }, function () { // å¯å¨æä»¶æå¡å¤±è´¥ |
| | | }) |
| | | }, |
| | | cbConnectError: function () { // å建WebControlå®ä¾å¤±è´¥ |
| | | console.log('å建WebControlå®ä¾å¤±è´¥') |
| | | oWebControl.value = null |
| | | $("#playWnd").html("æä»¶æªå¯å¨ï¼æ£å¨å°è¯å¯å¨ï¼è¯·ç¨å...") |
| | | WebControl.JS_WakeUp("VideoWebPlugin://") // ç¨åºæªå¯å¨æ¶æ§è¡error彿°ï¼éç¨wakeupæ¥å¯å¨ç¨åº |
| | | initCount.value++ |
| | | if (initCount.value < 3) { |
| | | setTimeout(function () { |
| | | initPlugin() |
| | | }, 3000) |
| | | } else { |
| | | $("#playWnd").html(templateA) |
| | | } |
| | | }, |
| | | cbConnectClose: function (bNormalClose) { |
| | | // å¼å¸¸æå¼ï¼bNormalClose = false |
| | | // JS_Disconnectæ£å¸¸æå¼ï¼bNormalClose = true |
| | | console.log('å¼å¸¸æå¼ï¼bNormalClose') |
| | | oWebControl.value = null |
| | | $("#playWnd").html("æä»¶æªå¯å¨ï¼æ£å¨å°è¯å¯å¨ï¼è¯·ç¨å...") |
| | | WebControl.JS_WakeUp("VideoWebPlugin://") |
| | | initCount.value++ |
| | | if (initCount.value < 3) { |
| | | setTimeout(function () { |
| | | initPlugin() |
| | | }, 3000) |
| | | } else { |
| | | $("#playWnd").html(templateA) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | // åå§å |
| | | const init = () => { |
| | | getPubKey(function () { |
| | | ////////////////////////////////// 请èªè¡ä¿®æ¹ä»¥ä¸åéå¼ //////////////////////////////////// |
| | | let appkey = "23154099" //综åå®é²ç®¡ç平尿ä¾çappkeyï¼å¿
å¡« |
| | | // let secret = '88wFsg3xfn7o8QMsWEO2' //综åå®é²ç®¡ç平尿ä¾çsecretï¼å¿
å¡« |
| | | let secret = setEncrypt("88wFsg3xfn7o8QMsWEO2") //综åå®é²ç®¡ç平尿ä¾çsecretï¼å¿
å¡« |
| | | let ip = "10.50.250.253" //综åå®é²ç®¡çå¹³å°IPå°åï¼å¿
å¡« |
| | | let playMode = 0 //åå§ææ¾æ¨¡å¼ï¼0-é¢è§(宿¶æµ)ï¼1-åæ¾(è§é¢) |
| | | let port = 443 //综åå®é²ç®¡çå¹³å°ç«¯å£ï¼è¥å¯ç¨HTTPSåè®®ï¼é»è®¤443 |
| | | let snapDir = "D:\\SnapDir" //æå¾åå¨è·¯å¾ |
| | | let videoDir = "D:\\VideoDir" //ç´§æ¥å½åæå½ååªè¾åå¨è·¯å¾ |
| | | let layout = "1x4" //playModeæå®æ¨¡å¼çå¸å± |
| | | let enableHTTPS = 1 //æ¯å¦å¯ç¨HTTPSåè®®ä¸ç»¼åå®é²ç®¡çå¹³å°äº¤äºï¼è¿éæ»æ¯å¡«1 |
| | | let encryptedFields = 'secret' //å å¯å段ï¼é»è®¤å å¯é¢å为secret |
| | | let showToolbar = 1 //æ¯å¦æ¾ç¤ºå·¥å
·æ ï¼0-䏿¾ç¤ºï¼é0-æ¾ç¤º |
| | | let showSmart = 0 //æ¯å¦æ¾ç¤ºæºè½ä¿¡æ¯ï¼å¦é
置移å¨ä¾¦æµåç»é¢ä¸ç线æ¡ï¼ï¼0-䏿¾ç¤ºï¼é0-æ¾ç¤º |
| | | // let buttonIDs = "0,16,256,257,258,259,260,513,514,515,516,517,768" //èªå®ä¹å·¥å
·æ¡æé® |
| | | oWebControl.value.JS_RequestInterface({ |
| | | funcName: "init", |
| | | argument: JSON.stringify({ |
| | | appkey: appkey, //APIç½å
³æä¾çappkey |
| | | secret: secret, //APIç½å
³æä¾çsecret |
| | | ip: ip, //APIç½å
³IPå°å |
| | | playMode: playMode, //ææ¾æ¨¡å¼ï¼å³å®æ¾ç¤ºé¢è§è¿æ¯åæ¾çé¢ï¼ |
| | | port: port, //ç«¯å£ |
| | | snapDir: snapDir, //æå¾åå¨è·¯å¾ |
| | | videoDir: videoDir, //ç´§æ¥å½åæå½ååªè¾åå¨è·¯å¾ |
| | | layout: layout, //å¸å± |
| | | enableHTTPS: enableHTTPS, //æ¯å¦å¯ç¨HTTPSåè®® |
| | | encryptedFields: encryptedFields, //å å¯å段 |
| | | showToolbar: showToolbar, //æ¯å¦æ¾ç¤ºå·¥å
·æ |
| | | showSmart: showSmart, //æ¯å¦æ¾ç¤ºæºè½ä¿¡æ¯ |
| | | buttonIDs: buttonIDs //èªå®ä¹å·¥å
·æ¡æé® |
| | | }) |
| | | }).then(function (oData) { |
| | | console.log('åå§åæå') |
| | | videoPlayFor() |
| | | // oWebControl.value.JS_Resize(that.boxWidth, that.boxHeight) // åå§ååresize䏿¬¡ï¼è§é¿firefoxä¸é¦æ¬¡æ¾ç¤ºçªå£åæä»¶çªå£æªä¸DIVçªå£éåé®é¢ |
| | | }) |
| | | }) |
| | | } |
| | | const videoPlayFor = () => { |
| | | const indexCodes = props.indexCodes |
| | | indexCodes.forEach(item => { |
| | | videoPlay(item) |
| | | }) |
| | | } |
| | | const videoPlay = (indexCode) => { |
| | | oWebControl.value.JS_RequestInterface({ |
| | | funcName: "startPreview", |
| | | argument: JSON.stringify({ |
| | | cameraIndexCode: indexCode, //çæ§ç¹ç¼å· |
| | | streamMode: 0, //主åç æµæ è¯ï¼0-ä¸»ç æµï¼1-åç æµ |
| | | transMode: 1, //ä¼ è¾åè®®ï¼0-UDPï¼1-TCP |
| | | gpuMode: 0, //æ¯å¦å¯ç¨GPU硬解ï¼0-ä¸å¯ç¨ï¼1-å¯ç¨ |
| | | wndId: -1 //ææ¾çªå£åºå·ï¼å¨2x2以ä¸å¸å±ä¸å¯æå®ææ¾çªå£ï¼ |
| | | }) |
| | | }).then((oData) => { |
| | | if (oData.responseMsg.code === 1) { |
| | | console.log('ææ¾æå', oData) |
| | | } |
| | | }, err => { |
| | | console.log('err', err) |
| | | |
| | | }) |
| | | } |
| | | // 鿝 |
| | | const destroyed = () => { |
| | | if (oWebControl.value) { |
| | | oWebControl.value.JS_HideWnd() // å
让çªå£éèï¼è§é¿æä»¶çªå£æ»åäºæµè§å¨æ¶å¤±é®é¢ |
| | | oWebControl.value.JS_Disconnect().then(function () { }, function () { }) |
| | | } |
| | | } |
| | | |
| | | function fileDown() { |
| | | window.open('./videoUrl/VideoWebPlugin.exe') |
| | | } |
| | | // æ¶æ¯åè° |
| | | const cbIntegrationCallBack = (oData) => { |
| | | let response = oData.responseMsg |
| | | // response.type=1 éä¸çªå£æ¶æ¯ type=2 ææ¾æ¶æ¯ |
| | | } |
| | | // çæ§ |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | // è·åå
¬é¥ |
| | | function getPubKey(callback) { |
| | | oWebControl.value.JS_RequestInterface({ |
| | | funcName: 'getRSAPubKey', |
| | | argument: JSON.stringify({ |
| | | keyLength: 1024, |
| | | }), |
| | | }).then((oData) => { |
| | | if (oData.responseMsg.data) { |
| | | pubKey.value = oData.responseMsg.data |
| | | callback() |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // RSAå å¯ |
| | | function setEncrypt(value) { |
| | | let that = this |
| | | let encrypt = new JSEncrypt() |
| | | encrypt.setPublicKey(pubKey.value) |
| | | return encrypt.encrypt(value) |
| | | } |
| | | |
| | | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .video_app { |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | } |
| | | </style> |