index.vue 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <template>
  2. <div class="message">
  3. <van-nav-bar title="SANFAN MES制造执行系统">
  4. </van-nav-bar>
  5. <ul>
  6. <!-- <li @click="toRouter('announcement')">
  7. <div class="icon-box">
  8. <i class="iconfont icon-iconm_xitxx"></i>
  9. </div>
  10. <div class="text-center">
  11. <div class="title">{{$t('message.systemNotification')}}</div>
  12. <div class="content">{{announcementData.rows.length > 0 ? announcementData.rows[0].title : ''}}</div>
  13. </div>
  14. <div class="text-right">
  15. <div class="time-or-num">
  16. <div class="time">{{announcementTime}}</div>
  17. <div class="num">{{announcementData.total}}</div>
  18. </div>
  19. <van-icon name="arrow" size='16' />
  20. </div>
  21. </li> -->
  22. <li @click="toRouter('historyMessage')">
  23. <div class="icon-box" style="background:#A06CFB">
  24. <i class="iconfont icon-iconm_yewtx"></i>
  25. </div>
  26. <div class="text-center">
  27. <div class="title">{{$t('message.businessReminder')}}</div>
  28. <div class="content">{{sendMegData.rows.length > 0 ? sendMegData.rows[0].title : ''}}</div>
  29. </div>
  30. <div class="text-right">
  31. <div class="time-or-num">
  32. <div class="time">{{sendMegTime}}</div>
  33. <div class="num">{{sendMegData.total}}</div>
  34. </div>
  35. <van-icon name="arrow" size='16' />
  36. </div>
  37. </li>
  38. <!-- <li @click="toRouter('email')">
  39. <div class="icon-box" style="background:#FF8800">
  40. <i class="iconfont icon-iconx_dianzyx"></i>
  41. </div>
  42. <div class="text-center">
  43. <div class="title" style="line-height:40px">{{$t('message.mailReminder')}}</div>
  44. <div class="content"></div>
  45. </div>
  46. <div class="text-right">
  47. <div class="time-or-num">
  48. <div class="time"> </div>
  49. <div class="num">{{emailNumber}}</div>
  50. </div>
  51. <van-icon name="arrow" size='16' />
  52. </div>
  53. </li>
  54. <li>
  55. <div class="icon-box" style="background:#38CBD8">
  56. <i class="iconfont icon-iconm_kehd"></i>
  57. </div>
  58. <div class="text-center">
  59. <div class="title" style="line-height:40px">{{$t('message.privateLetter')}}</div>
  60. <div class="content"></div>
  61. </div>
  62. <div class="text-right">
  63. <div class="time-or-num">
  64. <div class="time"> </div>
  65. <div class="num">0</div>
  66. </div>
  67. <van-icon name="arrow" size='16' />
  68. </div>
  69. </li> -->
  70. </ul>
  71. </div>
  72. </template>
  73. <script setup>
  74. import { ref, getCurrentInstance, onMounted } from "vue";
  75. import { showSuccessToast, showFailToast } from "vant";
  76. import { useRoute } from "vue-router";
  77. import { getUserInfo } from "@/utils/auth";
  78. const proxy = getCurrentInstance().proxy;
  79. const toMessageList = () => {
  80. proxy.$router.push("/main/messageList");
  81. };
  82. let sendMegData = ref({
  83. rows: [],
  84. total: 0,
  85. });
  86. function timesFun(timesData) {
  87. //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
  88. var dateBegin = new Date(timesData.replace(/-/g, "/")); //将-转化为/,使用new Date
  89. var dateEnd = new Date(); //获取当前时间
  90. var dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
  91. var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
  92. var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
  93. var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
  94. //计算相差分钟数
  95. var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
  96. var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
  97. //计算相差秒数
  98. var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
  99. var seconds = Math.round(leave3 / 1000);
  100. var timesString = "";
  101. if (dayDiff != 0) {
  102. timesString = dayDiff + proxy.$t("common.daysAgo");
  103. } else if (dayDiff == 0 && hours != 0) {
  104. timesString = hours + proxy.$t("common.hoursAgo");
  105. } else if (dayDiff == 0 && hours == 0) {
  106. timesString = minutes + proxy.$t("common.minutesAgo");
  107. }
  108. return {
  109. timesString: timesString,
  110. };
  111. }
  112. let sendMegTime = ref("");
  113. let announcementTime = ref("");
  114. proxy
  115. .post("/pushInfo/page", {
  116. pageNum: 1,
  117. pageSize: 999,
  118. pushRead: 0,
  119. type: 2,
  120. })
  121. .then((res) => {
  122. sendMegData.value = res.data;
  123. sendMegTime =
  124. res.data.rows.length > 0
  125. ? timesFun(res.data.rows[0].createTime).timesString
  126. : "";
  127. //计算a距离现在的时间
  128. });
  129. const announcementData = ref({
  130. rows: [],
  131. total: 0,
  132. });
  133. proxy
  134. .post("/pushAnnouncement/page", {
  135. pageNum: 1,
  136. pageSize: 10,
  137. type: 2,
  138. pushRead: 0,
  139. })
  140. .then((res) => {
  141. announcementData.value = res.data;
  142. announcementTime =
  143. res.data.rows.length > 0
  144. ? timesFun(res.data.rows[0].createTime).timesString
  145. : "";
  146. //计算a距离现在的时间
  147. });
  148. const toRouter = (routerName) => {
  149. proxy.$router.push(`/main/${routerName}`);
  150. };
  151. const emailNumber = ref(0);
  152. // proxy.post('/mailInfo/getUserEmailList',{
  153. // id:getUserInfo().userId
  154. // }).then(res => {
  155. // for (let i = 0; i < res.data.length; i++) {
  156. // const element = res.data[i];
  157. // for (let j = 0; j < element.mailFolderInfoList.length; j++) {
  158. // const jelement = element.mailFolderInfoList[j];
  159. // if(jelement.unreadMessageCount) emailNumber.value = emailNumber.value + jelement.unreadMessageCount
  160. // }
  161. // }
  162. // console.log(res)
  163. // })
  164. </script>
  165. <style lang="scss">
  166. .op0 {
  167. opacity: 0;
  168. }
  169. .message {
  170. ul {
  171. margin: 12px 0 0 0;
  172. padding-left: 12px;
  173. background: #fff;
  174. li {
  175. padding: 20px 12px 20px 0;
  176. overflow: hidden;
  177. height: 80px;
  178. box-sizing: border-box;
  179. border-bottom: 1px solid #ddd;
  180. .text-center {
  181. float: left;
  182. width: calc(100% - 170px);
  183. .title {
  184. font-size: 16px;
  185. font-weight: bold;
  186. color: #333;
  187. }
  188. .content {
  189. font-size: 14px;
  190. color: #999;
  191. margin-top: 4px;
  192. //文字一行多余省略
  193. overflow: hidden;
  194. text-overflow: ellipsis;
  195. white-space: nowrap;
  196. }
  197. }
  198. .text-right {
  199. width: 90px;
  200. float: right;
  201. display: flex;
  202. .van-badge__wrapper {
  203. line-height: 40px;
  204. }
  205. .time-or-num {
  206. text-align: center;
  207. margin-right: 5px;
  208. .time {
  209. font-size: 12px;
  210. color: #999;
  211. }
  212. .num {
  213. width: 40px;
  214. height: 16px;
  215. background: #ff4d4f;
  216. border-radius: 8px;
  217. text-align: center;
  218. line-height: 16px;
  219. font-size: 12px;
  220. color: #fff;
  221. margin-top: 8px;
  222. }
  223. }
  224. }
  225. .icon-box {
  226. width: 40px;
  227. height: 40px;
  228. background: #46a6ff;
  229. border-radius: 20px;
  230. text-align: center;
  231. line-height: 40px;
  232. margin-right: 20px;
  233. float: left;
  234. i {
  235. font-size: 20px;
  236. color: #fff;
  237. }
  238. }
  239. }
  240. }
  241. }
  242. </style>