|
|
@@ -13,169 +13,191 @@ export function getDate(type) {
|
|
|
return `${year}-${month}-${day}`;
|
|
|
}
|
|
|
|
|
|
-export function stopScroll(){
|
|
|
- var box=function(e)
|
|
|
- {passive: false ;};
|
|
|
- document.body.style.overflow='hidden';
|
|
|
- document.addEventListener("touchmove",box,false);
|
|
|
+export function getDateNew(type = 'day') {
|
|
|
+ const date = new Date();
|
|
|
+ let year = date.getFullYear();
|
|
|
+ let month = date.getMonth() + 1;
|
|
|
+ let day = date.getDate();
|
|
|
+
|
|
|
+ if (type === 'end') {
|
|
|
+ day = day + 1;
|
|
|
+ }
|
|
|
+ month = month > 9 ? month : '0' + month;
|
|
|
+ day = day > 9 ? day : '0' + day;
|
|
|
+ if (type === 'year') return `${year}`
|
|
|
+ if (type === 'month') return `${year}-${month}`
|
|
|
+
|
|
|
+ return `${year}-${month}-${day}`;
|
|
|
}
|
|
|
|
|
|
-export function startScroll(){
|
|
|
- var box=function(e){passive: false };
|
|
|
- document.body.style.overflow='';//出现滚动条
|
|
|
- document.removeEventListener("touchmove",box,false);
|
|
|
+export function stopScroll() {
|
|
|
+ var box = function(e) {
|
|
|
+ passive: false;
|
|
|
+ };
|
|
|
+ document.body.style.overflow = 'hidden';
|
|
|
+ document.addEventListener("touchmove", box, false);
|
|
|
+}
|
|
|
+
|
|
|
+export function startScroll() {
|
|
|
+ var box = function(e) {
|
|
|
+ passive: false
|
|
|
+ };
|
|
|
+ document.body.style.overflow = ''; //出现滚动条
|
|
|
+ document.removeEventListener("touchmove", box, false);
|
|
|
}
|
|
|
// 生成随机数
|
|
|
export const getRuleNo = (suffix = 'R') => {
|
|
|
const randomNum = Math.floor(Math.random() * 1000000)
|
|
|
-
|
|
|
+
|
|
|
return `${suffix}${parseTime(new Date(), '{y}{m}{d}')}${randomNum}`
|
|
|
- }
|
|
|
-export function parseTime (time, cFormat) {
|
|
|
+}
|
|
|
+export function parseTime(time, cFormat) {
|
|
|
if (arguments.length === 0 || !time) {
|
|
|
- return null
|
|
|
+ return null
|
|
|
}
|
|
|
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
|
|
|
let date
|
|
|
if (typeof time === 'object') {
|
|
|
- date = time
|
|
|
+ date = time
|
|
|
} else {
|
|
|
- if (typeof time === 'string') {
|
|
|
- if (/^[0-9]+$/.test(time)) {
|
|
|
- // support "1548221490638"
|
|
|
- time = parseInt(time)
|
|
|
- } else {
|
|
|
- // support safari
|
|
|
- // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
|
|
|
- time = time.replace(new RegExp(/-/gm), '/')
|
|
|
+ if (typeof time === 'string') {
|
|
|
+ if (/^[0-9]+$/.test(time)) {
|
|
|
+ // support "1548221490638"
|
|
|
+ time = parseInt(time)
|
|
|
+ } else {
|
|
|
+ // support safari
|
|
|
+ // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
|
|
|
+ time = time.replace(new RegExp(/-/gm), '/')
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- if (typeof time === 'number' && time.toString().length === 10) {
|
|
|
- time = time * 1000
|
|
|
- }
|
|
|
- date = new Date(time)
|
|
|
+
|
|
|
+ if (typeof time === 'number' && time.toString().length === 10) {
|
|
|
+ time = time * 1000
|
|
|
+ }
|
|
|
+ date = new Date(time)
|
|
|
}
|
|
|
const formatObj = {
|
|
|
- y: date.getFullYear(),
|
|
|
- m: date.getMonth() + 1,
|
|
|
- d: date.getDate(),
|
|
|
- h: date.getHours(),
|
|
|
- i: date.getMinutes(),
|
|
|
- s: date.getSeconds(),
|
|
|
- a: date.getDay()
|
|
|
+ y: date.getFullYear(),
|
|
|
+ m: date.getMonth() + 1,
|
|
|
+ d: date.getDate(),
|
|
|
+ h: date.getHours(),
|
|
|
+ i: date.getMinutes(),
|
|
|
+ s: date.getSeconds(),
|
|
|
+ a: date.getDay()
|
|
|
}
|
|
|
const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
|
|
|
- const value = formatObj[key]
|
|
|
- // Note: getDay() returns 0 on Sunday
|
|
|
- if (key === 'a') {
|
|
|
- return ['日', '一', '二', '三', '四', '五', '六'][value]
|
|
|
- }
|
|
|
- return value.toString().padStart(2, '0')
|
|
|
+ const value = formatObj[key]
|
|
|
+ // Note: getDay() returns 0 on Sunday
|
|
|
+ if (key === 'a') {
|
|
|
+ return ['日', '一', '二', '三', '四', '五', '六'][value]
|
|
|
+ }
|
|
|
+ return value.toString().padStart(2, '0')
|
|
|
})
|
|
|
return time_str
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 将毫秒,转换成时间字符串。例如说,xx 分钟
|
|
|
- *
|
|
|
- * @param ms 毫秒
|
|
|
- * @returns {string} 字符串
|
|
|
- */
|
|
|
- export function getDates(ms) {
|
|
|
- const day = Math.floor(ms / (24 * 60 * 60 * 1000));
|
|
|
- const hour = Math.floor((ms / (60 * 60 * 1000) - day * 24));
|
|
|
- const minute = Math.floor(((ms / (60 * 1000)) - day * 24 * 60 - hour * 60));
|
|
|
- const second = Math.floor((ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60));
|
|
|
- if (day > 0) {
|
|
|
- return day + "天" + hour + "小时" + minute + "分钟";
|
|
|
- }
|
|
|
- if (hour > 0) {
|
|
|
- return hour + "小时" + minute + "分钟";
|
|
|
- }
|
|
|
- if (minute > 0) {
|
|
|
- return minute + "分钟";
|
|
|
- }
|
|
|
- if (second > 0) {
|
|
|
- return second + "秒";
|
|
|
- } else {
|
|
|
- return 0 + "秒";
|
|
|
- }
|
|
|
- }
|
|
|
- //机构一维数组转树形结构
|
|
|
- export function toTreeData(option) {
|
|
|
- var _a, _b;
|
|
|
- if (Array.isArray(option)) {
|
|
|
- option = {
|
|
|
- data: arguments[0],
|
|
|
- idField: arguments[1],
|
|
|
- parentIdField: arguments[2],
|
|
|
- childrenField: arguments[3],
|
|
|
- parentId: arguments[4],
|
|
|
- addParentIds: arguments[5],
|
|
|
- parentIdsField: arguments[6],
|
|
|
- parentIds: arguments[7]
|
|
|
- };
|
|
|
- }
|
|
|
- const data = option.data;
|
|
|
- const idField = option.idField || option.idKey || "id";
|
|
|
- const parentIdField = option.parentIdField || option.pidKey || "parentId";
|
|
|
- const childrenField = option.childrenField || option.childKey || "children";
|
|
|
- const parentIdIsNull = typeof option.parentId === "undefined" && typeof option.pid === "undefined";
|
|
|
- const parentId = parentIdIsNull ? [] : (_a = option.parentId) != null ? _a : option.pid;
|
|
|
- const addParentIds = (_b = option.addParentIds) != null ? _b : option.addPIds;
|
|
|
- const parentIdsField = option.parentIdsField || option.parentsKey || "parentIds";
|
|
|
- const parentIds = option.parentIds;
|
|
|
- if (parentIdIsNull) {
|
|
|
- data.forEach((d) => {
|
|
|
- let flag = true;
|
|
|
- for (let i = 0; i < data.length; i++) {
|
|
|
- if (d[parentIdField] == data[i][idField]) {
|
|
|
- flag = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (flag) {
|
|
|
- parentId.push(d[parentIdField]);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- const result = [];
|
|
|
- data.forEach((d) => {
|
|
|
- if (d[idField] == d[parentIdField]) {
|
|
|
- throw new Error(
|
|
|
- [
|
|
|
- "data error: {",
|
|
|
- idField + ": ",
|
|
|
- JSON.stringify(d[idField]),
|
|
|
- parentIdField + ": ",
|
|
|
- JSON.stringify(d[parentIdField]),
|
|
|
- "}"
|
|
|
- ].join("")
|
|
|
- );
|
|
|
- }
|
|
|
- const isArr = Array.isArray(parentId);
|
|
|
- const isParent = isArr ? parentId.includes(d[parentIdField]) : d[parentIdField] == parentId;
|
|
|
- if (isParent) {
|
|
|
- const r = { ...d };
|
|
|
- const children = toTreeData({
|
|
|
- data,
|
|
|
- idField,
|
|
|
- parentIdField,
|
|
|
- childrenField,
|
|
|
- parentId: d[idField],
|
|
|
- addParentIds,
|
|
|
- parentIdsField,
|
|
|
- parentIds: (parentIds != null ? parentIds : []).concat([d[idField]])
|
|
|
- });
|
|
|
- if (children.length > 0) {
|
|
|
- r[childrenField] = children;
|
|
|
- }
|
|
|
- if (addParentIds) {
|
|
|
- r[parentIdsField] = parentIds != null ? parentIds : [];
|
|
|
- }
|
|
|
- result.push(r);
|
|
|
- }
|
|
|
- });
|
|
|
- return result;
|
|
|
- }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 将毫秒,转换成时间字符串。例如说,xx 分钟
|
|
|
+ *
|
|
|
+ * @param ms 毫秒
|
|
|
+ * @returns {string} 字符串
|
|
|
+ */
|
|
|
+export function getDates(ms) {
|
|
|
+ const day = Math.floor(ms / (24 * 60 * 60 * 1000));
|
|
|
+ const hour = Math.floor((ms / (60 * 60 * 1000) - day * 24));
|
|
|
+ const minute = Math.floor(((ms / (60 * 1000)) - day * 24 * 60 - hour * 60));
|
|
|
+ const second = Math.floor((ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60));
|
|
|
+ if (day > 0) {
|
|
|
+ return day + "天" + hour + "小时" + minute + "分钟";
|
|
|
+ }
|
|
|
+ if (hour > 0) {
|
|
|
+ return hour + "小时" + minute + "分钟";
|
|
|
+ }
|
|
|
+ if (minute > 0) {
|
|
|
+ return minute + "分钟";
|
|
|
+ }
|
|
|
+ if (second > 0) {
|
|
|
+ return second + "秒";
|
|
|
+ } else {
|
|
|
+ return 0 + "秒";
|
|
|
+ }
|
|
|
+}
|
|
|
+//机构一维数组转树形结构
|
|
|
+export function toTreeData(option) {
|
|
|
+ var _a, _b;
|
|
|
+ if (Array.isArray(option)) {
|
|
|
+ option = {
|
|
|
+ data: arguments[0],
|
|
|
+ idField: arguments[1],
|
|
|
+ parentIdField: arguments[2],
|
|
|
+ childrenField: arguments[3],
|
|
|
+ parentId: arguments[4],
|
|
|
+ addParentIds: arguments[5],
|
|
|
+ parentIdsField: arguments[6],
|
|
|
+ parentIds: arguments[7]
|
|
|
+ };
|
|
|
+ }
|
|
|
+ const data = option.data;
|
|
|
+ const idField = option.idField || option.idKey || "id";
|
|
|
+ const parentIdField = option.parentIdField || option.pidKey || "parentId";
|
|
|
+ const childrenField = option.childrenField || option.childKey || "children";
|
|
|
+ const parentIdIsNull = typeof option.parentId === "undefined" && typeof option.pid === "undefined";
|
|
|
+ const parentId = parentIdIsNull ? [] : (_a = option.parentId) != null ? _a : option.pid;
|
|
|
+ const addParentIds = (_b = option.addParentIds) != null ? _b : option.addPIds;
|
|
|
+ const parentIdsField = option.parentIdsField || option.parentsKey || "parentIds";
|
|
|
+ const parentIds = option.parentIds;
|
|
|
+ if (parentIdIsNull) {
|
|
|
+ data.forEach((d) => {
|
|
|
+ let flag = true;
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
+ if (d[parentIdField] == data[i][idField]) {
|
|
|
+ flag = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ parentId.push(d[parentIdField]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ const result = [];
|
|
|
+ data.forEach((d) => {
|
|
|
+ if (d[idField] == d[parentIdField]) {
|
|
|
+ throw new Error(
|
|
|
+ [
|
|
|
+ "data error: {",
|
|
|
+ idField + ": ",
|
|
|
+ JSON.stringify(d[idField]),
|
|
|
+ parentIdField + ": ",
|
|
|
+ JSON.stringify(d[parentIdField]),
|
|
|
+ "}"
|
|
|
+ ].join("")
|
|
|
+ );
|
|
|
+ }
|
|
|
+ const isArr = Array.isArray(parentId);
|
|
|
+ const isParent = isArr ? parentId.includes(d[parentIdField]) : d[parentIdField] == parentId;
|
|
|
+ if (isParent) {
|
|
|
+ const r = {
|
|
|
+ ...d
|
|
|
+ };
|
|
|
+ const children = toTreeData({
|
|
|
+ data,
|
|
|
+ idField,
|
|
|
+ parentIdField,
|
|
|
+ childrenField,
|
|
|
+ parentId: d[idField],
|
|
|
+ addParentIds,
|
|
|
+ parentIdsField,
|
|
|
+ parentIds: (parentIds != null ? parentIds : []).concat([d[idField]])
|
|
|
+ });
|
|
|
+ if (children.length > 0) {
|
|
|
+ r[childrenField] = children;
|
|
|
+ }
|
|
|
+ if (addParentIds) {
|
|
|
+ r[parentIdsField] = parentIds != null ? parentIds : [];
|
|
|
+ }
|
|
|
+ result.push(r);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return result;
|
|
|
+}
|