通知开发 水印修改 BUG修改

This commit is contained in:
a0049873 2022-12-02 14:50:41 +08:00
parent 8afd825ffc
commit 1c53bba435
8 changed files with 501 additions and 55 deletions

View File

@ -0,0 +1,197 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-demo__sysnotice">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getData()">
<el-form-item>
<el-input v-model="dataForm.content" dict-type="notice_type" :placeholder="$t('notice.type')"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getData()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogVisible = true">添加公告</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogVisible2 = true">公告周期设置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border
style="width: 100%;">
<el-table-column prop="content" label="内容" header-align="center" align="center" width="950">
</el-table-column>
<el-table-column prop="publishTime" label="发布时间" header-align="center" align="center" width="300">
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="viewHandle(scope.row)">
详情
</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="dataForm.page" :page-size="dataForm.limit" :total="total"
layout="total, prev, pager, next"
@current-change="currentChange">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
<el-dialog
title="添加公告"
:visible.sync="dialogVisible"
width="30%"
:close-on-click-modal="false">
<el-input
type="textarea"
:rows="5"
:maxlength="200"
show-word-limit
placeholder="请输入公告内容6-200字"
v-model="submitData.content">
</el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
<el-dialog
title="设置公告周期"
:visible.sync="dialogVisible2"
width="30%"
:close-on-click-modal="false">
<el-input
placeholder="请输入公告周期(天)"
v-model="cycle">
</el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="submitCycle"> </el-button>
</span>
</el-dialog>
</el-card>
</template>
<script>
import qs from 'qs'
import AddOrUpdate from './notice-add-or-update'
import { addDynamicRoute } from '@/router'
export default {
data () {
return {
cycle: 0,
total: 0,
dataListLoading: false,
dialogVisible: false,
dialogVisible2: false,
dataList: [],
dataForm: {
page: 1,
limit: 5,
content: ''
},
submitData: {
content: ''
}
}
},
components: {
AddOrUpdate
},
methods: {
currentChange (current) {
this.dataForm.page = current
this.getData()
},
getData () {
this.$http.get('/sysnoticemanagement/page?' + qs.stringify(this.dataForm)).then(res => {
console.log('获取通知数据', res.data.data)
this.dataList = res.data.data.list
this.total = res.data.data.total
this.dataListLoading = false
})
},
getCycle () {
this.$http.get('/sys/dict/data/page?dictTypeId=1598237460358852610&page=1&limit=9999').then(res => {
console.log('字典', res.data.data)
this.cycle = res.data.data.list[0].dictLabel
})
},
handleClose () {
this.dialogVisible = false
this.dialogVisible2 = false
this.submitData.content = ''
this.getCycle()
},
submit () {
console.log(this.submitData)
if (this.submitData.content.length < 6) {
this.$message({
message: '最少发布6个字的公告',
type: 'warning'
})
return
}
this.$http.post('/sysnoticemanagement', this.submitData).then(res => {
console.log('获取通知数据', res.data.data)
this.clear()
})
},
submitCycle () {
this.$http.put('/sys/dict/data', {
dictLabel: this.cycle,
dictTypeId: '1598237460358852610',
id: '1598237627208265730'
}).then(res => {
this.clear()
})
},
clear () {
this.dialogVisible = false
this.dialogVisible2 = false
this.submitData.content = ''
this.dataForm.content = ''
this.dataForm.page = 1
this.getData()
this.getCycle()
},
deleteHandle (item) {
console.log(item)
this.$http.post('/sysnoticemanagement/delete', [item.id]).then(res => {
this.clear()
})
},
viewHandle (row) {
//
const routeParams = {
routeName: `${this.$route.name}__${row.id}`,
title: this.$t('notice.view1'),
path: 'notice/notice-view',
params: {
id: row.id
}
}
//
addDynamicRoute(routeParams, this.$router)
}
},
created () {
this.getData()
this.getCycle()
}
}
</script>
<style scoped>
.text-ellipsis {
/*1. 先强制一行内显示文本*/
white-space: nowrap;
/*2. 超出的部分隐藏*/
overflow: hidden;
/*3. 文字用省略号替代超出的部分*/
text-overflow: ellipsis;
}
::v-deep .el-textarea__inner {
resize: none;
}
</style>

