nxdt-web/src/utils/bonus.js

373 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { getToDoNum } from '@/api/system/notice'
//0 测试 1生产
let fileType = process.env.ENV === 'testing' ? 0 : 1
export function lookFile() {
if (fileType === 0) {
return 'http://192.168.0.14:1999/file/statics' //14服务器
} else {
return 'http://218.21.27.6:1999/file/statics' //生产服务器
}
// return 'http://112.29.103.165:14413/file/statics' //1.6演示服务器
}
export function lookFaceFile() {
if (fileType === 0) {
return 'http://192.168.0.14:1999/file/statics/' //14服务器
} else {
return 'http://218.21.27.6:1999/file/statics/' //生产服务器
}
//return 'http://112.29.103.165:14413/file/statics/' //1.6演示服务器
// return 'http://218.21.27.6:1999/file/statics/' //生产服务器
}
export function filePreview() {
if (fileType === 0) {
return 'http://192.168.0.14:8012/onlinePreview?url=' //14服务器
} else {
return 'http://218.21.27.6:18013/onlinePreview?url=' //生产服务器
}
//
// return 'http://112.29.103.165:8012/onlinePreview?url=' //1.6演示服务器
}
export function lookMioIoFile() {
if (fileType === 0) {
return 'http://192.168.0.14:9090/nxdt-courseware-1' //14服务器
} else {
return 'http://218.21.27.6:19090/nxdt-courseware' //生产服务器
}
// return 'http://192.168.0.14:9090/nxdt-courseware-1' //14服务器
}
// lookFile: 'http://218.21.27.6:1999/nxnyback/statics',
// filePreviewPath: 'http://218.21.27.6:8012/onlinePreview?url=',
// lookFile: 'http://112.29.103.165:14413/file/statics',
/**
* 通用js方法封装处理
* Copyright (c) 2019 bonus
*/
// 日期格式化
export function parseTime(time, pattern) {
if (arguments.length === 0 || !time) {
return null
}
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
time = parseInt(time)
} else if (typeof time === 'string') {
time = time
.replace(new RegExp(/-/gm), '/')
.replace('T', ' ')
.replace(new RegExp(/\.[\d]{3}/gm), '')
}
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(),
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') {
return ['日', '一', '二', '三', '四', '五', '六'][value]
}
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
}
// 表单重置
export function resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields()
}
}
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
let search = params
search.params =
typeof search.params === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {}
search.startDate = ''
search.endDate = ''
dateRange = Array.isArray(dateRange) ? dateRange : []
if (typeof propName === 'undefined') {
search.params['beginTime'] = dateRange[0]
search.params['endTime'] = dateRange[1]
search.startDate = parseTime(dateRange[0], '{y}-{m}-{d}')
search.endDate = parseTime(dateRange[1], '{y}-{m}-{d}')
search.startTime = parseTime(dateRange[0], '{y}-{m}-{d} {h}:{i}:{s}')
search.endTime = parseTime(dateRange[1], '{y}-{m}-{d} {h}:{i}:{s}')
} else {
search.params['begin' + propName] = dateRange[0]
search.params['end' + propName] = dateRange[1]
}
return search
}
// 回显数据字典
export function selectDictLabel(datas, value) {
if (value === undefined) {
return ''
}
var actions = []
Object.keys(datas).some(key => {
if (datas[key].value == '' + value) {
actions.push(datas[key].label)
return true
}
})
if (actions.length === 0) {
actions.push(value)
}
return actions.join('')
}
// 回显数据字典(字符串、数组)
export function selectDictLabels(datas, value, separator) {
if (value === undefined || value.length === 0) {
return ''
}
if (Array.isArray(value)) {
value = value.join(',')
}
var actions = []
var currentSeparator = undefined === separator ? ',' : separator
var temp = value.split(currentSeparator)
Object.keys(value.split(currentSeparator)).some(val => {
var match = false
Object.keys(datas).some(key => {
if (datas[key].value == '' + temp[val]) {
actions.push(datas[key].label + currentSeparator)
match = true
}
})
if (!match) {
actions.push(temp[val] + currentSeparator)
}
})
return actions.join('').substring(0, actions.join('').length - 1)
}
// 字符串格式化(%s )
export function sprintf(str) {
var args = arguments,
flag = true,
i = 1
str = str.replace(/%s/g, function () {
var arg = args[i++]
if (typeof arg === 'undefined') {
flag = false
return ''
}
return arg
})
return flag ? str : ''
}
// 转换字符串undefined,null等转化为""
export function parseStrEmpty(str) {
if (!str || str == 'undefined' || str == 'null') {
return ''
}
return str
}
// 数据合并
export function mergeRecursive(source, target) {
for (var p in target) {
try {
if (target[p].constructor == Object) {
source[p] = mergeRecursive(source[p], target[p])
} else {
source[p] = target[p]
}
} catch (e) {
source[p] = target[p]
}
}
return source
}
/**
* 构造树型结构数据
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
*/
export function handleTree(data, id, parentId, children) {
let config = {
id: id || 'id',
parentId: parentId || 'parentId',
childrenList: children || 'children',
}
var childrenListMap = {}
var nodeIds = {}
var tree = []
for (let d of data) {
let parentId = d[config.parentId]
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = []
}
nodeIds[d[config.id]] = d
childrenListMap[parentId].push(d)
}
for (let d of data) {
let parentId = d[config.parentId]
if (nodeIds[parentId] == null) {
tree.push(d)
}
}
for (let t of tree) {
adaptToChildrenList(t)
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]]
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c)
}
}
}
return tree
}
/**
* 参数处理
* @param {*} params 参数
*/
export function tansParams(params) {
let result = ''
for (const propName of Object.keys(params)) {
const value = params[propName]
var part = encodeURIComponent(propName) + '='
if (value !== null && value !== '' && typeof value !== 'undefined') {
if (typeof value === 'object') {
for (const key of Object.keys(value)) {
if (value[key] !== null && value[key] !== '' && typeof value[key] !== 'undefined') {
let params = propName + '[' + key + ']'
var subPart = encodeURIComponent(params) + '='
result += subPart + encodeURIComponent(value[key]) + '&'
}
}
} else {
result += part + encodeURIComponent(value) + '&'
}
}
}
return result
}
// 验证是否为blob格式
export function blobValidate(data) {
return data.type !== 'application/json'
}
/**
* 处理表格序号延续问题
* @param {number} num
* @param {number} size
*/
export function indexContinuous(num, size) {
return (num - 1) * size + 1
}
export function getMyToDoNum() {
getToDoNum().then(response => {
console.log(response)
this.$store.commit('SET_TO_DO_NUM', response.msg)
})
}
/**
* 用于隐藏敏感信息的方法,手机号和身份证号
* @param info
* @returns {*}
*/
export function hideSensitiveInfo(info) {
// 假设只显示前三位和后四位,中间用星号代替
if (info.length === 11) {
// 手机号
return info.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
} else if (info.length === 18) {
// 身份证号
return info.replace(/(\d{4})\d{10}(\w{4})/, '$1**********$2')
} else {
return info // 其他情况,直接返回原始信息
}
}
/**
* 提取公共方法获取fileList中具有raw属性的文件
* @param fileList
* @returns {Promise<Awaited<unknown>[]>}
*/
export function getFileData(fileList) {
return Promise.all(fileList.filter(item => item?.hasOwnProperty('raw')).map(item => item.raw))
}
export function getParams() {
return {
proId: this.$store.state.user.thisIds.proId,
supUuid: this.$store.state.user.thisIds.supUuid,
contUuid: this.$store.state.user.thisIds.consUuid,
consUuid: this.$store.state.user.thisIds.consUuid,
subUuid: this.$store.state.user.thisIds.subUuid,
userType: this.$store.state.user.userType,
uuid: this.$store.state.user.thisIds.uuid,
parentUuid: this.$store.state.user.thisIds.parentUuid,
}
}
/**
* 金额转中文大写
* @param n 金额-number
* @returns {string}
*/
export function numberToChinese(n) {
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return '请输入正确数据'
if (Number(n) == 0) return '零元整'
var unit = '千百拾亿千百拾万千百拾元角分',
str = ''
n += '00'
var p = n.indexOf('.')
if (p >= 0) n = n.substring(0, p) + n.substr(p + 1, 2)
unit = unit.slice(unit.length - n.length)
for (var i = 0; i < n.length; i++) str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i)
return str
.replace(/零(千|百|拾|角)/g, '零')
.replace(/(零)+/g, '零')
.replace(/零(万|亿|元)/g, '$1')
.replace(/(亿)万|壹(拾)/g, '$1$2')
.replace(/^元零?|零分/g, '')
.replace(/元$/g, '元整')
}