273 lines
7.6 KiB
Vue
273 lines
7.6 KiB
Vue
<template>
|
||
<view>
|
||
<cu-custom bgColor="bg-gradual-blueness" :isBack="true">
|
||
<block slot="backText">返回</block>
|
||
<block slot="content">通知详情</block>
|
||
</cu-custom>
|
||
<scroll-view scroll-y>
|
||
<view class="message-warp">
|
||
<view class="title">
|
||
通知标题:
|
||
</view>
|
||
<view class="info">
|
||
{{pd.TITLE}}
|
||
</view>
|
||
<view class="title">
|
||
通知内容:
|
||
</view>
|
||
<rich-text class="info" :nodes="content"></rich-text>
|
||
<view class="info">
|
||
<text>{{pd.CREATETIME}}</text>
|
||
</view>
|
||
|
||
<view class="message-warp" v-if="pd.VIDEO_ROUTE">
|
||
<video :src="baseImgPath + pd.VIDEO_ROUTE" controls="true"></video>
|
||
</view>
|
||
<view class="message-warp" v-if="pd.ATTACHMENT_ROUTE">
|
||
<view class="cu-item" @click="$noMultipleClicks(goStuToOpen(pd.ATTACHMENT_ROUTE),pd.ATTACHMENT_ROUTE)">
|
||
<view class="content">
|
||
<text class="cuIcon-read text-blue"></text>
|
||
<text class="text-grey">附件</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view v-if="pd.REPLYSTATUS === '1'">
|
||
<view class="reply-title">回复内容</view>
|
||
<input type="text" class="reply-input" v-model="replyContent" placeholder="请输入回复内容" />
|
||
<button class="submit-btn" @click="confirmReply" v-show="pd.REPLYSTATUS === '1'">确定</button>
|
||
</view>
|
||
</view>
|
||
<view class="cu-tabbar-height"></view>
|
||
</scroll-view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
basePath,loginUser,baseImgPath
|
||
} from '@/common/tool.js';
|
||
import HTMLParser from "@/components/html-parser.js"
|
||
export default {
|
||
data() {
|
||
return {
|
||
baseImgPath: baseImgPath,
|
||
id:'',
|
||
content:'',
|
||
pd: {},
|
||
type:'',
|
||
noClick:true,
|
||
isConfirmed: false,
|
||
replyContent: '',
|
||
}
|
||
},
|
||
onLoad(e){
|
||
this.type =e.type;
|
||
this.id=e.id;
|
||
this.getData();
|
||
this.sendEditRequest();
|
||
this.markAsRead();
|
||
console.log(e)
|
||
},
|
||
methods: {
|
||
confirmReply() {
|
||
this.isConfirmed = true;
|
||
this.sendEditRequest();
|
||
},
|
||
getData() {
|
||
var _this = this;
|
||
uni.showLoading({
|
||
title: '请稍候'
|
||
});
|
||
|
||
var requestData = {
|
||
NOTIFICATION_ID: _this.id,
|
||
USER_ID: loginUser.USER_ID,
|
||
};
|
||
|
||
uni.request({
|
||
url: basePath + '/app/trafficNotice/listForCp',
|
||
method: 'POST',
|
||
dataType: 'json',
|
||
header: {
|
||
'Content-type': 'application/x-www-form-urlencoded'
|
||
},
|
||
data: requestData,
|
||
success: (res) => {
|
||
if ("success" == res.data.result && res.data.varList && res.data.varList.length > 0) {
|
||
_this.pd = res.data.varList[0];
|
||
_this.content = new HTMLParser(_this.pd.NOTIFICATIONCONTENT.trim());
|
||
if (_this.pd.REPLYCONTENT && _this.pd.REPLYCONTENT.trim() !== '') {
|
||
_this.replyContent = _this.pd.REPLYCONTENT;
|
||
}
|
||
uni.hideLoading();
|
||
} else {
|
||
uni.showToast({
|
||
title: '数据加载失败',
|
||
duration: 2000
|
||
});
|
||
uni.hideLoading();
|
||
}
|
||
},
|
||
fail: () => {
|
||
uni.showToast({
|
||
title: '请求失败',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
uni.hideLoading();
|
||
}
|
||
});
|
||
},
|
||
markAsRead() {
|
||
const _this = this;
|
||
uni.request({
|
||
url: basePath + '/app/trafficNotice/edit',
|
||
method: 'POST',
|
||
header: {
|
||
'Content-Type': 'application/x-www-form-urlencoded'
|
||
},
|
||
data: {
|
||
NOTIFICATION_ID: _this.id,
|
||
USER_ID: loginUser.USER_ID,
|
||
TYPE: _this.type,
|
||
},
|
||
});
|
||
},
|
||
sendEditRequest() {
|
||
if (!this.isConfirmed) {
|
||
return;
|
||
}
|
||
var _this = this;
|
||
var requestData = {
|
||
NOTIFICATION_ID: _this.id,
|
||
USER_ID: loginUser.USER_ID,
|
||
REPLYCONTENT: _this.replyContent
|
||
};
|
||
if (!_this.replyContent) {
|
||
uni.showToast({
|
||
title: '回复内容不能为空',
|
||
icon: 'none',
|
||
duration: 2000
|
||
});
|
||
return;
|
||
}
|
||
uni.request({
|
||
url: basePath + '/app/trafficNotice/edit',
|
||
method: 'POST',
|
||
dataType: 'json',
|
||
header: {
|
||
'Content-type': 'application/x-www-form-urlencoded'
|
||
},
|
||
data: requestData,
|
||
success: (res) => {
|
||
if (res.data.result === "success") {
|
||
uni.showToast({
|
||
title: '回复成功',
|
||
duration: 2000
|
||
});
|
||
_this.replyContent = ''; // 清空回复内容
|
||
this.isConfirmed = false; // 重置确认状态
|
||
}
|
||
},
|
||
});
|
||
},
|
||
goStuToOpen(filePath) {
|
||
uni.downloadFile({
|
||
url: baseImgPath + filePath,
|
||
success: res => {
|
||
let filePath = res.tempFilePath;
|
||
if (true) { // open存在,代表预览操作
|
||
let system = uni.getSystemInfoSync().platform;
|
||
if (system == 'ios') {
|
||
filePath = encodeURI(filePath);
|
||
}
|
||
uni.openDocument({
|
||
filePath,
|
||
success: () => {
|
||
console.log('打开文档成功');
|
||
},
|
||
fail: error => {
|
||
console.log(error)
|
||
}
|
||
});
|
||
} else { // open不存在,代表下载操作
|
||
uni.saveFile({
|
||
tempFilePath: filePath,
|
||
success: () => {
|
||
uni.showToast({
|
||
title: '下载成功'
|
||
})
|
||
},
|
||
fail: () => {
|
||
uni.showToast({
|
||
title: '下载失败'
|
||
})
|
||
}
|
||
})
|
||
}
|
||
},
|
||
fail: () => {
|
||
if (!open) {
|
||
uni.showToast({
|
||
title: '下载失败'
|
||
})
|
||
}
|
||
}
|
||
})
|
||
},
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style>
|
||
.message-warp{
|
||
background-color: #fff;
|
||
padding: 30upx;
|
||
}
|
||
.message-warp .title {
|
||
font-size: 34upx;
|
||
margin-bottom: 20upx;
|
||
}
|
||
.submit-btn {
|
||
background-color: #007AFF; /* 蓝色背景 */
|
||
color: white; /* 白色文字 */
|
||
border: none; /* 无边框 */
|
||
padding: 5upx 10upx; /* 内边距 */
|
||
font-size: 18upx; /* 字体大小 */
|
||
margin-top: 10upx; /* 上边距 */
|
||
border-radius: 5upx; /* 圆角 */
|
||
width: auto; /* 修改处:宽度自动,取决于内容和内边距 */
|
||
max-width: 100upx; /* 修改处:最大宽度,可以根据需要调整 */
|
||
display: block; /* 块级元素 */
|
||
margin-left: auto; /* 水平居中 */
|
||
margin-right: auto; /* 水平居中 */
|
||
}
|
||
.reply-input {
|
||
box-sizing: border-box;
|
||
border: 1px solid #dcdfe6; /* 设置边框颜色和宽度 */
|
||
border-radius: 4px; /* 轻微圆角效果 */
|
||
padding: 10px; /* 设置一些内边距*/
|
||
font-size: 16px; /* 设置适当的字体大小 */
|
||
color: #606266; /* 设置字体颜色 */
|
||
margin: 10px 0; /* 设置上下外边距 */
|
||
width: 100%; /* 宽度设置为100% */
|
||
height: 40px; /* 设置一个固定的高度 */
|
||
}
|
||
.info {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
color: #888;
|
||
font-size: 24upx;
|
||
margin-bottom: 20upx;
|
||
}
|
||
|
||
.content {
|
||
padding: 0upx;
|
||
line-height: 1.6;
|
||
}
|
||
.content img{
|
||
width: 100%;
|
||
height: auto;
|
||
}
|
||
</style>
|