liyu-pc-base 1.0.158 → 1.0.160
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/utils/function.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.js","sources":["../../src/utils/worker.js?raw","../../src/utils/function.ts"],"sourcesContent":["export default \"const __promises = {};\\nlet __promiseId = 0;\\n\\nself.callHost = (name) => {\\n return (...args) => {\\n const id = __promiseId++;\\n return new Promise((resolve, reject) => {\\n __promises[id] = { resolve, reject };\\n self.postMessage({ __type: 'call', id, name, args });\\n });\\n };\\n};\\n\\nself.onmessage = async (event) => {\\n const { __type, id, result, error } = event.data;\\n\\n if (__type === 'result') {\\n const promise = __promises[id];\\n if (promise) {\\n if (error) {\\n promise.reject(new Error(error));\\n } else {\\n promise.resolve(result);\\n }\\n delete __promises[id];\\n }\\n return;\\n }\\n\\n // This is the initial message to start the work.\\n const params = event.data;\\n try {\\n const runResult = await run(params);\\n self.postMessage({ success: true, data: runResult });\\n } catch (e) {\\n self.postMessage({ success: false, error: e.message });\\n }\\n};\"","import { isNumber } from 'lodash';\nimport { message, Modal } from 'ant-design-vue';\nimport moment from 'moment';\nimport dayjs from 'dayjs';\nimport { getApiData } from 'liyu-pc-base/api/api-model';\nimport workerCode from './worker.js?raw';\nexport const getTime = (time: any) => {\n if (time) {\n time = time.substring(0, 5);\n }\n return time;\n};\nexport const getTime2 = (time: any) => {\n if (time) {\n time = time.substring(11, 16);\n }\n return time;\n};\nexport const getTime3 = (time: any) => {\n if (time) {\n time = time.substring(11, 19);\n }\n return time;\n};\nexport const getMonth = (time: any) => {\n if (time) {\n time = time.substring(0, 7);\n }\n return time;\n};\nexport const getDateMonth = (time: any) => {\n if (time == '1900-01-01') {\n return '期初';\n } else if (time) {\n time = time.substring(0, 4) + '年' + time.substring(5, 7) + '月';\n }\n return time;\n};\n\nexport const getDateYear = (time: any) => {\n if (time == '1900-01-01') {\n return '期初';\n } else if (time) {\n const date = dayjs(time);\n return date.isValid() ? `${date.format('YYYY')}年` : '';\n }\n return time;\n};\nexport const getDate = (time: any) => {\n if (time && new Date().getFullYear().toString() == time.substring(0, 4)) {\n time = time.substring(5, 10);\n } else if (time) {\n time = time.substring(0, 10);\n }\n return time;\n};\nexport const getFullDate = (time: any) => {\n if (time) {\n time = time.substring(0, 10);\n }\n return time;\n};\nexport const getDateTime = (time: any) => {\n if (time && new Date().getFullYear().toString() == time.substring(0, 4)) {\n time = time.substring(5, 16);\n } else if (time) {\n time = time.substring(0, 16);\n }\n return time;\n};\nexport const getFullDateTime = (time: any) => {\n if (time && new Date().getFullYear().toString() == time.substring(0, 4)) {\n time = time.substring(5, 19);\n } else if (time) {\n time = time.substring(0, 19);\n }\n return time;\n};\nexport const getFullYearDateTime = (time: any) => {\n if (time) {\n time = time.substring(0, 19);\n }\n return time;\n};\nexport const toFixed2 = (num: any) => {\n if (isNumber(num)) {\n if (Number(num.toFixed(2)) == 0) {\n return 0;\n } else {\n return num.toFixed(2);\n }\n } else {\n return '';\n }\n};\nexport const toFixed0 = (num: any) => {\n if (isNumber(num)) {\n if (Number(num.toFixed(0)) == 0) {\n return 0;\n } else {\n return num.toFixed(0);\n }\n } else {\n return '';\n }\n};\nexport const toFixed3 = (num: any) => {\n if (isNumber(num)) {\n if (Number(num.toFixed(3)) == 0) {\n return 0;\n } else {\n return num.toFixed(3);\n }\n } else {\n return '';\n }\n};\n// 去掉字符串前后的空格\nexport const trim = (str: any) => {\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n};\nexport const toFixed6 = (num: any) => {\n if (isNumber(num)) {\n if (Number(num.toFixed(6)) == 0) {\n return 0;\n } else {\n return num.toFixed(6);\n }\n } else {\n return '';\n }\n};\n// 转换时分秒\nexport const format_datetime_hh_mm = (second_time: any) => {\n let time: any = second_time;\n if (second_time > 60) {\n let min = second_time / 60;\n time = Math.floor(min) + '分';\n if (min > 60) {\n min = (second_time / 60) % 60;\n let hour = second_time / 60 / 60;\n time = Math.floor(hour) + '小时' + Math.floor(min) + '分';\n if (hour > 24) {\n hour = (second_time / 60 / 60) % 24;\n const day = second_time / 60 / 60 / 24;\n time = Math.floor(day) + '天' + Math.floor(hour) + '小时' + Math.floor(min) + '分';\n }\n }\n } else {\n time = second_time + '秒';\n }\n return time;\n};\n\n// 转换时分秒\nexport const format_ms_hh_mm = milliseconds => {\n const seconds = Math.floor(milliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n const remainingSeconds = seconds % 60;\n const remainingMinutes = minutes % 60;\n\n let formattedTime = '';\n\n if (hours > 0) {\n formattedTime += `${hours.toString().padStart(2, '0')}:`;\n }\n formattedTime += `${remainingMinutes.toString().padStart(2, '0')}:${remainingSeconds\n .toString()\n .padStart(2, '0')}`;\n\n // 只添加毫秒部分如果毫秒数不为0\n if (milliseconds % 1000 !== 0) {\n formattedTime += `.${milliseconds.toString().slice(-2)}`;\n }\n return formattedTime;\n};\n// 字段对应错误————>转化正确\nexport const getObjList = (api_fields: any, record: any) => {\n const obj: any = {};\n for (const key in api_fields) {\n if (record[api_fields[key] as string]) {\n obj[key] = record[api_fields[key] as string];\n }\n }\n return obj;\n};\nexport const getObjListBySelectedRowKeys = (\n api_fields: any,\n dataSource: any[],\n selectedRowKeys: any[],\n) => {\n const obj: any = {};\n for (const key in api_fields) {\n obj[key] = dataSource\n .filter(item => selectedRowKeys.includes(item.id))\n .map(item => item[api_fields[key] as string]);\n }\n return obj;\n};\n// 时间区间格式转化 数组-->字符串\nexport const getRangePicker = (api_fields: any, record: any) => {\n const obj: any = {};\n for (const key in api_fields) {\n if (record[api_fields[key] as string]) {\n obj[key] = record[api_fields[key] as string].join(',');\n }\n }\n return obj;\n};\n\n// 小数转整数--> 过钢量是小数,单位为吨。转化为整数。\nexport const getTon = (kgnum: number) => {\n return Math.floor(kgnum);\n};\n\nexport const get_tag_color_by_slots = ({ column, text }) => {\n const color_list = [\n 'green',\n 'orange',\n 'red',\n 'pink',\n 'cyan',\n 'blue',\n 'purple',\n '#f50',\n '#2db7f5',\n '#87d068',\n '#108ee9',\n ];\n const value_list = Object.keys(column)\n .filter((key: string) => key.indexOf('field_') == 0)\n .map((key: string) => key.replace('field_', ''))\n .sort();\n return color_list[value_list.indexOf(text.toString())];\n};\n\nexport const get_remote_tree_data = (res: any) => {\n const treeData: any = [];\n const search_tree_remote = (item: any, list: []) => {\n list.map((item1: any) => {\n if (item.parent_id == item1.id) {\n if (item1.children == undefined) {\n item1.children = [];\n }\n item1.children.push({\n key: item.id,\n value: item.id,\n title: item.name,\n ...item,\n children: [],\n });\n } else {\n search_tree_remote(item, item1.children);\n }\n });\n };\n res.data.map((item: any) => {\n if (!item.parent_id) {\n treeData.push({\n key: item.id,\n value: item.id,\n title: item.name,\n ...item,\n children: [],\n });\n } else {\n search_tree_remote(item, treeData);\n }\n });\n return treeData;\n};\n\nexport const get_page_tree_data = (res: any) => {\n const treeData: any = [];\n const search_tree = (item: any, list: []) => {\n list.map((item1: any) => {\n if (item.parent_id == item1.id) {\n if (!('children' in item1)) {\n item1.children = [];\n }\n item1.children.push({\n id: item.id,\n name: item.name,\n key: item.id,\n });\n } else {\n if (item1.children != undefined && item1.children.length > 0) {\n search_tree(item, item1.children);\n }\n }\n });\n };\n treeData.push({\n key: 999999,\n name: '全部',\n children: [],\n });\n\n res.data.map((item: any) => {\n if (!item.parent_id) {\n treeData.push({\n id: item.id,\n name: item.name,\n key: item.id,\n children: [],\n });\n } else {\n search_tree(item, treeData);\n }\n });\n treeData.map((item1: any) => {\n if (item1.children.length == 0) {\n delete item1.children;\n }\n });\n return treeData;\n};\n// 浮点数加减 相加:countSum( [ a, b, c ] ) 相减:countSum( [ a, -b, -c ] ) 传参必须是 number\nexport const countSum: (arr: number[]) => number = arr => {\n if (!arr.length) return 0;\n arr = arr.map((v: number) => {\n if (v && !Number.isNaN(Number(v))) return Math.round(v * 10000);\n return 0;\n });\n const result = arr.reduce((prev: number, curr: number) => {\n return prev + curr;\n }, 0);\n return result / 10000;\n};\n\nexport const copyValue = val => {\n let str = '';\n let messages = '复制成功';\n if (val?.message) {\n str = val.val;\n messages = val.message;\n } else {\n str = val;\n }\n const textarea = document.createElement('textarea');\n textarea.setAttribute('readonly', 'readonly');\n textarea.value = str;\n document.body.appendChild(textarea);\n textarea.select();\n if (document.execCommand('copy')) {\n message.info(messages);\n }\n document.body.removeChild(textarea);\n};\n\nexport const filterNullAndEmptyKeys = record => {\n const obj: any = {};\n Object.keys(record).forEach(key => {\n if (record[key] !== null && record[key] !== '' && JSON.stringify(record[key]) !== '[]') {\n obj[key] = record[key];\n }\n });\n return obj;\n};\n\nexport const isNotEmpty = value => {\n return value !== null && value !== undefined && value !== '';\n};\n\nexport const showGroupFormat = (item, format) => {\n if (format == 'getPeriod') {\n item.group_info.display_name = getDateMonth(item.group_info.display_name);\n }\n return item;\n};\n\nexport const customRenderMetaData = ({ record }) => {\n const obj = {\n props: {} as any,\n };\n if (record?.meta_data?.rowSpan != undefined) {\n obj.props.rowSpan = record.meta_data.rowSpan;\n }\n return obj;\n};\n\nexport const isEmpty = value => {\n return value === null || value == undefined || value === '';\n};\n\nexport const convertValueByClassName = (value, class_name) => {\n let new_value;\n if (class_name == 'int') {\n if (isNotEmpty(value) && value instanceof Array) {\n new_value = [];\n value.forEach(item => {\n if (isNotEmpty(item) && typeof item === 'string') {\n new_value.push(Number(item));\n } else {\n new_value.push(item);\n }\n });\n } else if (isNotEmpty(value) && typeof value === 'string') {\n new_value = Number(value);\n } else {\n new_value = value;\n }\n } else if (['bool', 'boolean'].includes(class_name)) {\n new_value = [];\n const true_list = ['true', 'True', 'TRUE', '1', 1, true];\n const false_list = ['false', 'False', 'FALSE', '0', 0, false];\n value.forEach(item => {\n if (true_list.includes(item)) {\n new_value.push(true);\n } else if (false_list.includes(item)) {\n new_value.push(false);\n } else {\n new_value.push(item);\n }\n });\n } else {\n new_value = value;\n }\n return new_value;\n};\n\nexport const get_operator_type_map = (format, operator) => {\n const operator_type_map = {\n between: '介于',\n gt: '大于',\n lt: '小于',\n gte: '大于等于',\n lte: '小于等于',\n in: '包含',\n eq: '等于',\n contains: '包含',\n icontains: '包含',\n startswith: '开头',\n notbetween: '不介于',\n notin: '不包含',\n notcontains: '不包含',\n _eq: '选择',\n not_eq: '不等于',\n not_blank_not_null: '是否非空',\n json_list_not_blank_not_null: '是否非空',\n json_list_is_blank_is_null: '是否为空',\n is_or_not_blank_or_null: '是否为空',\n is_or_not_null: '是否为空',\n };\n if (format == 'input' && operator == 'in') {\n return '等于';\n }\n return operator_type_map[operator];\n};\nexport const nested_sort_list = (list: any) => {\n list.sort((a: any, b: any) => {\n return (a.order || 0) - (b.order || 0);\n });\n list.forEach((item: any) => {\n if (item.children) {\n nested_sort_list(item.children);\n }\n });\n};\n\n// 判断是否为有效日期\nexport const isValidDate = (dateString, format = 'YYYY-MM-DD') => {\n const date = moment(dateString, format, true);\n return date.isValid();\n};\n\nexport const checkCondition = ({\n record,\n conditions,\n dataSource,\n selectedRowKeys,\n}: {\n record?: Object;\n conditions: any;\n dataSource?: any[];\n selectedRowKeys?: any[];\n}) => {\n // 如果条件组为空,直接返回true\n if (!conditions || conditions.length === 0) {\n return true;\n }\n\n // 计算每个条件组的结果\n const groupResults = conditions.map(group => {\n // 如果组内没有条件,返回true\n if (!group || group.length === 0) return true;\n\n // 计算组内每个条件的结果\n const conditionResults = group.map(item => {\n if (!item) return false;\n let record_value = null;\n if (selectedRowKeys instanceof Array) {\n record_value = dataSource\n .filter(_item => selectedRowKeys.includes(_item.id))\n .map(_item => _item[item.flag]);\n } else {\n record_value = record[item.flag];\n }\n let newValue = convertValueByClassName(item.value, item.type);\n\n if (!(newValue instanceof Array)) {\n newValue = [newValue];\n }\n\n // 根据操作符判断条件\n switch (item.operator) {\n case 'lt':\n if (typeof newValue[0] === 'number') {\n return !isEmpty(record_value) && record_value < newValue[0];\n } else if (isValidDate(newValue[0])) {\n return !isEmpty(record_value) && moment(record_value).isBefore(moment(newValue[0]));\n }\n return false;\n\n case 'lte':\n if (typeof newValue[0] === 'number') {\n return !isEmpty(record_value) && record_value <= newValue[0];\n } else if (isValidDate(newValue[0])) {\n return (\n !isEmpty(record_value) &&\n (moment(record_value).isBefore(moment(newValue[0])) ||\n moment(record_value).isSame(moment(newValue[0])))\n );\n }\n return false;\n\n case 'gt':\n if (typeof newValue[0] === 'number') {\n return !isEmpty(record_value) && record_value > newValue[0];\n } else if (isValidDate(newValue[0])) {\n return !isEmpty(record_value) && moment(record_value).isAfter(moment(newValue[0]));\n }\n return false;\n\n case 'gte':\n if (typeof newValue[0] === 'number') {\n return !isEmpty(record_value) && record_value >= newValue[0];\n } else if (isValidDate(newValue[0])) {\n return (\n !isEmpty(record_value) &&\n (moment(record_value).isAfter(moment(newValue[0])) ||\n moment(record_value).isSame(moment(newValue[0])))\n );\n }\n return false;\n\n case 'between':\n if (typeof newValue[0] === 'number' && typeof newValue[1] === 'number') {\n return (\n !isEmpty(record_value) && record_value >= newValue[0] && record_value <= newValue[1]\n );\n } else if (isValidDate(newValue[0]) && isValidDate(newValue[1])) {\n return (\n !isEmpty(record_value) &&\n (moment(record_value).isAfter(moment(newValue[0])) ||\n moment(record_value).isSame(moment(newValue[0]))) &&\n (moment(record_value).isBefore(moment(newValue[1])) ||\n moment(record_value).isSame(moment(newValue[1])))\n );\n }\n return false;\n\n case 'notbetween':\n if (typeof newValue[0] === 'number' && typeof newValue[1] === 'number') {\n return (\n !isEmpty(record_value) && (record_value < newValue[0] || record_value > newValue[1])\n );\n } else if (isValidDate(newValue[0]) && isValidDate(newValue[1])) {\n return (\n !isEmpty(record_value) &&\n (moment(record_value).isBefore(moment(newValue[0])) ||\n moment(record_value).isAfter(moment(newValue[1])))\n );\n }\n return false;\n\n case 'in':\n if (record_value instanceof Array) {\n return newValue.some(x => record_value.includes(x));\n } else {\n return newValue.some(x => record_value == x);\n }\n case 'notin':\n if (record_value instanceof Array) {\n return !newValue.some(x => record_value.includes(x));\n } else {\n return !newValue.some(x => record_value == x);\n }\n case 'eq':\n return record_value === newValue[0];\n case 'not_eq':\n return record_value !== newValue[0];\n\n case 'contains':\n return record_value && record_value.toString().indexOf(newValue[0]) > -1;\n case 'icontains':\n return (\n record_value &&\n record_value.toString().toLowerCase().indexOf(newValue[0].toLowerCase()) > -1\n );\n\n case 'notcontains':\n return !record_value || record_value.toString().indexOf(newValue[0]) === -1;\n case 'noticontains':\n return (\n !record_value ||\n record_value.toString().toLowerCase().indexOf(newValue[0].toLowerCase()) === -1\n );\n\n case 'startswith':\n return record_value && record_value.toString().startsWith(newValue[0]);\n case 'istartswith':\n return (\n record_value &&\n record_value.toString().toLowerCase().startsWith(newValue[0].toLowerCase())\n );\n case 'notstartswith':\n return !record_value || record_value.toString().startsWith(newValue[0]);\n case 'notistartswith':\n return (\n !record_value ||\n record_value.toString().toLowerCase().startsWith(newValue[0].toLowerCase())\n );\n\n case 'json_list_not_blank_not_null':\n case 'not_blank_not_null':\n if (record_value instanceof Array) {\n return record_value.length !== 0;\n } else {\n return !!record_value;\n }\n case 'is_blank':\n case 'json_list_is_blank_is_null':\n if (record_value instanceof Array) {\n return record_value.length === 0;\n } else {\n return !record_value;\n }\n\n default:\n return false;\n }\n });\n\n // 组内条件是与逻辑,所有条件都要满足\n return conditionResults.every(result => result);\n });\n\n // 组间条件是或逻辑,只要有一个组满足条件即可\n return groupResults.some(result => result);\n};\nconst confirm = ({ title, content }) => {\n return new Promise((resolve, reject) => {\n Modal.confirm({\n title: title,\n content: content,\n onOk() {\n resolve(true);\n },\n onCancel() {\n resolve(false);\n },\n });\n });\n};\n// 获取本周周日 日期\nconst getWeekday = (day) => {\n const date = moment(day, 'YYYYMMDD');\n // 计算本周周日(ISO周:周一+6天=周日)\n const sunday = date.clone().isoWeekday(7);\n return sunday.format('YYYY-MM-DD');\n}\n// 根据周日日期 周中日期,返回区间时间列表\nconst getWeekDays = ({ sundayDate, weekdayDate }) => {\n // 解析输入日期(支持YYYY-MM-DD和YYYYMMDD格式)\n const sunday = moment(sundayDate, 'YYYY-MM-DD');\n const targetDay = moment(weekdayDate, 'YYYY-MM-DD');\n // 生成日期序列\n const result = [];\n let currentDay = sunday.clone();\n // 从周日倒推到目标周中日期\n while (currentDay.isSameOrAfter(targetDay, 'day')) {\n result.push({\n weekday: currentDay.format('YYYY-MM-DD'),\n weekName: currentDay.format('dddd') // 自动转换为中文星期名称\n });\n currentDay.subtract(1, 'days');\n }\n return result;\n}\nconst GLOBAL_FUNC_MAP = {\n getApiData,\n confirm,\n getWeekday,\n getWeekDays,\n};\n\nexport const executeScriptInWorker = (\n code: string,\n params: any,\n hostFunctions: { [key: string]: (...args: any[]) => any } = {},\n): Promise<any> => {\n return new Promise((resolve, reject) => {\n const workerScript = `${workerCode} \n ${code}`;\n const blob = new Blob([workerScript], { type: 'application/javascript' });\n const worker = new Worker(URL.createObjectURL(blob));\n\n worker.onmessage = async event => {\n const { __type, id, name, args, success, data, error } = event.data;\n\n if (__type === 'call') {\n const func = hostFunctions[name] || GLOBAL_FUNC_MAP[name];\n if (func) {\n try {\n const result = await func(...args);\n worker.postMessage({ __type: 'result', id, result });\n } catch (e: any) {\n worker.postMessage({ __type: 'result', id, error: e.message });\n }\n } else {\n worker.postMessage({\n __type: 'result',\n id,\n error: `Host function '${name}' not found.`,\n });\n }\n return;\n }\n\n worker.terminate();\n if (success) {\n resolve(data);\n } else {\n reject(new Error(error));\n }\n };\n\n worker.onerror = error => {\n worker.terminate();\n reject(error);\n };\n worker.postMessage(JSON.parse(JSON.stringify(params)));\n });\n};\n"],"names":["workerCode","getTime","time","getTime2","getTime3","getMonth","getDateMonth","getDateYear","date","dayjs","getDate","getFullDate","getDateTime","getFullDateTime","getFullYearDateTime","toFixed2","num","isNumber","toFixed0","toFixed3","trim","str","toFixed6","format_datetime_hh_mm","second_time","min","hour","day","format_ms_hh_mm","milliseconds","seconds","minutes","hours","remainingSeconds","remainingMinutes","formattedTime","getObjList","api_fields","record","obj","key","getObjListBySelectedRowKeys","dataSource","selectedRowKeys","item","getRangePicker","getTon","kgnum","get_tag_color_by_slots","column","text","color_list","value_list","get_remote_tree_data","res","treeData","search_tree_remote","list","item1","get_page_tree_data","search_tree","countSum","arr","v","prev","curr","copyValue","val","messages","textarea","message","filterNullAndEmptyKeys","isNotEmpty","value","showGroupFormat","format","customRenderMetaData","_a","isEmpty","convertValueByClassName","class_name","new_value","true_list","false_list","get_operator_type_map","operator","operator_type_map","nested_sort_list","a","b","isValidDate","dateString","moment","checkCondition","conditions","group","record_value","_item","newValue","x","result","confirm","title","content","resolve","reject","Modal","getWeekday","getWeekDays","sundayDate","weekdayDate","sunday","targetDay","currentDay","GLOBAL_FUNC_MAP","getApiData","executeScriptInWorker","code","params","hostFunctions","workerScript","blob","worker","event","__type","id","name","args","success","data","error","func","e"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"function.js","sources":["../../src/utils/worker.js?raw","../../src/utils/function.ts"],"sourcesContent":["export default \"const __promises = {};\\nlet __promiseId = 0;\\n\\nself.callHost = (name) => {\\n return (...args) => {\\n const id = __promiseId++;\\n return new Promise((resolve, reject) => {\\n __promises[id] = { resolve, reject };\\n self.postMessage({ __type: 'call', id, name, args });\\n });\\n };\\n};\\n\\nself.onmessage = async (event) => {\\n const { __type, id, result, error } = event.data;\\n\\n if (__type === 'result') {\\n const promise = __promises[id];\\n if (promise) {\\n if (error) {\\n promise.reject(new Error(error));\\n } else {\\n promise.resolve(result);\\n }\\n delete __promises[id];\\n }\\n return;\\n }\\n\\n // This is the initial message to start the work.\\n const params = event.data;\\n try {\\n const runResult = await run(params);\\n self.postMessage({ success: true, data: runResult });\\n } catch (e) {\\n self.postMessage({ success: false, error: e.message });\\n }\\n};\"","import { isNumber } from 'lodash';\nimport { message, Modal } from 'ant-design-vue';\nimport moment from 'moment';\nimport dayjs from 'dayjs';\nimport { getApiData } from 'liyu-pc-base/api/api-model';\nimport workerCode from './worker.js?raw';\nexport const getTime = (time: any) => {\n if (time) {\n time = time.substring(0, 5);\n }\n return time;\n};\nexport const getTime2 = (time: any) => {\n if (time) {\n time = time.substring(11, 16);\n }\n return time;\n};\nexport const getTime3 = (time: any) => {\n if (time) {\n time = time.substring(11, 19);\n }\n return time;\n};\nexport const getMonth = (time: any) => {\n if (time) {\n time = time.substring(0, 7);\n }\n return time;\n};\nexport const getDateMonth = (time: any) => {\n if (time == '1900-01-01') {\n return '期初';\n } else if (time) {\n time = time.substring(0, 4) + '年' + time.substring(5, 7) + '月';\n }\n return time;\n};\n\nexport const getDateYear = (time: any) => {\n if (time == '1900-01-01') {\n return '期初';\n } else if (time) {\n const date = dayjs(time);\n return date.isValid() ? `${date.format('YYYY')}年` : '';\n }\n return time;\n};\nexport const getDate = (time: any) => {\n if (time && new Date().getFullYear().toString() == time.substring(0, 4)) {\n time = time.substring(5, 10);\n } else if (time) {\n time = time.substring(0, 10);\n }\n return time;\n};\nexport const getFullDate = (time: any) => {\n if (time) {\n time = time.substring(0, 10);\n }\n return time;\n};\nexport const getDateTime = (time: any) => {\n if (time && new Date().getFullYear().toString() == time.substring(0, 4)) {\n time = time.substring(5, 16);\n } else if (time) {\n time = time.substring(0, 16);\n }\n return time;\n};\nexport const getFullDateTime = (time: any) => {\n if (time && new Date().getFullYear().toString() == time.substring(0, 4)) {\n time = time.substring(5, 19);\n } else if (time) {\n time = time.substring(0, 19);\n }\n return time;\n};\nexport const getFullYearDateTime = (time: any) => {\n if (time) {\n time = time.substring(0, 19);\n }\n return time;\n};\nexport const toFixed2 = (num: any) => {\n if (isNumber(num)) {\n if (Number(num.toFixed(2)) == 0) {\n return 0;\n } else {\n return num.toFixed(2);\n }\n } else {\n return '';\n }\n};\nexport const toFixed0 = (num: any) => {\n if (isNumber(num)) {\n if (Number(num.toFixed(0)) == 0) {\n return 0;\n } else {\n return num.toFixed(0);\n }\n } else {\n return '';\n }\n};\nexport const toFixed3 = (num: any) => {\n if (isNumber(num)) {\n if (Number(num.toFixed(3)) == 0) {\n return 0;\n } else {\n return num.toFixed(3);\n }\n } else {\n return '';\n }\n};\n// 去掉字符串前后的空格\nexport const trim = (str: any) => {\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n};\nexport const toFixed6 = (num: any) => {\n if (isNumber(num)) {\n if (Number(num.toFixed(6)) == 0) {\n return 0;\n } else {\n return num.toFixed(6);\n }\n } else {\n return '';\n }\n};\n// 转换时分秒\nexport const format_datetime_hh_mm = (second_time: any) => {\n let time: any = second_time;\n if (second_time > 60) {\n let min = second_time / 60;\n time = Math.floor(min) + '分';\n if (min > 60) {\n min = (second_time / 60) % 60;\n let hour = second_time / 60 / 60;\n time = Math.floor(hour) + '小时' + Math.floor(min) + '分';\n if (hour > 24) {\n hour = (second_time / 60 / 60) % 24;\n const day = second_time / 60 / 60 / 24;\n time = Math.floor(day) + '天' + Math.floor(hour) + '小时' + Math.floor(min) + '分';\n }\n }\n } else {\n time = second_time + '秒';\n }\n return time;\n};\n\n// 转换时分秒\nexport const format_ms_hh_mm = milliseconds => {\n const seconds = Math.floor(milliseconds / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n const remainingSeconds = seconds % 60;\n const remainingMinutes = minutes % 60;\n\n let formattedTime = '';\n\n if (hours > 0) {\n formattedTime += `${hours.toString().padStart(2, '0')}:`;\n }\n formattedTime += `${remainingMinutes.toString().padStart(2, '0')}:${remainingSeconds\n .toString()\n .padStart(2, '0')}`;\n\n // 只添加毫秒部分如果毫秒数不为0\n if (milliseconds % 1000 !== 0) {\n formattedTime += `.${milliseconds.toString().slice(-2)}`;\n }\n return formattedTime;\n};\n// 字段对应错误————>转化正确\nexport const getObjList = (api_fields: any, record: any) => {\n const obj: any = {};\n for (const key in api_fields) {\n if (record[api_fields[key] as string]) {\n obj[key] = record[api_fields[key] as string];\n }\n }\n return obj;\n};\nexport const getObjListBySelectedRowKeys = (\n api_fields: any,\n dataSource: any[],\n selectedRowKeys: any[],\n) => {\n const obj: any = {};\n for (const key in api_fields) {\n obj[key] = dataSource\n .filter(item => selectedRowKeys.includes(item.id))\n .map(item => item[api_fields[key] as string]);\n }\n return obj;\n};\n// 时间区间格式转化 数组-->字符串\nexport const getRangePicker = (api_fields: any, record: any) => {\n const obj: any = {};\n for (const key in api_fields) {\n if (record[api_fields[key] as string]) {\n obj[key] = record[api_fields[key] as string].join(',');\n }\n }\n return obj;\n};\n\n// 小数转整数--> 过钢量是小数,单位为吨。转化为整数。\nexport const getTon = (kgnum: number) => {\n return Math.floor(kgnum);\n};\n\nexport const get_tag_color_by_slots = ({ column, text }) => {\n const color_list = [\n 'green',\n 'orange',\n 'red',\n 'pink',\n 'cyan',\n 'blue',\n 'purple',\n '#f50',\n '#2db7f5',\n '#87d068',\n '#108ee9',\n ];\n const value_list = Object.keys(column)\n .filter((key: string) => key.indexOf('field_') == 0)\n .map((key: string) => key.replace('field_', ''))\n .sort();\n return color_list[value_list.indexOf(text.toString())];\n};\n\nexport const get_remote_tree_data = (res: any) => {\n const treeData: any = [];\n const search_tree_remote = (item: any, list: []) => {\n list.map((item1: any) => {\n if (item.parent_id == item1.id) {\n if (item1.children == undefined) {\n item1.children = [];\n }\n item1.children.push({\n key: item.id,\n value: item.id,\n title: item.name,\n ...item,\n children: [],\n });\n } else {\n search_tree_remote(item, item1.children);\n }\n });\n };\n res.data.map((item: any) => {\n if (!item.parent_id) {\n treeData.push({\n key: item.id,\n value: item.id,\n title: item.name,\n ...item,\n children: [],\n });\n } else {\n search_tree_remote(item, treeData);\n }\n });\n return treeData;\n};\n\nexport const get_page_tree_data = (res: any) => {\n const treeData: any = [];\n const search_tree = (item: any, list: []) => {\n list.map((item1: any) => {\n if (item.parent_id == item1.id) {\n if (!('children' in item1)) {\n item1.children = [];\n }\n item1.children.push({\n id: item.id,\n name: item.name,\n key: item.id,\n });\n } else {\n if (item1.children != undefined && item1.children.length > 0) {\n search_tree(item, item1.children);\n }\n }\n });\n };\n treeData.push({\n key: 999999,\n name: '全部',\n children: [],\n });\n\n res.data.map((item: any) => {\n if (!item.parent_id) {\n treeData.push({\n id: item.id,\n name: item.name,\n key: item.id,\n children: [],\n });\n } else {\n search_tree(item, treeData);\n }\n });\n treeData.map((item1: any) => {\n if (item1.children.length == 0) {\n delete item1.children;\n }\n });\n return treeData;\n};\n// 浮点数加减 相加:countSum( [ a, b, c ] ) 相减:countSum( [ a, -b, -c ] ) 传参必须是 number\nexport const countSum: (arr: number[]) => number = arr => {\n if (!arr.length) return 0;\n arr = arr.map((v: number) => {\n if (v && !Number.isNaN(Number(v))) return Math.round(v * 10000);\n return 0;\n });\n const result = arr.reduce((prev: number, curr: number) => {\n return prev + curr;\n }, 0);\n return result / 10000;\n};\n\nexport const copyValue = val => {\n let str = '';\n let messages = '复制成功';\n if (val?.message) {\n str = val.val;\n messages = val.message;\n } else {\n str = val;\n }\n const textarea = document.createElement('textarea');\n textarea.setAttribute('readonly', 'readonly');\n textarea.value = str;\n document.body.appendChild(textarea);\n textarea.select();\n if (document.execCommand('copy')) {\n message.info(messages);\n }\n document.body.removeChild(textarea);\n};\n\nexport const filterNullAndEmptyKeys = record => {\n const obj: any = {};\n Object.keys(record).forEach(key => {\n if (record[key] !== null && record[key] !== '' && JSON.stringify(record[key]) !== '[]') {\n obj[key] = record[key];\n }\n });\n return obj;\n};\n\nexport const isNotEmpty = value => {\n return value !== null && value !== undefined && value !== '';\n};\n\nexport const showGroupFormat = (item, format) => {\n if (format == 'getPeriod') {\n item.group_info.display_name = getDateMonth(item.group_info.display_name);\n }\n return item;\n};\n\nexport const customRenderMetaData = ({ record }) => {\n const obj = {\n props: {} as any,\n };\n if (record?.meta_data?.rowSpan != undefined) {\n obj.props.rowSpan = record.meta_data.rowSpan;\n }\n return obj;\n};\n\nexport const isEmpty = value => {\n return value === null || value == undefined || value === '';\n};\n\nexport const convertValueByClassName = (value, class_name) => {\n let new_value;\n if (class_name == 'int') {\n if (isNotEmpty(value) && value instanceof Array) {\n new_value = [];\n value.forEach(item => {\n if (isNotEmpty(item) && typeof item === 'string') {\n new_value.push(Number(item));\n } else {\n new_value.push(item);\n }\n });\n } else if (isNotEmpty(value) && typeof value === 'string') {\n new_value = Number(value);\n } else {\n new_value = value;\n }\n } else if (['bool', 'boolean'].includes(class_name)) {\n new_value = [];\n const true_list = ['true', 'True', 'TRUE', '1', 1, true];\n const false_list = ['false', 'False', 'FALSE', '0', 0, false];\n value.forEach(item => {\n if (true_list.includes(item)) {\n new_value.push(true);\n } else if (false_list.includes(item)) {\n new_value.push(false);\n } else {\n new_value.push(item);\n }\n });\n } else {\n new_value = value;\n }\n return new_value;\n};\n\nexport const get_operator_type_map = (format, operator) => {\n const operator_type_map = {\n between: '介于',\n gt: '大于',\n lt: '小于',\n gte: '大于等于',\n lte: '小于等于',\n in: '包含',\n eq: '等于',\n contains: '包含',\n icontains: '包含',\n startswith: '开头',\n endswith: '结尾',\n istartswith: '开头',\n iendswith: '结尾',\n notbetween: '不介于',\n notin: '不包含',\n notcontains: '不包含',\n _eq: '选择',\n not_eq: '不等于',\n not_blank_not_null: '是否非空',\n json_list_not_blank_not_null: '是否非空',\n json_list_is_blank_is_null: '是否为空',\n is_or_not_blank_or_null: '是否为空',\n is_or_not_null: '是否为空',\n };\n if (format == 'input' && operator == 'in') {\n return '等于';\n }\n return operator_type_map[operator];\n};\nexport const nested_sort_list = (list: any) => {\n list.sort((a: any, b: any) => {\n return (a.order || 0) - (b.order || 0);\n });\n list.forEach((item: any) => {\n if (item.children) {\n nested_sort_list(item.children);\n }\n });\n};\n\n// 判断是否为有效日期\nexport const isValidDate = (dateString, format = 'YYYY-MM-DD') => {\n const date = moment(dateString, format, true);\n return date.isValid();\n};\n\nexport const checkCondition = ({\n record,\n conditions,\n dataSource,\n selectedRowKeys,\n}: {\n record?: Object;\n conditions: any;\n dataSource?: any[];\n selectedRowKeys?: any[];\n}) => {\n // 如果条件组为空,直接返回true\n if (!conditions || conditions.length === 0) {\n return true;\n }\n\n // 计算每个条件组的结果\n const groupResults = conditions.map(group => {\n // 如果组内没有条件,返回true\n if (!group || group.length === 0) return true;\n\n // 计算组内每个条件的结果\n const conditionResults = group.map(item => {\n if (!item) return false;\n let record_value = null;\n if (selectedRowKeys instanceof Array) {\n record_value = dataSource\n .filter(_item => selectedRowKeys.includes(_item.id))\n .map(_item => _item[item.flag]);\n } else {\n record_value = record[item.flag];\n }\n let newValue = convertValueByClassName(item.value, item.type);\n\n if (!(newValue instanceof Array)) {\n newValue = [newValue];\n }\n\n // 根据操作符判断条件\n switch (item.operator) {\n case 'lt':\n if (typeof newValue[0] === 'number') {\n return !isEmpty(record_value) && record_value < newValue[0];\n } else if (isValidDate(newValue[0])) {\n return !isEmpty(record_value) && moment(record_value).isBefore(moment(newValue[0]));\n }\n return false;\n\n case 'lte':\n if (typeof newValue[0] === 'number') {\n return !isEmpty(record_value) && record_value <= newValue[0];\n } else if (isValidDate(newValue[0])) {\n return (\n !isEmpty(record_value) &&\n (moment(record_value).isBefore(moment(newValue[0])) ||\n moment(record_value).isSame(moment(newValue[0])))\n );\n }\n return false;\n\n case 'gt':\n if (typeof newValue[0] === 'number') {\n return !isEmpty(record_value) && record_value > newValue[0];\n } else if (isValidDate(newValue[0])) {\n return !isEmpty(record_value) && moment(record_value).isAfter(moment(newValue[0]));\n }\n return false;\n\n case 'gte':\n if (typeof newValue[0] === 'number') {\n return !isEmpty(record_value) && record_value >= newValue[0];\n } else if (isValidDate(newValue[0])) {\n return (\n !isEmpty(record_value) &&\n (moment(record_value).isAfter(moment(newValue[0])) ||\n moment(record_value).isSame(moment(newValue[0])))\n );\n }\n return false;\n\n case 'between':\n if (typeof newValue[0] === 'number' && typeof newValue[1] === 'number') {\n return (\n !isEmpty(record_value) && record_value >= newValue[0] && record_value <= newValue[1]\n );\n } else if (isValidDate(newValue[0]) && isValidDate(newValue[1])) {\n return (\n !isEmpty(record_value) &&\n (moment(record_value).isAfter(moment(newValue[0])) ||\n moment(record_value).isSame(moment(newValue[0]))) &&\n (moment(record_value).isBefore(moment(newValue[1])) ||\n moment(record_value).isSame(moment(newValue[1])))\n );\n }\n return false;\n\n case 'notbetween':\n if (typeof newValue[0] === 'number' && typeof newValue[1] === 'number') {\n return (\n !isEmpty(record_value) && (record_value < newValue[0] || record_value > newValue[1])\n );\n } else if (isValidDate(newValue[0]) && isValidDate(newValue[1])) {\n return (\n !isEmpty(record_value) &&\n (moment(record_value).isBefore(moment(newValue[0])) ||\n moment(record_value).isAfter(moment(newValue[1])))\n );\n }\n return false;\n\n case 'in':\n if (record_value instanceof Array) {\n return newValue.some(x => record_value.includes(x));\n } else {\n return newValue.some(x => record_value == x);\n }\n case 'notin':\n if (record_value instanceof Array) {\n return !newValue.some(x => record_value.includes(x));\n } else {\n return !newValue.some(x => record_value == x);\n }\n case 'eq':\n return record_value === newValue[0];\n case 'not_eq':\n return record_value !== newValue[0];\n\n case 'contains':\n return record_value && record_value.toString().indexOf(newValue[0]) > -1;\n case 'icontains':\n return (\n record_value &&\n record_value.toString().toLowerCase().indexOf(newValue[0].toLowerCase()) > -1\n );\n\n case 'notcontains':\n return !record_value || record_value.toString().indexOf(newValue[0]) === -1;\n case 'noticontains':\n return (\n !record_value ||\n record_value.toString().toLowerCase().indexOf(newValue[0].toLowerCase()) === -1\n );\n\n case 'startswith':\n return record_value && record_value.toString().startsWith(newValue[0]);\n case 'istartswith':\n return (\n record_value &&\n record_value.toString().toLowerCase().startsWith(newValue[0].toLowerCase())\n );\n case 'notstartswith':\n return !record_value || record_value.toString().startsWith(newValue[0]);\n case 'notistartswith':\n return (\n !record_value ||\n record_value.toString().toLowerCase().startsWith(newValue[0].toLowerCase())\n );\n\n case 'json_list_not_blank_not_null':\n case 'not_blank_not_null':\n if (record_value instanceof Array) {\n return record_value.length !== 0;\n } else {\n return !!record_value;\n }\n case 'is_blank':\n case 'json_list_is_blank_is_null':\n if (record_value instanceof Array) {\n return record_value.length === 0;\n } else {\n return !record_value;\n }\n\n default:\n return false;\n }\n });\n\n // 组内条件是与逻辑,所有条件都要满足\n return conditionResults.every(result => result);\n });\n\n // 组间条件是或逻辑,只要有一个组满足条件即可\n return groupResults.some(result => result);\n};\nconst confirm = ({ title, content }) => {\n return new Promise((resolve, reject) => {\n Modal.confirm({\n title: title,\n content: content,\n onOk() {\n resolve(true);\n },\n onCancel() {\n resolve(false);\n },\n });\n });\n};\n// 获取本周周日 日期\nconst getWeekday = (day) => {\n const date = moment(day, 'YYYYMMDD');\n // 计算本周周日(ISO周:周一+6天=周日)\n const sunday = date.clone().isoWeekday(7);\n return sunday.format('YYYY-MM-DD');\n}\n// 根据周日日期 周中日期,返回区间时间列表\nconst getWeekDays = ({ sundayDate, weekdayDate }) => {\n // 解析输入日期(支持YYYY-MM-DD和YYYYMMDD格式)\n const sunday = moment(sundayDate, 'YYYY-MM-DD');\n const targetDay = moment(weekdayDate, 'YYYY-MM-DD');\n // 生成日期序列\n const result = [];\n let currentDay = sunday.clone();\n // 从周日倒推到目标周中日期\n while (currentDay.isSameOrAfter(targetDay, 'day')) {\n result.push({\n weekday: currentDay.format('YYYY-MM-DD'),\n weekName: currentDay.format('dddd') // 自动转换为中文星期名称\n });\n currentDay.subtract(1, 'days');\n }\n return result;\n}\nconst GLOBAL_FUNC_MAP = {\n getApiData,\n confirm,\n getWeekday,\n getWeekDays,\n};\n\nexport const executeScriptInWorker = (\n code: string,\n params: any,\n hostFunctions: { [key: string]: (...args: any[]) => any } = {},\n): Promise<any> => {\n return new Promise((resolve, reject) => {\n const workerScript = `${workerCode} \n ${code}`;\n const blob = new Blob([workerScript], { type: 'application/javascript' });\n const worker = new Worker(URL.createObjectURL(blob));\n\n worker.onmessage = async event => {\n const { __type, id, name, args, success, data, error } = event.data;\n\n if (__type === 'call') {\n const func = hostFunctions[name] || GLOBAL_FUNC_MAP[name];\n if (func) {\n try {\n const result = await func(...args);\n worker.postMessage({ __type: 'result', id, result });\n } catch (e: any) {\n worker.postMessage({ __type: 'result', id, error: e.message });\n }\n } else {\n worker.postMessage({\n __type: 'result',\n id,\n error: `Host function '${name}' not found.`,\n });\n }\n return;\n }\n\n worker.terminate();\n if (success) {\n resolve(data);\n } else {\n reject(new Error(error));\n }\n };\n\n worker.onerror = error => {\n worker.terminate();\n reject(error);\n };\n worker.postMessage(JSON.parse(JSON.stringify(params)));\n });\n};\n"],"names":["workerCode","getTime","time","getTime2","getTime3","getMonth","getDateMonth","getDateYear","date","dayjs","getDate","getFullDate","getDateTime","getFullDateTime","getFullYearDateTime","toFixed2","num","isNumber","toFixed0","toFixed3","trim","str","toFixed6","format_datetime_hh_mm","second_time","min","hour","day","format_ms_hh_mm","milliseconds","seconds","minutes","hours","remainingSeconds","remainingMinutes","formattedTime","getObjList","api_fields","record","obj","key","getObjListBySelectedRowKeys","dataSource","selectedRowKeys","item","getRangePicker","getTon","kgnum","get_tag_color_by_slots","column","text","color_list","value_list","get_remote_tree_data","res","treeData","search_tree_remote","list","item1","get_page_tree_data","search_tree","countSum","arr","v","prev","curr","copyValue","val","messages","textarea","message","filterNullAndEmptyKeys","isNotEmpty","value","showGroupFormat","format","customRenderMetaData","_a","isEmpty","convertValueByClassName","class_name","new_value","true_list","false_list","get_operator_type_map","operator","operator_type_map","nested_sort_list","a","b","isValidDate","dateString","moment","checkCondition","conditions","group","record_value","_item","newValue","x","result","confirm","title","content","resolve","reject","Modal","getWeekday","getWeekDays","sundayDate","weekdayDate","sunday","targetDay","currentDay","GLOBAL_FUNC_MAP","getApiData","executeScriptInWorker","code","params","hostFunctions","workerScript","blob","worker","event","__type","id","name","args","success","data","error","func","e"],"mappings":"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"}
|