|
@@ -0,0 +1,876 @@
|
|
|
+
|
|
|
+import env from "@/http/config/config.js"
|
|
|
+/**
|
|
|
+ * 判断字符串是否为空
|
|
|
+ * @param obj
|
|
|
+ * @returns {boolean}
|
|
|
+ */
|
|
|
+
|
|
|
+export const isStringEmpty = (obj) => {
|
|
|
+ if (typeof obj == "undefined" || obj == null || obj === "") {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 判断对象、字符串是否为空
|
|
|
+ * @param obj
|
|
|
+ * @returns {boolean}
|
|
|
+ */
|
|
|
+export const isObjStringEmpty = (obj) => {
|
|
|
+ if (typeof obj == "object" && JSON.stringify(obj) == "{}") {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return isStringEmpty(obj);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 判断字符串是否非空
|
|
|
+ * @param obj
|
|
|
+ * @returns {boolean}
|
|
|
+ */
|
|
|
+export const isStringNotEmpty = (obj) => {
|
|
|
+ return !isStringEmpty(obj);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 判断对象、字符串是否非空
|
|
|
+ * @param obj
|
|
|
+ * @returns {boolean}
|
|
|
+ */
|
|
|
+export const isObjStringNotEmpty = (obj) => {
|
|
|
+ return !isObjStringEmpty(obj);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 字符串如果为空,转换字符串为null
|
|
|
+ * @param obj
|
|
|
+ * @returns {boolean}
|
|
|
+ */
|
|
|
+export const changeStringEmptyToNull = (obj) => {
|
|
|
+ if (isStringEmpty(obj)) {
|
|
|
+ obj = null;
|
|
|
+ }
|
|
|
+ return obj;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 字符串如果为空,转换字符串为""
|
|
|
+ * @param obj
|
|
|
+ * @returns {boolean}
|
|
|
+ */
|
|
|
+export const changeStringNullToEmpty = (obj) => {
|
|
|
+ if (typeof obj == "undefined" || obj == null) {
|
|
|
+ obj = "";
|
|
|
+ }
|
|
|
+ return obj;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 字符串如果为空,转换字符串为""
|
|
|
+ * @param obj
|
|
|
+ * @returns {boolean}
|
|
|
+ */
|
|
|
+export const stringEndWith = (str) => {
|
|
|
+ if (str == null || str == "" || this.length == 0 || str.length > this.length)
|
|
|
+ return false;
|
|
|
+ if (this.substring(this.length - str.length) == str)
|
|
|
+ return true;
|
|
|
+ else
|
|
|
+ return false;
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+export const formatDate = (shijianchuo) => {
|
|
|
+ //shijianchuo是整数,否则要parseInt转换
|
|
|
+ function add0(m) {
|
|
|
+ return m < 10 ? '0' + m : m
|
|
|
+ }
|
|
|
+ var time = new Date(shijianchuo);
|
|
|
+ var y = time.getFullYear();
|
|
|
+ var m = time.getMonth() + 1;
|
|
|
+ var d = time.getDate();
|
|
|
+ var h = time.getHours();
|
|
|
+ var mm = time.getMinutes();
|
|
|
+ var s = time.getSeconds();
|
|
|
+ return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm) + ':' + add0(s);
|
|
|
+}
|
|
|
+/**
|
|
|
+ * 格式化时间对象
|
|
|
+ * @param {string} fmt Date对象的格式化格式:如yyyy-MM-dd HH:mm:ss
|
|
|
+ * @param {date} date 需要格式化的时间对象
|
|
|
+ * @return {string} 返回格式化后的字符串,如2020-0101 00:00:00
|
|
|
+ * */
|
|
|
+export const formatDateToStr = function (fmt, date) {
|
|
|
+ fmt = fmt.replace("hh", "HH")
|
|
|
+ let ret;
|
|
|
+ // debugger
|
|
|
+ const opt = {
|
|
|
+ "y+": date.getFullYear().toString(),
|
|
|
+ "M+": (date.getMonth() + 1).toString(),
|
|
|
+ "d+": date.getDate().toString(),
|
|
|
+ "H+": date.getHours().toString(),
|
|
|
+ "m+": date.getMinutes().toString(),
|
|
|
+ "s+": date.getSeconds().toString(),
|
|
|
+ };
|
|
|
+ for (let k in opt) {
|
|
|
+ ret = new RegExp(`(${k})`).exec(fmt);
|
|
|
+ if (ret) {
|
|
|
+ fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0"))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return fmt
|
|
|
+}
|
|
|
+/**
|
|
|
+ * 格式化时间对象
|
|
|
+ * @param {string} str 要转换成时间对象的字符串,如2020-0101 00:00:00
|
|
|
+ * @return {date} 转换后的时间对象
|
|
|
+ * */
|
|
|
+export function formatStrToDate(str) {
|
|
|
+ return new Date(Date.parse(str.replace(/-/g, "/")));
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+//数字校验
|
|
|
+export const digits = (str, bol) => {
|
|
|
+ var regexp = /^[0-9]*$/;
|
|
|
+
|
|
|
+ if (bol) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+//校验只能输入大于0的正整数
|
|
|
+export const checkNum0 = (str, bol) => {
|
|
|
+ var regexp = /^[1-9]\d*$/;
|
|
|
+ if (bol) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+//校验只能输入大于1的正整数
|
|
|
+export const checkNum1 = (str) => {
|
|
|
+ var regexp = /^[2-9]\d*$/;
|
|
|
+ if (bol) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+//校验金额(精确到小数点2位)
|
|
|
+export const moneyvalid = (str, bol) => {
|
|
|
+ var reg = /^^\d+(\.\d{2})+$/;
|
|
|
+ if (bol) {
|
|
|
+ if (reg.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (reg.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+//校验只能输入字母
|
|
|
+export const english = (str, bol) => {
|
|
|
+ var regexp = /^[A-Za-z]+$/;
|
|
|
+ if (bol) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+//检验只能输入汉字
|
|
|
+export const chinese = (str, bol) => {
|
|
|
+ var regexp = /^[\u4e00-\u9fa5]{0,}$/;
|
|
|
+ if (bol) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+//校验数字和字母
|
|
|
+export const letterOrNumberonly = (str, bol) => {
|
|
|
+ var regexp = /^[A-Za-z0-9]+$/;
|
|
|
+ if (bol) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+//校验数字、字母及下划线
|
|
|
+export const letterOrNumberOrUnderline = (str, bol) => {
|
|
|
+ var regexp = /^\w+$/;
|
|
|
+ if (bol) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (regexp.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+};
|
|
|
+//邮箱校验
|
|
|
+export const email = (str, bol) => {
|
|
|
+ var regexp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
|
|
|
+ var regexp2 = /^[A-Za-z0-9._%-]+@([A-Za-z0-9-]+\.)+[A-Za-z]{2,4}$/;
|
|
|
+ if (bol) {
|
|
|
+ if (regexp.test(str) || regexp2.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (regexp.test(str) || regexp2.test(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+//校验手机号码
|
|
|
+export const mobile = (str, bol) => {
|
|
|
+ var isMobile = /^1(3|4|5|6|7|8|9)\d{9}$/;
|
|
|
+ if (bol) {
|
|
|
+ if (isMobile.test(str))
|
|
|
+ return false
|
|
|
+ else
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (isMobile.test(str))
|
|
|
+ return false
|
|
|
+ else
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+//校验固定电话
|
|
|
+export const phone = (str, bol) => {
|
|
|
+ var homeMobile = /^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
|
|
|
+ if (bol) {
|
|
|
+ if (homeMobile.test(str))
|
|
|
+ return false
|
|
|
+ else
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (homeMobile.test(str))
|
|
|
+ return false
|
|
|
+ else
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+//校验电话号码
|
|
|
+export const mobileOrPhone = (str, bol) => {
|
|
|
+ var homeMobile = /^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
|
|
|
+ var isMobile = /^1(3|4|5|6|7|8|9)\d{9}$/;
|
|
|
+ if (bol) {
|
|
|
+ if (homeMobile.test(str) || isMobile.test(str))
|
|
|
+ return false
|
|
|
+ else
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ if (typeof str != "undefined" && str.length > 0) {
|
|
|
+ if (homeMobile.test(str) || isMobile.test(str))
|
|
|
+ return false
|
|
|
+ else
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+//校验身份证号
|
|
|
+export const idcard = (str) => {
|
|
|
+ var idcard1 = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
|
|
|
+ var idcard2 = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
|
|
|
+ if (idcard1.test(str) || idcard2.test(str))
|
|
|
+ return false
|
|
|
+ else
|
|
|
+ return true;
|
|
|
+};
|
|
|
+
|
|
|
+//获取本周
|
|
|
+export const getCurrentWeek = (str) => {
|
|
|
+ //获取当前时间
|
|
|
+ const currentDate = new Date(str)
|
|
|
+ //返回date是一周中的某一天
|
|
|
+ const week = currentDate.getDay()
|
|
|
+ //一天的毫秒数
|
|
|
+ const millisecond = 1000 * 60 * 60 * 24
|
|
|
+ //减去的天数
|
|
|
+ const minusDay = week != 0 ? week - 1 : 6
|
|
|
+ //本周 周一
|
|
|
+ const monday = new Date(currentDate.getTime() - minusDay * millisecond)
|
|
|
+ //本周 周日
|
|
|
+ const sunday = new Date(monday.getTime() + 6 * millisecond)
|
|
|
+ return [monday, sunday]
|
|
|
+};
|
|
|
+
|
|
|
+//获取上一周
|
|
|
+export const handleGetPrevWeek = (str) => {
|
|
|
+ const Time = new Date(str)
|
|
|
+ let weekNum = Time.getDay()
|
|
|
+ weekNum = weekNum == 0 ? 7 : weekNum
|
|
|
+ let lastDate = new Date(Time.getTime() - weekNum * 24 * 60 * 60 * 1000)
|
|
|
+ let fitstDate = new Date(
|
|
|
+ Time.getTime() - (weekNum + 6) * 24 * 60 * 60 * 1000
|
|
|
+ )
|
|
|
+ let startDate =
|
|
|
+ `${fitstDate.getFullYear()}-${fitstDate.getMonth() + 1 < 10
|
|
|
+ ? '0' + (fitstDate.getMonth() + 1)
|
|
|
+ : fitstDate.getMonth() + 1
|
|
|
+ }-${fitstDate.getDate() < 10
|
|
|
+ ? '0' + fitstDate.getDate()
|
|
|
+ : fitstDate.getDate()
|
|
|
+ }`
|
|
|
+ let endDate =
|
|
|
+ `${lastDate.getFullYear()}-${lastDate.getMonth() + 1 < 10
|
|
|
+ ? '0' + (lastDate.getMonth() + 1)
|
|
|
+ : lastDate.getMonth() + 1
|
|
|
+ }-${lastDate.getDate() < 10 ? '0' + lastDate.getDate() : lastDate.getDate()
|
|
|
+ }`
|
|
|
+ return [startDate, endDate]
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+//获取下一周
|
|
|
+export const handleGetNextvWeek = (str) => {
|
|
|
+ const Time = new Date(str)
|
|
|
+ let weekNum = Time.getDay()
|
|
|
+ weekNum = weekNum == 0 ? 7 : weekNum
|
|
|
+
|
|
|
+ let fitstDate = new Date(
|
|
|
+ Time.getTime() + (7 - weekNum + 1) * 24 * 60 * 60 * 1000
|
|
|
+ )
|
|
|
+ let lastDate = new Date(
|
|
|
+ Time.getTime() + (7 - weekNum + 7) * 24 * 60 * 60 * 1000
|
|
|
+ )
|
|
|
+ let startDate =
|
|
|
+ `${fitstDate.getFullYear()}-${fitstDate.getMonth() + 1 < 10
|
|
|
+ ? '0' + (fitstDate.getMonth() + 1)
|
|
|
+ : fitstDate.getMonth() + 1
|
|
|
+ }-${fitstDate.getDate() < 10
|
|
|
+ ? '0' + fitstDate.getDate()
|
|
|
+ : fitstDate.getDate()
|
|
|
+ }`
|
|
|
+ let endDate =
|
|
|
+ `${lastDate.getFullYear()}-${lastDate.getMonth() + 1 < 10
|
|
|
+ ? '0' + (lastDate.getMonth() + 1)
|
|
|
+ : lastDate.getMonth() + 1
|
|
|
+ }-${lastDate.getDate() < 10 ? '0' + lastDate.getDate() : lastDate.getDate()
|
|
|
+ }`
|
|
|
+ return [startDate, endDate]
|
|
|
+}
|
|
|
+
|
|
|
+// url参数解析
|
|
|
+export const getUrlkey = (url) => {
|
|
|
+ var params = {};
|
|
|
+ var urls = url.split("?");
|
|
|
+ var arr = urls[1].split("&");
|
|
|
+ for (var i = 0, l = arr.length; i < l; i++) {
|
|
|
+ var a = arr[i].split("=");
|
|
|
+ params[a[0]] = a[1];
|
|
|
+ }
|
|
|
+ return params;
|
|
|
+}
|
|
|
+
|
|
|
+//获取上一个年月
|
|
|
+export const getPreMonth = () => {
|
|
|
+ var date = new Date();
|
|
|
+ var year = date.getFullYear();
|
|
|
+ var month = date.getMonth()
|
|
|
+ if (month == 0) {
|
|
|
+ year = year - 1;
|
|
|
+ month = 12;
|
|
|
+ }
|
|
|
+ month = month <= 9 ? "0" + month : month
|
|
|
+ return year + '年' + month + '月'
|
|
|
+}
|
|
|
+
|
|
|
+//解决IOS日期显示问题
|
|
|
+export const formateIOS = (str, pattern) => {
|
|
|
+ var format = str.replace(/\-/g, "/"); //把“-”,替换成‘/’
|
|
|
+ var date = new Date(format),
|
|
|
+ y = date.getFullYear(),
|
|
|
+ m = (date.getMonth() + 1).toString().padStart(2, 0),
|
|
|
+ d = date.getDate().toString().padStart(2, 0),
|
|
|
+ h = date.getHours().toString().padStart(2, 0),
|
|
|
+ mi = date.getMinutes().toString().padStart(2, 0),
|
|
|
+ se = date.getSeconds().toString().padStart(2, 0);
|
|
|
+ if (pattern == "yyyy.mm.dd") {
|
|
|
+ return `${y}.${m}.${d}`;
|
|
|
+ } else {
|
|
|
+ return y + '-' + m + '-' + d;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//小写金额转大写
|
|
|
+export const DX = (n) => {
|
|
|
+ var newchar = "";
|
|
|
+ var Num = n;
|
|
|
+ if (Num == "") {
|
|
|
+ //输入框删减为空时,将大写金额的内容值设为原始状态,当然也可以根据需求进行修改
|
|
|
+ newchar = "零元整";
|
|
|
+ return newchar;
|
|
|
+ }
|
|
|
+ var part = String(Num).split(".");
|
|
|
+ for (let i = part[0].length - 1; i >= 0; i--) {
|
|
|
+ if (part[0].length > 10) {
|
|
|
+ newchar = "位数过大,无法计算"; //前面如果有验证位数的,此处判断可去掉
|
|
|
+ return newchar;
|
|
|
+ }
|
|
|
+ var tmpnewchar = ""
|
|
|
+ var perchar = part[0].charAt(i);
|
|
|
+ switch (perchar) {
|
|
|
+ case "0":
|
|
|
+ tmpnewchar = "零" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "1":
|
|
|
+ tmpnewchar = "壹" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ tmpnewchar = "贰" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ tmpnewchar = "叁" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "4":
|
|
|
+ tmpnewchar = "肆" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "5":
|
|
|
+ tmpnewchar = "伍" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "6":
|
|
|
+ tmpnewchar = "陆" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "7":
|
|
|
+ tmpnewchar = "柒" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "8":
|
|
|
+ tmpnewchar = "捌" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "9":
|
|
|
+ tmpnewchar = "玖" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ switch (part[0].length - i - 1) {
|
|
|
+ case 0:
|
|
|
+ tmpnewchar = tmpnewchar + "元";
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ if (perchar != 0) tmpnewchar = tmpnewchar + "拾";
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ if (perchar != 0) tmpnewchar = tmpnewchar + "佰";
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ if (perchar != 0) tmpnewchar = tmpnewchar + "仟";
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ tmpnewchar = tmpnewchar + "万";
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ if (perchar != 0) tmpnewchar = tmpnewchar + "拾";
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ if (perchar != 0) tmpnewchar = tmpnewchar + "佰";
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ if (perchar != 0) tmpnewchar = tmpnewchar + "仟";
|
|
|
+ break;
|
|
|
+ case 8:
|
|
|
+ tmpnewchar = tmpnewchar + "亿";
|
|
|
+ break;
|
|
|
+ case 9:
|
|
|
+ tmpnewchar = tmpnewchar + "拾";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ newchar = tmpnewchar + newchar;
|
|
|
+ }
|
|
|
+ if (("" + Num).indexOf(".") != -1) {
|
|
|
+ if (part[1].length > 2) {
|
|
|
+ part[1] = part[1].substr(0, 2)
|
|
|
+ }
|
|
|
+ for (i = 0; i < part[1].length; i++) {
|
|
|
+ tmpnewchar = ""
|
|
|
+ var perchar = part[1].charAt(i)
|
|
|
+ switch (perchar) {
|
|
|
+ case "0":
|
|
|
+ tmpnewchar = "零" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "1":
|
|
|
+ tmpnewchar = "壹" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ tmpnewchar = "贰" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ tmpnewchar = "叁" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "4":
|
|
|
+ tmpnewchar = "肆" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "5":
|
|
|
+ tmpnewchar = "伍" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "6":
|
|
|
+ tmpnewchar = "陆" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "7":
|
|
|
+ tmpnewchar = "柒" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "8":
|
|
|
+ tmpnewchar = "捌" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ case "9":
|
|
|
+ tmpnewchar = "玖" + tmpnewchar;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (i == 0) tmpnewchar = tmpnewchar + "角";
|
|
|
+ if (i == 1) tmpnewchar = tmpnewchar + "分";
|
|
|
+ newchar = newchar + tmpnewchar;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ while (newchar.search("零元") != -1) {
|
|
|
+ newchar = newchar.replace("零零", "零");
|
|
|
+ newchar = newchar.replace("零亿", "亿");
|
|
|
+ newchar = newchar.replace("亿万", "亿");
|
|
|
+ newchar = newchar.replace("零万", "万");
|
|
|
+ newchar = newchar.replace("零元", "元");
|
|
|
+ newchar = newchar.replace("零角", "");
|
|
|
+ newchar = newchar.replace("零分", "");
|
|
|
+ }
|
|
|
+ if (newchar.charAt(newchar.length - 1) == "元" || newchar.charAt(newchar.length - 1) == "角") {
|
|
|
+ newchar = newchar + "整";
|
|
|
+ }
|
|
|
+ return newchar;
|
|
|
+}
|
|
|
+//计算数组对象某个属性的总和
|
|
|
+export const countTotal = (arr, keyName) => {
|
|
|
+ let $total = 0;
|
|
|
+ $total = arr.reduce(function (total, currentValue, currentIndex, arr) {
|
|
|
+ return parseFloat(currentValue[keyName]) ? (total + parseFloat(currentValue[keyName])) : total;
|
|
|
+ }, 0);
|
|
|
+ return $total;
|
|
|
+}
|
|
|
+
|
|
|
+//防抖函数
|
|
|
+let timeout = null;
|
|
|
+export const debounce = (fn, wait) => {
|
|
|
+ if (timeout != null) clearTimeout(timeout)
|
|
|
+ timeout = setTimeout(fn, wait)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+//对象深拷贝
|
|
|
+export const deepClone = (obj) => {
|
|
|
+ let objClone = Array.isArray(obj) ? [] : {};
|
|
|
+ if (obj && typeof obj === "object") {
|
|
|
+ for (var key in obj) {
|
|
|
+ if (obj.hasOwnProperty(key)) {
|
|
|
+ //判断ojb子元素是否为对象,如果是,递归复制
|
|
|
+ if (obj[key] && typeof obj[key] === "object") {
|
|
|
+ objClone[key] = deepClone(obj[key]);
|
|
|
+ } else {
|
|
|
+ //如果不是,简单复制
|
|
|
+ objClone[key] = obj[key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return objClone;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+//字母大写转小写
|
|
|
+export const strChange = (arg) => {
|
|
|
+ var str=arg.split('');
|
|
|
+ for(var i = 0; i < str.length; i++) {
|
|
|
+ if (str[i].charAt() >= "a" && str[i].charAt() <= "z") {
|
|
|
+ //转换成大写
|
|
|
+ // str[i] = str[i].toUpperCase();
|
|
|
+ } else {
|
|
|
+ //转换成小写
|
|
|
+ str[i] = str[i].toLowerCase();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return str.join('');
|
|
|
+}
|
|
|
+
|
|
|
+//创建unid
|
|
|
+export const createUnid = () => {
|
|
|
+ var unid = "";
|
|
|
+ const str = "0 1 2 3 4 5 6 7 8 9 A B C D E F"
|
|
|
+ var arr = str.split(" ");
|
|
|
+ var dateStr = getCurDateStr();
|
|
|
+ for (let i = 0; i < 18; i++) {
|
|
|
+ unid += arr[Math.round(Math.random() * (arr.length - 1))];
|
|
|
+ }
|
|
|
+ return dateStr + unid;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+const getCurDateStr = () => {
|
|
|
+ //获取当前时间
|
|
|
+ var mydate = new Date();
|
|
|
+ var newyear = mydate.getFullYear();
|
|
|
+ var newmonth = mydate.getMonth() + 1;
|
|
|
+ newmonth = (newmonth < 10 ? "0" + newmonth : newmonth);
|
|
|
+ var newDate = mydate.getDate();
|
|
|
+ newDate = (newDate < 10 ? "0" + newDate : newDate);
|
|
|
+ var hours = mydate.getHours(); //获取当前小时数(0-23)
|
|
|
+ hours = (hours < 10 ? "0" + hours : hours);
|
|
|
+ var minutes = mydate.getMinutes(); //获取当前分钟数(0-59)
|
|
|
+ minutes = (minutes < 10 ? "0" + minutes : minutes);
|
|
|
+ var seconds = mydate.getSeconds(); //获取当前秒数(0-59)
|
|
|
+ seconds = (seconds < 10 ? "0" + seconds : seconds);
|
|
|
+ var datetime = "" + newyear + newmonth + newDate + hours + minutes + seconds;
|
|
|
+ return datetime;
|
|
|
+}
|
|
|
+
|
|
|
+//获取短信模板消息体 已使用
|
|
|
+export const getmestemplate = async (e) => {
|
|
|
+ const res = await getSmsTemplate(e)
|
|
|
+ return res.data.data
|
|
|
+}
|
|
|
+
|
|
|
+//通过字典获取值
|
|
|
+export const queryType = async (e) => {
|
|
|
+ const res = await queryByType(e)
|
|
|
+ return res.data.data[e.dictTypes].map(item => {
|
|
|
+ return {
|
|
|
+ label: item.dictname,
|
|
|
+ value: item.dictvalue,
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+//把年月日时间格式转换成可以识别的时间格式
|
|
|
+export const getDateToNum = (date) => {
|
|
|
+ let redate = ""
|
|
|
+ if (date.indexOf("年") > 1) {
|
|
|
+ redate = date.substring(0, date.indexOf("年"))
|
|
|
+ }
|
|
|
+ if (date.indexOf("月") > 1) {
|
|
|
+ redate = redate + "-" + date.substring(date.indexOf("月") - 2, date.indexOf("月"))
|
|
|
+ }
|
|
|
+ if (date.indexOf("日") > 1) {
|
|
|
+ redate = redate + "-" + date.substring(date.indexOf("日") - 2, date.indexOf("日"))
|
|
|
+ }
|
|
|
+ return redate
|
|
|
+}
|
|
|
+/**
|
|
|
+ * 弹窗提示方法
|
|
|
+ * @param {String} msg 提示的消息
|
|
|
+ * @param {Function} func 成功后执行的方法
|
|
|
+ */
|
|
|
+export async function toastFunc(msg = '', func = null) {
|
|
|
+ uni.showToast({
|
|
|
+ icon: "none",
|
|
|
+ title: msg,
|
|
|
+ complete() {
|
|
|
+ setTimeout(async () => {
|
|
|
+ func && await func()
|
|
|
+ }, 1000)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 模态框提示方法
|
|
|
+ * @param {String} msg 提示的消息
|
|
|
+ * @param {Function} func 点击确定后执行的方法
|
|
|
+ */
|
|
|
+export function modalFunc(msg = '', func = null, func2 = null) {
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: msg,
|
|
|
+ complete(e) {
|
|
|
+ if (e.confirm) {
|
|
|
+ //点击确定执行的方法
|
|
|
+ func && func()
|
|
|
+ }else if(e.cancel){
|
|
|
+ //点击取消执行的方法
|
|
|
+ func2 && func2()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+// 跳转缺省页面
|
|
|
+export function jumpResponseHandle(code, msg) {
|
|
|
+ uni.redirectTo({
|
|
|
+ url: '/pages/commonview/responceHandle?code=' + code + '&msg=' + msg
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+// 判断日期大小
|
|
|
+export function computingDate(startDate, endDate) {
|
|
|
+ startDate = new Date(startDate).getTime()
|
|
|
+ endDate = new Date(endDate).getTime()
|
|
|
+ if (startDate == endDate) {
|
|
|
+ return '等于'
|
|
|
+ } else if (startDate < endDate) {
|
|
|
+ return '小于'
|
|
|
+ } else {
|
|
|
+ return '大于'
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//获取本周日期 i传0 返回本周第一天
|
|
|
+export function getWeek(i) {
|
|
|
+ var now = new Date();
|
|
|
+ var firstDay = new Date(now - (now.getDay() - 1) * 86400000);
|
|
|
+ firstDay.setDate(firstDay.getDate() + i);
|
|
|
+ let mon = Number(firstDay.getMonth()) + 1;
|
|
|
+ let day = firstDay.getDate();
|
|
|
+ if (mon < 10) {
|
|
|
+ mon = '0' + mon
|
|
|
+ }
|
|
|
+ if (day < 10) {
|
|
|
+ day = '0' + day
|
|
|
+ }
|
|
|
+ return now.getFullYear() + "-" + mon + "-" + day;
|
|
|
+}
|
|
|
+
|
|
|
+export function changeNumToHan(num) {
|
|
|
+ var arr1 = new Array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
|
|
|
+ var arr2 = new Array('', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万', '十', '百', '千', '亿');//可继续追加更高位转换值
|
|
|
+ if (!num || isNaN(num)) {
|
|
|
+ return "零";
|
|
|
+ }
|
|
|
+ var english = num.toString().split("")
|
|
|
+ var result = "";
|
|
|
+ for (var i = 0; i < english.length; i++) {
|
|
|
+ var des_i = english.length - 1 - i;//倒序排列设值
|
|
|
+ result = arr2[i] + result;
|
|
|
+ var arr1_index = english[des_i];
|
|
|
+ result = arr1[arr1_index] + result;
|
|
|
+ }
|
|
|
+ //将【零千、零百】换成【零】 【十零】换成【十】
|
|
|
+ result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十');
|
|
|
+ //合并中间多个零为一个零
|
|
|
+ result = result.replace(/零+/g, '零');
|
|
|
+ //将【零亿】换成【亿】【零万】换成【万】
|
|
|
+ result = result.replace(/零亿/g, '亿').replace(/零万/g, '万');
|
|
|
+ //将【亿万】换成【亿】
|
|
|
+ result = result.replace(/亿万/g, '亿');
|
|
|
+ //移除末尾的零
|
|
|
+ result = result.replace(/零+$/, '')
|
|
|
+ //将【零一十】换成【零十】
|
|
|
+ //result = result.replace(/零一十/g, '零十');//貌似正规读法是零一十
|
|
|
+ //将【一十】换成【十】
|
|
|
+ result = result.replace(/^一十/g, '十')
|
|
|
+ return result;
|
|
|
+}
|