View File

@ -0,0 +1,32 @@
<!--
* @Author: Light
* @Date: 2022-12-02 11:44:20
* @LastEditors: Light
* @LastEditTime: 2022-12-02 11:44:36
* @Description: 告诉大家这是什么
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>滚动文字</title>
<style>
body {
background: black;
padding: 20px;
}
marquee {
font-weight: bolder;
font-size: 40px;
color: white;
}
</style>
</head>
<body style="background: black;padding: 20px;">
<marquee direction="up"></marquee>
<marquee direction="down">你好</marquee>
<marquee direction="left">山月剧</marquee>
<marquee direction="right">明哥</marquee>
</body>
</html>

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-05-06 11:12:00 * @Date: 2022-05-06 11:12:00
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-11-29 17:28:20 * @LastEditTime: 2022-12-01 15:46:55
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
@ -92,6 +92,7 @@
if (res.data.code == 0) { if (res.data.code == 0) {
realName = res.data.data.realName realName = res.data.data.realName
} }
if (realName.length > 13) {
onWholeWaterMark( onWholeWaterMark(
[realName, moment().format('YYYY-MM-DD')], [realName, moment().format('YYYY-MM-DD')],
800, 800,
@ -99,6 +100,23 @@
24, 24,
40 40
) )
} else if (realName.length > 8) {
onWholeWaterMark(
[realName, moment().format('YYYY-MM-DD')],
600,
200,
24,
40
)
} else {
onWholeWaterMark(
[realName, moment().format('YYYY-MM-DD')],
450,
200,
24,
40
)
}
getCategoryTreePage({ getCategoryTreePage({
page: 1, page: 1,
limit: 999, limit: 999,

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-04-01 19:19:40 * @Date: 2022-04-01 19:19:40
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-11-21 16:35:03 * @LastEditTime: 2022-12-01 17:53:16
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
import request from '@/utils/request' import request from '@/utils/request'
@ -572,3 +572,11 @@ export function delApplyCamera(data) {
data, data,
}) })
} }
//
export function sysnoticemanagement(params) {
return request({
url: '/sysnoticemanagement/page',
method: 'get',
params,
})
}

View File

