Преглед на файлове

Merge branch 'master' into dev1.4.8

lianbingjie преди 3 години
родител
ревизия
d9a5af2934
променени са 6 файла, в които са добавени 345 реда и са изтрити 3 реда
  1. 0 2
      README.md
  2. 9 0
      src/api/modules/user.js
  3. 204 0
      src/components/work-desktop/MessageTips.vue
  4. 75 0
      src/utils/globalFunctions.js
  5. 3 0
      src/views/work-desktop/WorkDesktop.vue
  6. 54 1
      vue.config.js

+ 0 - 2
README.md

@@ -1,6 +1,4 @@
 ## 剑鱼大会员PC端
-v1.4.7
-营销平台卡券二期
 ##### 无顶部底部开发
 v1.4.8
 呼叫中心数据同步

+ 9 - 0
src/api/modules/user.js

@@ -99,3 +99,12 @@ export function getLeftMenu (data) {
     data
   })
 }
+
+// 大会员首页消息展示
+export function latestNews () {
+  return request({
+    baseURL: '/jymessageCenter',
+    url: '/latestNews',
+    method: 'post'
+  })
+}

+ 204 - 0
src/components/work-desktop/MessageTips.vue

@@ -0,0 +1,204 @@
+<template>
+  <div class="mesg-tips" v-if="lists.length">
+    <div class="mesg-title">
+      <span>我的消息<i class="cont">(<em>{{conts}}</em> 条未读)</i></span>
+      <a class="set" href="/swordfish/frontPage/messageCenter/sess/index" target="_blank">更多<i class="el-icon-arrow-right"></i></a>
+    </div>
+    <div class="list-msg">
+      <div class="words" v-for="item in lists" :key="item.id">
+        <div class="l-msg">
+          <i v-show="item.isRead == 0"></i>
+          <h3 :class="{isActive: item.isRead == 1}">{{item.msg_type}}</h3>
+          <span @click="titleGoto(item)">{{item.title}}</span>
+        </div>
+        <p>{{item.createtime}}</p>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { latestNews } from '@/api/modules'
+import { dateMatter } from '@/utils/'
+export default {
+  data () {
+    return {
+      lists: [],
+      conts: 0
+    }
+  },
+  created () {
+    this.messageList()
+  },
+  methods: {
+    messageList () {
+      latestNews().then(res => {
+        if (res.status === 1) {
+          this.conts = res.count
+          if (!$.isEmptyObject(res.data)) {
+            res.data.forEach(v => {
+              v.msg_type = this.msgType(v.msg_type)
+              v.createtime = dateMatter(v.createtime)
+            })
+            this.lists = res.data
+          }
+        }
+      })
+    },
+    aHref (url) {
+      const a1 = document.createElement('a')
+      a1.href = url
+      a1.click()
+    },
+    readed (ids, type, url) {
+      const _this = this
+      $.ajax({
+        type: 'POST',
+        url: '/jymessageCenter/markRead',
+        data: {
+          msgId: ids,
+          msgType: type
+        },
+        success: function () {
+          if (url) {
+            _this.aHref(url)
+          } else {
+            _this.messageList()
+          }
+        }
+      })
+    },
+    titleGoto (item) {
+      if (item.isRead === 0) {
+        this.readed(item.id, item.msg_type, item.link)
+      } else {
+        if (item.link) {
+          this.aHref(item.link)
+        }
+      }
+    },
+    msgType (val) {
+      const obj = {
+        1: '活动优惠',
+        2: '服务通知',
+        3: '订阅消息',
+        4: '项目动态 ',
+        5: '企业动态',
+        6: '分析报告 ',
+        7: '系统通知'
+      }
+      return obj[val]
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.mesg-tips {
+  margin-top: 20px;
+  background: #fff;
+  border-radius: 4px;
+  box-shadow: 0px 0px 18px 0px rgba(0,0,0,0.02);
+  ::v-deep{
+    .fn-dialog{
+      .el-dialog__header,.el-dialog__body{
+        padding: 0;
+      }
+    }
+  }
+  .mesg-title {
+    position: relative;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 12px 20px;
+    color: #1d1d1d;
+    line-height: 28px;
+    border-bottom: 1px solid #ececec;
+    &::after{
+      position: absolute;
+      content: '';
+      width: 3px;
+      height: 24px;
+      background: #2cb7ca;
+      left: 0;
+      top: 50%;
+      transform: translateY(-50%);
+      border-top-right-radius: 2px;
+      border-bottom-right-radius: 2px;
+    }
+    span {
+      font-size: 18px;
+      margin-bottom: -3px;
+      .cont {
+        font-size: 14px;
+        color: #686868;
+        em {
+          color: #2cb7ca;
+        }
+      }
+    }
+    .set {
+      display: flex;
+      align-items: center;
+      color: #2cb7ca!important;
+      font-size: 14px;
+      cursor: pointer;
+      text-decoration: none;
+      i {
+        margin-left: 4px;
+      }
+    }
+  }
+
+  .list-msg {
+    display: flex;
+    flex-direction: column;
+    padding: 16px 20px;
+  }
+  .list-msg .words {
+    display: flex;
+    flex-direction: initial;
+    align-items: center;
+    justify-content: space-between;
+  }
+  .list-msg .words:nth-child(2) {
+    margin-top: 8px;
+  }
+  .list-msg .words .l-msg {
+    display: flex;
+    align-items: center;
+  }
+  .list-msg .words .l-msg i {
+    width: 6px;
+    height: 6px;
+    background: #FF3A20;
+    border-radius: 50%;
+    margin-right: 9px;
+  }
+  .list-msg .words .l-msg h3 {
+    font-size: 16px;
+    font-weight: bold;
+    color: #2CB7CA;
+    line-height: 24px;
+  }
+  .list-msg .words .l-msg span {
+    font-size: 14px;
+    color: #1D1D1D;
+    line-height: 22px;
+    margin: 0 16px;
+    &:hover {
+      color: #2CB7CA!important;
+      cursor: pointer;
+    }
+  }
+  .list-msg .words p {
+    font-size: 12px;
+    color: #999999;
+    line-height: 18px;
+  }
+  .list-msg .words .isActive {
+    margin-left: 15px;
+  }
+}
+</style>

+ 75 - 0
src/utils/globalFunctions.js

@@ -512,3 +512,78 @@ export function recoveryPageData (key, defaultValues = {}) {
 export function defaultLocalPageData (key, defaultValues = {}) {
   return JSON.parse(localStorage.getItem(key) || JSON.stringify(defaultValues))
 }
+
+function dateTime(date, fmt) {
+  if (fmt === void 0) {
+    fmt = 'yyyy年MM月dd日 hh:mm';
+  }
+
+  // 时间戳转换
+  if (!date) return '';
+  var d = new Date(date);
+  var o = {
+    "M+": d.getMonth() + 1,
+    //月份
+    "d+": d.getDate(),
+    //日
+    "h+": d.getHours(),
+    //小时
+    "m+": d.getMinutes(),
+    //分
+    "s+": d.getSeconds() //秒
+
+  }; // 根据y的长度来截取年
+
+  if (/(y+)/.test(fmt)) {
+    fmt = fmt.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
+  }
+
+  for (var k in o) {
+    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
+  }
+
+  return fmt;
+}
+
+function dateYear() {
+  // 获取当年的第一天
+  var date = new Date();
+  date.setDate(1);
+  date.setMonth(0);
+  return date.getTime();
+}
+
+function dateLast() {
+  // 获取昨天
+  var day = new Date();
+  day.setTime(day.getTime() - 24 * 60 * 60 * 1000);
+  return dateTime(day, 'yyyy/MM/dd');
+}
+
+export function dateMatter(time, drag = 'normal') {
+  // 时间转换
+  var timeStr = '';
+  var currentDay = dateTime(time, 'yyyy/MM/dd'); // 当前日期
+
+  var lingDay = new Date(new Date().toLocaleDateString()).getTime(); // 获取当天0点
+
+  var isTime = new Date(time) - lingDay;
+  var diff = isTime < 0 ? '昨天' : '';
+  var isDate = new Date(time) - dateYear();
+
+  if (isDate < 0) {
+    drag == 'normal' ? timeStr = dateTime(time) : timeStr = dateTime(time, 'yyyy年MM月dd日');
+  } else {
+    if (currentDay === dateLast()) {
+      drag == 'normal' ? timeStr = diff + dateTime(time, 'hh:mm') : timeStr = diff;
+    } else {
+      if (isTime < 0) {
+        drag == 'normal' ? timeStr = dateTime(time, 'MM月dd日 hh:mm') : timeStr = dateTime(time, 'MM月dd日');
+      } else {
+        timeStr = dateTime(time, 'hh:mm');
+      }
+    }
+  }
+
+  return timeStr;
+}

+ 3 - 0
src/views/work-desktop/WorkDesktop.vue

@@ -1,6 +1,7 @@
 <template>
   <div>
     <UserInfo></UserInfo>
+    <MessageTips></MessageTips>
     <CommonUse></CommonUse>
     <div class="d-con-flex">
       <HomeList ref="sublist1" :loading="setload.loading1" @getDetail="getDetail" @addSet="addSet" @linkMore="linkMore" :getlist="getList" model="model-1">
@@ -59,6 +60,7 @@
 
 <script>
 import UserInfo from '@/components/work-desktop/UserInfo.vue'
+import MessageTips from '@/components/work-desktop/MessageTips.vue'
 import CommonUse from '@/components/work-desktop/CommonUse.vue'
 import HomeList from '@/components/home/HomeList.vue'
 import HomePotenList from '@/components/home/HomePotenList.vue'
@@ -71,6 +73,7 @@ export default {
   mixins: [mixinVisited],
   components: {
     UserInfo,
+    MessageTips,
     CommonUse,
     HomeList,
     HomePotenList

+ 54 - 1
vue.config.js

@@ -7,10 +7,63 @@ module.exports = {
   lintOnSave: true,
   devServer: {
     disableHostCheck: true,
+    proxy: {
+      // 反爬虫接口代理
+      // '/subVipPortrait/winner': {
+      //   target: 'http://192.168.20.178:8800',
+      //   changeOrigin: true,
+      //   logLevel: 'debug'
+      // },
+      '^/bigmember': {
+        target: 'https://web2-jytest.jydev.jianyu360.com',
+        // target: 'http://127.0.0.1:814',
+        changeOrigin: true,
+        logLevel: 'debug',
+        pathRewrite: {
+          '^/bigmember': '/bigmember'
+        }
+      },
+      '^/jypay': {
+        target: 'https://web2-jytest.jydev.jianyu360.com',
+        // target: 'http://127.0.0.1:86',
+        changeOrigin: true,
+        logLevel: 'debug'
+      },
+      '^/publicapply': {
+        target: 'https://web2-jytest.jydev.jianyu360.com',
+        // target: 'http://127.0.0.1:828',
+        changeOrigin: true,
+        logLevel: 'debug'
+      },
+      '^/subscribepay': {
+        target: 'https://web2-jytest.jydev.jianyu360.com',
+        // target: 'http://127.0.0.1:86',
+        changeOrigin: true,
+        logLevel: 'debug'
+      },
+      '^/salesLeads': {
+        target: 'https://web2-jytest.jydev.jianyu360.com',
+        // target: 'http://127.0.0.1:8881',
+        changeOrigin: true,
+        logLevel: 'debug'
+      },
+      '^/privatedata': {
+        target: 'https://web2-jytest.jydev.jianyu360.com',
+        // target: 'http://127.0.0.1:829',
+        changeOrigin: true,
+        logLevel: 'debug'
+      },
+      '^/jymessageCenter': {
+        target: 'https://web-jytest.jydev.jianyu360.com',
+        // target: 'http://127.0.0.1:829',
+        changeOrigin: true,
+        logLevel: 'debug'
+      }
+    },
     headers: {
       'Access-Control-Allow-Origin': '*'
     },
-    proxy: getProxyOfDomain('https://web2-jytest.jydev.jianyu360.com') || getProxyOfIp('http://127.0.0.1')
+    // proxy: getProxyOfDomain('https://web2-jytest.jydev.jianyu360.com') || getProxyOfIp('http://127.0.0.1')
   },
   css: {
     loaderOptions: {