@flast-erp/core 1.0.4
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/README.md +105 -0
- package/dist/DataContext.esm.js +2 -0
- package/dist/DataContext.esm.js.map +1 -0
- package/dist/DataContext.js +2 -0
- package/dist/DataContext.js.map +1 -0
- package/dist/components/index.esm.js +2 -0
- package/dist/components/index.esm.js.map +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -0
- package/dist/configs/index.esm.js +2 -0
- package/dist/configs/index.esm.js.map +1 -0
- package/dist/configs/index.js +2 -0
- package/dist/configs/index.js.map +1 -0
- package/dist/hooks/index.esm.js +2 -0
- package/dist/hooks/index.esm.js.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/index.esm.js +2 -0
- package/dist/utils/index.esm.js.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/configs/localData.js","../../src/configs/index.js","../../src/utils/FuseUtils.js","../../src/DataContext.js","../../src/utils/RequestUtils.js","../../src/hooks/MyHooks.js","../../src/hooks/useDeleteMutation.js","../../src/hooks/useGetList.js","../../src/hooks/useInfinite.js","../../src/utils/jwtService.js","../../src/utils/tools.js","../../src/hooks/useCollapseSidebar.js","../../src/hooks/useData.js","../../src/hooks/useGetIdFromHash.js","../../src/configs/constant.js","../../src/hooks/useGetOneQuery.js","../../src/hooks/useGetRestApi.js","../../src/hooks/useLogin.js","../../src/hooks/useNavigateSearch.js","../../src/hooks/useQueryParams.js","../../src/hooks/useQueryParamsOnHeader.js","../../src/hooks/useServiceId.js"],"sourcesContent":["/**************************************************************************/\n/* localData.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport mapKeys from 'lodash/mapKeys';\n\nexport const ACTIVE_TYPES = [\n {\n value: 2,\n text: 'Kích hoạt',\n color: 'red',\n textColor: \"#ff4d4f\"\n },\n {\n value: 1,\n text: 'Ngưng',\n color: 'green',\n textColor: \"#52c41a\"\n }\n];\n\nexport const IMAGE_TYPES = ['png', 'jpg', 'jpeg', 'gif', 'tif', 'tiff'];\n\nexport const CHANNEL_SOURCE = [\n { 'id': 11, 'name': 'Web' },\n { 'id': 1, 'name': 'Facebook' },\n { 'id': 2, 'name': 'Zalo' },\n { 'id': 3, 'name': 'Hotline' },\n { 'id': 4, 'name': 'Trực tiếp' },\n { 'id': 5, 'name': 'Email' },\n { 'id': 6, 'name': 'MKT0D' },\n { 'id': 7, 'name': 'Giới thiệu' },\n { 'id': 8, 'name': 'Cskh' },\n { 'id': 9, 'name': 'Partner' },\n { 'id': 10, 'name': 'Shopee' }\n];\nexport const CHANNEL_SOURCE_MAP_KEYS = mapKeys(CHANNEL_SOURCE, 'id');\n\nexport const CHANNEL_STATUS = [\n { 'id': 1, 'name': 'Chưa liên hệ' },\n { 'id': 2, 'name': 'Đã liên hệ' }\n];\nexport const CHANNEL_STATUS_MAP_KEYS = mapKeys(CHANNEL_STATUS, 'id');\n\nexport const KPI_TYPE = [\n { text: 'Doanh số', value: 'doanhso' },\n { text: 'SQL', value: 'sql' },\n { text: 'Trafic', value: 'trafic' }\n]\nexport const KPI_TYPE_MAP_KEYS = mapKeys(KPI_TYPE, 'value');\n\nexport const PAYMENT_TYPE_CONST = [\n { label: 'Tiền mặt', value: 6 },\n { label: 'Chuyển khoản MBbank', value: 1 },\n { label: 'Chuyển khoản TPbank', value: 7 },\n { label: 'COD Viettel', value: 2 },\n { label: 'Ví Momo', value: 3 },\n { label: 'Ví Vnpay', value: 4 },\n { label: 'Ncc thu hộ', value: 5 }\n];\n\nexport const PRIORITY_TYPE_TAGS = [\n { text: 'Cao', value: 'cao', color: 'red' },\n { text: 'Trung bình', value: 'trungbinh', color: 'purple' },\n { text: 'Thấp', value: 'thap', color: 'green' }\n];\nexport const PRIORITY_TYPE_TAGS_MAP_KEYS = mapKeys(\n PRIORITY_TYPE_TAGS,\n 'value',\n);\n\nexport const PRODUCT_STATUS = [\n { value: 0, text: 'Ngưng', color: 'red' },\n { value: 1, text: 'Kích hoạt', color: 'green' }\n];\n\nexport const USER_STATUS = [\n { value: 0, text: 'Ngưng', color: 'red' },\n { value: 1, text: 'Kích hoạt', color: 'green' }\n];\n\nexport const DEPARTMENT = [\n { value: 1, name: \"IT\", color: 'blue' },\n { value: 2, name: \"Marketing\", color: 'green' },\n { value: 3, name: \"Kinhdoanh\", color: 'purple' },\n { value: 4, name: \"Khác\", color: 'orange' }\n];\n\nexport const CAR_WORK_TYPE = 1;\nexport const DEPARTMENT_MAP_KEYS_VALUE = mapKeys(DEPARTMENT, 'value');\n\nexport const PROJECT_STATUS_LIST = ['Not Started', 'In Progress', 'Completed', 'On Hold'];\nexport const PROJECT_TASK_STATUS_LIST = ['To Do', 'In Progress', 'Done', 'Cancelled'];\n\nexport const MATERIAL_UNIT_TYPE = [\n { value: \"QUANTITY\", name: \"Số lượng\" },\n { value: \"DIMENSION\", name: \"Kích thước\" },\n { value: \"WEIGHT\", name: \"Trọng lượng\" }\n];\n\n\n\nexport const CAR_NOT_WORK_TYPE = 2;\nexport const REGISTER_WORK_TYPE = [\n { value: 1, text: 'Công tác có phí', color: 'green' },\n { value: 2, text: 'Công tác không phí', color: 'red' }\n];\n\nexport const HOTEL_ROOM_PAY_TYPE_COMPANY = 1;\nexport const HOTEL_ROOM_PAY_TYPE_PERSIONAL = 2;\nexport const HOTEL_ROOM_PAY_TYPE = [\n { value: HOTEL_ROOM_PAY_TYPE_COMPANY, text: 'Công ty trả/company pay', color: 'green' },\n { value: HOTEL_ROOM_PAY_TYPE_PERSIONAL, text: 'Cá nhân tạm ứng/person pay', color: 'red' }\n];\n\nexport const FLIGHT_WAY_TYPE_DEPARTURE = 1;\nexport const FLIGHT_WAY_TYPE_ARRIVAL = 2;\nexport const FLIGHT_WAY_TYPE = [\n { value: FLIGHT_WAY_TYPE_DEPARTURE, text: 'Chiều đi / Departure', color: 'green' },\n { value: FLIGHT_WAY_TYPE_ARRIVAL, text: 'Chiều về / Arrival', color: 'red' }\n];\n","\nexport * from \"./constant\"\nexport * from \"./localData\"\n\nexport const SUCCESS_CODE = 200\nexport const CHANGE_STORE = 'CHANGE_STORE'\nexport const API = { SINGIN: '/auth/login' }\n\nexport const ACTIONS = {\n ADD_USER: 'add__user',\n REMOVE_USER: 'remove__user',\n TOOGLE_COLLAPSE: 'tg_cll',\n F5_LIST: 'f5_list',\n SET_ROUTES: 'set_routes',\n}\n\nexport const INAPP_NOTIFICATION_EMITTER = 'in_app_noti'\nexport const EVENT_ACCEPT_IMAGE_TYPES = '.png, .jpeg, .jpg'\nexport const HASH_MODAL = '#modal'\nexport const HASH_MODAL_CLOSE = '#close-modal'\nexport const DEFAULT_INBOX_ID = 'inbox'\nexport const DEFAULT_PARENT_INBOX_ID = 'parent'\nexport const FORMAT_DATE_INPUT = 'DD-MM-YYYY'\nexport const FORMAT_DATE_TIME_INPUT = 'DD-MM-YYYY HH:mm'\nexport const FORMAT_TIME_INPUT = 'HH:mm'\nexport const MAX_FILE_SIZE_MB = 3\nexport const REPORT_DATE_FORMAT = 'YYYY-MM-DD'\nexport const CURRENCY_UNIT = 'VND'\nexport const EMBED_YOUTUBE_LINK = '//www.youtube.com/embed/'\nexport const DEFAULT_COLOR_VALUE = '#ffffff'\nexport const outerRadius = 143 / 2\n\n// ----------------------------------------------------------------\n// Runtime config\n// App phải gọi initCoreConfig() trước khi dùng bất kỳ API nào\n// ----------------------------------------------------------------\nconst _config = {\n GATEWAY: \"\"\n}\n\n/**\n * Khởi tạo config runtime — gọi 1 lần trong index.js của app\n * @example\n * import { initCoreConfig } from \"@flast-erp/core/configs\"\n * initCoreConfig({ GATEWAY: process.env.REACT_APP_GATEWAY })\n */\nexport function initCoreConfig(config = {}) {\n const gateway = config.GATEWAY || _config.GATEWAY\n Object.assign(_config, {\n ...config,\n GATEWAY: gateway\n })\n}\n\nexport const getGateway = () => _config.GATEWAY\nexport const getConfig = () => ({ ..._config })\n","/**************************************************************************/\n/* FuseUtils.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { CHANGE_STORE, HASH_MODAL, INAPP_NOTIFICATION_EMITTER } from '@/configs';\n\nclass EventEmitter {\n\n constructor() {\n this.events = {};\n }\n\n _getEventListByName(eventName) {\n if (typeof this.events[eventName] === 'undefined') {\n this.events[eventName] = new Set();\n }\n return this.events[eventName]\n }\n\n on(eventName, fn) {\n this._getEventListByName(eventName).add(fn);\n }\n\n once(eventName, fn) {\n const self = this;\n const onceFn = function (...args) {\n self.removeListener(eventName, onceFn);\n fn.apply(self, args);\n };\n this.on(eventName, onceFn);\n }\n\n emit(eventName, ...args) {\n this._getEventListByName(eventName).forEach(function (fn) {\n fn.apply(this, args);\n }.bind(this));\n }\n\n addEventListener(eventName, fn) {\n this.on(eventName, fn)\n }\n\n removeListener(eventName, fn) {\n this._getEventListByName(eventName).delete(fn);\n }\n}\n\nclass FuseUtils {\n\n static EventEmitter = EventEmitter;\n static hasPermission(authArr, enabled) {\n if (authArr === '*') {\n return true;\n } else if ((authArr || '') === '') {\n return true;\n } else if (authArr.length === 0) {\n return true;\n }\n return enabled;\n }\n\n static generateRoutesFromConfigs(configs, defaultAuth) {\n let allRoutes = [];\n configs.forEach((config) => {\n allRoutes = [\n ...allRoutes,\n ...this.setRoutes(config, defaultAuth)\n ]\n });\n return allRoutes;\n }\n\n static setRoutes(config, defaultAuth) {\n let routes = [...config.routes];\n if (config.settings || config.auth) {\n routes = routes.map((route) => {\n let auth = config.auth ? [...config.auth] : defaultAuth || null;\n auth = route.auth ? [...auth, ...route.auth] : auth;\n return {\n ...route,\n settings: { ...config.settings, ...route.settings },\n auth\n };\n });\n }\n return [...routes];\n }\n}\n\nclass AppEvent extends EventEmitter {\n normalSuccess(content, title = null) {\n this.emit(INAPP_NOTIFICATION_EMITTER, { type: 'success', content, title });\n }\n normalInfo(content, title = null) {\n this.emit(INAPP_NOTIFICATION_EMITTER, { type: 'info', content, title });\n }\n normalError(content, title = null) {\n this.emit(INAPP_NOTIFICATION_EMITTER, { type: 'error', content, title });\n }\n modal(content, type) {\n this.emit(INAPP_NOTIFICATION_EMITTER, { type, content, cate: 'modal' });\n }\n changeStore(data) {\n this.emit(CHANGE_STORE, data);\n }\n openDrawer = (route, { title, ...rest }) => this.emit(HASH_MODAL, {\n hash: route,\n title,\n data: rest\n });\n}\n\nexport const DRAWER_ROUTE = {\n CONTRACT_FORM: 'CONTRACT_FORM'\n}\n\nexport const InAppEvent = new AppEvent();\nexport default FuseUtils;\n","\r\nimport React, { useReducer, useCallback, useEffect } from 'react'\r\nimport { ACTIONS, CHANGE_STORE } from '@/configs';\r\nimport { InAppEvent } from '@/utils/FuseUtils';\r\n\r\nconst DataContext = React.createContext();\r\n\r\nconst actions = {\r\n [ACTIONS.ADD_USER]: 'user',\r\n [ACTIONS.REMOVE_USER]: 'user',\r\n [ACTIONS.TOOGLE_COLLAPSE]: 'isCollapse',\r\n [ACTIONS.F5_LIST]: 'f5List'\r\n};\r\n\r\nfunction storeReducer(state, action) {\r\n const { data, type } = action;\r\n const varible = actions[type];\r\n return !varible ? state : {\r\n ...state,\r\n [varible]: data\r\n }\r\n};\r\n\r\nexport const DataProvider = ({ children, initialRoutes = [] }) => {\r\n\r\n const [state, dispatch] = useReducer(storeReducer, {\r\n routes: initialRoutes, isCollapse: false\r\n })\r\n\r\n const value = { ...state, dispatch };\r\n const handleEventChange = useCallback(({ type, data }) => {\r\n dispatch({ type, data });\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n /* InAppEvent.emit(CHANGE_STORE, { type: 'user', data: data }); */\r\n InAppEvent.addEventListener(CHANGE_STORE, handleEventChange);\r\n return () => {\r\n InAppEvent.removeListener(CHANGE_STORE, handleEventChange);\r\n };\r\n }, [handleEventChange]);\r\n\r\n return (\r\n <DataContext.Provider value={value}>\r\n {children}\r\n </DataContext.Provider>\r\n )\r\n};\r\n\r\nexport function useStore() {\r\n const context = React.useContext(DataContext)\r\n if (context === undefined) {\r\n throw new Error('useCount must be used within a StoreProvider')\r\n }\r\n return context\r\n};\r\n\r\nexport default DataContext;\r\n","/**************************************************************************/\n/* RequestUtils.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { getGateway, SUCCESS_CODE } from '@/configs';\nimport axios from 'axios';\n\nclass RequestUtils {\n\n\tstatic encodeQueryData(data) {\n\t\tif (!data) {\n\t\t\treturn '';\n\t\t}\n\t\tconst ret = [];\n\t\tfor (let d in data) {\n\t\t\tif (!data[d]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));\n\t\t}\n\t\treturn ret.length > 0 ? ('?' + ret.join('&')) : '';\n\t}\n\n\tstatic generateUrlGetParams(enpoint, params = {}) {\n\t\treturn String(enpoint).concat(this.encodeQueryData(params));\n\t}\n\n\tstatic httpRequest(input, service, method = 'GET', params = '') {\n\t\tconst _uri = getGateway() + service;\n\t\tlet getOrPost;\n\t\tif (method === 'GET') {\n\t\t\tgetOrPost = axios.get(_uri + this.encodeQueryData(input));\n\t\t} else {\n\t\t\tgetOrPost = axios.post(_uri + this.encodeQueryData(params), input);\n\t\t}\n\t\treturn getOrPost.then(({ data }) => {\n\t\t\treturn data;\n\t\t}).catch((response) => {\n\t\t\treturn response;\n\t\t});\n\t}\n\n\tstatic Get(service, input = {}) {\n\t\treturn this.httpRequest(input, service, 'GET');\n\t}\n\n\tstatic async GetAsList(service, input = {}) {\n\t\tlet { data, errorCode } = await this.httpRequest(input, service, 'GET');\n\t\treturn errorCode === 200 ? data : [];\n\t}\n\n\tstatic Post(service, input = {}, params = {}) {\n\t\treturn this.httpRequest(input, service, 'POST', params);\n\t}\n\n\tstatic getJsonFromUrl(url) {\n\t\tif (!url) return {};\n\t\tvar query = url.substr(1);\n\t\tvar result = {};\n\t\tquery.split(\"&\").forEach(function (part) {\n\t\t\tvar item = part.split(\"=\");\n\t\t\tresult[item[0]] = decodeURIComponent(item[1]);\n\t\t});\n\t\treturn result;\n\t}\n\n\tstatic uploadSigFile = ({\n\t\tonSuccess,\n\t\tonError,\n\t\tfile,\n\t\tonProgress = (progress) => progress,\n\t\tonSuccessUploadServer = (values) => values,\n\t\tapi\n\t}) => {\n\t\tconst fmData = new FormData();\n\t\tconst config = {\n\t\t\theaders: { \"content-type\": \"multipart/form-data\" },\n\t\t\tonUploadProgress: event => {\n\t\t\t\tonProgress({ percent: (event.loaded / event.total) * 100 }, file);\n\t\t\t}\n\t\t};\n\t\tfmData.append(\"files\", file);\n\t\taxios.post(getGateway() + \"/\" + api, fmData, config).then(({ data: ret }) => {\n\t\t\tconst { data, errorCode } = ret;\n\t\t\tonSuccess(file);\n\t\t\tif (errorCode === SUCCESS_CODE && (data?.fileName || '') !== '') {\n\t\t\t\tonSuccessUploadServer(data.fileName);\n\t\t\t}\n\t\t}).catch(err => {\n\t\t\tconst error = new Error(err.message);\n\t\t\tonError({ event: error });\n\t\t});\n\t}\n}\n\nexport default RequestUtils;\n","/**************************************************************************/\n/* MyHooks.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport React, { useEffect } from \"react\"\n\nexport const useMount = (callback) => {\n useEffect(() => {\n callback();\n /* eslint-disable-next-line */\n }, []);\n};\n\n/* useUnmount(() => console.log(\"useUnmount\")) */\nexport const useUnmount = (callback) => {\n const callbackRef = React.useRef(callback)\n callbackRef.current = callback\n useEffect(() => {\n return () => {\n callbackRef.current()\n }\n }, []);\n};\n\n/* const [count, setCount] = useSetState(initState) \n* setCount({ name: 'medium' })\n*/\nexport const useSetState = (initState) => {\n const [state, setState] = React.useState(initState)\n const setMergeState = (value) => setState((prevValue) => {\n const newValue = typeof value === 'function' ? value(prevValue) : value\n return newValue ? { ...prevValue, ...newValue } : prevValue\n })\n return [state, setMergeState]\n};\n\n/*\nconst [ count, setCount ] = React.useState(0)\nuseUpdateEffect(() => {\n console.log('Count changed', count)\n}, [ count ])\n*/\nexport const useUpdateEffect = function (effectCallback, deps = []) {\n\n const isFirstMount = React.useRef(false)\n useEffect(() => {\n return () => {\n isFirstMount.current = false\n }\n }, []);\n\n useEffect(() => {\n /* Không thực thi code cho lần đầu tiên watch */\n if (!isFirstMount.current) {\n isFirstMount.current = true\n } else {\n return effectCallback()\n }\n /* eslint-disable-next-line */\n }, deps);\n};\n\n/*\nuseEffectAsync(async () => {\n const books = await fetchBooks();\n setBooks(books);\n});\n*/\nexport function useEffectAsync(effect, inputs = [], callback) {\n useEffect(() => {\n let isMounted = true;\n const run = async () => {\n await effect(isMounted);\n };\n run();\n return () => {\n if(typeof callback === 'function') {\n callback();\n }\n isMounted = false; \n };\n /* eslint-disable-next-line */\n }, inputs);\n};\n","/**************************************************************************/\n/* useDeleteMutation.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useState } from \"react\";\nimport { InAppEvent } from \"@/utils/FuseUtils\";\nimport RequestUtils from \"@/utils/RequestUtils\";\n\nconst useDeleteMutation = () => {\n\n const [loading, setLoading] = useState(false);\n const deleteRecord = async ({ api, input, update }) => {\n setLoading(true);\n const { success, message, data } = await RequestUtils.Post('/'.concat(api), {}, input);\n if (!success) {\n InAppEvent.normalError(\"Lỗi xoá nội dung .!\");\n return;\n }\n setLoading(false);\n update && update(data);\n InAppEvent.normalSuccess(message);\n }\n\n return [\n deleteRecord,\n loading\n ]\n}\n\nexport default useDeleteMutation;","/**************************************************************************/\n/* useGetList.js \t\t\t\t*/\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useCallback, useEffect, useState, useContext } from \"react\";\nimport RequestUtils from \"@/utils/RequestUtils\";\nimport MyContext from '@/DataContext';\nimport { useUpdateEffect } from \"@/hooks/MyHooks\";\n\nconst LOGGER_TAG = '[hooks.useGetList]';\nfunction useGetList({\n\tqueryParams: filter,\n\tonData\n}) {\n\n\tconst { f5List } = useContext(MyContext)\n\tconst [ loading, setLoading ] = useState(true);\n\tconst [ data, setData ] = useState({ embedded: [], page: {} });\n\n\tconst fetchResource = useCallback((values) => {\n\t\t\n\t\tconst { apiPath, ...params } = values;\n\t\tsetLoading(true);\n\n\t\tRequestUtils.Get('/' + apiPath, params).then(async ({ data, errorCode, message }) => {\n\t\t\tif (errorCode !== 200) {\n\t\t\t\tconsole.error(LOGGER_TAG, message);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tPromise.resolve(onData(data)).then(setData);\n\t\t\tsetLoading(false);\n\t\t}).catch(e => {\n\t\t\tconsole.error(LOGGER_TAG, e);\n\t\t\tsetLoading(false);\n\t\t});\n\t}, [ onData ]);\n\n\tuseEffect(() => {\n\t\tfetchResource(filter);\n\t\t/* eslint-disable-next-line */\n\t}, [filter]);\n\n\tuseUpdateEffect(() => {\n\t\tif (f5List?.apiPath === filter.apiPath) {\n\t\t\tfetchResource(filter);\n\t\t}\n\t}, [f5List, filter]);\n\n\treturn {\n\t\tdata,\n\t\tloading\n\t}\n};\n\nexport default useGetList;\n","/**************************************************************************/\n/* useInfinite.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport unionBy from 'lodash/unionBy';\nimport { useState } from 'react';\n\nconst log = (value, key = '') => console.log('[hooks.useInfinite] ' + key, value);\n\nconst useInfinite = ({\n initialFilter = {},\n useGetAllQuery,\n searchKey = 'q',\n handleSelectedDefault\n}) => {\n\n const [queryParams, setQueryParams] = useState(initialFilter);\n const [isSetDefaultValue, isSetSetDefaultValue] = useState(!handleSelectedDefault);\n const [currentPage, setCurrentPage] = useState(1);\n const [resourceData, setResourceData] = useState([]);\n\n const { loading, data, refetch, fetchMore } = useGetAllQuery({\n queryParams,\n onCompleted: res => {\n setResourceData(res?.embedded);\n if (!isSetDefaultValue) {\n isSetSetDefaultValue(true);\n handleSelectedDefault?.(res?.embedded?.[0]?.id);\n }\n }\n });\n\n const onLoadMore = () => {\n log('onLoadMore .!!')\n if (currentPage === data?.page?.totalPages && !loading) {\n return Promise.resolve();\n }\n return refetch({\n ...queryParams,\n page: data?.page?.currentPage + 1\n }).then(data => {\n setCurrentPage(data?.page?.currentPage);\n const mergedData = unionBy(resourceData, data?.embedded, 'id');\n setResourceData(mergedData);\n });\n };\n\n const enableWaypoint = !loading && data?.embedded?.length < data?.page?.pageSize;\n const onSearch = (value) => {\n if (searchKey === 'q') {\n setQueryParams({ ...queryParams, page: 1, q: value?.trim() || undefined });\n } else {\n setQueryParams({ ...queryParams, [searchKey]: value, page: 1 });\n }\n };\n\n const onSubmitFilter = (values) => {\n setQueryParams({ ...queryParams, page: 1, ...values });\n };\n\n const onClearFilter = () => {\n setQueryParams({ page: 1, limit: 10 });\n };\n\n const fetchMoreDefaultValue = (filterField, defaultValue) => {\n log({ filterField, defaultValue }, 'fetchMoreDefaultValue .!!')\n fetchMore({ filterField, defaultValue })?.then(data => {\n const mergedData = unionBy(resourceData, data?.embedded, 'id');\n setResourceData(mergedData);\n });\n };\n\n return {\n onLoadMore,\n onSearch,\n fetchMoreDefaultValue,\n onSubmitFilter,\n onClearFilter,\n enableWaypoint,\n loading,\n resourceData,\n refetch\n };\n};\n\nexport default useInfinite;\n","/**************************************************************************/\n/* jwtService.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport FuseUtils, { InAppEvent } from './FuseUtils';\nimport axios from 'axios';\nimport { CHANGE_STORE, ACTIONS } from \"@/configs\";\nimport RequestUtils from './RequestUtils';\n\nclass jwtService extends FuseUtils.EventEmitter {\n\n init() {\n this.handleAuthentication();\n }\n\n handleAuthentication = () => {\n let access_token = this.getAccessToken();\n if (!access_token) {\n this.emit('onNoAccessToken');\n return;\n }\n\n if (this.isAuthTokenValid(access_token)) {\n this.emit('onAutoLogin', true);\n } else {\n this.setSession(null);\n this.emit('onAutoLogout', 'access_token expired');\n }\n };\n\n signInWithToken = async () => {\n try {\n const { data, success } = await RequestUtils.Post('/auth/sign-with-token', {\n token: this.getAccessToken()\n });\n this.setSession(success ? data : null);\n } catch (e) {\n this.emit('onAutoLogout', 'sign-in-with-token ' + e.message);\n }\n return \"done\";\n };\n\n setSession = (data) => {\n if (data) {\n const { jwtToken: token, user } = data;\n localStorage.setItem('jwt_access_token', token);\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;\n InAppEvent.emit(CHANGE_STORE, { type: ACTIONS.ADD_USER, data: user });\n } else {\n localStorage.removeItem('jwt_access_token');\n delete axios.defaults.headers.common['Authorization'];\n }\n };\n\n logout = () => {\n this.setSession(null);\n };\n\n isAuthTokenValid = access_token => {\n return (access_token || '') !== '';\n };\n\n getAccessToken = () => {\n return window.localStorage.getItem('jwt_access_token');\n };\n}\n\nconst instance = new jwtService();\nexport default instance;\n","\nimport { pickBy, identity } from 'lodash'\n\nexport const getQueryParamsFromUrl = (url) => {\n if (!url) {\n return {};\n }\n var query = url.substr(1);\n var result = {};\n query.split(\"&\").forEach(function (part) {\n var item = part.split(\"=\");\n if (item[1]) {\n result[item[0]] = decodeURIComponent(item[1]);\n }\n });\n return result;\n};\n\nexport const convertObjToSearchStr = (params) => {\n /* removes undefined, \"\", 0, null, ... */\n const newParams = pickBy(params, identity);\n delete newParams.resource;\n return new URLSearchParams(newParams).toString();\n};\n\nexport const onSearch = (data, inputValue) =>\n !!inputValue && data?.toLowerCase()?.search(inputValue?.toLowerCase()) !== -1;\n\nexport const getStaticImageUrl = (image) => {\n if (!image) {\n return '/uploads/image-default.png';\n }\n if (image.startsWith('http')) {\n return image;\n }\n\n return image.startsWith('/uploads') ? image : \"/uploads/\".concat(image);\n};\n\nexport const formatterInputNumber = (value) =>\n `${value}`\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\n .replace(/\\.(?=\\d{0,2}$)/g, ',');\n\nexport const parserInputNumber = (value) => {\n return value ? value.replace(/\\$\\s?|(\\.*)/g, '').replace(/(,{1})/g, '.') : '';\n};\n\nexport const formatPhoneNumber = (phone) => {\n if (!phone) {\n return '';\n }\n const cleaned = phone.replace(/\\D/g, '');\n const match = cleaned.match(/^(\\d{4})(\\d{3})(\\d{3})$/);\n if (match) {\n return `(${match[1]}) ${match[2]}-${match[3]}`;\n }\n return phone;\n}\n\nexport const calPriceOff = ({ discountValue, discountUnit, total }) => {\n if (!discountValue || !discountUnit) {\n return 0;\n }\n if (discountUnit === \"money\") {\n return discountValue;\n }\n return (discountValue * total) / 100;\n};\n\nexport const isPositiveInteger = (value) => {\n return typeof value === 'number' \n && Number.isInteger(value) \n && value > 0;\n};\n","/**************************************************************************/\n/* useCollapseSidebar.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useCallback } from 'react';\nimport { useStore } from '@/DataContext';\nimport { ACTIONS } from '@/configs';\n\nfunction useCollapseSidebar() {\n const { isCollapse, dispatch } = useStore();\n const toggleCollapse = useCallback(() => {\n dispatch({ type: ACTIONS.TOOGLE_COLLAPSE, data: !isCollapse });\n }, [isCollapse, dispatch]);\n\n return {\n isCollapseSidebar: isCollapse,\n toggleCollapse,\n };\n}\n\nexport default useCollapseSidebar;\n","/**************************************************************************/\n/* useData.js \t\t\t\t\t\t*/\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { isArray } from \"lodash\";\nimport { useContext, useCallback, useEffect, useState } from \"react\";\nimport RequestUtils from \"@/utils/RequestUtils\";\nimport MyContext from '@/DataContext';\nimport { useUpdateEffect } from \"@/hooks/MyHooks\";\nimport { SUCCESS_CODE } from \"@/configs\";\n\nconst log = (val, key = '') => console.log('[hooks.useData] ' + key, val);\nfunction useData({\n\tqueryParams,\n\tonCompleted = values => values,\n\tapi\n}) {\n\n\tconst [loading, setLoading] = useState(false);\n\tconst [data, setData] = useState({});\n\tconst { f5List } = useContext(MyContext)\n\n\t/* refetch dành cho fetch các page tăng dần */\n\tconst refetch = useCallback(async (values) => {\n\t\tif (loading) {\n\t\t\treturn Promise.resolve({ eMsg: \"loading\" });\n\t\t}\n\t\tsetLoading(true);\n\t\tconst { data, errorCode } = await RequestUtils.Get('/' + api, values);\n\t\tsetLoading(false);\n\t\tif (errorCode !== SUCCESS_CODE) {\n\t\t\treturn Promise.resolve({ eMsg: api + \" not fetch success .!\" });\n\t\t}\n\t\tlet myData = data;\n\t\tif (isArray(myData)) {\n\t\t\tmyData = { embedded: myData, page: {} }\n\t\t}\n\t\tsetData(myData);\n\t\tonCompleted(myData);\n\t\treturn myData;\n\t}, [onCompleted, api, loading]);\n\n\tuseEffect(() => {\n\t\trefetch(queryParams);\n\t\t/* eslint-disable-next-line */\n\t}, [queryParams]);\n\n\t/* fetchMore dành cho search kết quả đã có săn của Form để có dữ liệu hiển thị trong form select */\n\tconst fetchMore = useCallback(async ({ filterField, defaultValue }) => {\n\t\tlog({ queryParams, filterField, defaultValue }, 'fetchMore');\n\t\tconst { data, errorCode } = await RequestUtils.Get('/' + api, { [filterField]: defaultValue });\n\t\tif (errorCode !== SUCCESS_CODE) {\n\t\t\treturn { embedded: [], page: {} }\n\t\t}\n\t\tlet myData = data;\n\t\tif (isArray(myData)) {\n\t\t\tmyData = { embedded: myData, page: {} }\n\t\t}\n\t\treturn myData;\n\t}, [queryParams, api]);\n\n\tuseUpdateEffect(() => {\n\t\trefetch(queryParams);\n\t}, [f5List]);\n\n\treturn {\n\t\tloading, data, refetch, fetchMore\n\t};\n}\n\nexport const useGetAllCustomersSimpleQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'customer/find' });\n\nexport const useGetAllBusinessUsersQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'user/list' });\n\nexport const useGetAllProductQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'product/fetch' });\n\nexport const useGetAllProviderQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'provider/fetch' });\n\nexport const useGetAllProvinceQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'province/find' });\n\nexport const useGetAllStockQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'warehouse/fetch-stock' });\n\nexport const useGetAllCategoryQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'category/product/fetch' });\n\nexport const useGetCategoryPost = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'category/page/fetch' });\n\nexport const useGetShipStatusQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'shipping/fetch-status' });\n\nexport const useGetOrderCodeQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'order/fetch' });\n\nexport const useGetServiceQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'service/list' });\n\nexport const useGetMaterialQuery = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'material/fetch' });\n\nexport const useGetAllFaq = ({ queryParams, onCompleted }) =>\n\tuseData({ queryParams, onCompleted, api: 'faq/fetch' });\n\nexport default useData;\n","/**************************************************************************/\n/* useGetIdFromHash.js \t*/\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { HASH_MODAL } from '@/configs/constant';\nimport { useLocation } from 'react-router';\n\nconst useGetIdFromHash = (resource, suffix = 'edit') => {\n const { hash } = useLocation();\n const idFromHash = hash.match(`${HASH_MODAL}/${resource}/(.*)/${suffix}`);\n return idFromHash && idFromHash[1];\n};\n\nexport default useGetIdFromHash;\n","/**************************************************************************/\n/* constant.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nexport const QUERY_PARAMS_PROPERTY = {\n outsideFilter: 'outsideFilter',\n filters: 'filters',\n extraFilters: 'extraFilters'\n}\n\nexport const MAX_FILE_SIZE_MB = 3;\nexport const VAT_PERCENT = 8;\nexport const HASH_MODAL = \"#modal\";\nexport const FORMAT_TIME_INPUT = 'HH:mm';\nexport const HASH_POPUP = \"HASH_POPUP\";\nexport const HASH_POPUP_CLOSE = \"HASH_POPUP_CLOSE\"\nexport const FORMAT_DATE_INPUT = 'DD-MM-YYYY';\nexport const CURRENCY_UNIT = 'VND';\n\nexport const STATUS_LEAD = {\n CREATE_DATA: 0,\n DO_NOT_MANUFACTORY: 1,\n IS_CONTACT: 2,\n CONTACT_LATER: 6,\n KO_LIEN_HE_DUOC: 4,\n THANH_CO_HOI: 7\n}\n\nexport const getStatusLead = (option) => {\n switch (option) {\n case STATUS_LEAD.CREATE_DATA:\n return ' Chưa liên hệ';\n case STATUS_LEAD.DO_NOT_MANUFACTORY:\n return 'Không triển khai';\n case STATUS_LEAD.IS_CONTACT:\n return ' Đang tư vấn';\n case STATUS_LEAD.CONTACT_LATER:\n return 'Liên hệ sau';\n case STATUS_LEAD.KO_LIEN_HE_DUOC:\n return 'Không liên hệ được';\n case STATUS_LEAD.THANH_CO_HOI:\n return 'Thành cơ hội';\n default:\n return 'N/A';\n }\n}\n\nexport const getColorStatusLead = (option) => {\n switch (option) {\n case STATUS_LEAD.CREATE_DATA:\n return '#f50';\n case STATUS_LEAD.DO_NOT_MANUFACTORY:\n return '#2db7f5';\n case STATUS_LEAD.IS_CONTACT:\n return '#87d068';\n case STATUS_LEAD.CONTACT_LATER:\n return '#108ee9';\n case STATUS_LEAD.KO_LIEN_HE_DUOC:\n return 'red';\n case STATUS_LEAD.THANH_CO_HOI:\n return 'green';\n default:\n return 'black';\n }\n}\n\nexport const getTypeGroup = (option) => {\n switch (option) {\n case 1:\n return 'Sale';\n case 2:\n return 'Chăm sóc khách hàng';\n case 3:\n return 'MarkeTing';\n case 4:\n return 'Kho';\n default:\n return 'N/A';\n }\n}\n\n/**************************************************************************/\n\nexport const SUCCESS_API_CODE = 200;\n\nexport const NGHI_PHEP_META = [\n { id: 1, name: 'Nghỉ phép năm (Annual Leave)' },\n { id: 2, name: 'Nghỉ không lương (Unpaid Absence)' },\n { id: 3, name: 'Nghỉ theo chính sách phúc lợi của công ty (Leave According To Company Welfare Policy)' },\n { id: 4, name: 'Nghỉ ốm hưởng BHXH (Sick Leave With Social Insurance)' },\n { id: 5, name: 'Lý do khác (Other Reasons)' },\n]\n\nexport const OVERTIME_META = [\n { id: 1, name: 'Làm thêm giờ' },\n { id: 2, name: 'Làm thêm vào ngày nghỉ' }\n]\n\nexport const NGHI_PHEP_STATUS_WAITING = 0;\nexport const NGHI_PHEP_STATUS_CONFIRM = 1;\nexport const NGHI_PHEP_STATUS_REJECT = 1;\nexport const NGHI_PHEP_STATUS_DONE = 2;\n\nexport const APP_FOLLOW_STATUS_WAITING = 0;\nexport const APP_FOLLOW_STATUS_CONFIRM = 1;\nexport const APP_FOLLOW_STATUS_DONE = 2;\nexport const APP_FOLLOW_STATUS_REJECT = 3;\n\nexport const NGHI_PHEP_STATUS_TEXT = [\n { id: NGHI_PHEP_STATUS_WAITING, name: 'Chờ duyệt (Waiting For Approval)' },\n { id: NGHI_PHEP_STATUS_REJECT, name: 'Không duyệt (Not Approved)' },\n { id: NGHI_PHEP_STATUS_DONE, name: 'Duyệt (Approved)' }\n]\n\nexport const APP_STATUS_TEXT = NGHI_PHEP_STATUS_TEXT;\n","/**************************************************************************/\n/* useGetOneQuery.js \t */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport RequestUtils from \"@/utils/RequestUtils\";\n\nfunction useGetOneQuery({ filter, uri, onBeforeProcessData }) {\n\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState({});\n\n const fetchResource = useCallback(() => {\n if (loading) {\n return Promise.reject(\"===== fetch api on loading .!\");\n }\n setLoading(true);\n if (uri) {\n RequestUtils.Get('/'.concat(uri), filter).then(({ data, success }) => success && setData(data));\n }\n setLoading(false);\n }, [filter, uri, loading]);\n\n useEffect(() => {\n fetchResource();\n /* eslint-disable-next-line */\n }, []);\n\n return {\n loading,\n record: onBeforeProcessData ? onBeforeProcessData(data) : data,\n refetch: () => fetchResource(filter)\n };\n}\n\nexport default useGetOneQuery;\n","/**************************************************************************/\n/* useGetRestApi.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useCallback, useContext, useEffect, useState } from \"react\";\nimport RequestUtils from \"@/utils/RequestUtils\";\nimport MyContext from '@/DataContext';\nimport { useUpdateEffect } from \"@/hooks/MyHooks\";\n\nfunction useGetRestApi({\n queryParams: filter,\n onData = (values) => values\n}) {\n\n const { f5List } = useContext(MyContext)\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState({});\n const fetchResource = useCallback(async (values) => {\n if (loading) {\n return Promise.reject(\"===== fetch api on loading .!\");\n }\n const { resource, ...params } = values;\n if (!resource) {\n return Promise.reject(\"Call api without apiPath .!\");\n }\n setLoading(true);\n RequestUtils.Get(`/${resource}`, params).then(async ({ data, success }) => {\n if (success) {\n Promise.resolve(onData(data)).then(setData);\n }\n setLoading(false);\n }).catch(e => {\n console.log('[hooks.useGetApi] ', e);\n setLoading(false);\n });\n }, [onData, loading]);\n\n useEffect(() => {\n fetchResource(filter);\n /* eslint-disable-next-line */\n }, []);\n\n useUpdateEffect(() => {\n fetchResource(filter);\n }, [f5List, filter]);\n\n return {\n data,\n loading\n };\n}\n\nexport default useGetRestApi;\n","/**************************************************************************/\n/* useLogin.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useState } from 'react';\nimport RequestUtils from '@/utils/RequestUtils';\nimport jwtService from '@/utils/jwtService';\n\n/* const log = (key, val) => console.log('[hooks.useLogin] ' + key, val); */\nfunction useLogin() {\n\n const [loading, setLoading] = useState(false);\n const login = (payload) => {\n setLoading(true);\n RequestUtils.Post('/auth/sign-in', payload).then(({ data, success }) => {\n if (success) {\n jwtService.setSession(data);\n }\n setLoading(false);\n }).catch(e => {\n setLoading(false);\n })\n };\n\n return { login, loading };\n}\n\nexport default useLogin;\n","/**************************************************************************/\n/* useNavigateSearch.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useNavigate } from 'react-router';\nimport { convertObjToSearchStr } from '@/utils/tools';\n\nconst getPath = (name) => name.startsWith('/') ? name : '/'.concat(name);\n\nexport const useNavigateSearch = () => {\n const navigate = useNavigate();\n return (pathname, params) => navigate({\n pathname: getPath(pathname),\n search: `?${convertObjToSearchStr(params)}`\n });\n};\n","/**************************************************************************/\n/* useQueryParams.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useLocation } from \"react-router-dom\";\n\nexport function useQueryParams() {\n\n const { search } = useLocation();\n\n const get = (key) => {\n return new URLSearchParams(search).get(key);\n };\n\n const getAll = () => {\n const params = new URLSearchParams(search);\n const result = {};\n for (const [key, value] of params.entries()) {\n result[key] = value;\n }\n return result;\n };\n\n return { get, getAll };\n}\n","/**************************************************************************/\n/* useQueryParamsOnHeader.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useState, useCallback } from \"react\";\n\nfunction useQueryParamsOnHeader() {\n\n const [data, setData] = useState();\n const setQueryParamsOnHeader = useCallback((params) => {\n setData(pre => ({ ...pre, ...params }))\n }, []);\n\n return {\n queryParamsOnHeader: data?.queryParamsOnHeader,\n setQueryParamsOnHeader,\n };\n}\n\nexport default useQueryParamsOnHeader;\n","/**************************************************************************/\n/* useServiceId.js */\n/**************************************************************************/\n/* Tệp này là một phần của: */\n/* Open CDP */\n/* https://flast.vn */\n/**************************************************************************/\n/* Bản quyền (c) 2025 - này thuộc về các cộng tác viên Flast Solution */\n/* (xem AUTHORS.md). */\n/* Bản quyền (c) 2024-2025 Long Huu, Quang Duc, Hung Bui */\n/* */\n/* Bạn được quyền sử dụng phần mềm này miễn phí cho bất kỳ mục đích nào, */\n/* bao gồm sao chép, sửa đổi, phân phối, bán lại… */\n/* */\n/* Chỉ cần giữ nguyên thông tin bản quyền và nội dung giấy phép này trong */\n/* các bản sao. */\n/* */\n/* Đội ngũ phát triển mong rằng phần mềm được sử dụng đúng mục đích và */\n/* có trách nghiệm */\n/**************************************************************************/\n\nimport { useState, useCallback } from 'react';\n\nconst useServiceId = () => {\n\n const [data, setData] = useState();\n const setServiceId = useCallback((id) => {\n setData({ serviceId: id });\n }, []);\n\n return {\n serviceId: data?.serviceId,\n setServiceId,\n };\n};\n\nexport default useServiceId;\n"],"names":["mapKeys","id","name","text","value","color","CHANGE_STORE","ACTIONS","INAPP_NOTIFICATION_EMITTER","_config","getGateway","EventEmitter","constructor","this","events","_getEventListByName","eventName","Set","on","fn","add","once","self","onceFn","removeListener","_len","arguments","length","args","Array","_key","apply","emit","_len2","_key2","forEach","bind","addEventListener","delete","FuseUtils","hasPermission","authArr","enabled","generateRoutesFromConfigs","configs","defaultAuth","allRoutes","config","setRoutes","routes","settings","auth","map","route","_objectSpread","_defineProperty","InAppEvent","super","_ref","title","rest","_objectWithoutProperties","_excluded","hash","data","normalSuccess","content","undefined","type","normalInfo","normalError","modal","cate","changeStore","DataContext","React","createContext","RequestUtils","encodeQueryData","ret","d","push","encodeURIComponent","join","generateUrlGetParams","enpoint","params","String","concat","httpRequest","input","service","method","_uri","getOrPost","axios","get","post","then","catch","response","Get","GetAsList","_await$this$httpReque","errorCode","Post","getJsonFromUrl","url","query","substr","result","split","part","item","decodeURIComponent","_ref2","onSuccess","onError","file","_ref2$onProgress","onProgress","progress","_ref2$onSuccessUpload","onSuccessUploadServer","values","api","fmData","FormData","headers","onUploadProgress","event","percent","loaded","total","append","_ref3","fileName","err","error","Error","message","useUpdateEffect","effectCallback","deps","isFirstMount","useRef","useEffect","current","LOGGER_TAG","log","key","console","instance","access_token","getAccessToken","isAuthTokenValid","setSession","async","_await$RequestUtils$P","token","success","e","jwtToken","user","localStorage","setItem","defaults","common","removeItem","window","getItem","init","handleAuthentication","convertObjToSearchStr","newParams","pickBy","identity","resource","URLSearchParams","toString","_useStore","context","useContext","useStore","isCollapse","dispatch","toggleCollapse","useCallback","isCollapseSidebar","queryParams","_ref$onCompleted","onCompleted","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","setData","f5List","MyContext","refetch","Promise","resolve","eMsg","_await$RequestUtils$G","myData","isArray","embedded","page","fetchMore","filterField","defaultValue","val","_await$RequestUtils$G2","useDeleteMutation","update","effect","inputs","callback","isMounted","run","suffix","idFromHash","useLocation","match","filter","onData","fetchResource","apiPath","uri","onBeforeProcessData","reject","record","_ref$onData","_data$embedded","_data$page4","_ref$initialFilter","initialFilter","useGetAllQuery","_ref$searchKey","searchKey","handleSelectedDefault","setQueryParams","isSetDefaultValue","isSetSetDefaultValue","_useState5","_useState6","currentPage","setCurrentPage","_useState7","_useState8","resourceData","setResourceData","_useGetAllQuery","res","_res$embedded","onLoadMore","_data$page","_data$page2","totalPages","_data$page3","mergedData","unionBy","onSearch","q","trim","fetchMoreDefaultValue","_fetchMore","onSubmitFilter","onClearFilter","limit","enableWaypoint","pageSize","login","payload","jwtService","useNavigateSearch","navigate","useNavigate","pathname","startsWith","search","getAll","entries","setQueryParamsOnHeader","pre","queryParamsOnHeader","useServiceId","setServiceId","serviceId","initState","_React$useState","_React$useState2","state","setState","prevValue","newValue","callbackRef"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useTranslation as e}from"react-i18next";import{Breadcrumb as t,Button as r,Drawer as n,Space as o,Spin as i,Tooltip as a,Pagination as l,Table as c,Form as s,Row as u,Col as p,List as d,Image as m,Typography as f,Avatar as h,Tag as b,Popconfirm as O,Upload as g,Input as y,Checkbox as v,message as P,InputNumber as j,Select as w,Divider as D,DatePicker as S,TimePicker as C,Radio as x,AutoComplete as E,Cascader as k,notification as T}from"antd";import{Link as I,useLocation as A,useNavigate as F}from"react-router-dom";import N from"@babel/runtime/helpers/taggedTemplateLiteral";import q from"styled-components";import{jsx as _,jsxs as L,Fragment as R}from"react/jsx-runtime";import V from"@babel/runtime/helpers/defineProperty";import M from"@babel/runtime/helpers/objectWithoutProperties";import Y,{useCallback as G,createContext as U,useEffect as H,useState as K,useReducer as z,useContext as Q,useMemo as W,forwardRef as B,useImperativeHandle as $,useRef as J}from"react";import{CloseSquareOutlined as X,PlusOutlined as Z,SyncOutlined as ee,UserOutlined as te,DeleteOutlined as re,UploadOutlined as ne,CloseCircleFilled as oe}from"@ant-design/icons";import ie from"i18next";import ae from"@babel/runtime/helpers/slicedToArray";import{pickBy as le,identity as ce,isEmpty as se,random as ue,isObject as pe,get as de,map as me,isArray as fe}from"lodash";import he from"lodash/mapKeys";import be from"axios";import Oe from"moment";import ge from"dayjs";import{Waypoint as ye}from"react-waypoint";import ve from"lodash/debounce";import Pe from"lodash/get";import je from"lodash/unionBy";import we from"jodit-react";import De from"lodash/isEmpty";import{useLocation as Se,useNavigate as Ce}from"react-router";import xe from"lodash/forEach";import Ee from"lodash/last";import ke from"lodash/head";var Te;const Ie=q.div(Te||(Te=N(["\n font-weight: 600;\n font-size: 16px;\n line-height: 22px;\n margin-bottom: 20px;\n\n .breadcrumb-item {\n &__name {\n font-weight: 600;\n font-size: 16px;\n line-height: 22px;\n }\n &__link {\n cursor: pointer;\n &:hover {\n color: "," !important;\n }\n }\n }\n\n .antd-breadcrumb > span:last-child {\n color: "," !important;\n }\n"])),e=>e.theme.palette.primary,e=>e.theme.palette.primary),Ae=r=>{let n=r.data;const o=e().t;return _(Ie,{children:_(t,{separator:">",children:n.map((e,r)=>_(t.Item,{children:e.path?_(I,{to:e.path,children:_("span",{className:"breadcrumb-item__name breadcrumb-item__link",children:o(e.title)})}):_("span",{className:"breadcrumb-item__name",children:e.title?o(e.title):o("error.waitingUpdate")})},String(r)))})})};var Fe;Ae.propTypes={};const Ne=q.div(Fe||(Fe=N(["\n button[disabled] > i {\n color: ",";\n }\n .normal-action-wrapper {\n position: relative;\n }\n .action-feature-icon {\n position: absolute;\n top: -12px;\n right: -10px;\n font-size: 20px;\n color: ",";\n }\n"])),e=>e.theme.background.disabled,e=>e.theme.subscriptions.colorIcon),qe=["title","color","variant","inRigth","style"];function _e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Le(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_e(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_e(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Re=t=>{let n=t.title,o=void 0===n?"Hoàn thành":n,i=t.color,a=void 0===i?"danger":i,l=t.variant,c=void 0===l?"solid":l,s=t.inRigth,u=void 0===s||s,p=t.style,d=M(t,qe);const m=e().t;return _(Ne,{className:"custom-button",style:Le(Le({display:"flex"},u?{justifyContent:"end"}:{}),p||{}),children:_(r,Le(Le({color:a,variant:c},d),{},{children:m(o)}))})};var Ve,Me;const Ye=q(n)(Ve||(Ve=N(["\n .ant-drawer-body {\n height: 100%;\n padding: 0 !important;\n overflow: hidden;\n }\n \n .drawer-content-wrapper {\n height: 100%;\n }\n\n .drawer-content {\n height: calc(100vh - 50px);\n padding: 16px 24px;\n overflow-y: auto;\n overflow-x: hidden;\n\n ::-webkit-scrollbar {\n width: 6px;\n }\n\n /* Track */\n ::-webkit-scrollbar-track {\n border-radius: 10px;\n }\n\n /* Handle */\n ::-webkit-scrollbar-thumb {\n background: ",";\n border-radius: 10px;\n }\n }\n\n .ant-time-picker-input,\n textarea,\n .ant-input,\n .ant-select-selection,\n .ant-cascader-picker,\n .ant-input-number,\n .ant-select-dropdown-menu,\n .ant-select-dropdown,\n .ant-select-dropdown-menu-vertical,\n .ant-picker,\n .ant-input-affix-wrapper {\n background: ",";\n border: 1px solid ",";\n }\n\n .ant-select-selector {\n background: "," !important;\n border: 1px solid "," !important;\n }\n\n .ant-calendar-picker,\n .ant-select,\n .ant-input-number,\n .ant-picker {\n width: 100%;\n }\n\n .ant-form-item-label {\n label {\n font-weight: bold;\n &:after {\n content: '';\n }\n }\n }\n"])),e=>e.theme.scrollbar.thumb,e=>e.theme.background.input,e=>e.theme.background.input,e=>e.theme.background.input,e=>e.theme.background.input),Ge=q.div(Me||(Me=N(["\n height: 60px;\n background: ",";\n color: ",";\n padding: 24px;\n\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 20px;\n font-weight: bold;\n\n .drawer-header-title {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n"])),e=>e.theme.palette.primary,e=>e.theme.text.primaryButtonTextColor),Ue=t=>{let r=t.title,n=t.onClose;const o=e().t;return L(Ge,{children:[_("div",{className:"drawer-header-title",children:o(r)}),_(X,{onClick:n,className:"drawer-header-icon",type:"close-square"})]})},He=e=>{let t=e.title,r=e.onClose,n=e.children;return L("div",{className:"drawer-content-wrapper",children:[t&&_(Ue,{onClose:r,title:t}),_("div",{id:"drawer-content",className:"drawer-content",children:n})]})},Ke=["width","children","onClose","title"];function ze(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Qe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ze(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ze(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const We=e=>{let t=e.width,r=void 0===t?600:t,n=e.children,o=e.onClose;e.title;let i=M(e,Ke);return _(Ye,Qe(Qe({width:r,onClose:o,styles:{wrapper:{maxWidth:"100vw"}}},i),{},{destroyOnClose:!0,closable:!1,footer:null,children:n}))},Be=["children","onClose","title"];function $e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Je(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?$e(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):$e(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Xe=e=>{let t=e.children,r=e.onClose,n=e.title,o=M(e,Be);return _(We,Je(Je({onClose:r,title:n},o),{},{children:_(He,Je(Je({title:n,onClose:r},o),{},{children:t}))}))},Ze=()=>_("div",{style:{display:"flex",flex:1,justifyContent:"center",alignItems:"center"},children:L(o,{size:"middle",children:[_(i,{size:"small"}),_(i,{}),_(i,{size:"large"})]})}),et=e=>{let t=e.title,r=void 0===t?"button.create":t,n=e.handleClick;return _(Re,{title:r,onClick:n,icon:_(Z,{}),type:"primary"})};function tt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function rt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?tt(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):tt(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const nt=e=>{let t=e.title,n=void 0===t?"":t,o=e.disabled,i=e.buttonProps,l=e.handleClick,c=e.icon,s=void 0===c?_(ee,{}):c;return _("div",{children:_(a,{title:ie.t(n),children:_(r,rt(rt({},i),{},{disabled:(null==i?void 0:i.disabled)||o,icon:s,onClick:l}))})})};var ot;const it=q.div(ot||(ot=N(["\n .ant-btn::not(.ant-btn-dangerous) {\n color: ",";\n }\n\n .ant-btn {\n border: 0px !important;\n height: 32px !important;\n width: 32px;\n padding: 0 !important;\n background: transparent !important;\n box-shadow: none !important;\n &:hover {\n background: transparent;\n transform: scale(1.1, 1.1);\n color: "," !important;\n }\n &:focus {\n background: transparent;\n transform: scale(1.1, 1.1);\n color: "," !important;\n }\n .anticon {\n font-size: 20px;\n }\n &[disabled] > i {\n color: ",";\n }\n }\n\n .normal-action-wrapper {\n position: relative;\n }\n\n .action-feature-icon {\n position: absolute;\n top: -5px;\n right: -7px;\n font-size: 18px;\n color: ",";\n }\n"])),e=>e.theme.text.primary,e=>e.theme.palette.primary,e=>e.theme.palette.primary,e=>e.theme.background.disabled,e=>e.theme.subscriptions.colorIcon),at=e=>{let t=e.handleClick,r=e.icon,n=e.title,o=e.buttonProps,i=e.className;return _(it,{className:"custom-button-icon-wrapper ".concat(i||""),children:_(nt,{title:n,handleClick:t,buttonProps:o,icon:r})})},lt=e=>{if(!e)return{};var t=e.substr(1),r={};return t.split("&").forEach(function(e){var t=e.split("=");t[1]&&(r[t[0]]=decodeURIComponent(t[1]))}),r},ct=e=>{const t=le(e,ce);return delete t.resource,new URLSearchParams(t).toString()},st=(e,t)=>{var r;return!!t&&-1!==(null==e||null===(r=e.toLowerCase())||void 0===r?void 0:r.search(null==t?void 0:t.toLowerCase()))},ut=e=>e?e.startsWith("http")||e.startsWith("/uploads")?e:"/uploads/".concat(e):"/uploads/image-default.png",pt=e=>"".concat(e).replace(/\B(?=(\d{3})+(?!\d))/g,".").replace(/\.(?=\d{0,2}$)/g,","),dt=e=>e?e.replace(/\$\s?|(\.*)/g,"").replace(/(,{1})/g,"."):"",mt=e=>{if(!e)return"";const t=e.replace(/\D/g,"").match(/^(\d{4})(\d{3})(\d{3})$/);return t?"(".concat(t[1],") ").concat(t[2],"-").concat(t[3]):e},ft=e=>{let t=e.discountValue,r=e.discountUnit,n=e.total;return t&&r?"money"===r?t:t*n/100:0},ht=e=>"number"==typeof e&&Number.isInteger(e)&&e>0;var bt;const Ot=q.div(bt||(bt=N(["\n .list-layout {\n &__pagination-top {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n gap: 16px 0px;\n }\n &__pagination-bottom {\n margin-top: 20px;\n display: flex;\n justify-content: flex-end;\n }\n &__group-action {\n flex: 1;\n > .ant-space {\n justify-content: flex-end;\n display: flex;\n }\n }\n }\n\n .ant-table-thead > tr:first-child > th {\n /* background: ","; */\n font-weight: 600;\n text-transform: uppercase;\n }\n"])),e=>e.theme.table.headerBackground),gt={outsideFilter:"outsideFilter",filters:"filters",extraFilters:"extraFilters"},yt=8,vt="HASH_POPUP",Pt="HASH_POPUP_CLOSE",jt={CREATE_DATA:0,DO_NOT_MANUFACTORY:1,IS_CONTACT:2,CONTACT_LATER:6,KO_LIEN_HE_DUOC:4,THANH_CO_HOI:7},wt=e=>{switch(e){case jt.CREATE_DATA:return" Chưa liên hệ";case jt.DO_NOT_MANUFACTORY:return"Không triển khai";case jt.IS_CONTACT:return" Đang tư vấn";case jt.CONTACT_LATER:return"Liên hệ sau";case jt.KO_LIEN_HE_DUOC:return"Không liên hệ được";case jt.THANH_CO_HOI:return"Thành cơ hội";default:return"N/A"}},Dt=e=>{switch(e){case jt.CREATE_DATA:return"#f50";case jt.DO_NOT_MANUFACTORY:return"#2db7f5";case jt.IS_CONTACT:return"#87d068";case jt.CONTACT_LATER:return"#108ee9";case jt.KO_LIEN_HE_DUOC:return"red";case jt.THANH_CO_HOI:return"green";default:return"black"}},St=e=>{switch(e){case 1:return"Sale";case 2:return"Chăm sóc khách hàng";case 3:return"MarkeTing";case 4:return"Kho";default:return"N/A"}},Ct=200,xt=[{id:1,name:"Nghỉ phép năm (Annual Leave)"},{id:2,name:"Nghỉ không lương (Unpaid Absence)"},{id:3,name:"Nghỉ theo chính sách phúc lợi của công ty (Leave According To Company Welfare Policy)"},{id:4,name:"Nghỉ ốm hưởng BHXH (Sick Leave With Social Insurance)"},{id:5,name:"Lý do khác (Other Reasons)"}],Et=[{id:1,name:"Làm thêm giờ"},{id:2,name:"Làm thêm vào ngày nghỉ"}],kt=0,Tt=1,It=1,At=2,Ft=0,Nt=1,qt=2,_t=3,Lt=[{id:0,name:"Chờ duyệt (Waiting For Approval)"},{id:1,name:"Không duyệt (Not Approved)"},{id:2,name:"Duyệt (Approved)"}],Rt=Lt,Vt=[{value:2,text:"Kích hoạt",color:"red",textColor:"#ff4d4f"},{value:1,text:"Ngưng",color:"green",textColor:"#52c41a"}],Mt=["png","jpg","jpeg","gif","tif","tiff"],Yt=[{id:11,name:"Web"},{id:1,name:"Facebook"},{id:2,name:"Zalo"},{id:3,name:"Hotline"},{id:4,name:"Trực tiếp"},{id:5,name:"Email"},{id:6,name:"MKT0D"},{id:7,name:"Giới thiệu"},{id:8,name:"Cskh"},{id:9,name:"Partner"},{id:10,name:"Shopee"}],Gt=he(Yt,"id"),Ut=[{id:1,name:"Chưa liên hệ"},{id:2,name:"Đã liên hệ"}],Ht=he(Ut,"id"),Kt=[{text:"Doanh số",value:"doanhso"},{text:"SQL",value:"sql"},{text:"Trafic",value:"trafic"}],zt=he(Kt,"value"),Qt=[{label:"Tiền mặt",value:6},{label:"Chuyển khoản MBbank",value:1},{label:"Chuyển khoản TPbank",value:7},{label:"COD Viettel",value:2},{label:"Ví Momo",value:3},{label:"Ví Vnpay",value:4},{label:"Ncc thu hộ",value:5}],Wt=[{text:"Cao",value:"cao",color:"red"},{text:"Trung bình",value:"trungbinh",color:"purple"},{text:"Thấp",value:"thap",color:"green"}],Bt=he(Wt,"value"),$t=[{value:0,text:"Ngưng",color:"red"},{value:1,text:"Kích hoạt",color:"green"}],Jt=[{value:0,text:"Ngưng",color:"red"},{value:1,text:"Kích hoạt",color:"green"}],Xt=[{value:1,name:"IT",color:"blue"},{value:2,name:"Marketing",color:"green"},{value:3,name:"Kinhdoanh",color:"purple"},{value:4,name:"Khác",color:"orange"}],Zt=1,er=he(Xt,"value"),tr=["Not Started","In Progress","Completed","On Hold"],rr=["To Do","In Progress","Done","Cancelled"],nr=[{value:"QUANTITY",name:"Số lượng"},{value:"DIMENSION",name:"Kích thước"},{value:"WEIGHT",name:"Trọng lượng"}],or=2,ir=[{value:1,text:"Công tác có phí",color:"green"},{value:2,text:"Công tác không phí",color:"red"}],ar=1,lr=2,cr=[{value:1,text:"Công ty trả/company pay",color:"green"},{value:2,text:"Cá nhân tạm ứng/person pay",color:"red"}],sr=1,ur=2,pr=[{value:1,text:"Chiều đi / Departure",color:"green"},{value:2,text:"Chiều về / Arrival",color:"red"}];function dr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function mr(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?dr(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):dr(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const fr=200,hr="CHANGE_STORE",br={SINGIN:"/auth/login"},Or={ADD_USER:"add__user",REMOVE_USER:"remove__user",TOOGLE_COLLAPSE:"tg_cll",F5_LIST:"f5_list",SET_ROUTES:"set_routes"},gr="in_app_noti",yr=".png, .jpeg, .jpg",vr="#modal",Pr="#close-modal",jr="inbox",wr="parent",Dr="DD-MM-YYYY",Sr="DD-MM-YYYY HH:mm",Cr="HH:mm",xr=3,Er="YYYY-MM-DD",kr="VND",Tr="//www.youtube.com/embed/",Ir="#ffffff",Ar=71.5,Fr={GATEWAY:""};function Nr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.GATEWAY||Fr.GATEWAY;Object.assign(Fr,mr(mr({},e),{},{GATEWAY:t}))}const qr=()=>Fr.GATEWAY,_r=()=>mr({},Fr),Lr=["columns","data","xScroll","pagination","rowKey","hasCreate","handleChangeQueryParams","resource","queryParams","totalItems","setTableFilter","customClickCreate","customActions","expandable"];function Rr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Vr(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Rr(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Rr(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Mr=e=>{let t=e.columns,r=e.data,n=e.xScroll,i=e.pagination,a=void 0===i?{}:i,s=e.rowKey,u=void 0===s?"id":s,p=e.hasCreate,d=void 0===p||p,m=e.handleChangeQueryParams,f=void 0===m?()=>null:m,h=e.resource,b=e.queryParams,O=e.totalItems,g=e.setTableFilter,y=e.customClickCreate,v=e.customActions,P=e.expandable,j=M(e,Lr);const w=A(),D=F(),S=G((e,t)=>"".concat(t[0],"-").concat(t[1],"/").concat(e),[]),C=Vr({total:O||0,pageSize:(null==b?void 0:b.limit)||10,current:(null==b?void 0:b.page)||1,showSizeChanger:!0,showQuickJumper:!1,showTotal:S},a),x=(e,t)=>{f({page:e,limit:t})};return L(Ot,{children:[L("div",{className:"list-layout__pagination-top",children:[_(l,Vr(Vr({},C),{},{onChange:x})),_("div",{className:"list-layout__group-action",children:L(o,{size:10,children:[v,d&&_(et,{handleClick:()=>{y?y():D({search:w.search,hash:"".concat(vr,"/").concat(h,"/create")})}})]})})]}),_(c,Vr({columns:t,dataSource:r,pagination:!1,rowKey:u,scroll:{x:n||1700},expandable:P,onChange:(e,t,r)=>{g(t),f(t)}},j)),_("div",{className:"list-layout__pagination-bottom",children:_(l,Vr(Vr({},C),{},{onChange:x}))})]})},Yr=U({});var Gr;const Ur=q.div(Gr||(Gr=N(["\n margin-bottom: 10px;\n .ant-form-item {\n margin-bottom: 10px !important;\n }\n .row-filter {\n .ant-form-item-control-input-content > input,\n .ant-select-selector,\n .ant-picker {\n border: 1px solid transparent;\n ","\n :hover, :focus {\n border: 1px solid ",";\n }\n }\n .ant-form-item-label {\n display: none;\n }\n .ant-input-number,\n .ant-picker {\n width: 100%;\n }\n .ant-select-selection__rendered {\n height: 32px;\n }\n .ant-form-item-control {\n line-height: 32px;\n }\n }\n .clearButton {\n background: ",";\n color: ",";\n border: 1px solid ",";\n box-sizing: border-box;\n }\n .row-action-bottom {\n display: flex;\n button {\n width: 50%;\n margin-bottom: 10px;\n }\n .filterButton {\n margin-right: 16px;\n }\n }\n .col-export-excel {\n text-align: right;\n .ant-btn {\n border-color: transparent !important;\n }\n .anticon {\n font-size: 22px;\n }\n }\n"])),"",e=>e.theme.palette.primary,e=>e.theme.background.content,e=>e.theme.palette.primary,e=>e.theme.palette.primary);function Hr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Kr(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Hr(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Hr(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const zr=t=>{let n=t.children,o=t.greyInput,i=t.onSubmitFilter,a=void 0===i?()=>null:i,l=t.onClearFilter,c=void 0===l?()=>null:l,d=t.responsiveFilter,m=void 0===d?{xxl:20,xl:20,lg:18,md:24,xs:24}:d,f=t.responsiveAction,h=void 0===f?{xxl:4,xl:4,lg:6,md:24,xs:24}:f,b=t.defaultQueryParams;const O=s.useForm(),g=ae(O,1)[0],y=e().t,v=()=>{g.validateFields().then(a)};return H(()=>{g.setFieldsValue(b)},[g,b]),_(Ur,{className:o?"grey-input-filter":"default-input-filter",children:_(s,{form:g,autoComplete:"off",children:_(Yr.Provider,{value:{form:g,allowPressEnter:!0,handleSubmit:v},children:L(u,{gutter:16,className:"row-filter",children:[_(p,Kr(Kr({},m),{},{children:n})),L(p,Kr(Kr({},h),{},{className:"row-action-bottom",children:[_(r,{type:"primary",className:"filterButton",onClick:v,children:y("button.filter")}),_(r,{className:"clearButton",onClick:()=>{g.resetFields(),c()},children:y("button.clearFilter")})]}))]})})})})};function Qr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Wr(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Qr(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Qr(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Br=e=>{H(()=>{e()},[])},$r=e=>{const t=Y.useRef(e);t.current=e,H(()=>()=>{t.current()},[])},Jr=e=>{const t=Y.useState(e),r=ae(t,2),n=r[0],o=r[1];return[n,e=>o(t=>{const r="function"==typeof e?e(t):e;return r?Wr(Wr({},t),r):t})]},Xr=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const r=Y.useRef(!1);H(()=>()=>{r.current=!1},[]),H(()=>{if(r.current)return e();r.current=!0},t)};function Zr(e){let t=arguments.length>2?arguments[2]:void 0;H(()=>{let r=!0;return(async()=>{await e(r)})(),()=>{"function"==typeof t&&t(),r=!1}},arguments.length>1&&void 0!==arguments[1]?arguments[1]:[])}const en=["onData","beforeSubmitFilter","filter","columns","apiPath","useGetAllQuery","initialFilter","tabKey","resource","hasCreate","tabProps"],tn=["apiPath"],rn=["apiPath"];function nn(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function on(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?nn(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):nn(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const an=e=>{var t,r;let n=e.onData,o=void 0===n?e=>e:n,i=e.beforeSubmitFilter,a=void 0===i?e=>e:i,l=e.filter,c=e.columns,s=e.apiPath,u=void 0===s?"":s,p=e.useGetAllQuery,d=e.initialFilter;e.tabKey;let m=e.resource,f=e.hasCreate,h=void 0===f||f;e.tabProps;let b=M(e,en),O=A(),g=F();const y=K(lt(O.search)),v=ae(y,1)[0],P=K(on(on(on({},d),v),{},{apiPath:u,resource:m})),j=ae(P,2),w=j[0],D=j[1];Xr(()=>{se(d)||D(e=>on(on({},e),d))},[]);const S=p({queryParams:w,onData:o}),C=S.data,x=S.loading,E=e=>{const t=on(on({},w),e);D(t),t.apiPath;const r=M(t,tn);g({search:ct(r)})};return L("div",{children:[l&&_(zr,{onSubmitFilter:e=>{E(on({resource:m,page:1},a(e)))},onClearFilter:()=>{const e={apiPath:w.apiPath,resource:m,page:1,limit:10};D(e);const t=M(e,rn);g({search:ct(t)})},defaultQueryParams:v,children:l}),_(Mr,on({resource:m,queryParams:w,handleChangeQueryParams:E,columns:c,hasCreate:h,data:(null==C?void 0:C.embedded)||[],totalItems:null!==(t=null==C||null===(r=C.page)||void 0===r?void 0:r.totalElements)&&void 0!==t?t:0,loading:x,setTableFilter:e=>{var t,r;t="table filter",r=e,console.log("[component.RestLayout.RestList] "+t,r)}},b))]})};function ln(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function cn(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ln(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ln(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const sn=e=>{let t=e.children,r=e.record,n=e.form,o=e.isMergeRecordOnSubmit,i=void 0===o||o,a=e.formatOnSubmit,l=void 0===a?e=>e:a,c=e.updateRecord,u=void 0===c?e=>e:c,p=e.formatDefaultValues,d=void 0===p?e=>e:p,m=e.onSubmit;const f=s.useForm(),h=ae(f,1)[0],b=n||h;H(()=>{b.setFieldsValue(d(r))},[b,r]);const O=G(e=>{const t=i?cn(cn({},r),e):e;m(l(t))},[r,m]);return _(s,{form:b,layout:"vertical",onFinish:O,children:_(Yr.Provider,{value:{form:b,record:r,updateRecord:u},children:t})})};class un{static encodeQueryData(e){if(!e)return"";const t=[];for(let r in e)e[r]&&t.push(encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t.length>0?"?"+t.join("&"):""}static generateUrlGetParams(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return String(e).concat(this.encodeQueryData(t))}static httpRequest(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"GET",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const o=qr()+t;let i;return i="GET"===r?be.get(o+this.encodeQueryData(e)):be.post(o+this.encodeQueryData(n),e),i.then(e=>e.data).catch(e=>e)}static Get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.httpRequest(t,e,"GET")}static async GetAsList(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=await this.httpRequest(t,e,"GET"),n=r.data;return 200===r.errorCode?n:[]}static Post(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.httpRequest(t,e,"POST",r)}static getJsonFromUrl(e){if(!e)return{};var t=e.substr(1),r={};return t.split("&").forEach(function(e){var t=e.split("=");r[t[0]]=decodeURIComponent(t[1])}),r}}V(un,"uploadSigFile",e=>{let t=e.onSuccess,r=e.onError,n=e.file,o=e.onProgress,i=void 0===o?e=>e:o,a=e.onSuccessUploadServer,l=void 0===a?e=>e:a,c=e.api;const s=new FormData,u={headers:{"content-type":"multipart/form-data"},onUploadProgress:e=>{i({percent:e.loaded/e.total*100},n)}};s.append("files",n),be.post(qr()+"/"+c,s,u).then(e=>{let r=e.data;const o=r.data,i=r.errorCode;t(n),i===fr&&""!==((null==o?void 0:o.fileName)||"")&&l(o.fileName)}).catch(e=>{const t=new Error(e.message);r({event:t})})});const pn=["title"];function dn(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function mn(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?dn(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):dn(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}class fn{constructor(){this.events={}}_getEventListByName(e){return void 0===this.events[e]&&(this.events[e]=new Set),this.events[e]}on(e,t){this._getEventListByName(e).add(t)}once(e,t){const r=this,n=function(){r.removeListener(e,n);for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];t.apply(r,i)};this.on(e,n)}emit(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this._getEventListByName(e).forEach(function(e){e.apply(this,r)}.bind(this))}addEventListener(e,t){this.on(e,t)}removeListener(e,t){this._getEventListByName(e).delete(t)}}class hn{static hasPermission(e,t){return"*"===e||(""===(e||"")||(0===e.length||t))}static generateRoutesFromConfigs(e,t){let r=[];return e.forEach(e=>{r=[...r,...this.setRoutes(e,t)]}),r}static setRoutes(e,t){let r=[...e.routes];return(e.settings||e.auth)&&(r=r.map(r=>{let n=e.auth?[...e.auth]:t||null;return n=r.auth?[...n,...r.auth]:n,mn(mn({},r),{},{settings:mn(mn({},e.settings),r.settings),auth:n})})),[...r]}}V(hn,"EventEmitter",fn);const bn={CONTRACT_FORM:"CONTRACT_FORM"},On=new class extends fn{constructor(){super(...arguments),V(this,"openDrawer",(e,t)=>{let r=t.title,n=M(t,pn);return this.emit(vr,{hash:e,title:r,data:n})})}normalSuccess(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.emit(gr,{type:"success",content:e,title:t})}normalInfo(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.emit(gr,{type:"info",content:e,title:t})}normalError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.emit(gr,{type:"error",content:e,title:t})}modal(e,t){this.emit(gr,{type:t,content:e,cate:"modal"})}changeStore(e){this.emit(hr,e)}};function gn(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function yn(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?gn(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):gn(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const vn=Y.createContext(),Pn={[Or.ADD_USER]:"user",[Or.REMOVE_USER]:"user",[Or.TOOGLE_COLLAPSE]:"isCollapse",[Or.F5_LIST]:"f5List"};function jn(e,t){const r=t.data,n=t.type,o=Pn[n];return o?yn(yn({},e),{},{[o]:r}):e}const wn=e=>{let t=e.children,r=e.initialRoutes;const n=z(jn,{routes:void 0===r?[]:r,isCollapse:!1}),o=ae(n,2),i=o[0],a=o[1],l=yn(yn({},i),{},{dispatch:a}),c=G(e=>{let t=e.type,r=e.data;a({type:t,data:r})},[a]);return H(()=>(On.addEventListener(hr,c),()=>{On.removeListener(hr,c)}),[c]),_(vn.Provider,{value:l,children:t})};function Dn(){const e=Y.useContext(vn);if(void 0===e)throw new Error("useCount must be used within a StoreProvider");return e}const Sn=["apiPath"],Cn="[hooks.useGetList]";function xn(e){let t=e.queryParams,r=e.onData;const n=Q(vn).f5List,o=K(!0),i=ae(o,2),a=i[0],l=i[1],c=K({embedded:[],page:{}}),s=ae(c,2),u=s[0],p=s[1],d=G(e=>{const t=e.apiPath,n=M(e,Sn);l(!0),un.Get("/"+t,n).then(async e=>{let t=e.data,n=e.errorCode,o=e.message;200===n?(Promise.resolve(r(t)).then(p),l(!1)):console.error(Cn,o)}).catch(e=>{console.error(Cn,e),l(!1)})},[r]);return H(()=>{d(t)},[t]),Xr(()=>{(null==n?void 0:n.apiPath)===t.apiPath&&d(t)},[n,t]),{data:u,loading:a}}const En=(e,t)=>(null==e?void 0:e[ie.language])||t,kn=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return On.emit(hr,{type:Or.F5_LIST,data:{apiPath:e,random:ue()}})},Tn=e=>{const t=e.errorCode,r=e.data;return 200===t?r:[]},In=e=>{const t=e.errorCode,r=e.data;return 200===t?r:{}},An=e=>{const t=e.errorCode,r=e.data;return 200===t?r:{}},Fn=e=>Array.isArray(e)&&e.length>0,Nn=e=>!Fn(e);function qn(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(Fn(e))return e.forEach(e=>qn(e,t)),e;if(!e||"object"!=typeof e)return e;for(let r of t){const t=e[r];t&&"string"==typeof t&&(e[r]=JSON.parse(t))}return e}function _n(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!e||"object"!=typeof e)return e;if(!Fn(t))return JSON.stringify(e);for(let r of t){const t=e[r];t&&"object"==typeof t&&(e[r]=JSON.stringify(t))}return e}const Ln=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;if(e&&t)for(let n of t){const t=e[n];!t||"string"!=typeof t&&"number"!=typeof t||(e[n]=ge(new Date(t),r))}},Rn=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"YYYY-MM-DD HH:mm:ss";if("object"!=typeof e)return ge(e).format(r);for(let n of t){const t=e[n];t&&(e[n]=ge(t).format(r))}return e},Vn=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"DD-MM-YYYY";return e?Oe(new Date(e)).format(t):"N/a"},Mn=e=>e?e.toLocaleString("it-IT")+" đ":"0 đ",Yn=e=>(e.total||0)*(e.vatPercent/100),Gn=e=>{if(!e)return["(empty)",null];if("string"!=typeof e)return["(invalid)",null];try{return[null,JSON.parse(e)]}catch(e){return[e,null]}};function Un(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Hn(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Un(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Un(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Kn=e=>{let t=e.apiPath,r=void 0===t?"":t,n=e.filter,i=void 0===n?"":n,a=e.grid,l=void 0===a?{}:a,c=e.hasCreate,u=void 0!==c&&c,p=e.onClickCreate,m=void 0===p?e=>e:p,f=e.renderItem,h=void 0===f?e=>"":f,b=e.onData,O=void 0===b?e=>e:b;const g=s.useForm(),y=ae(g,1)[0],v=K({apiPath:r,page:1}),P=ae(v,2),j=P[0],w=P[1],D=xn({queryParams:j,onData:O}),S=D.data,C=S.embedded,x=S.page,E=D.loading;return L("div",{id:"content-list",children:[L(s,{onFinish:e=>{const t=Hn({},e);Rn(t,["from","to"]),w(e=>Hn(Hn({},e),t))},form:y,children:[i,L(o,{align:"end",children:[_(Re,{title:"Tìm kiếm",htmlType:"submit"}),_(Re,{title:"Xóa lọc",variant:"dashed",onClick:()=>{y.resetFields(),y.submit()}}),u&&_(Re,{title:"Thêm mới",color:"primary",variant:"solid",onClick:m})]})]}),_(d,{style:{marginTop:20},grid:Hn({gutter:16,xs:1,sm:2,md:3,lg:3,xl:4,xxl:4},l),dataSource:C,renderItem:h,loading:E,pagination:{current:(null==j?void 0:j.page)||1,total:(null==x?void 0:x.totalElements)||0,pageSize:10,onChange:(e,t)=>{w(t=>Hn(Hn({},t),{},{page:e}))},showSizeChanger:!1}})]})},zn=["src","fallbackSrc"];function Qn(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const Wn=e=>{let t=e.src,r=e.fallbackSrc,n=void 0===r?"/img/image_not_found.png":r,o=M(e,zn);const i=K(t),a=ae(i,2),l=a[0],c=a[1];return _(m,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Qn(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Qn(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({src:l,onError:()=>{l!==n&&c(n)}},o))},Bn=f.Text,$n=()=>L(u,{justify:"start",align:"middle",children:[_(p,{span:7,className:"logo",children:_("img",{src:"/logo.png",alt:"Logo",style:{maxHeight:40,width:"auto"}})}),L(p,{span:14,className:"company",children:[_("p",{children:_("strong",{children:"CÔNG TY CỔ PHẦN FLAST SOLUTUON"})}),L("div",{className:"contact",children:[_(Bn,{children:"Hà Nội: Số 35 Lê Văn Lương, Thanh Xuân, TP.Hà Nội"}),L(u,{justify:"start",style:{marginTop:"5px"},children:[_(Bn,{children:"(0987) 938-491"}),_(Bn,{className:"left20",children:"flast.vn@printgo.vn"}),_(Bn,{className:"left20",children:"www.flast.vn"})]})]})]})]}),Jn=()=>_("span",{});var Xn,Zn,eo,to,ro;const no=q.div(Xn||(Xn=N(["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: calc(100vh - 170px);\n background-color: #f5f8fa;\n text-align: center;\n"]))),oo=q.img(Zn||(Zn=N(["\n width: 300px;\n margin-bottom: 24px;\n"]))),io=q.p(eo||(eo=N(["\n font-size: 20px;\n color: #333;\n"]))),ao=q.p(to||(to=N(["\n font-size: 16px;\n color: #666;\n"]))),lo=q.a(ro||(ro=N(["\n background-color: #007bff;\n color: white;\n font-size: 16px;\n padding: 12px 24px;\n border-radius: 8px;\n &:hover {\n background-color: #0056b3;\n }\n"]))),co=e=>{let t=e.message;return L(no,{children:[_(oo,{src:"/img/404.png",alt:"404 Image"}),_(io,{children:"Yêu cầu không tìm thấy"}),_(ao,{children:t||"Trang yêu cầu không tìm thấy. Vui lòng tìm kiếm lại."}),_(lo,{href:"/",children:"Về trang chủ"})]})};var so;const uo=q.div(so||(so=N(["\n .user-info-wrapper {\n display: flex;\n align-items: center;\n .user-content {\n flex: 1;\n overflow: hidden;\n }\n .ant-avatar {\n margin-right: 10px;\n }\n .user-note {\n font-size: 12px;\n color: ",";\n text-overflow: ellipsis;\n overflow: hidden;\n }\n }\n"])),e=>e.theme.text.mainL1),po=t=>{let r=t.item,n=t.avatarProp,o=void 0===n?"avatar":n,i=t.nameProp,a=void 0===i?"name":i,l=t.noteProp,c=t.customNote,s=t.disabled,u=t.path,p=t.size;const d=e().t,m=L("div",{className:"user-info-wrapper",children:[_(h,{size:p,src:null==r?void 0:r[o],icon:_(te,{})}),L("div",{className:"user-content",children:[_("div",{className:"user-name ellipsis-2-t",children:(null==r?void 0:r[a])||d("error.waitingUpdate")}),_("div",{className:"user-note",children:l?null==r?void 0:r[l]:c})]})]});return _(uo,{children:!u||s?m:_(I,{className:"link-default",to:u,children:m})})},mo=["path"];function fo(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const ho=e=>{let t=e.path,r=M(e,mo);return _(po,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?fo(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):fo(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({path:t},r))},bo=e=>{let t=e.files,r=void 0===t?[]:t,n=e.multiPathFile,o=e.onRemoveFile,i=void 0===o?e=>e:o,a=e.onRemoveMultiPathFile,l=void 0===a?e=>e:a;const c=K([]),s=ae(c,2),u=s[0],d=s[1];H(()=>{let e=n.map(e=>e.name);d(e)},[n]);return[...u,...r].map((e,t)=>_(p,{span:8,children:_(b,{color:"#108ee9",icon:_(O,{title:"Bạn có chắc muốn xóa File này ?",onConfirm:()=>{return t=e,void(String(t).startsWith("http")?i(t):l(t));var t},okText:"Yes",cancelText:"No",children:_(re,{})}),children:_("span",{onClick:()=>(e=>{String(e).startsWith("http")&&window.open(e,"_blank")})(e),children:e.split("/").filter(Boolean).pop()})})},t))};const Oo=new class extends hn.EventEmitter{constructor(){super(...arguments),V(this,"handleAuthentication",()=>{let e=this.getAccessToken();e?this.isAuthTokenValid(e)?this.emit("onAutoLogin",!0):(this.setSession(null),this.emit("onAutoLogout","access_token expired")):this.emit("onNoAccessToken")}),V(this,"signInWithToken",async()=>{try{const e=await un.Post("/auth/sign-with-token",{token:this.getAccessToken()}),t=e.data,r=e.success;this.setSession(r?t:null)}catch(e){this.emit("onAutoLogout","sign-in-with-token "+e.message)}return"done"}),V(this,"setSession",e=>{if(e){const t=e.jwtToken,r=e.user;localStorage.setItem("jwt_access_token",t),be.defaults.headers.common.Authorization="Bearer "+t,On.emit(hr,{type:Or.ADD_USER,data:r})}else localStorage.removeItem("jwt_access_token"),delete be.defaults.headers.common.Authorization}),V(this,"logout",()=>{this.setSession(null)}),V(this,"isAuthTokenValid",e=>""!==(e||"")),V(this,"getAccessToken",()=>window.localStorage.getItem("jwt_access_token"))}init(){this.handleAuthentication()}},go=["fileName"];function yo(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function vo(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?yo(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):yo(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Po=e=>{let t=e.apiUploadMultiPart,n=e.apiUploadUrlFile,i=void 0===n?"":n,a=e.apiRemoveFile,l=void 0===a?"":a,c=e.title,s=void 0===c?"Upload ảnh sản phẩm":c,m=e.showImgSlide,f=void 0===m||m,h=e.imageSize,b=void 0===h?80:h,O=e.onBeforeSubmitMultiPart,j=void 0===O?e=>e:O,w=e.onBeforeSubmitUrl,D=void 0===w?e=>e:w,S=e.onClickAddImageToContent,C=void 0===S?e=>e:S,x=e.onToggleFeatured,E=void 0===x?e=>e:x,k=e.onToggleSlideShow,T=void 0===k?(e,t)=>!0:k;const I=Q(Yr).record,A=K([]),F=ae(A,2),N=F[0],q=F[1],R=K(!1),V=ae(R,2),Y=V[0],G=V[1],U=K(""),z=ae(U,2),W=z[0],B=z[1];H(()=>{var e;q(null!==(e=null==I?void 0:I.images)&&void 0!==e?e:[])},[I]);const $=async()=>{if(!W.trim())return void P.warning("Vui lòng nhập URL hình ảnh!");if(i)return void P.warning("Vui lòng cấu hình API cập nhật Url file !");const e={url:W.trim(),name:W.trim().split("/").pop(),isFeatured:!1,isSlideshow:!1,fromUpload:!0},t=await un.Post(i,{method:"POST",body:D(e)}),r=t.errorCode,n=t.data;200===r?(q(e=>[...e,n]),B(""),G(!1)):P.error("Update file url thất bại")},J=async e=>{const r=new FormData;r.append("image",e.originFile,e.name),r.append("isFeatured",e.isFeatured),r.append("isSlideshow",e.isSlideshow);const n=await fetch(String(qr()).concat(t),{method:"POST",headers:{Authorization:"Bearer ".concat(Oo.getAccessToken())},body:j(r)});if(!n.ok)return void P.error("Upload thất bại!");const o=await n.json(),i=o.data,a=o.errorCode,l=o.message;if(a!==fr)return void P.error(l);const c=i.fileName,s=M(i,go);q(t=>t.map(t=>t.id===e.id?vo(vo({},s),{},{url:String(qr()).concat(c),originFile:null,fromUpload:!1}):t)),e.url&&e.fromUpload&&URL.revokeObjectURL(e.url)};return L("div",{style:{padding:"20px 0px",fontFamily:"Arial"},children:[_("h3",{children:s}),_("div",{style:{border:"1px solid #e8e8e8",borderRadius:"4px",marginBottom:"16px",padding:"12px"},children:L(u,{justify:"space-between",align:"middle",children:[L(o,{children:[_(g,{showUploadList:!1,beforeUpload:()=>!1,onChange:e=>{let t=e.file;e.fileList;const r={id:String(Date.now()),url:URL.createObjectURL(t),name:t.name,isFeatured:!1,isSlideshow:!1,fromUpload:!0,originFile:t};q(e=>e.some(e=>e.name===t.name&&e.size===t.size)?e:[r,...e])},children:_(r,{type:"primary",style:{backgroundColor:"#52c41a",borderColor:"#52c41a"},children:"Thêm ảnh..."})}),_(r,{type:"default",style:{backgroundColor:"#f5a623",borderColor:"#f5a623",color:"white"},children:"Hủy"})]}),_(r,{type:"primary",style:{backgroundColor:"#4096ff",borderColor:"#4096ff"},onClick:()=>{G(!0)},children:"Thêm Url"})]})}),Y&&L("div",{style:{border:"1px solid #e8e8e8",borderRadius:"4px",marginBottom:"16px",padding:"12px"},children:[_(y,{placeholder:"Nhập URL hình ảnh...",value:W,onChange:e=>B(e.target.value),onPressEnter:$,style:{marginBottom:"8px"}}),L(o,{children:[_(r,{type:"primary",onClick:$,children:"Xác nhận"}),_(r,{type:"default",onClick:()=>G(!1),children:"Hủy"})]})]}),_("div",{style:{border:"1px solid #e8e8e8",borderRadius:"4px"},children:_(d,{dataSource:N,renderItem:e=>L(d.Item,{style:{border:"1px solid #e8e8e8",borderBottom:"none",padding:"12px",display:"flex",alignItems:"center"},children:[_(p,{span:4,children:_(Wn,{preview:!1,src:e.url,alt:e.name,width:b,height:b,style:{objectFit:"cover",borderRadius:"4px"}})}),L(p,{span:12,style:{paddingLeft:"16px",overflow:"hidden"},children:[_("div",{style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},children:e.name}),L("div",{style:{marginTop:"8px"},children:[_(v,{checked:e.isFeatured,onChange:t=>{return r=e.id,q(N.map(e=>vo(vo({},e),{},{isFeatured:e.id===r?!e.isFeatured:e.isFeatured}))),void E(r);var r},style:{marginRight:"16px"},children:"Chọn làm ảnh đại diện"}),f&&_(v,{checked:e.isSlideshow,onChange:t=>{return r=e.id,n=t.target.checked,q(N.map(e=>e.id===r?vo(vo({},e),{},{isSlideshow:n}):e)),void T(r,n);var r,n},children:"Chọn làm ảnh slide"})]})]}),_(p,{span:8,style:{textAlign:"right"},children:L(o,{children:[e.fromUpload&&_(r,{icon:_(ne,{}),type:"primary",size:"small",style:{backgroundColor:"#1890ff",borderColor:"#1890ff"},onClick:()=>(e=>{const t=N.find(t=>t.id===e);t&&t.fromUpload&&t.originFile&&J(t)})(e.id),children:"Tải lên"}),ht(e.id)&&_(r,{icon:_(Z,{}),danger:!0,size:"small",onClick:()=>C(e.url)}),_(r,{icon:_(re,{}),danger:!0,size:"small",onClick:()=>{return t=e.id,void(l?(un.Post("".concat(l,"/").concat(t),{}),q(N.filter(e=>e.id!==t))):P.error("Chưa cấu hình enpoint xóa file !"));var t}})]})})]},e.id)})})]})},jo=["name","label","required","messageRequire","placeholder","rules","initialValue","formItemProps","ContentComponent","whitespace","isShowTooltip","minLength","maxLength"];function wo(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Do(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?wo(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):wo(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const So=t=>{let r=t.name,n=t.label,o=t.required,i=t.messageRequire,l=void 0===i?"error.required":i,c=t.placeholder,u=t.rules,p=void 0===u?[]:u,d=t.initialValue,m=t.formItemProps,f=t.ContentComponent,h=void 0===f?y:f,b=t.whitespace,O=t.isShowTooltip,g=t.minLength,v=t.maxLength,P=M(t,jo);const j=e().t,w=Q(Yr),D=w.allowPressEnter,S=w.handleSubmit,C=W(()=>{const e=[];return g&&e.push({min:g,message:j("error.minLength",{min:g})}),v&&e.push({max:v,message:j("error.maxLength",{max:v})}),e},[]),x=_(s.Item,Do(Do(Do({},n&&{label:j(n)}),{},{name:r,initialValue:d,rules:[{required:o,message:j(l)},...b?[{whitespace:b,message:j("error.empty")}]:[],...C,...p]},m),{},{children:_(h,Do(Do(Do({},c&&{placeholder:j(c)}),P),{},{onPressEnter:D?S:void 0}))}));return O?_(a,{title:c?j(c):"",children:x}):x},Co=["name","label","required","messageRequire","placeholder","rules","initialValue","formItemProps","isShowTooltip","form"];function xo(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Eo(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?xo(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):xo(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const ko=t=>{let r=t.name,n=t.label,o=t.required,i=t.messageRequire,l=void 0===i?"error.required":i,c=t.placeholder,u=t.rules,p=void 0===u?[]:u,d=t.initialValue,m=t.formItemProps,f=t.isShowTooltip;t.form;let h=M(t,Co);const b=e().t,O=_(s.Item,Eo(Eo(Eo({},n&&{label:b(n)}),{},{name:r,initialValue:d,rules:[{required:o,message:b(l)},...p]},m),{},{children:_(j,Eo(Eo({},c&&{placeholder:b(c)}),{},{formatter:pt,parser:dt},h))}));return f?_(a,{title:c?b(c):"",children:O}):O},To=["name","label","required","messageRequire","placeholder","rules","resourceData","valueProp","titleProp","isFilterOption","formatText","formatValue","searchKey","loading","onEnter","enableWaypoint","initialValue","formItemProps","isShowTooltip","onChangeGetSelectedItem","onChange","isLimitWidth"];function Io(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ao(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Io(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Io(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Fo=w.Option,No=t=>{let r=t.name,n=t.label,o=void 0===n?"":n,l=t.required,c=t.messageRequire,u=void 0===c?"error.required":c,p=t.placeholder,d=void 0===p?"placeholder.select":p,m=t.rules,f=void 0===m?[]:m,h=t.resourceData,b=t.valueProp,O=void 0===b?"id":b,g=t.titleProp,y=void 0===g?"name":g,v=t.isFilterOption,P=void 0===v||v,j=t.formatText,D=void 0===j?e=>e:j,S=t.formatValue,C=void 0===S?e=>e:S,x=t.searchKey,E=void 0===x?"name":x,k=t.loading,T=t.onEnter,I=t.enableWaypoint,A=t.initialValue,F=t.formItemProps,N=t.isShowTooltip,q=t.onChangeGetSelectedItem,R=t.onChange,V=t.isLimitWidth,Y=void 0!==V&&V,U=M(t,To);const H=e().t,K=G((e,t)=>{var r;const n=pe(t.children)?de(null===(r=t.children.props)||void 0===r?void 0:r.record,E):t.children;return st(n,e)?t.value:null},[E]),z=_(Fo,{className:"loading-select-option",disabled:!0,value:"waypointTracking",children:_("div",{style:{height:1},children:_(ye,{onEnter:T})})},"waypoint"),Q=W(()=>_(Fo,{className:"loading-select-option",disabled:!0,value:"loadingTracking",children:_("div",{className:"loading-select",children:_(i,{})})},"loading"),[]),B=_(s.Item,Ao(Ao({label:H(o),name:r,rules:[{required:l,message:H(u)},...f],initialValue:A},F),{},{children:L(w,Ao(Ao({placeholder:H(d),filterOption:!!P&&K,popupMatchSelectWidth:Y},U),{},{onChange:R||(e=>{if(!q)return;const t=null==h?void 0:h.find(t=>de(t,O)===e);q(e,t)}),children:[me(h,(e,t)=>_(Fo,{value:C(O?de(e,O):e,e),children:D(y?de(e,y):e,e)},String(t))),I&&z,k&&Q]}))}));return N?_(a,{title:d?H(d):"",children:B}):B},qo=["apiPath","apiAddNewItem","name","label","required","messageRequire","placeholder","rules","valueProp","titleProp","isFetchOnMount","formatText","formatValue","searchKey","initialValue","formItemProps","isShowModalCreateNewItem","onChangeGetSelectedItem","onCreateNewItem","isLimitWidth","filter","createDefaultValues","onData","fnLoadData","title"];function _o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Lo(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_o(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_o(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Ro=w.Option,Vo=t=>{let n=t.apiPath,o=void 0===n?"":n,a=t.apiAddNewItem,l=void 0===a?"":a,c=t.name,u=t.label,p=void 0===u?"":u,d=t.required,m=t.messageRequire,f=void 0===m?"error.required":m,h=t.placeholder,b=void 0===h?"placeholder.select":h,O=t.rules,g=void 0===O?[]:O,v=t.valueProp,j=void 0===v?"id":v,S=t.titleProp,C=void 0===S?"name":S,x=t.isFetchOnMount,E=void 0===x||x,k=t.formatText,T=void 0===k?e=>e:k,I=t.formatValue,A=void 0===I?e=>e:I,F=t.searchKey,N=void 0===F?"name":F,q=t.initialValue,V=t.formItemProps,Y=t.isShowModalCreateNewItem,U=t.onChangeGetSelectedItem,z=t.onCreateNewItem,B=void 0===z?()=>!1:z,$=t.isLimitWidth,J=void 0!==$&&$,X=t.filter,ee=t.createDefaultValues,te=t.onData,re=void 0===te?e=>e:te,ne=t.fnLoadData;t.title;let oe=M(t,qo);const ie=Q(vn).f5List,le=K(X||{}),ce=ae(le,2),se=ce[0],ue=ce[1],pe=K(!1),me=ae(pe,2),fe=me[0],he=me[1],be=K([]),Oe=ae(be,2),ge=Oe[0],ye=Oe[1],Pe=K(""),je=ae(Pe,2),we=je[0],De=je[1];H(()=>{ue(X)},[X]),Br(()=>{E&&Nn(ge)&&Se(se)});const Se=G(e=>{o&&(ne?Promise.resolve(ne(e)).then(re).then(e=>{ye(e)}):(he(!0),un.Get("/"+o,e).then(async e=>{let t=e.data;if(200!==e.errorCode)return Promise.reject("Get not success from server .!");Promise.resolve(re(t)).then(e=>{ye(e)}),he(!1)}).catch(e=>{console.log("[form.FormSelectAPI] Error ",e),he(!1)})))},[re,o]);Xr(()=>{var e;(null==ie?void 0:ie.apiPath)!==o&&!1===(null!==(e=null==se?void 0:se.forceUpdate)&&void 0!==e&&e)||Se(se)},[ie,se,o]);const Ce=e().t,xe=W(()=>_(Ro,{className:"loading-select-option",disabled:!0,value:"loadingTracking",children:_("div",{className:"loading-select",children:_(i,{})})},"loading"),[]),Ee=G(async()=>{if(B())return;if(!we||!l)return;let e=Lo({[N]:we},ee||{});const t=await un.Post("/"+l,e),r=t.data,n=t.errorCode,o=t.message;if(n===fr){const e=ge.concat(r);ye(e),De("")}P.info(o)},[we,ee,ne]),ke=G(e=>{Se(Lo(Lo({},se),{},{[N]:e}))},[se,N]),Te=e=>{De(e.target.value)};return _(s.Item,Lo(Lo({label:Ce(p),name:c,rules:[{required:d,message:Ce(f)},...g],initialValue:q},V),{},{children:_(w,Lo(Lo({placeholder:Ce(b),filterOption:!1,popupMatchSelectWidth:J,dropdownRender:e=>L(R,{children:[e,_(D,{style:{margin:"8px 0"}}),L("div",{style:{padding:"0 8px 4px",display:"flex",alignItems:"end"},children:[!Y&&_(y,{style:{width:"100%"},placeholder:"Add new item",value:we,onChange:Te,onKeyDown:e=>e.stopPropagation()}),_(r,{type:"text",icon:_(Z,{}),onClick:Ee,color:"primary",variant:"dashed",style:{marginLeft:20},children:"Add item"})]})]}),options:null==ge?void 0:ge.map(e=>({label:T(C?de(e,C):e,e),value:A(j?de(e,j):e,e)})),onSearch:ve(ke,600),onChange:e=>{if(!U)return;const t=null==ge?void 0:ge.find(t=>de(t,j)===e);U(e,t)}},oe),{},{children:fe&&xe}))}))},Mo=["name","label","required","messageRequire","initialValue","rules","placeholder","disabled","format","formItemProps"];function Yo(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Go(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Yo(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Yo(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Uo=t=>{let r=t.name,n=t.label,o=t.required,i=t.messageRequire,a=void 0===i?"error.required":i;t.initialValue;let l=t.rules,c=void 0===l?[]:l,u=t.placeholder,p=t.disabled,d=void 0!==p&&p,m=t.format,f=void 0===m?"DD-MM-YYYY":m,h=t.formItemProps,b=M(t,Mo);const O=e().t;return _(s.Item,Go(Go(Go({},n&&{label:O(n)}),{},{name:r,rules:[{required:o,message:O(a)},...c],normalize:e=>e&&ge(e),getValueProps:e=>({value:e&&ge(e)})},h),{},{children:_(S,Go(Go({style:{width:"100%"},format:f,disabled:d},u&&{placeholder:O(u)}),b))}))},Ho=["name","label","required","messageRequire","onChange","initialValue","rules","placeholder","format","formItemProps"];function Ko(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function zo(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ko(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ko(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Qo=t=>{let r=t.name,n=t.label,o=t.required,i=t.messageRequire,a=void 0===i?"error.required":i,l=t.onChange,c=t.initialValue,u=t.rules,p=void 0===u?[]:u,d=t.placeholder,m=t.format,f=void 0===m?"HH:mm":m,h=t.formItemProps,b=M(t,Ho);const O=e().t;return _(s.Item,zo(zo(zo({},n&&{label:O(n)}),{},{name:r,rules:[{required:o,message:O(a)},...p],initialValue:c},h),{},{children:_(C,zo(zo({onChange:l,format:f},d&&{placeholder:O(d)}),b))}))},Wo=["name","label","required","messageRequire","placeholder","rules","formItemProps"];function Bo(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function $o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Bo(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Bo(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Jo=y.TextArea,Xo=t=>{let r=t.name,n=t.label,o=t.required,i=t.messageRequire,a=void 0===i?"error.required":i,l=t.placeholder,c=t.rules,u=void 0===c?[]:c,p=t.formItemProps,d=M(t,Wo);const m=e().t;return _(s.Item,$o($o($o({},p),n&&{label:m(n)}),{},{name:r,rules:[{required:o,message:m(a)},{whitespace:!0,message:m("error.empty")},...u],children:_(Jo,$o($o({},d),l&&{placeholder:m(l)}))}))},Zo=["name","label","text","rules","formItemProps","initialValue"];function ei(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ti(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ei(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ei(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const ri=t=>{let r=t.name,n=t.label,o=t.text,i=t.rules,a=void 0===i?[]:i,l=t.formItemProps,c=t.initialValue,u=M(t,Zo);const p=e().t;return _(s.Item,ti(ti(ti({},l),n&&{label:p(n)}),{},{name:r,initialValue:c,rules:a,valuePropName:"checked",children:L(v,ti(ti({},u),{},{children:[" ",o," "]}))}))},ni=["name","label","required","messageRequire","placeholder","valueProp","titleProp","formatText","formatValue","rules","resourceData","initialValue","formItemProps"];function oi(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ii(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?oi(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):oi(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const ai=t=>{let r=t.name,n=t.label,o=t.required,i=t.messageRequire,a=void 0===i?"error.required":i,l=t.placeholder,c=t.valueProp,u=void 0===c?"id":c,p=t.titleProp,d=void 0===p?"name":p,m=t.formatText,f=void 0===m?e=>e:m,h=t.formatValue,b=void 0===h?e=>e:h,O=t.rules,g=void 0===O?[]:O,y=t.resourceData,v=void 0===y?[]:y,P=t.initialValue,j=t.formItemProps,w=M(t,ni);const D=e().t;return _(s.Item,ii(ii(ii({},n&&{label:D(n)}),{},{name:r,initialValue:P,rules:[{required:o,message:D(a)},...g]},j),{},{children:_(x.Group,ii(ii(ii({},l&&{placeholder:D(l)}),w),{},{children:me(v,(e,t)=>_(x,{value:b(u?de(e,u):e,e),children:f(d?de(e,d):e,e)},String(t)))}))}))},li=["name","label","required","messageRequire","placeholder","rules","resourceData","valueProp","titleProp","isFilterOption","formatText","formatValue","searchKey","loading","initialValue","formItemProps","customGetValueFromEvent"];function ci(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function si(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ci(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ci(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const ui=E.Option,pi=t=>{let r=t.name,n=t.label,o=void 0===n?"":n,a=t.required,l=t.messageRequire,c=void 0===l?"error.required":l,u=t.placeholder,p=void 0===u?"placeholder.select":u,d=t.rules,m=void 0===d?[]:d,f=t.resourceData,h=t.valueProp,b=void 0===h?"id":h,O=t.titleProp,g=void 0===O?"name":O,y=t.isFilterOption,v=void 0===y||y,P=t.formatText,j=void 0===P?e=>e:P,w=t.formatValue,D=void 0===w?e=>e.toString():w,S=t.searchKey,C=void 0===S?"name":S,x=t.loading,k=t.initialValue,T=t.formItemProps,I=t.customGetValueFromEvent,A=M(t,li);const F=e().t,N=G((e,t)=>{var r;const n=pe(t.children)?de(null===(r=t.children.props)||void 0===r?void 0:r.record,C):t.children;return st(n,e)?t.value:null},[C]),q=W(()=>_(ui,{className:"loading-select-option",disabled:!0,value:"loadingTracking",children:_("div",{className:"loading-select",children:_(i,{})})},"loading"),[]);return _(s.Item,si(si(si({label:F(o),name:r,rules:[{required:a,message:F(c)},...m],initialValue:k},I&&{getValueFromEvent:e=>{if(!I)return e;const t=null==f?void 0:f.find(t=>de(t,b).toString()===e);return I(e,t)}}),T),{},{children:L(E,si(si({placeholder:F(p),filterOption:!!v&&N},A),{},{children:[me(f,(e,t)=>_(ui,{value:D(b?de(e,b):e),children:j(g?de(e,g):e)},String(t))),x&&q]}))}))},di=["name","label","required","resourcesData","messageRequire","rules","initialValue","formItemProps"];function mi(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function fi(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?mi(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):mi(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const hi=k.SHOW_CHILD,bi=t=>{let r=t.name,n=t.label,o=t.required,i=t.resourcesData,a=void 0===i?[]:i,l=t.messageRequire,c=void 0===l?"error.required":l,u=t.rules,p=void 0===u?[]:u,d=t.initialValue,m=t.formItemProps,f=M(t,di);const h=e().t;return _(s.Item,fi(fi({label:h(n),name:r,rules:[{required:o,message:h(c)},...p],initialValue:d},m),{},{children:_(k,fi({style:{width:"100%"},options:a,onChange:e=>{console.log(e)},multiple:!0,maxTagCount:"responsive",showCheckedStrategy:hi},f))}))};function Oi(e){let t=e.queryParams,r=e.onCompleted,n=void 0===r?e=>e:r,o=e.api;const i=K(!1),a=ae(i,2),l=a[0],c=a[1],s=K({}),u=ae(s,2),p=u[0],d=u[1],m=Q(vn).f5List,f=G(async e=>{if(l)return Promise.resolve({eMsg:"loading"});c(!0);const t=await un.Get("/"+o,e),r=t.data,i=t.errorCode;if(c(!1),i!==fr)return Promise.resolve({eMsg:o+" not fetch success .!"});let a=r;return fe(a)&&(a={embedded:a,page:{}}),d(a),n(a),a},[n,o,l]);H(()=>{f(t)},[t]);const h=G(async e=>{let r=e.filterField,n=e.defaultValue;!function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";console.log("[hooks.useData] "+t,e)}({queryParams:t,filterField:r,defaultValue:n},"fetchMore");const i=await un.Get("/"+o,{[r]:n}),a=i.data;if(i.errorCode!==fr)return{embedded:[],page:{}};let l=a;return fe(l)&&(l={embedded:l,page:{}}),l},[t,o]);return Xr(()=>{f(t)},[m]),{loading:l,data:p,refetch:f,fetchMore:h}}const gi=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"customer/find"}),yi=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"user/list"}),vi=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"product/fetch"}),Pi=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"provider/fetch"}),ji=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"province/find"}),wi=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"warehouse/fetch-stock"}),Di=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"category/product/fetch"}),Si=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"shipping/fetch-status"}),Ci=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"order/fetch"}),xi=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"service/list"}),Ei=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"material/fetch"}),ki=e=>Oi({queryParams:e.queryParams,onCompleted:e.onCompleted,api:"faq/fetch"});function Ti(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ii(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ti(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ti(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Ai=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return console.log("[hooks.useInfinite] "+t,e)},Fi=e=>{var t,r;let n=e.initialFilter,o=void 0===n?{}:n,i=e.useGetAllQuery,a=e.searchKey,l=void 0===a?"q":a,c=e.handleSelectedDefault;const s=K(o),u=ae(s,2),p=u[0],d=u[1],m=K(!c),f=ae(m,2),h=f[0],b=f[1],O=K(1),g=ae(O,2),y=g[0],v=g[1],P=K([]),j=ae(P,2),w=j[0],D=j[1],S=i({queryParams:p,onCompleted:e=>{var t;(D(null==e?void 0:e.embedded),h)||(b(!0),null==c||c(null==e||null===(t=e.embedded)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.id))}}),C=S.loading,x=S.data,E=S.refetch,k=S.fetchMore;return{onLoadMore:()=>{var e,t;return Ai("onLoadMore .!!"),y!==(null==x||null===(e=x.page)||void 0===e?void 0:e.totalPages)||C?E(Ii(Ii({},p),{},{page:(null==x||null===(t=x.page)||void 0===t?void 0:t.currentPage)+1})).then(e=>{var t;v(null==e||null===(t=e.page)||void 0===t?void 0:t.currentPage);const r=je(w,null==e?void 0:e.embedded,"id");D(r)}):Promise.resolve()},onSearch:e=>{d(Ii(Ii({},p),{},"q"===l?{page:1,q:(null==e?void 0:e.trim())||void 0}:{[l]:e,page:1}))},fetchMoreDefaultValue:(e,t)=>{var r;Ai({filterField:e,defaultValue:t},"fetchMoreDefaultValue .!!"),null===(r=k({filterField:e,defaultValue:t}))||void 0===r||r.then(e=>{const t=je(w,null==e?void 0:e.embedded,"id");D(t)})},onSubmitFilter:e=>{d(Ii(Ii({},p),{},{page:1},e))},onClearFilter:()=>{d({page:1,limit:10})},enableWaypoint:!C&&(null==x||null===(t=x.embedded)||void 0===t?void 0:t.length)<(null==x||null===(r=x.page)||void 0===r?void 0:r.pageSize),loading:C,resourceData:w,refetch:E}},Ni=["useGetAllQuery","initialFilter","searchKey","filterField","customValue","handleSelectedDefault"];function qi(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?qi(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):qi(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Li=(e,t)=>{let r=e.useGetAllQuery,n=e.initialFilter,o=e.searchKey,i=void 0===o?"q":o,a=e.filterField,l=void 0===a?"id":a,c=e.customValue,s=e.handleSelectedDefault,u=M(e,Ni);const p=Q(Yr).record,d=Pe(p,u.name),m=W(()=>c||(null!=d?d:void 0),[d,c]),f=Fi({initialFilter:n,useGetAllQuery:r,searchKey:i,handleSelectedDefault:s}),h=f.onLoadMore,b=f.onSearch,O=f.enableWaypoint,g=f.fetchMoreDefaultValue,y=f.loading,v=f.resourceData,P=f.refetch;return H(()=>{m&&g(l,m)},[m]),$(t,()=>({refetchList:()=>{P()}}),[m]),_(No,_i(_i({onEnter:h,loading:y,resourceData:v,enableWaypoint:O,onSearch:ve(b,600),isFilterOption:!1},u),{},{showSearch:!0}))};var Ri=B(Li);const Vi=["name"];function Mi(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const Yi=e=>{let t=e.name,r=M(e,Vi);return _(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Mi(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Mi(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:ji,name:t||"provinceId",valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id"},r))},Gi=()=>L(R,{children:[_(p,{md:12,xs:24,children:_(Yi,{name:"provinceId",label:"Tỉnh / TP",required:!0,placeholder:"Tỉnh / TP",initialFilter:{id:0}})}),_(p,{md:12,xs:24,children:_(s.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.provinceId!==t.provinceId,children:e=>{let t=e.getFieldValue;return _(Ui,{parentId:t("provinceId")})}})}),_(p,{md:24,xs:24,children:_(So,{label:"Địa chỉ",name:"address",required:!0,placeholder:"Địa chỉ"})})]}),Ui=Y.memo(e=>{let t=e.parentId;const r=K([]),n=ae(r,2),o=n[0],i=n[1];return Zr(async()=>{if(!t)return;const e=await un.GetAsList("/province/find",{id:t});i(e)},[t]),_(No,{name:"wardId",label:"Phường / Xã",required:!0,resourceData:o,placeholder:"Phường / Xã"})}),Hi=["name"];function Ki(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function zi(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ki(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ki(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}const Qi=e=>{let t=e.name,r=M(e,Hi);return _(s.Item,zi(zi({name:t},r),{},{hidden:!0,children:_(y,{})}))},Wi=B((e,t)=>{let r=e.name,n=e.initContent,o=void 0===n?"":n,i=e.placeholder,a=void 0===i?"Nhập nội dung":i;const l=Q(Yr).form,c=K(""),s=ae(c,2),u=s[0],p=s[1],d=J(null),m={placeholder:a||"",minHeight:700,spellcheck:!0,enter:"BR"},f=e=>{const t=e||"";l.setFieldValue(r,t)};return $(t,()=>({insertImage:e=>{if(!d.current)return;const t=d.current,r='\n <p style="text-align: center;">\n <img src="'.concat(e,'" style="max-width: 600px; height: auto;" />\n </p>\n ');try{t.selection.insertHTML(r),f(t.value)}catch(e){console.error("Insert failed:",e)}}}),[l,r]),Zr(()=>{p(o)},[o]),_(we,{value:u,config:m,onChange:f,ref:e=>{d.current=e}})});var Bi;const $i=q.div(Bi||(Bi=N(["\n .form-list {\n &__list-item {\n position: relative;\n padding: 15px;\n border: 2px dashed ",";\n border-radius: 8px;\n margin-bottom: 20px;\n }\n &__remove-button {\n position: absolute;\n top: -10px;\n right: -10px;\n font-size: 25px;\n }\n }\n"])),e=>e.theme.border.default),Ji=t=>{let n=t.children,o=t.name,i=t.showBtnInLeft,a=void 0===i||i,l=t.textAddNew,c=void 0===l?"Thêm mới":l,u=t.title,p=t.formatInitialValue,d=void 0===p?e=>e:p,m=t.defaultValueItem;const h=e().t,b=Q(Yr).record,O=Pe(b,o),g=De(O)?[{}]:d(O);return L($i,{className:"form-list__list-wrapper",children:[u&&_(f.Title,{level:4,children:h(u)}),_("div",{className:"form-list__list",children:_(s.List,{name:o,initialValue:g,children:(e,t,o)=>{let i=t.add,l=t.remove,u=o.errors;return L(R,{children:[e.map(e=>L("div",{className:"form-list__list-item",children:[Y.cloneElement(n,{field:e}),_(oe,{className:"form-list__remove-button",onClick:()=>l(e.name)})]},e.key)),L(s.Item,{children:[_("div",{style:{display:"flex",justifyContent:a?"flex-start":"flex-end"},children:_(r,{type:"dashed",onClick:()=>i(m),icon:_(Z,{}),children:c})}),_(s.ErrorList,{errors:u})]})]})}})})]})},Xi=["name","label","filter"];function Zi(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const ea=e=>{let t=e.name,r=e.label,n=e.filter,o=M(e,Xi);const i=K([]),a=ae(i,2),l=a[0],c=a[1];return Zr(async()=>{const e=(await un.Get("/user/list",n)).data;Fn(null==e?void 0:e.embedded)&&c(e.embedded)},[n]),_(No,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Zi(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Zi(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({label:r,placeholder:r,name:t||"ssoId",valueProp:"id",titleProp:"ssoId",resourceData:l},o))},ta=["useGetAllQuery","initialFilter","searchKey","filterField","customValue"];function ra(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const na=e=>{let t=e.useGetAllQuery,r=e.initialFilter,n=e.searchKey,o=void 0===n?"q":n,i=e.filterField,a=void 0===i?"id":i,l=e.customValue,c=M(e,ta);const s=Q(Yr).record,u=W(()=>l||Pe(s,c.name),[s]),p=Fi({initialFilter:r,useGetAllQuery:t,searchKey:o}),d=p.onSearch,m=p.fetchMoreDefaultValue,f=p.loading,h=p.resourceData;return H(()=>{u&&m(a,u)},[u]),_(pi,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ra(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ra(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({loading:f,resourceData:h,onSearch:ve(d,600),isFilterOption:!1},c))};function oa(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const ia=e=>_(na,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?oa(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):oa(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:gi,name:"customerId",valueProp:"name",titleProp:"name"},e)),aa=["name"];function la(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const ca=e=>{let t=e.name,r=void 0===t?"customerId":t,n=M(e,aa);return _(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?la(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):la(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:gi,name:r,valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id"},n))};function sa(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const ua=e=>_(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?sa(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):sa(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:vi,name:"productId",valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id"},e));function pa(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const da=e=>_(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?pa(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):pa(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:Pi,name:"providerId",valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id"},e));function ma(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const fa=e=>_(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ma(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ma(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:Ei,name:"materialId",valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id"},e)),ha=["name","valueProp"];function ba(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const Oa=e=>{let t=e.name,r=void 0===t?"assigneeId":t,n=e.valueProp,o=void 0===n?"id":n,i=M(e,ha);return _(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ba(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ba(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:yi,name:r,valueProp:o,titleProp:"fullName",searchKey:"fullName",filterField:"id"},i))},ga=["name"];function ya(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const va=e=>{let t=e.name,r=M(e,ga);return _(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ya(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ya(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:xi,name:t||"serviceId",valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id"},r))};function Pa(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const ja=e=>_(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Pa(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Pa(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:wi,name:"stockId",valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id",initialFilter:{page:1}},e)),wa=["name"];function Da(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const Sa=e=>{let t=e.name,r=void 0===t?"categotyId":t,n=M(e,wa);return _(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Da(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Da(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:Di,name:r,valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id",initialFilter:{page:1}},n))};function Ca(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const xa=e=>_(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ca(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ca(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:Ci,name:"orderCode",valueProp:"code",titleProp:"code",searchKey:"code",filterField:"code",initialFilter:{page:1,type:"order"}},e));function Ea(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const ka=e=>_(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ea(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ea(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:Si,name:"status",valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id",initialFilter:{page:1}},e)),Ta=["name"];function Ia(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const Aa=e=>{let t=e.name,r=void 0===t?"pageCategoryId":t,n=M(e,Ta);return _(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ia(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ia(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:Di,name:r,valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id",initialFilter:{page:1}},n))},Fa=["name"];function Na(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}const qa=e=>{let t=e.name,r=void 0===t?"faqId":t,n=M(e,Fa);return _(Ri,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Na(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Na(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({useGetAllQuery:ki,name:r,valueProp:"id",titleProp:"name",searchKey:"name",filterField:"id",initialFilter:{page:1}},n))};function _a(){const e=Dn(),t=e.isCollapse,r=e.dispatch,n=G(()=>{r({type:Or.TOOGLE_COLLAPSE,data:!t})},[t,r]);return{isCollapseSidebar:t,toggleCollapse:n}}const La=()=>{const e=K(!1),t=ae(e,2),r=t[0],n=t[1];return[async e=>{let t=e.api,r=e.input,o=e.update;n(!0);const i=await un.Post("/".concat(t),{},r),a=i.success,l=i.message,c=i.data;a?(n(!1),o&&o(c),On.normalSuccess(l)):On.normalError("Lỗi xoá nội dung .!")},r]},Ra=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"edit";const r=Se().hash.match("".concat("#modal","/").concat(e,"/(.*)/").concat(t));return r&&r[1]};function Va(e){let t=e.filter,r=e.uri,n=e.onBeforeProcessData;const o=K(!1),i=ae(o,2),a=i[0],l=i[1],c=K({}),s=ae(c,2),u=s[0],p=s[1],d=G(()=>{if(a)return Promise.reject("===== fetch api on loading .!");l(!0),r&&un.Get("/".concat(r),t).then(e=>{let t=e.data;return e.success&&p(t)}),l(!1)},[t,r,a]);return H(()=>{d()},[]),{loading:a,record:n?n(u):u,refetch:()=>d(t)}}const Ma=["resource"];function Ya(e){let t=e.queryParams,r=e.onData,n=void 0===r?e=>e:r;const o=Q(vn).f5List,i=K(!1),a=ae(i,2),l=a[0],c=a[1],s=K({}),u=ae(s,2),p=u[0],d=u[1],m=G(async e=>{if(l)return Promise.reject("===== fetch api on loading .!");const t=e.resource,r=M(e,Ma);if(!t)return Promise.reject("Call api without apiPath .!");c(!0),un.Get("/".concat(t),r).then(async e=>{let t=e.data;e.success&&Promise.resolve(n(t)).then(d),c(!1)}).catch(e=>{console.log("[hooks.useGetApi] ",e),c(!1)})},[n,l]);return H(()=>{m(t)},[]),Xr(()=>{m(t)},[o,t]),{data:p,loading:l}}function Ga(){const e=K(!1),t=ae(e,2),r=t[0],n=t[1];return{login:e=>{n(!0),un.Post("/auth/sign-in",e).then(e=>{let t=e.data;e.success&&Oo.setSession(t),n(!1)}).catch(e=>{n(!1)})},loading:r}}const Ua=()=>{const e=Ce();return(t,r)=>{return e({pathname:(n=t,n.startsWith("/")?n:"/".concat(n)),search:"?".concat(ct(r))});var n}};function Ha(){const e=A().search;return{get:t=>new URLSearchParams(e).get(t),getAll:()=>{const t=new URLSearchParams(e),r={};for(const e of t.entries()){var n=ae(e,2);const t=n[0],o=n[1];r[t]=o}return r}}}function Ka(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function za(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ka(Object(r),!0).forEach(function(t){V(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ka(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function Qa(){const e=K(),t=ae(e,2),r=t[0],n=t[1],o=G(e=>{n(t=>za(za({},t),e))},[]);return{queryParamsOnHeader:null==r?void 0:r.queryParamsOnHeader,setQueryParamsOnHeader:o}}const Wa=()=>{const e=K(),t=ae(e,2),r=t[0],n=t[1],o=G(e=>{n({serviceId:e})},[]);return{serviceId:null==r?void 0:r.serviceId,setServiceId:o}},Ba=e=>{T.error({message:ie.t("error.title"),description:e||ie.t("error.errorDownloadFile"),duration:2})},$a=e=>{const t=Za(e);return!!t&&Mt.includes(t.toLocaleLowerCase())},Ja=e=>{var t;return null==e||null===(t=e.split("/"))||void 0===t?void 0:t.pop()},Xa=e=>{var t;return null===(t=e.type)||void 0===t||t.trim(),!0},Za=e=>"string"!=typeof e||-1===e.indexOf(".")?"":e.split(".").pop(),el=(e,t)=>!!(Number(e.size)/1024/1024<3)||(T.error({message:ie.t("error.title"),description:ie.t("error.fileSize",{name:ie.t(t)}),duration:2}),g.LIST_IGNORE),tl=async e=>new Promise(t=>{null!=e&&e.url||(Ba(),t({loading:!1}));try{be.get(e.url,{responseType:"blob"}).then(r=>{const n=r.data;n||t({loading:!1});r.headers["content-disposition"];const o=e.fileName||Ja(e.url)||"example",i=document.createElement("a"),a=window.URL.createObjectURL(n);i.href=a,i.download=o,i.click(),window.URL.revokeObjectURL(a),t({loading:!1})})}catch(e){Ba(null==e?void 0:e.message),t({loading:!1})}}),rl=e=>{var t;return null===(t=e.split("/").pop())||void 0===t||null===(t=t.split("-"))||void 0===t?void 0:t.splice(1).join("-")},nl=e=>{const t=e.split(".");return{fileType:t.pop(),fileName:t.join(".")}},ol=e=>{const t={},r={};return xe(e,(e,n)=>{const o=n.split("."),i=Ee(o)||"eq";ke(o)===gt.outsideFilter?t[o.slice(1).join(".")]=(null==e?void 0:e[0])||void 0:r[o.slice(0,-1).join(".")||n]={[i]:e?String(e):void 0}}),{outsideFilter:t,filters:r}},il=e=>e&&e.field&&e.order?"".concat(e.field,":").concat("descend"===e.order?"DESC":"ASC",":NULLS_LAST"):void 0,al=e=>Array.isArray(e)?e.map(e=>il(e)).join(","):il(e),ll=e=>Object.values(e.reduce(cl,{})).map(sl),cl=(e,t)=>{var r;const n=t.name,o=t.id,i=t.value,a=n;return null!==(r=e[a])&&void 0!==r||(e[a]={text:a,values:new Map}),e[a].values.set(o,{id:o,text:i}),e},sl=e=>({text:e.text,values:Array.from(e.values.values()).sort((e,t)=>e.id-t.id)}),ul=e=>{if(!e)return null;const t=Oe(e);let r="h:mma";return 0===t.minutes()&&(r="ha"),t.isSame(Oe(),"year")?t.format("MMM D, ".concat(r)):t.format("MMM D YYYY, ".concat(r))},pl=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"DD-MM-YYYY";return e?Oe(e).format(t):null},dl=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"DD-MM-YYYY";return e?ge(e).format(t):null},ml=e=>e?Oe(e).format("D MMM YYYY"):null,fl=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e?Oe().isAfter(e)?Oe().diff(Oe(e).startOf("day"),"days")<2?Oe(e).fromNow():Oe(e).isSame(Oe(),"year")?t?Oe(e).format("D MMM, HH:mm"):Oe(e).format("D MMM"):t?Oe(e).format("D MMM YYYY, HH:mm"):Oe(e).format("D MMM YYYY"):"Now":""},hl=e=>e?Oe(e):null,bl=e=>e?Oe(e).format("HH:mm DD/MM/YYYY"):null,Ol={phone:/^[+]?[\s./0-9]*[(]?[0-9]{1,4}[)]?[-\s./0-9]*$/g,password:/^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*\d).{6,}$/g,username:/^([a-z0-9A-Z_-]{3,100})$/g,editBookingId:"#bookings/(.*)/edit",fullName:/^[ 0-9a-z\u017F\u212A]{3,100}$/i,number:/^[0-9]+$/i,url:/(https?:\/\/[^\s]+)/g,accountNo:/^[\t-\r \.-9\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]+$/i,customerName:/\S+/,email:/^[^\s@]+@[^\s@]+\.[^\s@]+$/},gl=()=>[{pattern:Ol.password,message:ie.t("input.password.validateMsg.pattern")}],yl=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"password";return[t=>{let r=t.getFieldValue;return{validator:(t,n)=>n&&r(e)!==n?Promise.reject(_("p",{children:"".concat(ie.t("input.confirmNewPassword.validateMsg.match"))})):Promise.resolve()}}]};export{Or as ACTIONS,Vt as ACTIVE_TYPES,br as API,Nt as APP_FOLLOW_STATUS_CONFIRM,qt as APP_FOLLOW_STATUS_DONE,_t as APP_FOLLOW_STATUS_REJECT,Ft as APP_FOLLOW_STATUS_WAITING,Rt as APP_STATUS_TEXT,Ae as BreadcrumbCustom,or as CAR_NOT_WORK_TYPE,Zt as CAR_WORK_TYPE,hr as CHANGE_STORE,Yt as CHANNEL_SOURCE,Gt as CHANNEL_SOURCE_MAP_KEYS,Ut as CHANNEL_STATUS,Ht as CHANNEL_STATUS_MAP_KEYS,kr as CURRENCY_UNIT,et as CreateButton,Re as CustomButton,at as CustomButtonIcon,Wn as CustomImage,Kn as CustomList,Ir as DEFAULT_COLOR_VALUE,jr as DEFAULT_INBOX_ID,wr as DEFAULT_PARENT_INBOX_ID,Xt as DEPARTMENT,er as DEPARTMENT_MAP_KEYS_VALUE,bn as DRAWER_ROUTE,wn as DataProvider,Xe as DrawerCustom,Tr as EMBED_YOUTUBE_LINK,yr as EVENT_ACCEPT_IMAGE_TYPES,pr as FLIGHT_WAY_TYPE,ur as FLIGHT_WAY_TYPE_ARRIVAL,sr as FLIGHT_WAY_TYPE_DEPARTURE,Dr as FORMAT_DATE_INPUT,Sr as FORMAT_DATE_TIME_INPUT,Cr as FORMAT_TIME_INPUT,bo as FileUploadView,Gi as FormAddress,pi as FormAutoComplete,ia as FormAutoCompleteCustomer,na as FormAutoCompleteInfinite,bi as FormCascader,Aa as FormCategoryPost,ri as FormCheckbox,Yr as FormContextCustom,Uo as FormDatePicker,Qi as FormHidden,Sa as FormInfiniteCategory,xa as FormInfiniteOrderCode,ka as FormInfiniteShipStatus,ja as FormInfiniteStock,So as FormInput,ko as FormInputNumber,Wi as FormJoditEditor,Ji as FormListAddtion,ai as FormRadioGroup,No as FormSelect,Vo as FormSelectAPI,Ri as FormSelectInfinite,Oa as FormSelectInfiniteBusinessUser,ca as FormSelectInfiniteCustomer,fa as FormSelectInfiniteMaterial,ua as FormSelectInfiniteProduct,da as FormSelectInfiniteProvider,Yi as FormSelectInfiniteProvince,va as FormSelectInfiniteService,ea as FormSelectUser,Xo as FormTextArea,Qo as FormTimePicker,vr as HASH_MODAL,Pr as HASH_MODAL_CLOSE,vt as HASH_POPUP,Pt as HASH_POPUP_CLOSE,cr as HOTEL_ROOM_PAY_TYPE,ar as HOTEL_ROOM_PAY_TYPE_COMPANY,lr as HOTEL_ROOM_PAY_TYPE_PERSIONAL,$n as HeaderCompany,Mt as IMAGE_TYPES,gr as INAPP_NOTIFICATION_EMITTER,Po as ImageUploader,On as InAppEvent,qa as InfiniteFaq,Kt as KPI_TYPE,zt as KPI_TYPE_MAP_KEYS,Ze as Loading,nr as MATERIAL_UNIT_TYPE,xr as MAX_FILE_SIZE_MB,xt as NGHI_PHEP_META,Tt as NGHI_PHEP_STATUS_CONFIRM,At as NGHI_PHEP_STATUS_DONE,It as NGHI_PHEP_STATUS_REJECT,Lt as NGHI_PHEP_STATUS_TEXT,kt as NGHI_PHEP_STATUS_WAITING,Jn as NoFooter,co as Noresult,Et as OVERTIME_META,Qt as PAYMENT_TYPE_CONST,Wt as PRIORITY_TYPE_TAGS,Bt as PRIORITY_TYPE_TAGS_MAP_KEYS,$t as PRODUCT_STATUS,tr as PROJECT_STATUS_LIST,rr as PROJECT_TASK_STATUS_LIST,gt as QUERY_PARAMS_PROPERTY,ir as REGISTER_WORK_TYPE,Er as REPORT_DATE_FORMAT,sn as RestEditModal,zr as RestFilter,an as RestList,jt as STATUS_LEAD,Ct as SUCCESS_API_CODE,fr as SUCCESS_CODE,Jt as USER_STATUS,ho as UserInfo,yt as VAT_PERCENT,Nn as arrayEmpty,Fn as arrayNotEmpty,ft as calPriceOff,Yn as calVat,Xa as checkFileType,el as checkValidFileSize,ct as convertObjToSearchStr,ll as createMSkuDetails,Tn as dataArray,An as dataAsObj,In as dataObj,Ln as dateFormatForm,Rn as dateFormatOnSubmit,qn as decodeProperty,tl as downloadFileByURL,_n as encodeProperty,kn as f5List,ml as formatBirthday,En as formatDataI18n,pl as formatDate,ul as formatDateDashboard,dl as formatDateDayjs,fl as formatDateFromNow,bl as formatDateTimeComplete,ol as formatFiltersTable,hl as formatInitialValueDateInput,Mn as formatMoney,mt as formatPhoneNumber,al as formatSorterTable,Vn as formatTime,pt as formatterInputNumber,Dt as getColorStatusLead,_r as getConfig,yl as getConfirmPasswordRules,Za as getExtensionFile,rl as getFileName,Ja as getFileNameFromUrl,qr as getGateway,gl as getPasswordRules,lt as getQueryParamsFromUrl,ut as getStaticImageUrl,wt as getStatusLead,St as getTypeGroup,Nr as initCoreConfig,$a as isImageFile,ht as isPositiveInteger,st as onSearch,Ar as outerRadius,dt as parserInputNumber,nl as splitFile,Gn as string2Object,_a as useCollapseSidebar,Oi as useData,La as useDeleteMutation,Zr as useEffectAsync,Ra as useGetIdFromHash,xn as useGetList,Va as useGetOneQuery,Ya as useGetRestApi,Fi as useInfinite,Ga as useLogin,Br as useMount,Ua as useNavigateSearch,Ha as useQueryParams,Qa as useQueryParamsOnHeader,Wa as useServiceId,Jr as useSetState,Dn as useStore,$r as useUnmount,Xr as useUpdateEffect,Ol as validateRegex};
|
|
2
|
+
//# sourceMappingURL=index.esm.js.map
|