@ -0,0 +1,144 @@
<!--
* @Author: Light
* @Date: 2022-11-30 17:43:43
* @LastEditors: Light
* @LastEditTime: 2022-12-02 11:53:46
* @Description: 告诉大家这是什么
-->
<template>
<div class="carousel" v-if="dataSource.noticeList.length > 0">
<div class="notice">
<!-- <div class="item" id="notice-item1" v-html="dataSource.str"></div>
<div class="item" id="notice-item2" v-html="dataSource.str"></div> -->
<div class="notice-item">
<svg
t="1669889820945"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="1382"
width="20"
height="20"
>
<path
d="M553.141571 59.499589a43.664726 43.664726 0 0 0-47.54116 6.253491l-255.990857 218.616193-204.061284-0.841113h-0.07314a43.884147 43.884147 0 0 0-31.377165 13.274954 46.041784 46.041784 0 0 0-13.128674 32.291418L0.018468 694.283776a46.370915 46.370915 0 0 0 12.982393 32.364558 43.884147 43.884147 0 0 0 31.523446 13.421235h206.511482l254.747473 217.81165a43.664726 43.664726 0 0 0 47.541159 6.21692 45.749223 45.749223 0 0 0 25.599086-41.360808V100.823828a45.785793 45.785793 0 0 0-25.599086-41.324239z m172.610978 228.343845a43.884147 43.884147 0 0 0-58.695047 21.466662 46.553766 46.553766 0 0 0 20.332988 60.925824 150.668905 150.668905 0 0 1 69.483233 138.271633c0 108.174422-62.352059 144.013142-64.436556 145.183387a46.261205 46.261205 0 0 0-19.930717 61.291525 44.432699 44.432699 0 0 0 39.898004 25.269955 43.481876 43.481876 0 0 0 19.857577-4.790686c4.644406-2.413628 113.623371-60.267562 113.62337-226.954181a239.607443 239.607443 0 0 0-120.169422-220.664119z m138.600764-134.139209a43.884147 43.884147 0 0 0-61.181815 13.677226 46.553766 46.553766 0 0 0 12.909253 63.120031c4.827256 3.254741 118.889468 82.977608 118.889469 281.370523s-109.417807 278.664333-113.769651 281.589943a46.370915 46.370915 0 0 0-12.360702 63.339452 43.884147 43.884147 0 0 0 61.766937 12.653262c6.253491-4.278704 153.375094-107.735581 153.375094-357.728938S870.862795 157.873219 864.353313 153.594514z m0 0"
p-id="1383"
fill="#d81e06"
></path>
</svg>
<!-- {{ item.content }} -->
<marquee
direction="left"
behavior="scroll"
onmouseover="this.stop()"
onmouseout="this.start()"
>
{{ dataSource.str }}
</marquee>
</div>
</div>
</div>
</template>
<script setup>
import { reactive, onMounted, onBeforeUnmount, nextTick } from 'vue'
import { sysnoticemanagement } from '@/api/home'
import { getCategoryTreePage } from '@/api/personalCenter'
const dataSource = reactive({
noticeList: [],
total: 0,
str: '',
})
getCategoryTreePage({
dictTypeId: '1598237460358852610',
page: 1,
limit: 9999,
}).then((res) => {
sysnoticemanagement({
page: 1,
limit: 9999,
content: '',
days: res.data.data.list[0].dictLabel,
}).then((res1) => {
dataSource.noticeList = res1.data.data.list
dataSource.total = res1.data.data.total
dataSource.noticeList.map((val, index) => {
dataSource.str +=
'通知' + (index + 1) + '' + val.content + '     '
})
})
})
// let time = null
onMounted(() => {
// nextTick(() => {
// const domArr = document.getElementsByClassName('notice-item')
// let num = 0
// //
// const move = () => {
// num++
// for (let i = 0; i < domArr.length; i++) {
// let offsetWidth = 0
// for (let j = 0; j < i; j++) {
// offsetWidth += domArr[j].offsetWidth + 30
// }
// domArr[i].style.left = -num + offsetWidth + 'px'
// }
// }
// // transition
// const setTransition = (str) => {
// for (let i = 0; i < domArr.length; i++) {
// domArr[i].style.transition = str
// }
// }
// move()
// time = window.setInterval(() => {
// move()
// let str = domArr[dataSource.total].style.left
// if (str.substring(0, str.length - 2) < 0) {
// num = 0
// setTransition('unset')
// move()
// } else if (domArr[0].style.transition == 'unset') {
// setTransition('all 0.05s linear')
// }
// }, 50)
// })
})
onBeforeUnmount(() => {
// window.clearInterval(time)
})
</script>
<style lang="less" scoped>
.carousel {
width: 100%;
height: 50px;
line-height: 50px;
display: flex;
justify-content: center;
align-items: center;
// background: #364d79;
color: #d81e06;
position: absolute;
top: 60px;
left: 0;
.notice {
width: 740px;
height: 50px;
line-height: 50px;
position: relative;
overflow: hidden;
.notice-item {
font-size: 16px;
position: absolute;
top: 0;
white-space: nowrap;
transition: all 0.05s linear;
display: flex;
align-items: center;
.icon {
margin-right: 10px;
}
}
}
}
</style>

View File

