| | |
| | | </template> |
| | | |
| | | <script> |
| | | import Watermark from "./warterMarkVUE" |
| | | import { getStore } from "@/util/store" |
| | | |
| | | export default { |
| | | name: "app", |
| | | data () { |
| | | return { |
| | | globalUserInfo: getStore({ name: "userInfo" }), |
| | | } |
| | | }, |
| | | watch: {}, |
| | | created () { |
| | | Watermark.set("饶城格格通" + ' ' + this.globalUserInfo.user_name + ' ' + this.getTime()) |
| | | }, |
| | | mounted () { |
| | | }, |
| | | methods: { |
| | | getTime () { |
| | | var date = new Date() |
| | | var Y = date.getFullYear() + '-' |
| | | var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-' |
| | | var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ' |
| | | var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':' |
| | | var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':' |
| | | var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()) |
| | | return Y + M + D + h + m + s |
| | | }, |
| | | }, |
| | | computed: {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import {mapGetters} from "vuex"; |
| | | import tags from "./tags"; |
| | | import search from "./search"; |
| | | import top from "./top/"; |
| | | import sidebar from "./sidebar/"; |
| | | import admin from "@/util/admin"; |
| | | import {validatenull} from "@/util/validate"; |
| | | import {calcDate} from "@/util/date.js"; |
| | | import {getStore} from "@/util/store.js"; |
| | | import Watermark from "@/warterMarkVUE" |
| | | import { mapGetters } from "vuex" |
| | | import tags from "./tags" |
| | | import search from "./search" |
| | | import top from "./top/" |
| | | import sidebar from "./sidebar/" |
| | | import admin from "@/util/admin" |
| | | import { validatenull } from "@/util/validate" |
| | | import { calcDate } from "@/util/date.js" |
| | | import { getStore } from "@/util/store.js" |
| | | |
| | | export default { |
| | | components: { |
| | |
| | | provide() { |
| | | return { |
| | | index: this |
| | | }; |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | //刷新token锁 |
| | | refreshLock: false, |
| | | //刷新token的时间 |
| | | refreshTime: "" |
| | | }; |
| | | refreshTime: "", |
| | | globalUserInfo: getStore({ name: "userInfo" }), |
| | | } |
| | | }, |
| | | created() { |
| | | Watermark.set("饶城格格通" + ' ' + this.globalUserInfo.user_name + ' ' + this.getTime()) |
| | | |
| | | //实时检测刷新token |
| | | this.refreshToken(); |
| | | this.refreshToken() |
| | | }, |
| | | mounted() { |
| | | this.init(); |
| | | this.init() |
| | | }, |
| | | computed: mapGetters(["isMenu", "isLock", "isCollapse", "website", "menu"]), |
| | | props: [], |
| | | |
| | | methods: { |
| | | getTime () { |
| | | var date = new Date() |
| | | var Y = date.getFullYear() + '-' |
| | | var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-' |
| | | var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ' |
| | | var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':' |
| | | var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':' |
| | | var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()) |
| | | return Y + M + D + h + m + s |
| | | }, |
| | | showCollapse() { |
| | | this.$store.commit("SET_COLLAPSE"); |
| | | this.$store.commit("SET_COLLAPSE") |
| | | }, |
| | | // 初始化 |
| | | init() { |
| | | this.$store.commit("SET_SCREEN", admin.getScreen()); |
| | | this.$store.commit("SET_SCREEN", admin.getScreen()) |
| | | window.onresize = () => { |
| | | setTimeout(() => { |
| | | this.$store.commit("SET_SCREEN", admin.getScreen()); |
| | | }, 0); |
| | | }; |
| | | this.$store.commit("SET_SCREEN", admin.getScreen()) |
| | | }, 0) |
| | | } |
| | | this.$store.dispatch("FlowRoutes").then(() => { |
| | | }); |
| | | }) |
| | | }, |
| | | //打开菜单 |
| | | openMenu(item = {}) { |
| | | this.$store.dispatch("GetMenu", item.id).then(data => { |
| | | if (data.length !== 0) { |
| | | this.$router.$avueRouter.formatRoutes(data, true); |
| | | this.$router.$avueRouter.formatRoutes(data, true) |
| | | } |
| | | //当点击顶部菜单后默认打开第一个菜单 |
| | | /*if (!this.validatenull(item)) { |
| | |
| | | }); |
| | | }*/ |
| | | |
| | | }); |
| | | }) |
| | | }, |
| | | // 定时检测token |
| | | refreshToken() { |
| | |
| | | const token = getStore({ |
| | | name: "token", |
| | | debug: true |
| | | }) || {}; |
| | | const date = calcDate(token.datetime, new Date().getTime()); |
| | | if (validatenull(date)) return; |
| | | }) || {} |
| | | const date = calcDate(token.datetime, new Date().getTime()) |
| | | if (validatenull(date)) return |
| | | if (date.seconds >= this.website.tokenTime && !this.refreshLock) { |
| | | this.refreshLock = true; |
| | | this.refreshLock = true |
| | | this.$store |
| | | .dispatch("refreshToken") |
| | | .then(() => { |
| | | this.refreshLock = false; |
| | | this.refreshLock = false |
| | | }) |
| | | .catch(() => { |
| | | this.refreshLock = false; |
| | | }); |
| | | this.refreshLock = false |
| | | }) |
| | | } |
| | | }, 10000); |
| | | }, 10000) |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | </script> |
| | |
| | | <!-- |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2023-12-14 17:10:00 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2023-12-19 11:23:09 |
| | | * @FilePath: \jczz_web\src\page\index\layout.vue |
| | | * @Description: |
| | | * |
| | | * Copyright (c) 2023 by shuishen, All Rights Reserved. |
| | | --> |
| | | <template> |
| | | <div> |
| | | <keep-alive> |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import Watermark from "@/warterMarkVUE" |
| | | import userLogin from "./userlogin" |
| | | import codeLogin from "./codelogin" |
| | | import thirdLogin from "./thirdlogin" |
| | |
| | | } |
| | | }, |
| | | created () { |
| | | Watermark.remove() |
| | | |
| | | this.handleLogin() |
| | | this.getTime() |
| | | }, |
| | |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2023-12-18 11:02:55 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2023-12-18 17:55:12 |
| | | * @LastEditTime: 2023-12-19 11:37:53 |
| | | * @FilePath: \jczz_web\src\warterMarkVUE.js |
| | | * @Description: |
| | | * |
| | |
| | | */ |
| | | /*水印配置*/ |
| | | //声明 |
| | | let id = "1.23452384164.123412415"; |
| | | let watermark = {}; |
| | | let time, |
| | | textStr = ""; |
| | | |
| | | function handleResize() { |
| | | setWatermark(textStr); |
| | | } |
| | | //水印配置 |
| | | let setWatermark = (str) => { |
| | | let id = "1.23452384164.123412415"; |
| | | // 移除水印 判断 |
| | | if (document.getElementById(id) !== null) { |
| | | document.body.removeChild(document.getElementById(id)); |
| | |
| | | //创建画布 |
| | | let createCanvas = document.createElement("canvas"); |
| | | // 设置canvas画布大小 |
| | | createCanvas.width = 320; //宽度 |
| | | createCanvas.height = 200; //高度 |
| | | createCanvas.width = 340; //宽度 |
| | | createCanvas.height = 160; //高度 |
| | | |
| | | //创建Context2D对象作为2D渲染的上下文。 |
| | | let Context2D = createCanvas.getContext("2d"); |
| | | /*水印样式调整配置*/ |
| | | Context2D.rotate((-20 * Math.PI) / 100); // 水印旋转角度 |
| | | Context2D.rotate((-10 * Math.PI) / 100); // 水印旋转角度 |
| | | Context2D.font = "16px Vedana"; //水印文字大小 |
| | | Context2D.fillStyle = "#fff"; //水印颜色 HEX格式,可使用red 或者rgb格式 |
| | | Context2D.fillStyle = "#999"; //水印颜色 HEX格式,可使用red 或者rgb格式 |
| | | Context2D.textAlign = "center"; //水印水平位置 |
| | | Context2D.textBaseline = "Middle"; //水印垂直位置 |
| | | Context2D.fillText(str, createCanvas.width / 3.2, createCanvas.height / 1); |
| | | Context2D.fillText(str, createCanvas.width / 2.4, createCanvas.height / 1); |
| | | |
| | | //创建元素 |
| | | let createDiv = document.createElement("div"); |
| | |
| | | createDiv.style.background = |
| | | "url(" + |
| | | createCanvas.toDataURL("image/png") + |
| | | ") left top repeat, rgba(0, 0, 0, 0.3)"; //水印显示(关键代码) |
| | | ") left top repeat, rgba(0, 0, 0, 0.01)"; //水印显示(关键代码) |
| | | document.body.appendChild(createDiv); //在指定元素节点的最后一个子节点之后添加节点 |
| | | return id; |
| | | }; |
| | | |
| | | // 此方法只允许调用一次 |
| | | watermark.set = (str) => { |
| | | textStr = str; |
| | | let id = setWatermark(str); |
| | | //设置间隔 |
| | | setInterval(() => { |
| | | time = setInterval(() => { |
| | | if (document.getElementById(id) === null) { |
| | | id = setWatermark(str); |
| | | } |
| | | }, 500); |
| | | //改变大小时执行 |
| | | window.onresize = () => { |
| | | setWatermark(str); |
| | | // 添加 resize 事件处理函数 |
| | | window.addEventListener("resize", handleResize); |
| | | }; |
| | | |
| | | watermark.remove = () => { |
| | | var element = document.getElementById(id); |
| | | // 删除元素 |
| | | if (element !== null) { |
| | | clearInterval(time); |
| | | |
| | | window.removeEventListener("resize", handleResize); |
| | | |
| | | element.parentNode.removeChild(element); |
| | | } |
| | | }; |
| | | |
| | | export default watermark; |