From 74f0af9b74aafb4cdeab9018cbb157b89174b6ea Mon Sep 17 00:00:00 2001 From: fengachen <373943794@qq.com> Date: Tue, 28 Sep 2021 15:41:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E7=9A=84=E6=B6=88=E6=81=AF=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/api.js | 5 +- src/api/incomePaymentsApi.js | 13 + src/api/manage.js | 2 +- src/assets/less/common.less | 39 ++ src/components/jero/JImageUpload.vue | 78 +++- src/components/jero/PreviewFile.vue | 104 +++++ src/components/tools/Bus.js | 3 + src/components/tools/HeaderNotice.vue | 112 +++-- src/components/tools/JDate.vue | 101 +++++ src/mixins/RangeDateMixin.js | 37 ++ src/views/MessagePage/MeetingDetailModal.vue | 289 ++++++++++++ src/views/MessagePage/ProjectDetailModal.vue | 416 ++++++++++++++++++ .../UploadMeetingCertificateModal.vue | 259 +++++++++++ src/views/system/UserAnnouncementList.vue | 367 +++++++++------ 14 files changed, 1612 insertions(+), 213 deletions(-) create mode 100644 src/api/incomePaymentsApi.js create mode 100644 src/components/jero/PreviewFile.vue create mode 100644 src/components/tools/Bus.js create mode 100644 src/components/tools/JDate.vue create mode 100644 src/mixins/RangeDateMixin.js create mode 100644 src/views/MessagePage/MeetingDetailModal.vue create mode 100644 src/views/MessagePage/ProjectDetailModal.vue create mode 100644 src/views/MessagePage/UploadMeetingCertificateModal.vue diff --git a/src/api/api.js b/src/api/api.js index ff3c2f6..f8abb7f 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -91,6 +91,8 @@ const checkRuleByCode = (params) => getAction('/sys/checkRule/checkByCode', para //加载我的通告信息 const getUserNoticeInfo= (params)=>getAction('/sys/sysAnnouncementSend/getMyAnnouncementSend',params) const getTransitURL = url => `/sys/common/transitRESTful?url=${encodeURIComponent(url)}` +// 通过文件的id获取文件的相应信息 +const getFileInfo = (params) => getAction('/sys/oss/file/queryById', params) // 中转HTTP请求 export const transitRESTful = { get: (url, parameter) => getAction(getTransitURL(url), parameter), @@ -153,7 +155,8 @@ export { saveDeptRolePermission, queryMyDepartTreeList, getUserNoticeInfo, - getDictItemsFromCache + getDictItemsFromCache, + getFileInfo } diff --git a/src/api/incomePaymentsApi.js b/src/api/incomePaymentsApi.js new file mode 100644 index 0000000..88a45ee --- /dev/null +++ b/src/api/incomePaymentsApi.js @@ -0,0 +1,13 @@ +import {getAction} from '@api/manage' +// 普通项目管理-通过项目id查询其他的信息 +const queryCommonProjectById = (param) => getAction('/project/payCommonProject/queryById', param) +// 通过会议id获取会议的详细信息 +const getMeetInfoById = (params) => getAction('/meeting/payMeeting/queryById',params) +// 通过id获取参会人详细信息 +const getSingUpUserInfo = (params) => getAction('/meeting/payMeetingSituation/queryById',params) + +export { + queryCommonProjectById, + getMeetInfoById, + getSingUpUserInfo +} diff --git a/src/api/manage.js b/src/api/manage.js index 9314585..1297fa0 100644 --- a/src/api/manage.js +++ b/src/api/manage.js @@ -33,7 +33,7 @@ export function httpAction(url,parameter,method) { export function putAction(url,parameter) { return axios({ url: url, - method:'put', + method:'post', data: parameter }) } diff --git a/src/assets/less/common.less b/src/assets/less/common.less index 27eb79e..d41a24b 100644 --- a/src/assets/less/common.less +++ b/src/assets/less/common.less @@ -63,3 +63,42 @@ .ant-table-tbody .ant-table-row td .action-span-cell a + a{ padding-left: 20px; } +.primary-color{ + color: #069f99; + cursor: pointer; +} + +// 标题及标题前的圆点 +.part-title { + padding: 10px 0; + font-size: 16px; + font-family: PingFang SC, PingFang SC-Bold; + font-weight: 700; + text-align: left; + color: #333333; + display: flex; + align-items: center; + position: relative; + + &-text { + padding-left: 20px; + } + + &-text::before { + position: absolute; + content: ""; + left: 0; + top: 50%; + transform: translateY(-50%); + width: 10px; + height: 10px; + background: #069f99; + border-radius: 5px; + } +} + +.reset-button { + color: #08B6AF; + background: rgba(8,182,175,0.10); + border: 1px solid #08b6af; +} \ No newline at end of file diff --git a/src/components/jero/JImageUpload.vue b/src/components/jero/JImageUpload.vue index 2ca498f..77e6667 100644 --- a/src/components/jero/JImageUpload.vue +++ b/src/components/jero/JImageUpload.vue @@ -33,7 +33,8 @@ import Vue from 'vue' import { ACCESS_TOKEN } from '@/store/mutation-types' import { getFileAccessHttpUrl } from '@/api/manage' - // eslint-disable-next-line no-undef + import {getFileInfo} from '@api/api' + // eslint-disable-next-line const Base64 = require('js-base64').Base64 const uidGenerator=()=>{ @@ -67,6 +68,11 @@ type:[String,Array], required:false }, + /* 返回文件id*/ + returnId:{ + type:Boolean, + default:false + }, disabled:{ type:Boolean, required:false, @@ -88,7 +94,6 @@ computed: { //透传给下级组件的事件,需要排除本组件使用的change事件 childListeners() { - // const vm = this let result = Object.assign({}, this.$listeners, ) @@ -98,7 +103,8 @@ }, watch:{ value: { - handler(val) { + handler() { + let val = this.value if (val instanceof Array) { this.initFileList(val.join(',')) } else { @@ -117,21 +123,57 @@ this.headers = {'X-Access-Token':token} }, methods:{ - initFileList(paths){ + async initFileList(paths){ if(!paths || paths.length === 0){ this.fileList = [] return } this.picUrl = true let arr = paths.split(',') + let fileList = [] for(var a=0;a{ - if (item.url === arr[a]){ - item.uid = uidGenerator() - item.response.status = 'history' + // 通过文件id获取文件信息 + const fileObj = await this.getFileInfo(arr[a]) + // 获取图片路径 + const url = getFileAccessHttpUrl(fileObj.url) + fileList.push({ + uid: uidGenerator(), + name: (fileObj || {}).fileName, + status: 'done', + url: url, + response: { + status: 'history', + message: arr[a], + result: fileObj } }) } + this.fileList = [...fileList] + this.fileList.forEach((item)=>{ + if(this.returnId){ + item.url = this.getImgUrl(item.response.result.id,item.name) + } + if (item.url === arr[a]){ + item.uid = uidGenerator() + item.response.status = 'history' + } + }) + }, + /** + * 通过文件的id获取文件的相关信息 + * @param id + */ + getFileInfo(id) { + return new Promise(resolve => { + let result = {} + getFileInfo({id: id}).then(res => { + if (res.success) { + result = res.result + } + }).finally(() => { + resolve(result) + }) + }) }, beforeUpload: function(file){ var fileType = file.type @@ -153,7 +195,11 @@ this.picUrl = true fileList = fileList.map((file) => { if (file.response) { - file.url = `${file.response.result.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.response.result.fileName}` + if(this.returnId){ + file.url = `${file.response.result.id}` + }else { + file.url = `${file.response.result.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.response.result.fileName}` + } } return file }) @@ -180,6 +226,7 @@ getAvatarView(){ if(this.fileList.length>0){ let url = this.fileList[this.fileList.length-1].url + // console.log( getFileAccessHttpUrl(url),'url') return getFileAccessHttpUrl(url) } }, @@ -208,8 +255,7 @@ } this.$emit('change', path) }, - // eslint-disable-next-line no-unused-vars - handleDelete(file){ + handleDelete(){ //如有需要新增 删除逻辑 }, handleCancel() { @@ -219,6 +265,16 @@ close () { }, + getImgUrl(id,name){ + return `${id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${name}` + }, + getFileInfos(ids){ + return new Promise(resolve => { + getFileInfo({id:ids}).then(res => { + resolve(res.result) + }) + }) + } }, model: { prop: 'value', diff --git a/src/components/jero/PreviewFile.vue b/src/components/jero/PreviewFile.vue new file mode 100644 index 0000000..f30bdbb --- /dev/null +++ b/src/components/jero/PreviewFile.vue @@ -0,0 +1,104 @@ + + + + + \ No newline at end of file diff --git a/src/components/tools/Bus.js b/src/components/tools/Bus.js new file mode 100644 index 0000000..c4f4e31 --- /dev/null +++ b/src/components/tools/Bus.js @@ -0,0 +1,3 @@ +import Vue from 'vue' + +export const Bus = new Vue() diff --git a/src/components/tools/HeaderNotice.vue b/src/components/tools/HeaderNotice.vue index e98c679..48a4d73 100644 --- a/src/components/tools/HeaderNotice.vue +++ b/src/components/tools/HeaderNotice.vue @@ -4,66 +4,29 @@ placement="bottomRight" :autoAdjustOverflow="true" :arrowPointAtCenter="true" + :visible="hovered" overlayClassName="header-notice-wrapper" @visibleChange="handleHoverChange" :overlayStyle="{ width: '300px', top: '50px' }"> @@ -81,6 +44,7 @@ // import ShowAnnouncement from './ShowAnnouncement' import store from '@/store/' import DynamicNotice from './DynamicNotice' + import {Bus} from '@comp/tools/Bus' export default { @@ -117,15 +81,22 @@ return parseInt(this.msg1Count)+parseInt(this.msg2Count) } }, + created() { + Bus.$on('notice-change', () => { + // console.log('notice-change') + this.loadData() + }) + }, + destroyed: function () { // 离开页面生命周期函数 + this.websocketOnclose() + Bus.$off('notice-change') + }, mounted() { this.loadData() //this.timerFun(); this.initWebSocket() // this.heartCheckFun(); }, - destroyed: function () { // 离开页面生命周期函数 - this.websocketOnclose() - }, methods: { timerFun() { this.stopTimer = false @@ -174,21 +145,32 @@ putAction(this.url.editCementSend,{anntId:record.id}).then((res)=>{ if(res.success){ this.loadData() + Bus.$emit('header-notice-change') } }) this.hovered = false + const param = JSON.parse(record.busId) if(record.openType==='component'){ this.openPath = record.openPage - this.formData = {id:record.busId} + this.formData = param this.$refs.showDynamNotice.detail(record.openPage) - }else{ - // this.$refs.ShowAnnouncement.detail(record); + }else if(record.openType === 'url') { + console.log(record.openPage,'url') + const param = JSON.parse(record.busId) + // 如果是url 跳转页面 + this.$router.push({ + path:record.openPage, + query:param + }) + }else { + this.$refs.ShowAnnouncement.detail(record) } }, toMyAnnouncement(){ this.$router.push({ path: '/system/userAnnouncementList' }) + this.handleHoverChange(false) }, modalFormOk(){ }, @@ -334,4 +316,12 @@ vertical-align: initial; } } + .notice-title { + text-align: center; + padding: 3px 0; + border-bottom: 1px solid #e8e8e8; + letter-spacing: 1px; + } + + diff --git a/src/components/tools/JDate.vue b/src/components/tools/JDate.vue new file mode 100644 index 0000000..2de8619 --- /dev/null +++ b/src/components/tools/JDate.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/mixins/RangeDateMixin.js b/src/mixins/RangeDateMixin.js new file mode 100644 index 0000000..90c4aa1 --- /dev/null +++ b/src/mixins/RangeDateMixin.js @@ -0,0 +1,37 @@ +/* 查询条件有时间范围的 混入方法 */ +import moment from 'moment' +export const RangeDateMixin = { + data() { + return { + dateKeyObj: { + beginKey: 'startTime', + endKey: 'endTime' + }, + rangeDateFormat: { + begin: 'YYYY-MM-DD HH:mm:ss', + end: 'YYYY-MM-DD HH:mm:ss' + } + } + }, + + methods: { + disabledStartDate(startValue) { + const endValue = this.queryParam[this.dateKeyObj.endKey] && moment(this.queryParam[this.dateKeyObj.endKey], this.rangeDateFormat.end) + if (!startValue || !endValue) { + return false + } + return startValue.valueOf() > endValue.valueOf() + }, + + disabledEndDate(endValue) { + const startValue = this.queryParam[this.dateKeyObj.beginKey] && moment(this.queryParam[this.dateKeyObj.beginKey], this.rangeDateFormat.begin) + if (!endValue || !startValue) { + return false + } + return startValue.valueOf() > endValue.valueOf() + }, + disabledDateBeforeToday(current) { + return current < moment().subtract(1, 'day') // 当天之前的不可选,不包括当天 + } + } +} diff --git a/src/views/MessagePage/MeetingDetailModal.vue b/src/views/MessagePage/MeetingDetailModal.vue new file mode 100644 index 0000000..764a661 --- /dev/null +++ b/src/views/MessagePage/MeetingDetailModal.vue @@ -0,0 +1,289 @@ + + + + + \ No newline at end of file diff --git a/src/views/MessagePage/ProjectDetailModal.vue b/src/views/MessagePage/ProjectDetailModal.vue new file mode 100644 index 0000000..739ea2e --- /dev/null +++ b/src/views/MessagePage/ProjectDetailModal.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/src/views/MessagePage/UploadMeetingCertificateModal.vue b/src/views/MessagePage/UploadMeetingCertificateModal.vue new file mode 100644 index 0000000..4899edf --- /dev/null +++ b/src/views/MessagePage/UploadMeetingCertificateModal.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/src/views/system/UserAnnouncementList.vue b/src/views/system/UserAnnouncementList.vue index 9cf2159..c38f9e6 100644 --- a/src/views/system/UserAnnouncementList.vue +++ b/src/views/system/UserAnnouncementList.vue @@ -5,21 +5,34 @@ - - - + + + - - - + + + + + + + - + 查询 - 重置 + 重置 @@ -27,10 +40,6 @@ -
- 全部标注已读 -
- - + + + + + + + + + 查看 + 已读 + 已读 @@ -51,142 +75,207 @@ -