@ -2,12 +2,13 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-23 16:41:49 * @Date: 2022-06-23 16:41:49
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-10-13 16:40:15 * @LastEditTime: 2022-11-30 17:55:43
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
<div class="newHome"> <div class="newHome">
<new-home-header></new-home-header> <new-home-header></new-home-header>
<Carousel></Carousel>
<navigation></navigation> <navigation></navigation>
<navigation2></navigation2> <navigation2></navigation2>
<capability-convergence></capability-convergence> <capability-convergence></capability-convergence>
@ -21,6 +22,7 @@
</template> </template>
<script setup> <script setup>
import NewHomeHeader from '@/views/home/components/header' import NewHomeHeader from '@/views/home/components/header'
import Carousel from '@/views/newHome/components/Carousel'
import Navigation from '@/views/newHome/components/Navigation' import Navigation from '@/views/newHome/components/Navigation'
import Navigation2 from '@/views/newHome/components/Navigation2' import Navigation2 from '@/views/newHome/components/Navigation2'
import CapabilityConvergence from '@/views/newHome/components/CapabilityConvergence' import CapabilityConvergence from '@/views/newHome/components/CapabilityConvergence'
@ -32,21 +34,21 @@
import HomeFooter from '@/views/newHome/components/Footer' import HomeFooter from '@/views/newHome/components/Footer'
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@font-face { @font-face {
font-family: 'text-typeface'; font-family: 'text-typeface';
src: url('~@/assets/newHome/font/text-typeface.otf'); src: url('~@/assets/newHome/font/text-typeface.otf');
} }
@font-face { @font-face {
font-family: 'num-typeface'; font-family: 'num-typeface';
src: url('~@/assets/newHome/font/num-typeface.otf'); src: url('~@/assets/newHome/font/num-typeface.otf');
} }
.newHome { .newHome {
font-family: text-typeface; font-family: text-typeface;
.num { .num {
font-family: num-typeface; font-family: num-typeface;
} }
} }
.resource-aggregation { .resource-aggregation {
background: #fff; background: #fff;
} }
</style> </style>

View File

@ -117,7 +117,7 @@
item.ended item.ended
? '审核完成' ? '审核完成'
: item.backToFirst : item.backToFirst
? '审核中(被驳回,请修改申请或终止流程' ? '审核中(请修改被驳回内容'
: '审核中' : '审核中'
}} }}
</p> </p>

View File

