|
|
@@ -334,14 +334,95 @@
|
|
|
@click="openUrl(auditData.businessData.ctLongVideo.videoUrl)">{{ auditData.businessData.ctLongVideo.videoUrl }}</text>
|
|
|
<text class="info-value" v-else>-</text>
|
|
|
</view>
|
|
|
- <!-- <view class="qualification-list">
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 直播信息 -->
|
|
|
+ <view class="info-section"
|
|
|
+ v-if="auditData.audit && auditData.audit.auditType=='ADUIT_WCRWSH' && auditData.businessData && auditData.businessData.auditTaskInfoVO && auditData.businessData.auditTaskInfoVO.taskType==1">
|
|
|
+ <view class="section-header">
|
|
|
+ <view class="section-indicator"></view>
|
|
|
+ <text class="section-title">直播信息</text>
|
|
|
+ </view>
|
|
|
+ <view class="info-list">
|
|
|
+ <view class="info-item">
|
|
|
+ <text class="info-label">项目名称/视频标题</text>
|
|
|
+ <text class="info-value">{{ auditData.businessData.liveBroadcast.title ||'-'}}</text>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- <view class="info-item">
|
|
|
+ <text class="info-label">是否原创</text>
|
|
|
+ <text
|
|
|
+ class="info-value">{{auditData.businessData.liveBroadcast.isOriginal==0?'否':'是'||'-'}}</text>
|
|
|
+ </view> -->
|
|
|
+ <view class="info-item">
|
|
|
+ <text class="info-label">直播时长</text>
|
|
|
+ <text class="info-value">{{ liveDuration||'0'}}</text>
|
|
|
+ </view>
|
|
|
+ <view class="info-item">
|
|
|
+ <text class="info-label">医生实际开播时间</text>
|
|
|
+ <text class="info-value">{{ realLiveDuration||'0'}}</text>
|
|
|
+ </view>
|
|
|
+
|
|
|
+
|
|
|
+ <view class="info-item">
|
|
|
+ <text class="info-label">观看人数</text>
|
|
|
+ <text class="info-value">{{ auditData.businessData.liveBroadcast.viewCount ||'0'}}</text>
|
|
|
+ </view>
|
|
|
+ <!-- <view class="info-item">
|
|
|
+ <text class="info-label">点赞数</text>
|
|
|
+ <text class="info-value">{{ auditData.businessData.liveBroadcast.likeCount||'0'}}</text>
|
|
|
+ </view>
|
|
|
+ <view class="info-item">
|
|
|
+ <text class="info-label">收藏数</text>
|
|
|
+ <text class="info-value">{{ auditData.businessData.liveBroadcast.favoriteCount ||'0'}}</text>
|
|
|
+ </view> -->
|
|
|
+
|
|
|
+ <view class="qualification-list">
|
|
|
<view class="qualification-item">
|
|
|
- <text class="qualification-label">视频附件URL</text>
|
|
|
- <view class="image-grid" v-if="auditData.businessData.ctLongVideo.videoUrl||''">
|
|
|
- <image class="qualification-image" :src=" auditData.businessData.ctLongVideo.videoUrl||''"
|
|
|
- @click="showImagePreview(auditData.businessData.ctLongVideo.videoUrl||'')"></image>
|
|
|
+ <text class="qualification-label">封面图</text>
|
|
|
+ <view class="image-grid" v-if="auditData.businessData.liveBroadcast.coverUrl||''">
|
|
|
+ <image class="qualification-image"
|
|
|
+ :src="auditData.businessData.liveBroadcast.coverUrl||''"
|
|
|
+ @click="showImagePreview(auditData.businessData.liveBroadcast.coverUrl||'')"></image>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- <view class="info-item">
|
|
|
+ <text class="info-label">视频附件链接</text>
|
|
|
+ <text class="info-value link"
|
|
|
+ v-if="auditData.businessData.liveBroadcast && auditData.businessData.liveBroadcast.videoUrl"
|
|
|
+ @click="openUrl(auditData.businessData.liveBroadcast.videoUrl)">{{ auditData.businessData.liveBroadcast.videoUrl }}</text>
|
|
|
+ <text class="info-value" v-else>-</text>
|
|
|
+ </view> -->
|
|
|
+
|
|
|
+ <view class="info-item">
|
|
|
+ <text class="info-label">直播间链接</text>
|
|
|
+ <text class="info-value link"
|
|
|
+ v-if="auditData.businessData.liveBroadcast && auditData.businessData.liveBroadcast.liveUrl"
|
|
|
+ @click="openUrl(auditData.businessData.liveBroadcast.liveUrl)">{{ auditData.businessData.liveBroadcast.liveUrl }}</text>
|
|
|
+ <text class="info-value" v-else>-</text>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="info-item">
|
|
|
+ <text class="info-label">回放链接</text>
|
|
|
+ <text class="info-value link"
|
|
|
+ v-if="auditData.businessData.liveBroadcast && auditData.businessData.liveBroadcast.playbackUrl"
|
|
|
+ @click="openUrl(auditData.businessData.liveBroadcast.playbackUrl)">{{ auditData.businessData.liveBroadcast.playbackUrl }}</text>
|
|
|
+ <text class="info-value" v-else>-</text>
|
|
|
+ </view>
|
|
|
+ <view class="info-item">
|
|
|
+ <text class="info-label">分享二维码链接</text>
|
|
|
+ <text class="info-value link"
|
|
|
+ @click="openUrl(`https://company.qicaijiaxiang.com/watch?liveId=${auditData.businessData.liveBroadcast.id}`)">{{`https://company.qicaijiaxiang.com/watch?liveId=${auditData.businessData.liveBroadcast.id}`}}</text>
|
|
|
+ </view>
|
|
|
+ <!-- <view class="info-item" v-if="auditData.businessData.liveBroadcast.rtmpPullUrl">
|
|
|
+ <text class="info-label">拉流地址</text>
|
|
|
+ <text class="info-value link"
|
|
|
+ v-if="auditData.businessData.liveBroadcast && auditData.businessData.liveBroadcast.rtmpPullUrl"
|
|
|
+ @click="openUrl(auditData.businessData.liveBroadcast.rtmpPullUrl)">{{ auditData.businessData.liveBroadcast.rtmpPullUrl }}</text>
|
|
|
+ <text class="info-value" v-else>-</text>
|
|
|
</view> -->
|
|
|
</view>
|
|
|
</view>
|
|
|
@@ -559,7 +640,7 @@
|
|
|
</view>
|
|
|
|
|
|
<!-- 审批信息 -->
|
|
|
- <view class="info-section" v-if="auditData">
|
|
|
+ <view class="info-section">
|
|
|
<view class="section-header">
|
|
|
<view class="section-indicator"></view>
|
|
|
<text class="section-title">审批流程</text>
|
|
|
@@ -594,6 +675,36 @@
|
|
|
<view class="approval-line" v-if="index < auditData.auditFlows.length - 1"></view>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ <!-- <view class="approval-list">
|
|
|
+ <view class="approval-item" v-for="(item, index) in auditData.auditFlows" :key="index">
|
|
|
+ <view class="left">
|
|
|
+ <view class="avatar-box">
|
|
|
+ <image class="avatar"
|
|
|
+ src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/my_heads_icon.png">
|
|
|
+ </image>
|
|
|
+ <image class="icon" v-if="item.status==1"
|
|
|
+ src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_wait.png">
|
|
|
+ </image>
|
|
|
+ <image class="icon" v-if="item.status==2|| item.status ===0"
|
|
|
+ src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_pass.png">
|
|
|
+ </image>
|
|
|
+ <image class="icon" v-if="item.status==3"
|
|
|
+ src="https://ysrw-1395926010.cos.ap-chengdu.myqcloud.com/image/icon_refuse.png">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ <view class="approval-user">
|
|
|
+ <view class="user-name">{{ item.auditUserName }}</view>
|
|
|
+ <view class="user-status"
|
|
|
+ :style="{ color: item.status ===2|| item.status ===0 ? '#4CAF50' : item.status === 1 ? '#FF9800' : '#F44336' }">
|
|
|
+ {{ item.statusName||'-' }}
|
|
|
+ </view>
|
|
|
+ <view class="approval-comment" v-if="item.comment">{{item.comment||'-'}}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <text class="approval-time">{{ item.auditTime || '-' }}</text>
|
|
|
+ <view class="approval-line" v-if="index < auditData.auditFlows.length - 1"></view>
|
|
|
+ </view>
|
|
|
+ </view> -->
|
|
|
</view>
|
|
|
</scroll-view>
|
|
|
|
|
|
@@ -670,11 +781,11 @@ import utils from '@/utils/common.js'
|
|
|
taskId: '',
|
|
|
// 接口返回的原始数据(初始化为安全空对象,避免渲染期空指针)
|
|
|
auditData: {
|
|
|
- audit: {},
|
|
|
- businessData: {},
|
|
|
- auditFlows: [],
|
|
|
- projectVO: null,
|
|
|
- docterVO: null
|
|
|
+ // audit: {},
|
|
|
+ // businessData: {},
|
|
|
+ // auditFlows: [],
|
|
|
+ // projectVO: null,
|
|
|
+ // docterVO: null,
|
|
|
},
|
|
|
// 审批信息
|
|
|
approvalInfo: [],
|
|
|
@@ -688,7 +799,17 @@ import utils from '@/utils/common.js'
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
-
|
|
|
+ // 预计时长
|
|
|
+ liveDuration() {
|
|
|
+ const { scheduledStartTime, scheduledEndTime } = this.auditData?.businessData?.liveBroadcast || {}
|
|
|
+ return this.formatDuration(scheduledStartTime, scheduledEndTime)
|
|
|
+ },
|
|
|
+
|
|
|
+ // 实际时长
|
|
|
+ realLiveDuration() {
|
|
|
+ const { actualStartTime, actualEndTime } = this.auditData?.businessData?.liveBroadcast || {}
|
|
|
+ return this.formatDuration(actualStartTime, actualEndTime)
|
|
|
+ }
|
|
|
},
|
|
|
onLoad(options) {
|
|
|
if (options.taskId) {
|
|
|
@@ -703,6 +824,31 @@ import utils from '@/utils/common.js'
|
|
|
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 格式化时长:开始时间、结束时间 → 小时分秒
|
|
|
+ formatDuration(startTime, endTime) {
|
|
|
+ // 无时间直接返回 0
|
|
|
+ if (!startTime || !endTime) return '0'
|
|
|
+
|
|
|
+ const start = new Date(startTime).getTime()
|
|
|
+ const end = new Date(endTime).getTime()
|
|
|
+ const duration = end - start
|
|
|
+
|
|
|
+ // 小于0直接返回0
|
|
|
+ if (duration < 0) return '0'
|
|
|
+
|
|
|
+ // 计算时分秒
|
|
|
+ const hours = Math.floor(duration / (1000 * 60 * 60))
|
|
|
+ const minutes = Math.floor((duration % (1000 * 60 * 60)) / (1000 * 60))
|
|
|
+ const seconds = Math.floor((duration % (1000 * 60)) / 1000)
|
|
|
+
|
|
|
+ // 拼接文案
|
|
|
+ const parts = []
|
|
|
+ if (hours > 0) parts.push(`${hours}小时`)
|
|
|
+ if (minutes > 0) parts.push(`${minutes}分`)
|
|
|
+ if (seconds > 0 || parts.length === 0) parts.push(`${seconds}秒`)
|
|
|
+
|
|
|
+ return parts.join('')
|
|
|
+ },
|
|
|
getStatusBarHeight() {
|
|
|
if (uni.getWindowInfo) return uni.getWindowInfo().statusBarHeight || 0
|
|
|
if (typeof wx !== 'undefined' && wx.getWindowInfo) return wx.getWindowInfo().statusBarHeight || 0
|