leisure-core 0.4.58 → 0.4.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import LeDrag from "leisure-js/drag/drag.js";
1
+ import LeDrag from "./le-libs/js/drag.js";
2
2
  import {
3
3
  parseTime,
4
4
  formatMoney,
@@ -0,0 +1,78 @@
1
+ export default {
2
+ bind(el, binding, vnode) {
3
+ const dialogHeaderEl = el.querySelector(".el-dialog__header");
4
+ const dragDom = el.querySelector(".el-dialog");
5
+ dialogHeaderEl.style.cssText += ";cursor:move;";
6
+ dragDom.style.cssText += ";top:0px;";
7
+
8
+ // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
9
+ const getStyle = (function () {
10
+ if (window.document.currentStyle) {
11
+ return (dom, attr) => dom.currentStyle[attr];
12
+ } else {
13
+ return (dom, attr) => getComputedStyle(dom, false)[attr];
14
+ }
15
+ })();
16
+
17
+ dialogHeaderEl.onmousedown = (e) => {
18
+ // 鼠标按下,计算当前元素距离可视区的距离
19
+ const disX = e.clientX - dialogHeaderEl.offsetLeft;
20
+ const disY = e.clientY - dialogHeaderEl.offsetTop;
21
+
22
+ const dragDomWidth = dragDom.offsetWidth;
23
+ // const dragDomHeight = dragDom.offsetHeight
24
+
25
+ const screenWidth = document.body.clientWidth;
26
+ const screenHeight = document.body.clientHeight;
27
+
28
+ const minDragDomLeft = dragDom.offsetLeft;
29
+ const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth;
30
+
31
+ const minDragDomTop = dragDom.offsetTop;
32
+ // const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomHeight
33
+ const maxDragDomTop = screenHeight - dragDom.offsetTop; // 不需要-dragDomHeight
34
+
35
+ // 获取到的值带px 正则匹配替换
36
+ let styL = getStyle(dragDom, "left");
37
+ let styT = getStyle(dragDom, "top");
38
+
39
+ if (styL.includes("%")) {
40
+ styL = +document.body.clientWidth * (+styL.replace(/\%/g, "") / 100);
41
+ styT = +document.body.clientHeight * (+styT.replace(/\%/g, "") / 100);
42
+ } else {
43
+ styL = +styL.replace(/\px/g, "");
44
+ styT = +styT.replace(/\px/g, "");
45
+ }
46
+
47
+ document.onmousemove = function (e) {
48
+ // 通过事件委托,计算移动的距离
49
+ let left = e.clientX - disX;
50
+ let top = e.clientY - disY;
51
+
52
+ // 边界处理
53
+ if (-left > minDragDomLeft) {
54
+ left = -minDragDomLeft;
55
+ } else if (left > maxDragDomLeft) {
56
+ left = maxDragDomLeft;
57
+ }
58
+
59
+ if (-top > minDragDomTop) {
60
+ top = -minDragDomTop;
61
+ } else if (top > maxDragDomTop) {
62
+ top = maxDragDomTop;
63
+ }
64
+
65
+ // 移动当前元素
66
+ dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`;
67
+
68
+ // emit onDrag event
69
+ vnode.child.$emit("dragDialog");
70
+ };
71
+
72
+ document.onmouseup = function (e) {
73
+ document.onmousemove = null;
74
+ document.onmouseup = null;
75
+ };
76
+ };
77
+ },
78
+ };
@@ -0,0 +1,71 @@
1
+ import axios from "axios";
2
+ import router from "@/router";
3
+ import store from "@/store";
4
+ import { Message } from "element-ui";
5
+ import dayjs from "dayjs";
6
+
7
+ let calMethod = null;
8
+
9
+ function sign(param) {
10
+ if (!param) return "";
11
+ param = param.toString();
12
+ if (calMethod) {
13
+ return calMethod(param);
14
+ } else return "";
15
+ }
16
+
17
+ function setCalMethod(param) {
18
+ calMethod = param;
19
+ }
20
+
21
+ const msg = (info) =>
22
+ Message({
23
+ message: "出错了,错误信息:" + info,
24
+ type: "error",
25
+ duration: 2000,
26
+ });
27
+
28
+ const service = axios.create({
29
+ baseURL: process.env.VUE_APP_BASE_API,
30
+ timeout: 50000,
31
+ });
32
+
33
+ service.interceptors.request.use(
34
+ (config) => {
35
+ config.headers["Content-Type"] = "application/json;";
36
+ let userinfo = store.getters.userinfo;
37
+ if (userinfo != undefined && userinfo.token != undefined) {
38
+ config.headers["authentication"] = userinfo.token;
39
+ }
40
+ const timestamp = dayjs().unix();
41
+ config.headers["timestamp"] = timestamp;
42
+ config.headers["sign"] = sign(timestamp);
43
+ return config;
44
+ },
45
+ (error) => {
46
+ Promise.reject(error);
47
+ }
48
+ );
49
+
50
+ service.interceptors.response.use(
51
+ (response) => {
52
+ const code = response.data.code;
53
+ const info = response.data.info;
54
+ if (code == "801" || code == "802") {
55
+ router.push({ path: "/" });
56
+ } else if (code !== "10000" || code == "803") {
57
+ msg("出错了,错误信息:" + info);
58
+ return Promise.reject(info);
59
+ } else {
60
+ return response;
61
+ }
62
+ },
63
+ (error) => {
64
+ return Promise.reject(error);
65
+ }
66
+ );
67
+
68
+ export default {
69
+ service,
70
+ setCalMethod,
71
+ };
@@ -0,0 +1,62 @@
1
+ import axios from "axios";
2
+ import { getToken } from "leisure-js/common/tokens";
3
+
4
+ /**
5
+ * 下载 excel
6
+ * @param {*} url 接口地址
7
+ * @param {*} fileName 下载文件名称
8
+ * @param {*} data 数据
9
+ * @param {*} callback 回调函数
10
+ */
11
+ function downLoadFile(url, fileName, data) {
12
+ axios({
13
+ method: "get",
14
+ url: url,
15
+ params: data,
16
+ headers: {
17
+ Accept: "image/webp,image/apng,image/*,*/*;q=0.8",
18
+ "Content-type": "application/octet-stream;charset=UTF-8",
19
+ authentication: getToken(),
20
+ },
21
+ responseType: "blob",
22
+ })
23
+ .then((response) => {
24
+ let blob = new Blob([response.data]);
25
+ let href = window.URL.createObjectURL(blob);
26
+ let downloadElement = document.createElement("a");
27
+ try {
28
+ downloadElement.href = href;
29
+ downloadElement.download = fileName + ".xlsx";
30
+ document.body.appendChild(downloadElement);
31
+ downloadElement.click();
32
+ } catch (error) {
33
+ return Promise.reject("下载错误:" + error);
34
+ } finally {
35
+ document.body.removeChild(downloadElement);
36
+ window.URL.revokeObjectURL(href);
37
+ }
38
+ })
39
+ .catch((error) => {
40
+ return Promise.reject("获取下载数据错误:" + error);
41
+ });
42
+ }
43
+
44
+ export function exportExcelByParam(path, name, param) {
45
+ let url = process.env.VUE_APP_BASE_API + path;
46
+ downLoadFile(url, name, param);
47
+ }
48
+
49
+ export function exportMemberExcel(name, params) {
50
+ let url = process.env.VUE_APP_BASE_API + "/user/exportMember";
51
+ downLoadFile(url, name, params);
52
+ }
53
+
54
+ export function exportConsumeExcel(name, params) {
55
+ let url = process.env.VUE_APP_BASE_API + "/order/export";
56
+ downLoadFile(url, name, params);
57
+ }
58
+
59
+ export function exportGoodsExcel(name, params) {
60
+ let url = process.env.VUE_APP_BASE_API + "/mall-goods/export";
61
+ downLoadFile(url, name, params);
62
+ }
@@ -0,0 +1,7 @@
1
+ export function info(msg, obj) {
2
+ obj.$message({
3
+ message: msg,
4
+ type: "success",
5
+ duration: 2 * 1000,
6
+ });
7
+ }
@@ -0,0 +1,13 @@
1
+ const TokenKey = 'token';
2
+
3
+ export function getToken() {
4
+ return localStorage.getItem(TokenKey) || '';
5
+ }
6
+
7
+ export function setToken(token) {
8
+ localStorage.setItem(TokenKey, token);
9
+ }
10
+
11
+ export function removeToken() {
12
+ localStorage.remove(TokenKey);
13
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "leisure-core",
3
- "version": "0.4.58",
4
- "description": "leisure-core是京心数据基于vue2.x开发的一套桌面端组件库,封装了大量实用的UI控件模板,非常方便开发者快速搭建前端应用",
3
+ "version": "0.4.59",
4
+ "description": "leisure-core是京心数据基于vue2.x开发的一套后台管理系统桌面端组件库,封装了大量实用的UI控件模板,非常方便开发者快速搭建前端应用",
5
5
  "private": false,
6
6
  "author": "北方乐逍遥(zcx7878)",
7
7
  "keywords": [
@@ -13,16 +13,10 @@
13
13
  "registry": "https://registry.npmjs.org/"
14
14
  },
15
15
  "dependencies": {
16
- "axios": "^0.27.2",
17
16
  "core-js": "^3.8.3",
18
- "dayjs": "^1.11.7",
19
17
  "element-ui": "^2.15.14",
20
- "leisure-js": "^0.2.5",
21
- "leisure-editor": "^0.1.2",
22
- "html2canvas": "^1.4.1",
23
- "js-base64": "^3.7.2",
24
- "moment": "^2.29.3",
25
- "qrcodejs2": "^0.0.2",
18
+ "leisure-js": "^0.2.6",
19
+ "leisure-editor": "^0.1.3",
26
20
  "vue": "^2.6.14",
27
21
  "vue-router": "^3.5.1",
28
22
  "vuex": "^3.6.2",