This commit is contained in:
guoyue 2022-10-27 19:39:34 +08:00
commit 2f34e4acbc
6 changed files with 638 additions and 606 deletions

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-29 15:59:51 * @Date: 2022-06-29 15:59:51
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-10-21 16:11:46 * @LastEditTime: 2022-10-27 16:04:01
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<!-- 流程业务表单 --> <!-- 流程业务表单 -->
@ -105,7 +105,7 @@
<ren-task-entrust v-if="renTaskEntrustVisible" ref="renTaskEntrust"></ren-task-entrust> <ren-task-entrust v-if="renTaskEntrustVisible" ref="renTaskEntrust"></ren-task-entrust>
<!-- 流程详情 --> <!-- 流程详情 -->
<ren-process-detail></ren-process-detail> <ren-process-detail ref="renProcessMultiple"></ren-process-detail>
<el-dialog title="审批意见" :close-on-click-modal="false" :visible.sync="dialogVisible" width="30%" <el-dialog title="审批意见" :close-on-click-modal="false" :visible.sync="dialogVisible" width="30%"
:before-close="handleClose"> :before-close="handleClose">
<el-input v-model="input" placeholder="请输入审批意见"></el-input> <el-input v-model="input" placeholder="请输入审批意见"></el-input>
@ -131,6 +131,7 @@ export default {
mixins: [processModule], mixins: [processModule],
data () { data () {
return { return {
callbacks: null,
taskEntrustFlag: false, taskEntrustFlag: false,
taskEntrustFlag2: false, taskEntrustFlag2: false,
dialogVisible: false, dialogVisible: false,

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-04-20 17:16:35 * @Date: 2022-04-20 17:16:35
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 14:13:30 * @LastEditTime: 2022-10-26 17:57:52
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
import request from '@/utils/request' import request from '@/utils/request'
@ -99,14 +99,37 @@ export function getHls(params) {
} }
// 西-- (10.134.135.92:9537) // 西-- (10.134.135.92:9537)
let _cameraUrl = _global && _global.config && _global.config.camreaInfo && _global.config.camreaInfo.cameraUrl || '10.134.135.92:9537'; let _cameraUrl =
(_global &&
_global.config &&
_global.config.camreaInfo &&
_global.config.camreaInfo.cameraUrl) ||
'10.134.135.92:9537'
//- //-
export function getCameraInfoByAreaId(params) { export function getCameraInfoByAreaId(params) {
return axios.get(`http://${_cameraUrl}/data_service/getCamera/getCameraInfoByAreaId?areaId=${params.areaId}`, return axios.get(
`http://${_cameraUrl}/data_service/getCamera/getCameraInfoByAreaId?areaId=${params.areaId}`,
config2 config2
) )
} }
//- //-
export function getCameraByCondition(params) { export function getCameraByCondition(params) {
return axios.post(`http://${_cameraUrl}/data_service/getCamera/getCameraByCondition`, params, config2) return axios.post(
`http://${_cameraUrl}/data_service/getCamera/getCameraByCondition`,
params,
config2
)
}
export function initiateMeet(data) {
// return request({
// url: '/enke/initiateMeet',
// method: 'post',
// data: data,
// })
return axios.post(
'http://10.134.135.92:8888/renren-admin/enke/initiateMeet',
data,
config2
)
} }

View File

@ -103,7 +103,7 @@
</a-select> </a-select>
</a-form-item> </a-form-item>
</div> </div>
<div class="base-info" v-if="flag"> <div class="base-info" v-show="flag">
<div style="margin-bottom: 24px"> <div style="margin-bottom: 24px">
<a-form-item <a-form-item
style="margin-bottom: 0" style="margin-bottom: 0"
@ -811,10 +811,10 @@
const handleBlur = () => { const handleBlur = () => {
console.log('blur') console.log('blur')
} }
const arrId = []
const handleFocus = () => { const handleFocus = () => {
console.log('focus') console.log('focus', systemOptions2.value, systemOptions.value)
let arrId = [] for (let valueIndex of systemOptions2.value) {
for (var valueIndex of systemOptions2.value) {
if (arrId.indexOf(valueIndex['value']) == -1) { if (arrId.indexOf(valueIndex['value']) == -1) {
arrId.push(valueIndex['value']) arrId.push(valueIndex['value'])
systemOptions.value.push(valueIndex) systemOptions.value.push(valueIndex)

View File

@ -776,7 +776,8 @@
defineExpose, defineExpose,
computed, computed,
} from 'vue' } from 'vue'
import { getUser, initiateMeet, getEnkeUsers } from '@/api/home' import { getUser, getEnkeUsers } from '@/api/home'
import { initiateMeet } from '@/api/file'
import { import {
getCameraByParentId, getCameraByParentId,
getStreamByChannelCode, getStreamByChannelCode,

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-07-12 09:42:44 * @Date: 2022-07-12 09:42:44
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-04 10:41:06 * @LastEditTime: 2022-10-26 18:15:01
* @Description:我的申请 能力申请 查看详情 * @Description:我的申请 能力申请 查看详情
--> -->
<template> <template>
@ -52,29 +52,47 @@
<span class="img"></span> <span class="img"></span>
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
</div> </div>
<div style=" <div
style="
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
"> "
>
<div class="oddNumbers">子单号{{ item.instanceId }}</div> <div class="oddNumbers">子单号{{ item.instanceId }}</div>
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<a-button type="primary" @click="modify(props.refObj.id, item)" v-if="item.backToFirst"> <a-button
type="primary"
@click="modify(props.refObj.id, item)"
v-if="item.backToFirst"
>
修改 修改
</a-button> </a-button>
<a-popconfirm class="aaa" v-if="!item.ended" title="是否撤回此流程?" ok-text="" cancel-text="" <a-popconfirm
@confirm="endThis(item.instanceId)" @cancel="cancel"> class="aaa"
v-if="!item.ended"
title="是否撤回此流程?"
ok-text="是"
cancel-text="否"
@confirm="endThis(item.instanceId)"
@cancel="cancel"
>
<a-button type="primary" danger style="margin-left: 10px"> <a-button type="primary" danger style="margin-left: 10px">
撤回申请 撤回申请
</a-button> </a-button>
</a-popconfirm> </a-popconfirm>
</div> </div>
</div> </div>
<div class="box" v-if="item.list.length > 0"> <div class="box" v-if="item.list.length > 0">
<div class="ability" v-for="val in item.list" :key="val.id" <div
:class="item.approveStatus === '通过' ? 'clickCursor' : ''"> class="ability"
<div class="left" :class=" v-for="val in item.list"
:key="val.id"
:class="item.approveStatus === '通过' ? 'clickCursor' : ''"
>
<div
class="left"
:class="
val.type == '应用资源' val.type == '应用资源'
? 'yyzy' ? 'yyzy'
: val.infoList.filter( : val.infoList.filter(
@ -94,7 +112,8 @@
)[0].attrValue == '业务组件' )[0].attrValue == '业务组件'
? 'ywzj' ? 'ywzj'
: 'yyzy' : 'yyzy'
"></div> "
></div>
<div class="right"> <div class="right">
<div class="ability-top"> <div class="ability-top">
<div class="name"> <div class="name">
@ -125,10 +144,14 @@
</span> </span>
</div> </div>
</div> </div>
<a-button type="primary" v-if="item.approveStatus === '通过'" @click.stop="switchFunction(item)"> <div></div>
<a-button
type="primary"
v-if="item.approveStatus === '通过'"
@click.stop="switchFunction(item)"
>
查看详情 查看详情
</a-button> </a-button>
<div></div>
<!-- <div class="btn" v-if="val.type == '组件服务'">技术文档</div> --> <!-- <div class="btn" v-if="val.type == '组件服务'">技术文档</div> -->
</div> </div>
<div class="ability-bottom"> <div class="ability-bottom">
@ -137,17 +160,19 @@
申请结果{{ 申请结果{{
item.ended ? item.approveStatus || '审核完成' : '审核中' item.ended ? item.approveStatus || '审核完成' : '审核中'
}} }}
<a-button v-if=" <a-button
v-if="
item.approveStatus === '通过' && item.approveStatus === '通过' &&
val.infoList.filter( val.infoList.filter(
(item) => item.attrType == '上传附件' (item) => item.attrType == '上传附件'
)[0] )[0]
" @click.stop="downloadFile(item, '附件下载')" class="DownloadAttachment"> "
@click.stop="downloadFile(item, '附件下载')"
class="DownloadAttachment"
>
附件下载 附件下载
</a-button> </a-button>
<!-- <a-button type="primary" v-if="item.approveStatus === '通过'" @click.stop="switchFunction(item)">
查看详情
</a-button> -->
</div> </div>
</div> </div>
</div> </div>
@ -163,31 +188,49 @@
<span class="type">基础设施</span> <span class="type">基础设施</span>
</div> </div>
<div> <div>
<a-button type="primary" v-if="item.approveStatus == '通过' && whoShow1.itShowXiHaiAn" <a-button
@click.stop="openVideo(val)"> type="primary"
v-if="
item.approveStatus == '通过' && whoShow1.itShowXiHaiAn
"
@click.stop="openVideo(val)"
>
视频预览 视频预览
</a-button> </a-button>
<div class="channelName" style="color:#ff7875" v-if="whoShow1.itShowXiHaiAn && item.ended">该流程已终止 <!-- <div class="channelName" style="color:#ff7875" v-if="whoShow1.itShowXiHaiAn && item.ended">该流程已终止
</div> </div> -->
</div> </div>
</div> </div>
<div class="ability-bottom"> <div class="ability-bottom">
<div class="dec2">位置{{ val.nodeName }}</div> <div class="dec2">位置{{ val.nodeName }}</div>
<div class="result" v-if="item.approveStatus == '通过'"> <div class="result" v-if="item.approveStatus == '通过'">
申请结果 申请结果
<span>列表地址</span><span style="cursor: pointer;" @click="openView(backUrl + <span>列表地址</span>
'resource/getApplyCameraList/' + <span
item.instanceId)">{{ style="cursor: pointer"
@click="
openView(
backUrl + backUrl +
'resource/getApplyCameraList/' + 'resource/getApplyCameraList/' +
item.instanceId }}</span> item.instanceId
)
"
>
{{
backUrl + 'resource/getApplyCameraList/' + item.instanceId
}}
</span>
<span>视频流地址</span> <span>视频流地址</span>
<span style="cursor: pointer" @click="openView(backUrl + <span
'resource/hls/getHls/?key=' + style="cursor: pointer"
val.channelId)">{{ @click="
backUrl + openView(
'resource/hls/getHls/?key=' + backUrl + 'resource/hls/getHls/?key=' + val.channelId
val.channelId}}</span> )
"
>
{{ backUrl + 'resource/hls/getHls/?key=' + val.channelId }}
</span>
</div> </div>
</div> </div>
</div> </div>
@ -195,22 +238,34 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 单个预览弹窗 --> <!-- 单个预览弹窗 -->
<a-modal wrapClassName="single-preview-modal" v-model:visible="visible" title="视频预览" :width="960" destroyOnClose> <a-modal
wrapClassName="single-preview-modal"
v-model:visible="visible"
title="视频预览"
:width="960"
destroyOnClose
>
<template #footer></template> <template #footer></template>
<div style="width: 100%; display: flex; justify-content: center"> <div style="width: 100%; display: flex; justify-content: center">
<div style="width: 100%; height: 100%; position: relative"> <div style="width: 100%; height: 100%; position: relative">
<!-- 预览视频--遮罩 --> <!-- 预览视频--遮罩 -->
<div class="waterMark waterMark-left-top">{{userInfo.usernameShow}}</div> <div class="waterMark waterMark-left-top">
<div class="waterMark waterMark-right-top">{{userInfo.realNameShow}}</div> {{ userInfo.usernameShow }}
<div class="waterMark waterMark-left-bottom">{{userInfo.usernameShow}}</div> </div>
<div class="waterMark waterMark-right-bottom">{{userInfo.realNameShow}}</div> <div class="waterMark waterMark-right-top">
{{ userInfo.realNameShow }}
</div>
<div class="waterMark waterMark-left-bottom">
{{ userInfo.usernameShow }}
</div>
<div class="waterMark waterMark-right-bottom">
{{ userInfo.realNameShow }}
</div>
<vue3VideoPlay v-bind="options" /> <vue3VideoPlay v-bind="options" />
</div> </div>
</div> </div>
</a-modal> </a-modal>
</div> </div>
</template> </template>
<script setup> <script setup>
@ -219,12 +274,8 @@ import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { endProcess, getApplyForm } from '@/api/personalCenter.js' import { endProcess, getApplyForm } from '@/api/personalCenter.js'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { import { getStreamByChannelCode } from '@/api/videoSurveillance'
getStreamByChannelCode, import { getUser } from '@/api/home'
} from '@/api/videoSurveillance'
import {
getUser,
} from '@/api/home'
const router = useRouter() const router = useRouter()
const backUrl = ref(window.SITE_CONFIG.apiURL + '/') const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const props = defineProps({ const props = defineProps({
@ -259,7 +310,6 @@ const options = reactive({
'fullScreen', 'fullScreen',
], //, ], //,
}) })
const dept = reactive({}) const dept = reactive({})
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
if (infrastructure) { if (infrastructure) {
@ -418,7 +468,6 @@ const downloadFile = (data, name) => {
} }
} }
} }
// //
const openVideo = (item) => { const openVideo = (item) => {
console.log('打开视频', item) console.log('打开视频', item)
@ -428,56 +477,57 @@ const openVideo = (item) => {
const param = { const param = {
key: item.cameraId, key: item.cameraId,
} }
getStreamByChannelCode(param).then((res) => { getStreamByChannelCode(param)
console.log('视频预览------------>', res); .then((res) => {
console.log('视频预览------------>', res)
console.log(res) console.log(res)
visible.value = true visible.value = true
options.src = res.data.data || '' options.src = res.data.data || ''
}).catch(err => { })
.catch((err) => {
message.error(err) message.error(err)
}) })
// -- // --
// visible.value = true // visible.value = true
// options.src = 'http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8' // options.src = 'http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8'
} }
onMounted(() => { onMounted(() => {
handleUser() handleUser()
}) })
// //
const userInfo = ref(null) const userInfo = ref(null)
const handleUser = () => { const handleUser = () => {
getUser().then(res => { getUser()
console.log('res-----获取用户信息------->', res); .then((res) => {
console.log('res-----获取用户信息------->', res)
if (res.data.code != 0) { if (res.data.code != 0) {
return message.warning(res.data.msg) return message.warning(res.data.msg)
} }
userInfo.value = res.data.data || {} userInfo.value = res.data.data || {}
userInfo.value.usernameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.username || ''); userInfo.value.usernameShow =
userInfo.value.realNameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.realName || ''); '西海岸能力超市' +
}).catch(err => { (userInfo.value.deptName || '') +
(userInfo.value.username || '')
userInfo.value.realNameShow =
'西海岸能力超市' +
(userInfo.value.deptName || '') +
(userInfo.value.realName || '')
})
.catch((err) => {
message.warning(err) message.warning(err)
}) })
} }
const openView = (url) => { const openView = (url) => {
window.open(url, '_blank') window.open(url, '_blank')
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.aaa { .aaa {
margin-right: 30px; margin-right: 30px;
} }
:deep(.ant-popover-inner) { :deep(.ant-popover-inner) {
position: fixed !important; position: fixed !important;
margin-right: 100px; margin-right: 100px;
} }
.title { .title {
font-size: 0.18rem; font-size: 0.18rem;
@ -487,22 +537,17 @@ const openView = (url) => {
padding-left: 0.1rem; padding-left: 0.1rem;
border-left: 0.06rem #0058e1 solid; border-left: 0.06rem #0058e1 solid;
} }
.top { .top {
margin-bottom: 0.1rem; margin-bottom: 0.1rem;
.main { .main {
background: #eee; background: #eee;
padding: 0.2rem 0.2rem 0.1rem; padding: 0.2rem 0.2rem 0.1rem;
p { p {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
& > span { & > span {
width: 100%; width: 100%;
} }
.enclosure { .enclosure {
width: 95%; width: 95%;
padding: 0.05rem 0.1rem; padding: 0.05rem 0.1rem;
@ -511,13 +556,11 @@ const openView = (url) => {
justify-content: space-between; justify-content: space-between;
margin-top: 0.05rem; margin-top: 0.05rem;
} }
.btn:hover { .btn:hover {
color: #0058e1; color: #0058e1;
cursor: pointer; cursor: pointer;
} }
} }
.item { .item {
span { span {
width: 2.5rem; width: 2.5rem;
@ -525,19 +568,16 @@ const openView = (url) => {
} }
} }
} }
.bottom { .bottom {
.main { .main {
.item { .item {
border-top: 1px #eee solid; border-top: 1px #eee solid;
.deptName { .deptName {
color: #0058e1; color: #0058e1;
font-size: 0.16rem; font-size: 0.16rem;
margin-top: 0.1rem; margin-top: 0.1rem;
display: flex; display: flex;
align-items: center; align-items: center;
.img { .img {
width: 0.05rem; width: 0.05rem;
height: 0.05rem; height: 0.05rem;
@ -546,20 +586,16 @@ const openView = (url) => {
margin-right: 0.1rem; margin-right: 0.1rem;
} }
} }
.oddNumbers { .oddNumbers {
margin: 0.1rem 0 0 0.15rem; margin: 0.1rem 0 0 0.15rem;
} }
.box { .box {
margin-left: 0.1rem; margin-left: 0.1rem;
.ability { .ability {
height: 1.6rem; height: 1.6rem;
display: flex; display: flex;
border-bottom: 1px #eee solid; border-bottom: 1px #eee solid;
padding: 0.1rem 0; padding: 0.1rem 0;
.left { .left {
display: inline-block; display: inline-block;
width: 1.1rem; width: 1.1rem;
@ -568,37 +604,30 @@ const openView = (url) => {
background: url('~@/assets/home/sxt_square.png') no-repeat; background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.sxt { .sxt {
background: url('~@/assets/home/sxt_square.png') no-repeat; background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.yyzy { .yyzy {
background: url('~@/assets/home/yyzy_square.png') no-repeat; background: url('~@/assets/home/yyzy_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.znsf { .znsf {
background: url('~@/assets/home/znsf_square.png') no-repeat; background: url('~@/assets/home/znsf_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.tcfw { .tcfw {
background: url('~@/assets/home/tcfw_square.png') no-repeat; background: url('~@/assets/home/tcfw_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.kfzj { .kfzj {
background: url('~@/assets/home/kfzj_square.png') no-repeat; background: url('~@/assets/home/kfzj_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.ywzj { .ywzj {
background: url('~@/assets/home/ywzj_square.png') no-repeat; background: url('~@/assets/home/ywzj_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.btn { .btn {
cursor: pointer; cursor: pointer;
color: #0087ff; color: #0087ff;
@ -607,22 +636,18 @@ const openView = (url) => {
border: 1px #0087ff solid; border: 1px #0087ff solid;
border-radius: 0.2rem; border-radius: 0.2rem;
} }
.right { .right {
flex: 1; flex: 1;
margin-left: 0.15rem; margin-left: 0.15rem;
.ability-top { .ability-top {
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
.name { .name {
width: 6rem; width: 6rem;
height: 0.2rem; height: 0.2rem;
display: flex; display: flex;
.channelName { .channelName {
max-width: 5rem; max-width: 5rem;
height: 0.2rem; height: 0.2rem;
@ -633,7 +658,6 @@ const openView = (url) => {
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
.type { .type {
background: #0087ff; background: #0087ff;
color: #fff; color: #fff;
@ -644,10 +668,8 @@ const openView = (url) => {
} }
} }
} }
.ability-bottom { .ability-bottom {
margin-top: 0.15rem; margin-top: 0.15rem;
// display: flex; // display: flex;
// justify-content: space-between; // justify-content: space-between;
.dec { .dec {
@ -660,7 +682,6 @@ const openView = (url) => {
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
.dec2 { .dec2 {
width: 7rem; width: 7rem;
height: 0.22rem; height: 0.22rem;
@ -671,7 +692,6 @@ const openView = (url) => {
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
// .result:hover { // .result:hover {
// color: #0058e1; // color: #0058e1;
// cursor: pointer; // cursor: pointer;
@ -681,20 +701,17 @@ const openView = (url) => {
} }
} }
} }
.DownloadAttachment { .DownloadAttachment {
position: absolute; position: absolute;
right: 10px; right: 10px;
top: -150px; top: -150px;
} }
.DownloadAttachment2 { .DownloadAttachment2 {
position: absolute; position: absolute;
right: 10px; right: 10px;
top: -110px; top: -110px;
} }
} }
.clickCursor { .clickCursor {
cursor: pointer; cursor: pointer;
} }
@ -702,53 +719,44 @@ const openView = (url) => {
} }
} }
} }
.single-preview-modal { .single-preview-modal {
.ant-modal-header { .ant-modal-header {
background: url(~@/assets/home/video-background.png) no-repeat; background: url(~@/assets/home/video-background.png) no-repeat;
background-size: cover; background-size: cover;
} }
.ant-modal-title { .ant-modal-title {
font-size: 0.16rem; font-size: 0.16rem;
font-weight: 500; font-weight: 500;
color: #ffffff; color: #ffffff;
} }
.anticon { .anticon {
color: #ffffff; color: #ffffff;
} }
} }
// //
.waterMark-left-top { .waterMark-left-top {
left: 50px; left: 50px;
top: 100px; top: 100px;
text-align: left; text-align: left;
} }
// //
.waterMark-right-top { .waterMark-right-top {
right: 50px; right: 50px;
top: 100px; top: 100px;
text-align: right; text-align: right;
} }
// //
.waterMark-left-bottom { .waterMark-left-bottom {
left: 50px; left: 50px;
bottom: 100px; bottom: 100px;
text-align: left; text-align: left;
} }
// //
.waterMark-right-bottom { .waterMark-right-bottom {
right: 50px; right: 50px;
bottom: 100px; bottom: 100px;
text-align: right; text-align: right;
} }
.waterMark { .waterMark {
position: absolute; position: absolute;
z-index: 99999999; z-index: 99999999;
@ -758,6 +766,5 @@ const openView = (url) => {
opacity: 0.4; opacity: 0.4;
transform: rotate(-25deg); transform: rotate(-25deg);
width: 470px; width: 470px;
} }
</style> </style>