@ -272,6 +272,7 @@
function handlecancel() { function handlecancel() {
abilityToTypeFunctionData.value = '组件服务' abilityToTypeFunctionData.value = '组件服务'
componentTypeValue.value = '' componentTypeValue.value = ''
visible2.value = false
} }
function abilityToTypeFunction(item) { function abilityToTypeFunction(item) {
abilityToTypeFunctionData.value = item abilityToTypeFunctionData.value = item
@ -291,6 +292,7 @@
if (abilityToTypeFunctionData.value == '组件服务') { if (abilityToTypeFunctionData.value == '组件服务') {
if (!componentTypeValue.value || componentTypeValue.value == '') { if (!componentTypeValue.value || componentTypeValue.value == '') {
message.error('请选择组件类型!') message.error('请选择组件类型!')
componentTypeValueOld.value = ''
return return
} else if ( } else if (
componentTypeValue.value === '智能算法' || componentTypeValue.value === '智能算法' ||
@ -316,10 +318,10 @@
query: snum.value, query: snum.value,
}) })
window.open(applypage.href, '_blank') window.open(applypage.href, '_blank')
visible.value = false visible2.value = false
abilityToTypeFunctionData.value = '组件服务' abilityToTypeFunctionData.value = '组件服务'
componentTypeValue.value = '' componentTypeValue.value = ''
console.log(e) visible2.value = false
} }
let abilityToType = ref(['组件服务', '应用资源']) let abilityToType = ref(['组件服务', '应用资源'])
let componentType = ref([ let componentType = ref([
@ -687,61 +689,95 @@
margin-top: -1.44rem; margin-top: -1.44rem;
font-size: 0.14rem; font-size: 0.14rem;
font-weight: 500; font-weight: 500;
.ant-modal-footer {
border: 0;
text-align: center;
margin-top: 24px;
padding-bottom: 24px;
.shenqing {
background: #0058e1;
color: #ffffff;
width: 90px;
height: 32px;
border-radius: 2px;
border: 1px #0058e1 solid;
}
.quxiao {
width: 90px;
height: 32px;
background: #ffffff;
color: #0058e1;
border-radius: 2px;
border: 1px #0058e1 solid;
}
}
.ant-modal-body {
padding: 0px !important;
}
.ant-radio-inner { .ant-radio-inner {
height: 0.16rem; height: 0.16rem;
width: 0.16rem; width: 0.16rem;
} }
.ant-radio-inner::after { .ant-radio-inner::after {
background-color: unset; background-color: unset;
background: url('~@/assets/personalCenter/xuanzhong.png') no-repeat; background: url('~@/assets/personalCenter/xuanzhong.png') no-repeat;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
} }
.ant-modal-content { .ant-modal-content {
border-radius: 0.1rem; border-radius: 2px;
border: 1px #e6e9ed solid;
width: 690px;
box-shadow: 0px 4px 20px rgb(0, 0, 0, 0.5);
.ability-to-type, .ability-to-type,
.component-type { .component-type {
display: flex; display: flex;
margin-top: 0.2rem; margin-top: 24px;
margin-left: 24px;
.title { .title {
white-space: nowrap; white-space: nowrap;
margin-right: 0.2rem;
display: flex; display: flex;
align-items: center; align-items: center;
height: 0.26rem; height: 0.26rem;
font-size: 16px;
} }
.component-type-content {
.content {
width: 100%; width: 100%;
height: unset;
border: unset;
background: unset;
.ant-radio-group { .ant-radio-group {
display: grid; display: grid;
grid-template-columns: 1fr 1fr 1fr; grid-template-columns: auto auto auto auto;
grid-gap: 0.15rem; grid-gap: 0.15rem;
} }
} }
} }
.ability-to-type { .ability-to-type {
.content { .ability-to-type-content {
display: grid; display: grid;
grid-template-columns: 1fr 1fr 1fr; grid-template-columns: auto auto auto auto;
height: unset;
border: unset;
background: unset;
margin-left: 20px;
div { div {
margin-right: 0.15rem; &:hover {
background: #0058e1;
cursor: pointer; cursor: pointer;
font-size: 0.14rem; color: #ffffff;
width: 0.9rem; }
height: 0.26rem; margin-right: 16px;
border-radius: 0.13rem; cursor: pointer;
color: #333333; font-size: 16px;
background: #f5f5f5; width: 90px;
border: 0.01rem #cccccc solid; height: 32px;
border-radius: 2px;
color: #0058e1;
background: #ffffff;
border: 1px #0058e1 solid;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -749,7 +785,7 @@
} }
.ability-to-type-down { .ability-to-type-down {
background: #0087ff; background: #0058e1;
color: #fff; color: #fff;
} }
} }
@ -759,16 +795,25 @@
.ant-modal-title { .ant-modal-title {
display: flex; display: flex;
align-items: center; align-items: center;
display: flex;
align-items: center;
margin: 0px 24px;
padding-top: 24px;
padding-bottom: 22px;
color: #212121;
font-weight: bold;
font-size: 20px;
border-bottom: 2px solid #ebeced;
} }
.ant-modal-footer { .ant-modal-footer {
border: 0; border: 0;
text-align: center; text-align: center;
padding-bottom: 0.2rem; padding-bottom: 0.2rem;
margin-top: 50px;
button { button {
margin-right: 0.2rem; margin-right: 12px;
border-radius: 0.08rem; border-radius: 2px;
} }
} }