1296 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			1296 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								// import { random, omit } from 'lodash';
							 | 
						|||
| 
								 | 
							
								// import moment from 'moment';
							 | 
						|||
| 
								 | 
							
								// import { color } from 'html2canvas/dist/types/css/types/color';  //wyw 这个会影响
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function timeFix() {
							 | 
						|||
| 
								 | 
							
									const time = new Date()
							 | 
						|||
| 
								 | 
							
									const hour = time.getHours()
							 | 
						|||
| 
								 | 
							
									return hour < 9 ? '早上好' : hour <= 11 ? '上午好' : hour <= 13 ? '中午好' : hour < 20 ? '下午好' : '晚上好'
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 对Date的扩展,将 Date 转化为指定格式的String
							 | 
						|||
| 
								 | 
							
								 * 月(Y)、月(m)、日(d)、小时(H)、分(M)、秒(S) 可以用 1-2 个占位符,
							 | 
						|||
| 
								 | 
							
								 * 例子:
							 | 
						|||
| 
								 | 
							
								 * dateFormat('YYYY-mm-dd HH:MM:SS', new Date()) ==> 2020-01-01 08:00:00
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export const dateFormat = (fmt, date) => {
							 | 
						|||
| 
								 | 
							
									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() // 秒
							 | 
						|||
| 
								 | 
							
										// 有其他格式化字符需求可以继续添加,必须转化成字符串
							 | 
						|||
| 
								 | 
							
									};
							 | 
						|||
| 
								 | 
							
									let ret
							 | 
						|||
| 
								 | 
							
									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
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function handleScrollHeader(callback) {
							 | 
						|||
| 
								 | 
							
									let timer = 0
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									let beforeScrollTop = window.pageYOffset
							 | 
						|||
| 
								 | 
							
									callback = callback || function() {}
							 | 
						|||
| 
								 | 
							
									window.addEventListener(
							 | 
						|||
| 
								 | 
							
										'scroll',
							 | 
						|||
| 
								 | 
							
										event => {
							 | 
						|||
| 
								 | 
							
											clearTimeout(timer)
							 | 
						|||
| 
								 | 
							
											timer = setTimeout(() => {
							 | 
						|||
| 
								 | 
							
												let direction = 'up'
							 | 
						|||
| 
								 | 
							
												const afterScrollTop = window.pageYOffset
							 | 
						|||
| 
								 | 
							
												const delta = afterScrollTop - beforeScrollTop
							 | 
						|||
| 
								 | 
							
												if (delta === 0) {
							 | 
						|||
| 
								 | 
							
													return false
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												direction = delta > 0 ? 'down' : 'up'
							 | 
						|||
| 
								 | 
							
												callback(direction)
							 | 
						|||
| 
								 | 
							
												beforeScrollTop = afterScrollTop
							 | 
						|||
| 
								 | 
							
											}, 50)
							 | 
						|||
| 
								 | 
							
										},
							 | 
						|||
| 
								 | 
							
										false
							 | 
						|||
| 
								 | 
							
									)
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Remove loading animate
							 | 
						|||
| 
								 | 
							
								 * @param id parent element id or class
							 | 
						|||
| 
								 | 
							
								 * @param timeout
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function removeLoadingAnimate(id = '', timeout = 1500) {
							 | 
						|||
| 
								 | 
							
									if (id === '') {
							 | 
						|||
| 
								 | 
							
										return
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									setTimeout(() => {
							 | 
						|||
| 
								 | 
							
										document.body.removeChild(document.getElementById(id))
							 | 
						|||
| 
								 | 
							
									}, timeout)
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 节流
							 | 
						|||
| 
								 | 
							
								// 思路: 第一次先设定一个变量true,
							 | 
						|||
| 
								 | 
							
								// 第二次执行这个函数时,会判断变量是否true,
							 | 
						|||
| 
								 | 
							
								// 是则返回。当第一次的定时器执行完函数最后会设定变量为flase。
							 | 
						|||
| 
								 | 
							
								// 那么下次判断变量时则为flase,函数会依次运行。
							 | 
						|||
| 
								 | 
							
								export function throttle(fn, delay = 100) {
							 | 
						|||
| 
								 | 
							
									// 首先设定一个变量,在没有执行我们的定时器时为null
							 | 
						|||
| 
								 | 
							
									var timer = null
							 | 
						|||
| 
								 | 
							
									return function() {
							 | 
						|||
| 
								 | 
							
										// 当我们发现这个定时器存在时,则表示定时器已经在运行中,需要返回
							 | 
						|||
| 
								 | 
							
										if (timer) return
							 | 
						|||
| 
								 | 
							
										timer = setTimeout(() => {
							 | 
						|||
| 
								 | 
							
											fn.apply(this, arguments)
							 | 
						|||
| 
								 | 
							
											timer = null
							 | 
						|||
| 
								 | 
							
										}, delay)
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 防抖
							 | 
						|||
| 
								 | 
							
								// 首次运行时把定时器赋值给一个变量, 第二次执行时,
							 | 
						|||
| 
								 | 
							
								// 如果间隔没超过定时器设定的时间则会清除掉定时器,
							 | 
						|||
| 
								 | 
							
								// 重新设定定时器, 依次反复, 当我们停止下来时,
							 | 
						|||
| 
								 | 
							
								// 没有执行清除定时器, 超过一定时间后触发回调函数。
							 | 
						|||
| 
								 | 
							
								export function debounce(fun, delay) {
							 | 
						|||
| 
								 | 
							
									return function(args) {
							 | 
						|||
| 
								 | 
							
										// 获取函数的作用域和变量
							 | 
						|||
| 
								 | 
							
										const that = this
							 | 
						|||
| 
								 | 
							
										const _args = args
							 | 
						|||
| 
								 | 
							
										// 每次事件被触发,都会清除当前的timeer,然后重写设置超时调用
							 | 
						|||
| 
								 | 
							
										clearTimeout(fun.id)
							 | 
						|||
| 
								 | 
							
										fun.id = setTimeout(function() {
							 | 
						|||
| 
								 | 
							
											fun.call(that, _args)
							 | 
						|||
| 
								 | 
							
										}, delay)
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 判断是否为空对象
							 | 
						|||
| 
								 | 
							
								 * @param {*} object 源对象
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function isEmptyObject(object) {
							 | 
						|||
| 
								 | 
							
									return Object.keys(object).length === 0
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 判断是否为对象
							 | 
						|||
| 
								 | 
							
								 * @param {*} object
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function isObject(object) {
							 | 
						|||
| 
								 | 
							
									return Object.prototype.toString.call(object) === '[object Object]'
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 判断是否为对象
							 | 
						|||
| 
								 | 
							
								 * @param {*} array
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function isArray(array) {
							 | 
						|||
| 
								 | 
							
									return Object.prototype.toString.call(array) === '[object Array]'
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 判断是否为空
							 | 
						|||
| 
								 | 
							
								 * @param {*} object 源对象
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function isEmpty(value) {
							 | 
						|||
| 
								 | 
							
									if (isArray(value)) {
							 | 
						|||
| 
								 | 
							
										return value.length === 0
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									if (isObject(value)) {
							 | 
						|||
| 
								 | 
							
										return isEmptyObject(value)
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return !value
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 判断是否在数组中
							 | 
						|||
| 
								 | 
							
								 * @param {*} search
							 | 
						|||
| 
								 | 
							
								 * @param {*} array
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function inArray(search, array) {
							 | 
						|||
| 
								 | 
							
									return array.includes(search)
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 获取指定天数的日期
							 | 
						|||
| 
								 | 
							
								 * @param day
							 | 
						|||
| 
								 | 
							
								 * @returns {string}
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function getDateByDay(day) {
							 | 
						|||
| 
								 | 
							
									var today = new Date()
							 | 
						|||
| 
								 | 
							
									var targetdaySeconds = today.getTime() + 1000 * 60 * 60 * 24 * day
							 | 
						|||
| 
								 | 
							
									today.setTime(targetdaySeconds) // 注意,这行是关键代码
							 | 
						|||
| 
								 | 
							
									return today.getFullYear() + '-' + zeroFillLeft(today.getMonth() + 1) + '-' + zeroFillLeft(today.getDate())
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 左侧补0
							 | 
						|||
| 
								 | 
							
								 * @param value
							 | 
						|||
| 
								 | 
							
								 * @returns {*}
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function zeroFillLeft(value) {
							 | 
						|||
| 
								 | 
							
									return (value.toString().length === 1) ? ('0' + value) : value
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 批量给指定对象赋值
							 | 
						|||
| 
								 | 
							
								 * @param obj obj 指定的对象,一般为vue实例
							 | 
						|||
| 
								 | 
							
								 * @param obj assignment 赋值的元素 { a: '123' }
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function assignment(obj, assignment) {
							 | 
						|||
| 
								 | 
							
									Object.keys(assignment).forEach(key => {
							 | 
						|||
| 
								 | 
							
										obj[key] = assignment[key]
							 | 
						|||
| 
								 | 
							
									})
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 对象转URL
							 | 
						|||
| 
								 | 
							
								 * @param {object} obj
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export const urlEncode = (obj = {}) => {
							 | 
						|||
| 
								 | 
							
									const result = []
							 | 
						|||
| 
								 | 
							
									for (const key in obj) {
							 | 
						|||
| 
								 | 
							
										const item = obj[key]
							 | 
						|||
| 
								 | 
							
										if (!item) {
							 | 
						|||
| 
								 | 
							
											continue
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										if (isArray(item)) {
							 | 
						|||
| 
								 | 
							
											item.forEach(val => {
							 | 
						|||
| 
								 | 
							
												result.push(key + '=' + val)
							 | 
						|||
| 
								 | 
							
											})
							 | 
						|||
| 
								 | 
							
										} else {
							 | 
						|||
| 
								 | 
							
											result.push(key + '=' + item)
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return result.join('&')
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export const formatTime = date => {
							 | 
						|||
| 
								 | 
							
									const year = date.getFullYear()
							 | 
						|||
| 
								 | 
							
									const month = date.getMonth() + 1
							 | 
						|||
| 
								 | 
							
									const day = date.getDate()
							 | 
						|||
| 
								 | 
							
									const hour = date.getHours()
							 | 
						|||
| 
								 | 
							
									const minute = date.getMinutes()
							 | 
						|||
| 
								 | 
							
									const second = date.getSeconds()
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 生成url (带参数)
							 | 
						|||
| 
								 | 
							
								 * @param {string} path 链接
							 | 
						|||
| 
								 | 
							
								 * @param {object} params query参数
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								export function buildUrL(path, params) {
							 | 
						|||
| 
								 | 
							
									const queryStr = urlEncode(params)
							 | 
						|||
| 
								 | 
							
									if (!isEmpty(queryStr)) {
							 | 
						|||
| 
								 | 
							
										return path + '?' + queryStr
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return path
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								const RFC4122_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// export function uuid(placeholder) {
							 | 
						|||
| 
								 | 
							
								//   return RFC4122_TEMPLATE.replace(/[xy]/g, function () {
							 | 
						|||
| 
								 | 
							
								//     let value = random(15)
							 | 
						|||
| 
								 | 
							
								//     value = placeholder === 'x' ? value : (value & 0x3 | 0x8)
							 | 
						|||
| 
								 | 
							
								//     return value.toString(16)
							 | 
						|||
| 
								 | 
							
								//   })
							 | 
						|||
| 
								 | 
							
								// }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function Base64_Encode(str) { // base64转换
							 | 
						|||
| 
								 | 
							
									let c1, c2, c3;
							 | 
						|||
| 
								 | 
							
									let base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
							 | 
						|||
| 
								 | 
							
									let i = 0;
							 | 
						|||
| 
								 | 
							
									let len = str.length;
							 | 
						|||
| 
								 | 
							
									let string = '';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									while (i < len) {
							 | 
						|||
| 
								 | 
							
										c1 = str.charCodeAt(i++) & 0xff;
							 | 
						|||
| 
								 | 
							
										if (i === len) {
							 | 
						|||
| 
								 | 
							
											string += base64EncodeChars.charAt(c1 >> 2);
							 | 
						|||
| 
								 | 
							
											string += base64EncodeChars.charAt((c1 & 0x3) << 4);
							 | 
						|||
| 
								 | 
							
											string += "==";
							 | 
						|||
| 
								 | 
							
											break;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										c2 = str.charCodeAt(i++);
							 | 
						|||
| 
								 | 
							
										if (i === len) {
							 | 
						|||
| 
								 | 
							
											string += base64EncodeChars.charAt(c1 >> 2);
							 | 
						|||
| 
								 | 
							
											string += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
							 | 
						|||
| 
								 | 
							
											string += base64EncodeChars.charAt((c2 & 0xF) << 2);
							 | 
						|||
| 
								 | 
							
											string += "=";
							 | 
						|||
| 
								 | 
							
											break;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										c3 = str.charCodeAt(i++);
							 | 
						|||
| 
								 | 
							
										string += base64EncodeChars.charAt(c1 >> 2);
							 | 
						|||
| 
								 | 
							
										string += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
							 | 
						|||
| 
								 | 
							
										string += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
							 | 
						|||
| 
								 | 
							
										string += base64EncodeChars.charAt(c3 & 0x3F);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return string;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function guid() {
							 | 
						|||
| 
								 | 
							
									function S4() {
							 | 
						|||
| 
								 | 
							
										return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1)
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4();
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function extend(obj1, obj2) {
							 | 
						|||
| 
								 | 
							
									if (typeof(obj2) === 'object')
							 | 
						|||
| 
								 | 
							
										for (let p in obj2) obj1[p] = obj2[p];
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function extendRule(obj, filed, op, value, isSysParam) { //查询条件
							 | 
						|||
| 
								 | 
							
									let data = {};
							 | 
						|||
| 
								 | 
							
									if (value === null) {
							 | 
						|||
| 
								 | 
							
										value = '';
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									data['Field'] = filed;
							 | 
						|||
| 
								 | 
							
									data['Operate'] = op;
							 | 
						|||
| 
								 | 
							
									data['Value'] = isSysParam ? value.toString() : value;
							 | 
						|||
| 
								 | 
							
									if (isSysParam) {
							 | 
						|||
| 
								 | 
							
										data["IsSysParamRule"] = true;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (!obj.FilterGroup) {
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup = {};
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									if (!obj.FilterGroup.Rules) {
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup.Rules = [];
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									obj.FilterGroup.Rules.push(data);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function initFilterGroup(IsAnd = true) {
							 | 
						|||
| 
								 | 
							
									return {
							 | 
						|||
| 
								 | 
							
										IsAnd,
							 | 
						|||
| 
								 | 
							
										Rules: [],
							 | 
						|||
| 
								 | 
							
										Groups: [],
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function extendFilterGroup(obj, obj2) {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (!obj.FilterGroup) {
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup = {};
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									if (!obj.FilterGroup.Groups) {
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup.Groups = [];
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									obj.FilterGroup.Groups.push(obj2);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function extendChildGroup(obj, obj2) {
							 | 
						|||
| 
								 | 
							
									if (!obj.Groups) {
							 | 
						|||
| 
								 | 
							
										obj.Groups = [];
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									obj.Groups.push(obj2);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function extendGroupRule(obj, filed, op, value, isSysParam) { //查询条件
							 | 
						|||
| 
								 | 
							
									let data = {};
							 | 
						|||
| 
								 | 
							
									if (value === null) {
							 | 
						|||
| 
								 | 
							
										value = '';
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									data['Field'] = filed;
							 | 
						|||
| 
								 | 
							
									data['Operate'] = op;
							 | 
						|||
| 
								 | 
							
									data['Value'] = isSysParam ? value.toString() : value;
							 | 
						|||
| 
								 | 
							
									if (isSysParam) {
							 | 
						|||
| 
								 | 
							
										data["IsSysParamRule"] = true;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (!obj.Rules) {
							 | 
						|||
| 
								 | 
							
										obj.Rules = [];
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									obj.Rules.push(data);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function initQueryFilter(OrgId, PageIndex, Limit, Sort, Order) {
							 | 
						|||
| 
								 | 
							
									return {
							 | 
						|||
| 
								 | 
							
										OrgId,
							 | 
						|||
| 
								 | 
							
										PageIndex,
							 | 
						|||
| 
								 | 
							
										Limit,
							 | 
						|||
| 
								 | 
							
										Start: (PageIndex - 1) * Limit,
							 | 
						|||
| 
								 | 
							
										Sort,
							 | 
						|||
| 
								 | 
							
										Order: (Order === '' ? 0 : Order),
							 | 
						|||
| 
								 | 
							
										RuleCount: 0,
							 | 
						|||
| 
								 | 
							
										IncludeCount: 0,
							 | 
						|||
| 
								 | 
							
										OrderCount: 0,
							 | 
						|||
| 
								 | 
							
										FilterGroupCount: 0,
							 | 
						|||
| 
								 | 
							
										Include: [],
							 | 
						|||
| 
								 | 
							
										Orders: [],
							 | 
						|||
| 
								 | 
							
										FilterGroup: {
							 | 
						|||
| 
								 | 
							
											Rules: [],
							 | 
						|||
| 
								 | 
							
											Groups: []
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									};
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function initFilter(OrgId, Keyword = "", Sort, Order, PageIndex = 1, Parameter1, Parameter2, Parameter3,
							 | 
						|||
| 
								 | 
							
									Parameter4, Parameter5, Parameter6) {
							 | 
						|||
| 
								 | 
							
									return {
							 | 
						|||
| 
								 | 
							
										Keyword,
							 | 
						|||
| 
								 | 
							
										Parameter1,
							 | 
						|||
| 
								 | 
							
										Parameter2,
							 | 
						|||
| 
								 | 
							
										Parameter3,
							 | 
						|||
| 
								 | 
							
										Parameter4,
							 | 
						|||
| 
								 | 
							
										Parameter5,
							 | 
						|||
| 
								 | 
							
										Parameter6,
							 | 
						|||
| 
								 | 
							
										OrgId,
							 | 
						|||
| 
								 | 
							
										PageIndex,
							 | 
						|||
| 
								 | 
							
										Limit: 10,
							 | 
						|||
| 
								 | 
							
										Start: (PageIndex - 1) * 10,
							 | 
						|||
| 
								 | 
							
										Sort,
							 | 
						|||
| 
								 | 
							
										Order: (Order === '' ? 0 : Order),
							 | 
						|||
| 
								 | 
							
										RuleCount: 0,
							 | 
						|||
| 
								 | 
							
										IncludeCount: 0,
							 | 
						|||
| 
								 | 
							
										OrderCount: 0,
							 | 
						|||
| 
								 | 
							
										FilterGroupCount: 0,
							 | 
						|||
| 
								 | 
							
										Include: [],
							 | 
						|||
| 
								 | 
							
										Orders: [],
							 | 
						|||
| 
								 | 
							
										FilterGroup: {
							 | 
						|||
| 
								 | 
							
											Rules: [],
							 | 
						|||
| 
								 | 
							
											Groups: []
							 | 
						|||
| 
								 | 
							
										},
							 | 
						|||
| 
								 | 
							
										SelectField: [],
							 | 
						|||
| 
								 | 
							
										DataRule: [],
							 | 
						|||
| 
								 | 
							
										IgnoreDataRule: false
							 | 
						|||
| 
								 | 
							
									};
							 | 
						|||
| 
								 | 
							
									// let params = $("#search-form").elFilterParam();
							 | 
						|||
| 
								 | 
							
									// extend(json, params);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function extendInclude(obj, clude) {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (!obj.Include) {
							 | 
						|||
| 
								 | 
							
										obj.Include = [];
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									obj.Include.push(clude);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//wyw 添加 子表过滤条件
							 | 
						|||
| 
								 | 
							
								export function extendFilterGroupGroupRules(obj, filed, op, value, isSysParam) { //查询条件
							 | 
						|||
| 
								 | 
							
									let data = {};
							 | 
						|||
| 
								 | 
							
									if (value === null) {
							 | 
						|||
| 
								 | 
							
										value = '';
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									data['Field'] = filed;
							 | 
						|||
| 
								 | 
							
									data['Operate'] = op;
							 | 
						|||
| 
								 | 
							
									data['Value'] = isSysParam ? value.toString() : value;
							 | 
						|||
| 
								 | 
							
									if (isSysParam) {
							 | 
						|||
| 
								 | 
							
										data["IsSysParamRule"] = true;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									if (!obj.FilterGroup) {
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup = {};
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									if (!obj.FilterGroup.Groups) {
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup.Groups = [];
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (obj.FilterGroup.Groups.length == 0) {
							 | 
						|||
| 
								 | 
							
										let groupGroup = initFilterGroup(false)
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup.Groups.push(groupGroup)
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if (!obj.FilterGroup.Groups[0].Rules) {
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup.Groups[0].Groups = [];
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup.Groups[0].Rules = [];
							 | 
						|||
| 
								 | 
							
										obj.FilterGroup.Groups[0].IsAnd = false;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									obj.FilterGroup.Groups[0].Rules.push(data);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function extendOrder(obj, filed, order) {
							 | 
						|||
| 
								 | 
							
									var data = {};
							 | 
						|||
| 
								 | 
							
									data["Field"] = filed;
							 | 
						|||
| 
								 | 
							
									data["Order"] = order;
							 | 
						|||
| 
								 | 
							
									if (!obj.Orders) {
							 | 
						|||
| 
								 | 
							
										obj.Orders = [];
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									obj.Orders.push(data);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								export function extendIgnoreDataRule(obj) {
							 | 
						|||
| 
								 | 
							
									obj.IgnoreDataRule = true
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function trim(str) { // ?
							 | 
						|||
| 
								 | 
							
									for (var i = 0; i < str.length && str.charAt(i) == "  "; i++)
							 | 
						|||
| 
								 | 
							
									;
							 | 
						|||
| 
								 | 
							
									for (var j = str.length; j > 0 && str.charAt(j - 1) == "  "; j--)
							 | 
						|||
| 
								 | 
							
									;
							 | 
						|||
| 
								 | 
							
									if (i > j)
							 | 
						|||
| 
								 | 
							
										return "";
							 | 
						|||
| 
								 | 
							
									return str.substring(i, j);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function empty(v, allowZero) {
							 | 
						|||
| 
								 | 
							
									if (v === "null" || v === undefined || v === "") return true;
							 | 
						|||
| 
								 | 
							
									switch (typeof v) {
							 | 
						|||
| 
								 | 
							
										case 'undefined':
							 | 
						|||
| 
								 | 
							
											return true;
							 | 
						|||
| 
								 | 
							
										case 'string':
							 | 
						|||
| 
								 | 
							
											if (trim(v).length == 0)
							 | 
						|||
| 
								 | 
							
												return true;
							 | 
						|||
| 
								 | 
							
											break;
							 | 
						|||
| 
								 | 
							
										case 'boolean':
							 | 
						|||
| 
								 | 
							
											if (!v)
							 | 
						|||
| 
								 | 
							
												return true;
							 | 
						|||
| 
								 | 
							
											break;
							 | 
						|||
| 
								 | 
							
										case 'number':
							 | 
						|||
| 
								 | 
							
											if (0 === v && !allowZero)
							 | 
						|||
| 
								 | 
							
												return true;
							 | 
						|||
| 
								 | 
							
											break;
							 | 
						|||
| 
								 | 
							
										case 'object':
							 | 
						|||
| 
								 | 
							
											if (null === v)
							 | 
						|||
| 
								 | 
							
												return true;
							 | 
						|||
| 
								 | 
							
											if (undefined !== v.length && v.length == 0)
							 | 
						|||
| 
								 | 
							
												return true;
							 | 
						|||
| 
								 | 
							
											for (var k in v) {
							 | 
						|||
| 
								 | 
							
												return false;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											return true;
							 | 
						|||
| 
								 | 
							
										default:
							 | 
						|||
| 
								 | 
							
											return false;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function strConvert(target, def) { // 点字符串转对象
							 | 
						|||
| 
								 | 
							
									// str为需要转换的值, def为有固定的最后一个属性值
							 | 
						|||
| 
								 | 
							
									let splitFiles = target.split('.');
							 | 
						|||
| 
								 | 
							
									let str = '';
							 | 
						|||
| 
								 | 
							
									let len = splitFiles.length;
							 | 
						|||
| 
								 | 
							
									splitFiles.forEach(item => {
							 | 
						|||
| 
								 | 
							
										str += '{\"' + item + '\":'
							 | 
						|||
| 
								 | 
							
									});
							 | 
						|||
| 
								 | 
							
									str += "" + def + ""
							 | 
						|||
| 
								 | 
							
									for (let j = 0; j < len; j++) {
							 | 
						|||
| 
								 | 
							
										str += '}'
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									let mat = JSON.parse(str);
							 | 
						|||
| 
								 | 
							
									return mat
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//仅仅获取对象的基础属性,不包含属性中的对象
							 | 
						|||
| 
								 | 
							
								export function getOnlyPropertyData(data, isGetSysParam) {
							 | 
						|||
| 
								 | 
							
									let result = {};
							 | 
						|||
| 
								 | 
							
									Object.keys(data).forEach((n) => {
							 | 
						|||
| 
								 | 
							
										if (n.indexOf('.') !== -1) return;
							 | 
						|||
| 
								 | 
							
										if (isGetSysParam && n === 'Nav_SysParams') {
							 | 
						|||
| 
								 | 
							
											result[n] = data[n];
							 | 
						|||
| 
								 | 
							
										} else if (Array.isArray(data[n])) {
							 | 
						|||
| 
								 | 
							
											result[n] = data[n];
							 | 
						|||
| 
								 | 
							
										} else if (typeof(data[n]) !== "object") {
							 | 
						|||
| 
								 | 
							
											result[n] = data[n];
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									});
							 | 
						|||
| 
								 | 
							
									return result;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//仅仅获取对象的基础属性及列表,不包含属性中的对象
							 | 
						|||
| 
								 | 
							
								export function getPropertyData(data, isSetDelete) {
							 | 
						|||
| 
								 | 
							
									let result = {};
							 | 
						|||
| 
								 | 
							
									Object.keys(data).forEach((n) => {
							 | 
						|||
| 
								 | 
							
										if (n.indexOf('.') != -1) return;
							 | 
						|||
| 
								 | 
							
										if (typeof(data[n]) !== "object") {
							 | 
						|||
| 
								 | 
							
											result[n] = data[n];
							 | 
						|||
| 
								 | 
							
										} else if (data[n] && data[n].length) {
							 | 
						|||
| 
								 | 
							
											const array = [];
							 | 
						|||
| 
								 | 
							
											data[n].forEach(nx => {
							 | 
						|||
| 
								 | 
							
												const d = getPropertyData(nx, isSetDelete);
							 | 
						|||
| 
								 | 
							
												array.push(d);
							 | 
						|||
| 
								 | 
							
											});
							 | 
						|||
| 
								 | 
							
											result[n] = array;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										if (isSetDelete) {
							 | 
						|||
| 
								 | 
							
											result['IS_DELETED'] = true;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									});
							 | 
						|||
| 
								 | 
							
									return result;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 取导航属性的最后一个字段
							 | 
						|||
| 
								 | 
							
								export function dataIndexName(field) {
							 | 
						|||
| 
								 | 
							
									const valueValid = field ? field.split('.') : [];
							 | 
						|||
| 
								 | 
							
									return valueValid[valueValid.length - 1]
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function splitEnum(str) {
							 | 
						|||
| 
								 | 
							
									let newArr = [];
							 | 
						|||
| 
								 | 
							
									let oArr = str ? str.split(',') : [];
							 | 
						|||
| 
								 | 
							
									oArr.forEach(item => {
							 | 
						|||
| 
								 | 
							
										let n = item.split(':');
							 | 
						|||
| 
								 | 
							
										newArr.push({
							 | 
						|||
| 
								 | 
							
											label: n[0],
							 | 
						|||
| 
								 | 
							
											value: n[1]
							 | 
						|||
| 
								 | 
							
										})
							 | 
						|||
| 
								 | 
							
									});
							 | 
						|||
| 
								 | 
							
									return newArr
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function getDataFieldValueByCol(data, field, defaultValue) {
							 | 
						|||
| 
								 | 
							
									if (!data || !field) return null;
							 | 
						|||
| 
								 | 
							
									let opIndex = field.lastIndexOf('/');
							 | 
						|||
| 
								 | 
							
									let op = 0;
							 | 
						|||
| 
								 | 
							
									if (opIndex === -1) {
							 | 
						|||
| 
								 | 
							
										opIndex = field.indexOf('*');
							 | 
						|||
| 
								 | 
							
										if (opIndex === -1) {
							 | 
						|||
| 
								 | 
							
											opIndex = field.indexOf('+');
							 | 
						|||
| 
								 | 
							
											if (opIndex === -1) {
							 | 
						|||
| 
								 | 
							
												opIndex = field.lastIndexOf('-');
							 | 
						|||
| 
								 | 
							
												if (opIndex !== -1) {
							 | 
						|||
| 
								 | 
							
													op = 2;
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
											} else {
							 | 
						|||
| 
								 | 
							
												op = 1;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										} else {
							 | 
						|||
| 
								 | 
							
											op = 3;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									} else {
							 | 
						|||
| 
								 | 
							
										op = 4;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									let controlValue = null;
							 | 
						|||
| 
								 | 
							
									if (opIndex !== -1) {
							 | 
						|||
| 
								 | 
							
										const leftField = field.substring(0, opIndex);
							 | 
						|||
| 
								 | 
							
										const rightField = field.substring(opIndex + 1);
							 | 
						|||
| 
								 | 
							
										const leftText = getDataFieldValueByCol(data, leftField);
							 | 
						|||
| 
								 | 
							
										const rigthText = getDataFieldValueByCol(data, rightField);
							 | 
						|||
| 
								 | 
							
										if (leftText !== '' && rigthText !== '' && !isNaN(leftText) && !isNaN(rigthText)) {
							 | 
						|||
| 
								 | 
							
											if (op === 1) {
							 | 
						|||
| 
								 | 
							
												controlValue = (+leftText) + (+rigthText);
							 | 
						|||
| 
								 | 
							
											} else if (op === 2) {
							 | 
						|||
| 
								 | 
							
												controlValue = (+leftText) - (+rigthText);
							 | 
						|||
| 
								 | 
							
											} else if (op === 3) {
							 | 
						|||
| 
								 | 
							
												controlValue = (+leftText) * (+rigthText);
							 | 
						|||
| 
								 | 
							
											} else if (op === 3 && (+rigthText) !== 0) {
							 | 
						|||
| 
								 | 
							
												controlValue = (+leftText) / (+rigthText);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									} else {
							 | 
						|||
| 
								 | 
							
										controlValue = getDataFieldValue(data, field, defaultValue);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return controlValue;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function innerGetDataFieldValue(data, field, defaultValue) {
							 | 
						|||
| 
								 | 
							
									if (!data || !field) return null;
							 | 
						|||
| 
								 | 
							
									const valueValid = field ? field.split('.') : [];
							 | 
						|||
| 
								 | 
							
									let controlValue = null;
							 | 
						|||
| 
								 | 
							
									let tmp = {
							 | 
						|||
| 
								 | 
							
										...data
							 | 
						|||
| 
								 | 
							
									};
							 | 
						|||
| 
								 | 
							
									if (tmp) {
							 | 
						|||
| 
								 | 
							
										for (let j = 0; j < valueValid.length; j++) {
							 | 
						|||
| 
								 | 
							
											if (j < valueValid.length - 1) {
							 | 
						|||
| 
								 | 
							
												if (!Array.isArray(tmp)) {
							 | 
						|||
| 
								 | 
							
													if (tmp && tmp.hasOwnProperty(valueValid[j])) {
							 | 
						|||
| 
								 | 
							
														tmp = tmp[valueValid[j]];
							 | 
						|||
| 
								 | 
							
													} else {
							 | 
						|||
| 
								 | 
							
														tmp = null;
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
												} else {
							 | 
						|||
| 
								 | 
							
													let arrayTmp = [];
							 | 
						|||
| 
								 | 
							
													tmp.forEach(item => {
							 | 
						|||
| 
								 | 
							
														if (item && item.hasOwnProperty(valueValid[j])) {
							 | 
						|||
| 
								 | 
							
															arrayTmp.push(item[valueValid[j]]);
							 | 
						|||
| 
								 | 
							
														}
							 | 
						|||
| 
								 | 
							
													})
							 | 
						|||
| 
								 | 
							
													tmp = arrayTmp;
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
											} else {
							 | 
						|||
| 
								 | 
							
												if (!Array.isArray(tmp)) {
							 | 
						|||
| 
								 | 
							
													if (tmp && tmp.hasOwnProperty(valueValid[j])) {
							 | 
						|||
| 
								 | 
							
														controlValue = tmp[valueValid[j]];
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
												} else {
							 | 
						|||
| 
								 | 
							
													controlValue = '';
							 | 
						|||
| 
								 | 
							
													tmp.forEach(item => {
							 | 
						|||
| 
								 | 
							
														controlValue += item[valueValid[j]] + ",";
							 | 
						|||
| 
								 | 
							
													})
							 | 
						|||
| 
								 | 
							
													if (controlValue && controlValue.indexOf(',') > 0) {
							 | 
						|||
| 
								 | 
							
														controlValue = controlValue.substring(0, controlValue.length - 1);
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									if (controlValue == null && defaultValue !== undefined) {
							 | 
						|||
| 
								 | 
							
										return defaultValue;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return controlValue;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function getDataFieldValue(data, field, defaultValue) {
							 | 
						|||
| 
								 | 
							
									if (!data || !field) {
							 | 
						|||
| 
								 | 
							
										if (defaultValue !== undefined) {
							 | 
						|||
| 
								 | 
							
											return defaultValue;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										return null;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									const key = 'Nav_SysParams';
							 | 
						|||
| 
								 | 
							
									const index = field.indexOf(key);
							 | 
						|||
| 
								 | 
							
									if (index === -1) {
							 | 
						|||
| 
								 | 
							
										return innerGetDataFieldValue(data, field, defaultValue);
							 | 
						|||
| 
								 | 
							
									} else {
							 | 
						|||
| 
								 | 
							
										const f1 = index > 0 ? field.substring(0, index - 1) : null;
							 | 
						|||
| 
								 | 
							
										const f2 = field.substring(index + key.length + 1);
							 | 
						|||
| 
								 | 
							
										let temp = null;
							 | 
						|||
| 
								 | 
							
										if (f1) {
							 | 
						|||
| 
								 | 
							
											temp = innerGetDataFieldValue(data, f1);
							 | 
						|||
| 
								 | 
							
										} else {
							 | 
						|||
| 
								 | 
							
											temp = data;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										if (temp) {
							 | 
						|||
| 
								 | 
							
											let sysParams = temp[key];
							 | 
						|||
| 
								 | 
							
											if (sysParams) {
							 | 
						|||
| 
								 | 
							
												let paramRecord = sysParams.filter(t => t.CODE === f2)[0];
							 | 
						|||
| 
								 | 
							
												if (paramRecord) {
							 | 
						|||
| 
								 | 
							
													return paramRecord.VALUE;
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									if (defaultValue !== undefined) {
							 | 
						|||
| 
								 | 
							
										return defaultValue;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return null;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function innerSetDataFieldValue(data, field, value) {
							 | 
						|||
| 
								 | 
							
									let tmp = data;
							 | 
						|||
| 
								 | 
							
									const valueValid = field ? field.split('.') : [];
							 | 
						|||
| 
								 | 
							
									for (let j = 0; j < valueValid.length; j++) {
							 | 
						|||
| 
								 | 
							
										if (j < valueValid.length - 1) {
							 | 
						|||
| 
								 | 
							
											if (!tmp.hasOwnProperty(valueValid[j]) || !tmp[valueValid[j]]) {
							 | 
						|||
| 
								 | 
							
												tmp[valueValid[j]] = {};
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											let tmpData = tmp[valueValid[j]];
							 | 
						|||
| 
								 | 
							
											if (!tmpData) {
							 | 
						|||
| 
								 | 
							
												tmpData = {};
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											tmp = tmpData;
							 | 
						|||
| 
								 | 
							
										} else {
							 | 
						|||
| 
								 | 
							
											tmp[valueValid[j]] = value;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return data;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function setDataFieldValue(data, field, value) {
							 | 
						|||
| 
								 | 
							
									if (!data || !field) return data;
							 | 
						|||
| 
								 | 
							
									const key = 'Nav_SysParams';
							 | 
						|||
| 
								 | 
							
									const index = field.indexOf(key);
							 | 
						|||
| 
								 | 
							
									if (index === -1) {
							 | 
						|||
| 
								 | 
							
										innerSetDataFieldValue(data, field, value);
							 | 
						|||
| 
								 | 
							
									} else {
							 | 
						|||
| 
								 | 
							
										const f1 = index > 0 ? field.substring(0, index - 1) : null;
							 | 
						|||
| 
								 | 
							
										const f2 = field.substring(index + key.length + 1);
							 | 
						|||
| 
								 | 
							
										let temp = null;
							 | 
						|||
| 
								 | 
							
										if (f1) {
							 | 
						|||
| 
								 | 
							
											temp = innerGetDataFieldValue(data, f1);
							 | 
						|||
| 
								 | 
							
											if (!temp) {
							 | 
						|||
| 
								 | 
							
												temp = {};
							 | 
						|||
| 
								 | 
							
												innerSetDataFieldValue(data, f1, temp);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										} else {
							 | 
						|||
| 
								 | 
							
											temp = data;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										let sysParams = temp[key];
							 | 
						|||
| 
								 | 
							
										if (!sysParams) {
							 | 
						|||
| 
								 | 
							
											sysParams = [];
							 | 
						|||
| 
								 | 
							
											temp[key] = sysParams;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										let paramRecord = sysParams.filter(t => t.CODE === f2)[0];
							 | 
						|||
| 
								 | 
							
										if (!paramRecord) {
							 | 
						|||
| 
								 | 
							
											paramRecord = {
							 | 
						|||
| 
								 | 
							
												ID: guid(),
							 | 
						|||
| 
								 | 
							
												CODE: f2,
							 | 
						|||
| 
								 | 
							
												ENTITY_ID: temp.ID,
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											sysParams.push(paramRecord);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										paramRecord.VALUE = value;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return data;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function permissionUtils(login) {
							 | 
						|||
| 
								 | 
							
									const checkPermission = (formId, keyId, type) => {
							 | 
						|||
| 
								 | 
							
										if (login.userType == 99 || !formId) return true; //管理员
							 | 
						|||
| 
								 | 
							
										let hasPermission = false;
							 | 
						|||
| 
								 | 
							
										const currActivatedMenu = login.currActivatedMenu || {}
							 | 
						|||
| 
								 | 
							
										if (login.rolePerm && login.rolePerm.Nav_RolePermForms && login.rolePerm.Nav_RolePermForms
							 | 
						|||
| 
								 | 
							
											.length) { //只要一个角色有权限就有权限
							 | 
						|||
| 
								 | 
							
											/**
							 | 
						|||
| 
								 | 
							
											 * hasPermssion 判断为 true 之后,必须直接赋值为 true,
							 | 
						|||
| 
								 | 
							
											 * 不能用条件判断(比如:hasPermission = matchForm;)去赋值
							 | 
						|||
| 
								 | 
							
											 * 因为一直在循环,满足 if 条件后,可能 hasPermission 又被置为 false 了
							 | 
						|||
| 
								 | 
							
											 */
							 | 
						|||
| 
								 | 
							
											login.rolePerm.Nav_RolePermForms.forEach((n1, i1) => {
							 | 
						|||
| 
								 | 
							
												if (!currActivatedMenu.ID) {
							 | 
						|||
| 
								 | 
							
													hasPermission = true
							 | 
						|||
| 
								 | 
							
												} else {
							 | 
						|||
| 
								 | 
							
													if (n1.PermFormId === formId) {
							 | 
						|||
| 
								 | 
							
														const matchForm = (n1.MenuId === currActivatedMenu.ID || !currActivatedMenu.ID)
							 | 
						|||
| 
								 | 
							
														if (type == 0 && matchForm) { //表单权限
							 | 
						|||
| 
								 | 
							
															hasPermission = true;
							 | 
						|||
| 
								 | 
							
														} else if (type == 1) { //按钮权限
							 | 
						|||
| 
								 | 
							
															if (n1.Nav_Btns && n1.Nav_Btns.length) {
							 | 
						|||
| 
								 | 
							
																n1.Nav_Btns.forEach((n2, i2) => {
							 | 
						|||
| 
								 | 
							
																	const matchBtn = (n2.MenuId === currActivatedMenu.ID || !
							 | 
						|||
| 
								 | 
							
																		currActivatedMenu.ID)
							 | 
						|||
| 
								 | 
							
																	if (n2.BtnId === keyId && matchBtn) {
							 | 
						|||
| 
								 | 
							
																		hasPermission = true;
							 | 
						|||
| 
								 | 
							
																	}
							 | 
						|||
| 
								 | 
							
																});
							 | 
						|||
| 
								 | 
							
															}
							 | 
						|||
| 
								 | 
							
														} else if (type == 2) { //行权限
							 | 
						|||
| 
								 | 
							
															if (n1.Nav_Columns && n1.Nav_Columns.length) {
							 | 
						|||
| 
								 | 
							
																n1.Nav_Columns.forEach((n2, i2) => {
							 | 
						|||
| 
								 | 
							
																	const matchRow = (n2.MenuId === currActivatedMenu.ID || !
							 | 
						|||
| 
								 | 
							
																		currActivatedMenu.ID)
							 | 
						|||
| 
								 | 
							
																	if (n2.ColumnId === keyId && matchRow) {
							 | 
						|||
| 
								 | 
							
																		hasPermission = true;
							 | 
						|||
| 
								 | 
							
																	}
							 | 
						|||
| 
								 | 
							
																});
							 | 
						|||
| 
								 | 
							
															}
							 | 
						|||
| 
								 | 
							
														}
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
											});
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										return hasPermission;
							 | 
						|||
| 
								 | 
							
									};
							 | 
						|||
| 
								 | 
							
									return {
							 | 
						|||
| 
								 | 
							
										checkBtn: (formId, btnId) => {
							 | 
						|||
| 
								 | 
							
											return checkPermission(formId, btnId, 1);
							 | 
						|||
| 
								 | 
							
										},
							 | 
						|||
| 
								 | 
							
										checkColumn: (formId, columnId) => {
							 | 
						|||
| 
								 | 
							
											return checkPermission(formId, columnId, 2);
							 | 
						|||
| 
								 | 
							
										},
							 | 
						|||
| 
								 | 
							
										checkForm: (formId) => {
							 | 
						|||
| 
								 | 
							
											return checkPermission(formId, '', 0);
							 | 
						|||
| 
								 | 
							
										},
							 | 
						|||
| 
								 | 
							
									};
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//根据枚举字符串获取枚举列表
							 | 
						|||
| 
								 | 
							
								export function getEnums(str) {
							 | 
						|||
| 
								 | 
							
									let newArr = {};
							 | 
						|||
| 
								 | 
							
									let oArr = str ? str.split(',') : [];
							 | 
						|||
| 
								 | 
							
									oArr.forEach(item => {
							 | 
						|||
| 
								 | 
							
										let n = item.split(':');
							 | 
						|||
| 
								 | 
							
										newArr[[n[1]]] = n[0];
							 | 
						|||
| 
								 | 
							
									});
							 | 
						|||
| 
								 | 
							
									return newArr
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function getCustomParams(customParamsStr) {
							 | 
						|||
| 
								 | 
							
									const customParams = {};
							 | 
						|||
| 
								 | 
							
									if (customParamsStr && typeof customParamsStr === 'string') {
							 | 
						|||
| 
								 | 
							
										let arrays = customParamsStr.split('|');
							 | 
						|||
| 
								 | 
							
										arrays.forEach(function(n, i) {
							 | 
						|||
| 
								 | 
							
											let paris = n.split("=");
							 | 
						|||
| 
								 | 
							
											if (paris.length >= 2) {
							 | 
						|||
| 
								 | 
							
												customParams[paris[0]] = paris[1];
							 | 
						|||
| 
								 | 
							
											} else {
							 | 
						|||
| 
								 | 
							
												customParams[paris[0]] = null;
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										});
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return customParams;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function getGroupByQueryFields(fields, groups, parentId, parent, list) {
							 | 
						|||
| 
								 | 
							
									if (groups && groups.length) {
							 | 
						|||
| 
								 | 
							
										const tempGroups = groups.filter(t => t.PARENT_ID === parentId);
							 | 
						|||
| 
								 | 
							
										if (tempGroups && tempGroups.length) {
							 | 
						|||
| 
								 | 
							
											tempGroups.forEach(t => {
							 | 
						|||
| 
								 | 
							
												const group = {
							 | 
						|||
| 
								 | 
							
													rules: [],
							 | 
						|||
| 
								 | 
							
													childGroups: [],
							 | 
						|||
| 
								 | 
							
													isAnd: t.RELATION_TYPE !== 1,
							 | 
						|||
| 
								 | 
							
												};
							 | 
						|||
| 
								 | 
							
												if (fields && fields.length) {
							 | 
						|||
| 
								 | 
							
													const tempFields = fields.filter(t1 => t1.USER_C_C_QUERY_GROUP_ID === t.ID);
							 | 
						|||
| 
								 | 
							
													if (tempFields && tempFields.length) {
							 | 
						|||
| 
								 | 
							
														group.rules = getRulesByQueryFields(tempFields, group.childGroups);
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												if (parent) {
							 | 
						|||
| 
								 | 
							
													parent.childGroups.push(group)
							 | 
						|||
| 
								 | 
							
												} else {
							 | 
						|||
| 
								 | 
							
													list.push(group);
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												getGroupByQueryFields(fields, groups, t.ID, group, list);
							 | 
						|||
| 
								 | 
							
											});
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function getRuleAndGroupsByQueryFields(queryFields, queryGroups) {
							 | 
						|||
| 
								 | 
							
									const result = {};
							 | 
						|||
| 
								 | 
							
									if (queryFields != null && queryFields.length) {
							 | 
						|||
| 
								 | 
							
										const sysFields = queryFields.filter(t => !t.USER_C_C_QUERY_GROUP_ID);
							 | 
						|||
| 
								 | 
							
										result.groups = [];
							 | 
						|||
| 
								 | 
							
										result.rules = getRulesByQueryFields(sysFields, result.groups);
							 | 
						|||
| 
								 | 
							
										getGroupByQueryFields(queryFields, queryGroups, null, null, result.groups);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return result;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function locationQuery(query) {
							 | 
						|||
| 
								 | 
							
									if (!query) return {};
							 | 
						|||
| 
								 | 
							
									let querys = query.split('?')[1];
							 | 
						|||
| 
								 | 
							
									let pair = querys.split('&');
							 | 
						|||
| 
								 | 
							
									let obj = {};
							 | 
						|||
| 
								 | 
							
									for (let i = 0; i < pair.length; i++) {
							 | 
						|||
| 
								 | 
							
										let propertys = pair[i].split('=');
							 | 
						|||
| 
								 | 
							
										obj[propertys[0]] = propertys[1]
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return obj;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function addChildGroups(list, group) {
							 | 
						|||
| 
								 | 
							
									if (list && list.length) {
							 | 
						|||
| 
								 | 
							
										list.forEach(t => {
							 | 
						|||
| 
								 | 
							
											const tempGroup = initFilterGroup(t.isAnd);
							 | 
						|||
| 
								 | 
							
											if (t.rules && t.rules.length) {
							 | 
						|||
| 
								 | 
							
												t.rules.forEach(t1 => {
							 | 
						|||
| 
								 | 
							
													extendGroupRule(tempGroup, t1.field, t1.operator, t1.value, t1.isSysParam);
							 | 
						|||
| 
								 | 
							
												});
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											if (t.childGroups && t.childGroups.length) {
							 | 
						|||
| 
								 | 
							
												addChildGroups(t.childGroups, tempGroup);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											extendChildGroup(group, tempGroup);
							 | 
						|||
| 
								 | 
							
										});
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// export function getRandomCode(len) {
							 | 
						|||
| 
								 | 
							
								//   len = len || 32;
							 | 
						|||
| 
								 | 
							
								//   var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678=-*&@#$%!~+,./?\;:|'    /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
							 | 
						|||
| 
								 | 
							
								//   var maxPos = $chars.length;
							 | 
						|||
| 
								 | 
							
								//   var pwd = '';
							 | 
						|||
| 
								 | 
							
								//   for (var i = 0; i < len; i++) {
							 | 
						|||
| 
								 | 
							
								//     pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
							 | 
						|||
| 
								 | 
							
								//   }
							 | 
						|||
| 
								 | 
							
								//   return pwd;
							 | 
						|||
| 
								 | 
							
								// }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function addRuleAndGroups(json, ruleAndGroupJson) {
							 | 
						|||
| 
								 | 
							
									if (json && ruleAndGroupJson) {
							 | 
						|||
| 
								 | 
							
										if (ruleAndGroupJson.rules && ruleAndGroupJson.rules.length) {
							 | 
						|||
| 
								 | 
							
											ruleAndGroupJson.rules.forEach(t => {
							 | 
						|||
| 
								 | 
							
												if (t.isCustom) { //自定义字段
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
													if (t.field.indexOf(',') > -1) //modify by陈昌雨 2020/6/4
							 | 
						|||
| 
								 | 
							
													{
							 | 
						|||
| 
								 | 
							
														var splitFileds = t.field.split(',');
							 | 
						|||
| 
								 | 
							
														let values = null;
							 | 
						|||
| 
								 | 
							
														if (typeof(t.value) === 'number' && t.value !== undefined && t.value != null) {
							 | 
						|||
| 
								 | 
							
															values = t.value.toString().split(',');
							 | 
						|||
| 
								 | 
							
														} else {
							 | 
						|||
| 
								 | 
							
															values = t.value.split(',');
							 | 
						|||
| 
								 | 
							
														}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
														if (splitFileds && values) {
							 | 
						|||
| 
								 | 
							
															splitFileds.forEach((n, i) => {
							 | 
						|||
| 
								 | 
							
																json[n] = values[i];
							 | 
						|||
| 
								 | 
							
															});
							 | 
						|||
| 
								 | 
							
														}
							 | 
						|||
| 
								 | 
							
													} else {
							 | 
						|||
| 
								 | 
							
														json[t.field] = t.value;
							 | 
						|||
| 
								 | 
							
													}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
												} else {
							 | 
						|||
| 
								 | 
							
													extendRule(json, t.field, t.operator, t.value, t.isSysParam);
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
											});
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										if (ruleAndGroupJson.groups && ruleAndGroupJson.groups.length) {
							 | 
						|||
| 
								 | 
							
											ruleAndGroupJson.groups.forEach(t => {
							 | 
						|||
| 
								 | 
							
												const tempGroup = initFilterGroup(t.isAnd);
							 | 
						|||
| 
								 | 
							
												if (t.rules && t.rules.length) {
							 | 
						|||
| 
								 | 
							
													t.rules.forEach(t1 => {
							 | 
						|||
| 
								 | 
							
														extendGroupRule(tempGroup, t1.field, t1.operator, t1.value, t1.isSysParam);
							 | 
						|||
| 
								 | 
							
													});
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												if (t.childGroups && t.childGroups.length) {
							 | 
						|||
| 
								 | 
							
													addChildGroups(t.childGroups, tempGroup);
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												extendFilterGroup(json, tempGroup);
							 | 
						|||
| 
								 | 
							
											});
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										if (ruleAndGroupJson.orgType) {
							 | 
						|||
| 
								 | 
							
											json.OrgType = ruleAndGroupJson.orgType;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										if (ruleAndGroupJson.menuParameter) {
							 | 
						|||
| 
								 | 
							
											json.MenuParameter = ruleAndGroupJson.menuParameter
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function constructStandardTreeData(data, cascader) {
							 | 
						|||
| 
								 | 
							
									data.forEach(item => {
							 | 
						|||
| 
								 | 
							
										const {
							 | 
						|||
| 
								 | 
							
											Node,
							 | 
						|||
| 
								 | 
							
											Children
							 | 
						|||
| 
								 | 
							
										} = item
							 | 
						|||
| 
								 | 
							
										const {
							 | 
						|||
| 
								 | 
							
											NAME,
							 | 
						|||
| 
								 | 
							
											ID
							 | 
						|||
| 
								 | 
							
										} = Node
							 | 
						|||
| 
								 | 
							
										if (cascader) {
							 | 
						|||
| 
								 | 
							
											item.label = NAME
							 | 
						|||
| 
								 | 
							
											item.value = ID
							 | 
						|||
| 
								 | 
							
											Array.isArray(Children) && Children.length && (item.children = Children)
							 | 
						|||
| 
								 | 
							
											for (let key in Node) {
							 | 
						|||
| 
								 | 
							
												item[key] = Node[key]
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										} else {
							 | 
						|||
| 
								 | 
							
											item.title = NAME
							 | 
						|||
| 
								 | 
							
											item.key = ID
							 | 
						|||
| 
								 | 
							
											item.value = ID
							 | 
						|||
| 
								 | 
							
											item.children = Children
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										if (Array.isArray(Children) && Children.length) {
							 | 
						|||
| 
								 | 
							
											constructStandardTreeData(Children, cascader)
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									})
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								// 树搜索
							 | 
						|||
| 
								 | 
							
								// export function flatTreeData(tree = [], data = []) {
							 | 
						|||
| 
								 | 
							
								//   if (Array.isArray(tree) && tree.length) {
							 | 
						|||
| 
								 | 
							
								//     tree.forEach(item => {
							 | 
						|||
| 
								 | 
							
								//       data.push(omit(item, ['children']))
							 | 
						|||
| 
								 | 
							
								//       flatTreeData(item.children, data)
							 | 
						|||
| 
								 | 
							
								//     })
							 | 
						|||
| 
								 | 
							
								//   }
							 | 
						|||
| 
								 | 
							
								// }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function digTreeData(arr, target) {
							 | 
						|||
| 
								 | 
							
									for (let i = 0, j = arr.length; i < j; i++) {
							 | 
						|||
| 
								 | 
							
										if (arr[i].Node && arr[i].Node.ID === target) return arr[i]
							 | 
						|||
| 
								 | 
							
										if (Array.isArray(arr[i].Children) && arr[i].Children.length) {
							 | 
						|||
| 
								 | 
							
											const result = digTreeData(arr[i].Children, target)
							 | 
						|||
| 
								 | 
							
											if (result) return result
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function toFixed(num, base = 2, notCeil = true) {
							 | 
						|||
| 
								 | 
							
									if (typeof num !== 'number') return num
							 | 
						|||
| 
								 | 
							
									let str = num.toFixed(notCeil ? base + 1 : base)
							 | 
						|||
| 
								 | 
							
									base === 0 && notCeil && (str = str.substring(0, str.length - 1)) // 防止出现 120. 这类多一个点的字符串
							 | 
						|||
| 
								 | 
							
									return str.substring(0, notCeil ? str.length - 1 : str.length)
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//排序
							 | 
						|||
| 
								 | 
							
								export function compare(obj1, obj2) {
							 | 
						|||
| 
								 | 
							
									var val1 = obj1.num;
							 | 
						|||
| 
								 | 
							
									var val2 = obj2.num;
							 | 
						|||
| 
								 | 
							
									if (val1 < val2) {
							 | 
						|||
| 
								 | 
							
										return -1;
							 | 
						|||
| 
								 | 
							
									} else if (val1 > val2) {
							 | 
						|||
| 
								 | 
							
										return 1;
							 | 
						|||
| 
								 | 
							
									} else {
							 | 
						|||
| 
								 | 
							
										return 0;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function validUUID(value) {
							 | 
						|||
| 
								 | 
							
									if (!value) return false
							 | 
						|||
| 
								 | 
							
									if (value.toString().split('-').length === 4 && value.toString().length === 32) return true
							 | 
						|||
| 
								 | 
							
									if (value.toString().split('-').length === 5 && value.toString().length === 36) return true
							 | 
						|||
| 
								 | 
							
									return false
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//显示用户签名
							 | 
						|||
| 
								 | 
							
								export function showUsersSign(listUsers, imgHost, width, height) {
							 | 
						|||
| 
								 | 
							
									var result = []
							 | 
						|||
| 
								 | 
							
									if (width == undefined) {
							 | 
						|||
| 
								 | 
							
										width = 200
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									if (height == undefined) {
							 | 
						|||
| 
								 | 
							
										height = 50
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									listUsers = listUsers.sort(function(a, b) {
							 | 
						|||
| 
								 | 
							
										if (a.CREATE_TIME > b.CREATE_TIME) {
							 | 
						|||
| 
								 | 
							
											return 1
							 | 
						|||
| 
								 | 
							
										} else {
							 | 
						|||
| 
								 | 
							
											return -1
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									})
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									// listUsers?.map((item, i) => {
							 | 
						|||
| 
								 | 
							
									// 			if (item.Nav_User != null && item.Nav_User.Nav_UserSignFiles != null && item.Nav_User.Nav_UserSignFiles.length > 0) {
							 | 
						|||
| 
								 | 
							
									// 				result.push( < img width = {
							 | 
						|||
| 
								 | 
							
									// 						width
							 | 
						|||
| 
								 | 
							
									// 					}
							 | 
						|||
| 
								 | 
							
									// 					style = {{margin: "0 0 0 5px",
							 | 
						|||
| 
								 | 
							
									// 							maxHeight: "100px"
							 | 
						|||
| 
								 | 
							
									// 						}
							 | 
						|||
| 
								 | 
							
									// 					}
							 | 
						|||
| 
								 | 
							
									// 					src = {
							 | 
						|||
| 
								 | 
							
									// 						imgHost + item.Nav_User?.Nav_UserSignFiles[0]?.Nav_ImgFile.Nav_File.FILE_PATH
							 | 
						|||
| 
								 | 
							
									// 					}
							 | 
						|||
| 
								 | 
							
									// 					title = {
							 | 
						|||
| 
								 | 
							
									// 						item.Nav_User?.NAME
							 | 
						|||
| 
								 | 
							
									// 					}
							 | 
						|||
| 
								 | 
							
									// 					alt = {
							 | 
						|||
| 
								 | 
							
									// 						item.Nav_User?.NAME
							 | 
						|||
| 
								 | 
							
									// 					}
							 | 
						|||
| 
								 | 
							
									// 					/>)
							 | 
						|||
| 
								 | 
							
									// 				}
							 | 
						|||
| 
								 | 
							
									// 				else {
							 | 
						|||
| 
								 | 
							
									// 					result.push( < img width = {
							 | 
						|||
| 
								 | 
							
									// 							width
							 | 
						|||
| 
								 | 
							
									// 						}
							 | 
						|||
| 
								 | 
							
									// 						style = {
							 | 
						|||
| 
								 | 
							
									// 							{
							 | 
						|||
| 
								 | 
							
									// 								margin: "0 0 0 5px",
							 | 
						|||
| 
								 | 
							
									// 								maxHeight: "100px"
							 | 
						|||
| 
								 | 
							
									// 							}
							 | 
						|||
| 
								 | 
							
									// 						}
							 | 
						|||
| 
								 | 
							
									// 						src = ''
							 | 
						|||
| 
								 | 
							
									// 						title = {
							 | 
						|||
| 
								 | 
							
									// 							item.Nav_User?.NAME
							 | 
						|||
| 
								 | 
							
									// 						}
							 | 
						|||
| 
								 | 
							
									// 						alt = {
							 | 
						|||
| 
								 | 
							
									// 							item.Nav_User?.NAME
							 | 
						|||
| 
								 | 
							
									// 						}
							 | 
						|||
| 
								 | 
							
									// 						/>)
							 | 
						|||
| 
								 | 
							
									// 					}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									// 				})
							 | 
						|||
| 
								 | 
							
									return result
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//显示用户签名
							 | 
						|||
| 
								 | 
							
								export function showUserSign(user, imgHost, width, height) {
							 | 
						|||
| 
								 | 
							
									var result = []
							 | 
						|||
| 
								 | 
							
									if (width == undefined) {
							 | 
						|||
| 
								 | 
							
										width = 200
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									if (height == undefined) {
							 | 
						|||
| 
								 | 
							
										height = 50
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									// height={height}
							 | 
						|||
| 
								 | 
							
									// if (user != null && user.Nav_UserSignFiles != null && user.Nav_UserSignFiles.length > 0) {
							 | 
						|||
| 
								 | 
							
									// result.push( < img width = {
							 | 
						|||
| 
								 | 
							
									// 		width
							 | 
						|||
| 
								 | 
							
									// 	}
							 | 
						|||
| 
								 | 
							
									// 	style = {
							 | 
						|||
| 
								 | 
							
									// 		{
							 | 
						|||
| 
								 | 
							
									// 			margin: "0 0 0 5px",
							 | 
						|||
| 
								 | 
							
									// 			maxHeight: "100px"
							 | 
						|||
| 
								 | 
							
									// 		}
							 | 
						|||
| 
								 | 
							
									// 	}
							 | 
						|||
| 
								 | 
							
									// 	src = {
							 | 
						|||
| 
								 | 
							
									// 		imgHost + user?.Nav_UserSignFiles[0]?.Nav_ImgFile.Nav_File.FILE_PATH
							 | 
						|||
| 
								 | 
							
									// 	}
							 | 
						|||
| 
								 | 
							
									// 	title = {
							 | 
						|||
| 
								 | 
							
									// 		user.NAME
							 | 
						|||
| 
								 | 
							
									// 	}
							 | 
						|||
| 
								 | 
							
									// 	alt = {
							 | 
						|||
| 
								 | 
							
									// 		user.NAME
							 | 
						|||
| 
								 | 
							
									// 	}
							 | 
						|||
| 
								 | 
							
									// 	/>)
							 | 
						|||
| 
								 | 
							
									// }
							 | 
						|||
| 
								 | 
							
									// else {
							 | 
						|||
| 
								 | 
							
									// 	result.push( < img width = {
							 | 
						|||
| 
								 | 
							
									// 			width
							 | 
						|||
| 
								 | 
							
									// 		}
							 | 
						|||
| 
								 | 
							
									// 		style = {
							 | 
						|||
| 
								 | 
							
									// 			{
							 | 
						|||
| 
								 | 
							
									// 				margin: "0 0 0 5px",
							 | 
						|||
| 
								 | 
							
									// 				maxHeight: "100px"
							 | 
						|||
| 
								 | 
							
									// 			}
							 | 
						|||
| 
								 | 
							
									// 		}
							 | 
						|||
| 
								 | 
							
									// 		src = ''
							 | 
						|||
| 
								 | 
							
									// 		title = {
							 | 
						|||
| 
								 | 
							
									// 			user.NAME
							 | 
						|||
| 
								 | 
							
									// 		}
							 | 
						|||
| 
								 | 
							
									// 		alt = {
							 | 
						|||
| 
								 | 
							
									// 			user.NAME
							 | 
						|||
| 
								 | 
							
									// 		}
							 | 
						|||
| 
								 | 
							
									// 		/>)
							 | 
						|||
| 
								 | 
							
									// 	}
							 | 
						|||
| 
								 | 
							
									return result
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//判断是PC还是移动端
							 | 
						|||
| 
								 | 
							
								export function getIsPC() {
							 | 
						|||
| 
								 | 
							
									if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/WebOS/i) || navigator
							 | 
						|||
| 
								 | 
							
										.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent
							 | 
						|||
| 
								 | 
							
										.match(/iPod/i) || navigator.userAgent.match(/Windows Phone/i)) {
							 | 
						|||
| 
								 | 
							
										return false
							 | 
						|||
| 
								 | 
							
									} else {
							 | 
						|||
| 
								 | 
							
										return true
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//task未空的onBeforeSaveHandleRecord事件日志
							 | 
						|||
| 
								 | 
							
								export function onBeforeSaveHandleRecordLog(params, formCode, title) {
							 | 
						|||
| 
								 | 
							
									if (params.data.TaskID == '00000000-0000-0000-0000-000000000000' || params.data.id ==
							 | 
						|||
| 
								 | 
							
										'00000000-0000-0000-0000-000000000000') {
							 | 
						|||
| 
								 | 
							
										var orgId = params.login.OrgId; //登录后有存储登录信息
							 | 
						|||
| 
								 | 
							
										let json = initFilter(orgId, null, null, null, null, formCode, title, params.data.TaskID,
							 | 
						|||
| 
								 | 
							
											" params.pageCode:[" + params.pageCode + "] params.data.id:[" + params.data.id +
							 | 
						|||
| 
								 | 
							
											"] UserId:[" + params.login.loginInfo.User.ID + "] params.data.taskCode: [" + params
							 | 
						|||
| 
								 | 
							
											.data.taskCode + "] homeReload: [" + params.data.homeReload + "]");
							 | 
						|||
| 
								 | 
							
										params.dispatch({
							 | 
						|||
| 
								 | 
							
											type: 'app/getDataByPost',
							 | 
						|||
| 
								 | 
							
											url: 'PF/PFSysLog/addLog',
							 | 
						|||
| 
								 | 
							
											payload: json,
							 | 
						|||
| 
								 | 
							
											onlyData: false,
							 | 
						|||
| 
								 | 
							
											onComplete: (ret) => {}
							 | 
						|||
| 
								 | 
							
										})
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//显示附件
							 | 
						|||
| 
								 | 
							
								export function showFiles(Nav_Files, imgHost) {
							 | 
						|||
| 
								 | 
							
									var result = []
							 | 
						|||
| 
								 | 
							
									// Nav_Files && Nav_Files?.map((item, i) => {
							 | 
						|||
| 
								 | 
							
									// 		result.push( < a width = {
							 | 
						|||
| 
								 | 
							
									// 				'20%'
							 | 
						|||
| 
								 | 
							
									// 			}
							 | 
						|||
| 
								 | 
							
									// 			title = {
							 | 
						|||
| 
								 | 
							
									// 				item.Nav_ImgFile.FILE_NAME
							 | 
						|||
| 
								 | 
							
									// 			}
							 | 
						|||
| 
								 | 
							
									// 			target = '_blank'
							 | 
						|||
| 
								 | 
							
									// 			href = {
							 | 
						|||
| 
								 | 
							
									// 				imgHost + item.Nav_ImgFile.Nav_File.FILE_PATH
							 | 
						|||
| 
								 | 
							
									// 			} > {
							 | 
						|||
| 
								 | 
							
									// 				item.Nav_ImgFile.FILE_NAME
							 | 
						|||
| 
								 | 
							
									// 			} < /a>)
							 | 
						|||
| 
								 | 
							
									// 		}) 
							 | 
						|||
| 
								 | 
							
									return result
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function ShowDateTime(datetime, fmt) {
							 | 
						|||
| 
								 | 
							
									if (datetime == undefined || datetime == null || datetime.length < 1) {
							 | 
						|||
| 
								 | 
							
										return ''
							 | 
						|||
| 
								 | 
							
									} else {
							 | 
						|||
| 
								 | 
							
										if (fmt == undefined || fmt == null || fmt.length < 1)
							 | 
						|||
| 
								 | 
							
											fmt = 'yyyy-MM-dd'
							 | 
						|||
| 
								 | 
							
										return new Date(datetime).Format(fmt)
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function downLoad(imgHost, fileName) {
							 | 
						|||
| 
								 | 
							
									if (fileName) {
							 | 
						|||
| 
								 | 
							
										let link = document.createElement('a')
							 | 
						|||
| 
								 | 
							
										link.href = imgHost + '/' + fileName
							 | 
						|||
| 
								 | 
							
										document.body.appendChild(link)
							 | 
						|||
| 
								 | 
							
										window.open(link)
							 | 
						|||
| 
								 | 
							
									} else {
							 | 
						|||
| 
								 | 
							
										alert('获取参数配置失败!')
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Date.prototype.Format = function(fmt) {
							 | 
						|||
| 
								 | 
							
									var o = {
							 | 
						|||
| 
								 | 
							
										"M+": this.getMonth() + 1, //月份
							 | 
						|||
| 
								 | 
							
										"d+": this.getDate(), //日
							 | 
						|||
| 
								 | 
							
										"H+": this.getHours(), //小时
							 | 
						|||
| 
								 | 
							
										"m+": this.getMinutes(), //分
							 | 
						|||
| 
								 | 
							
										"s+": this.getSeconds(), //秒
							 | 
						|||
| 
								 | 
							
										"q+": Math.floor((this.getMonth() + 3) / 3), //季度
							 | 
						|||
| 
								 | 
							
										"S": this.getMilliseconds() //毫秒
							 | 
						|||
| 
								 | 
							
									};
							 | 
						|||
| 
								 | 
							
									if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 -
							 | 
						|||
| 
								 | 
							
										RegExp.$1.length));
							 | 
						|||
| 
								 | 
							
									for (var k in o)
							 | 
						|||
| 
								 | 
							
										if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1
							 | 
						|||
| 
								 | 
							
											.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
							 | 
						|||
| 
								 | 
							
									return fmt;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								export function ShowPrintClose(props) {
							 | 
						|||
| 
								 | 
							
									if (typeof props.data.onCancel != "undefined" && typeof props.data.onCancel == 'function')
							 | 
						|||
| 
								 | 
							
										props.data.onCancel();
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//附件数据结构转换
							 | 
						|||
| 
								 | 
							
								export function fileStructChange(files) {
							 | 
						|||
| 
								 | 
							
									let result = []
							 | 
						|||
| 
								 | 
							
									files.forEach(e => {
							 | 
						|||
| 
								 | 
							
										result.push({
							 | 
						|||
| 
								 | 
							
											...e,
							 | 
						|||
| 
								 | 
							
											remotePath: e.Nav_ImgFile.Nav_File.FILE_PATH,
							 | 
						|||
| 
								 | 
							
											name: e.Nav_ImgFile.FILE_NAME
							 | 
						|||
| 
								 | 
							
										})
							 | 
						|||
| 
								 | 
							
									})
							 | 
						|||
| 
								 | 
							
									return result
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//查重
							 | 
						|||
| 
								 | 
							
								export function duplicated(array) {
							 | 
						|||
| 
								 | 
							
									for (let j = 0; j < array.length; j++) {
							 | 
						|||
| 
								 | 
							
										if (array.indexOf(array[j]) < array.lastIndexOf(array[j])) {
							 | 
						|||
| 
								 | 
							
											return true
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 |