{"version":3,"sources":["store/actions/index.js","utils/translate.js","server.js","components/login.js","extensions/helper.js","components/NavMenu.js","components/order/order-head.js","components/package/package-selection.js","components/cad/cad-funcs.js","components/order/orders.js","components/lib/button/index.js","components/lib/button/button.js","extensions/utils.js","utils/utils.js","components/order/order-product-modal.js","components/order/order-product.js","components/order/order-products.js","components/order/order-aks.js","components/order/order-aks-list.js","components/order/order.js","components/package/package-properties.js","components/package/package-details.js","components/package/packages.js","components/user-managment/user.js","components/user-managment/users.js","components/cad/cad-elem.js","components/cad/izd.js","components/cad/cad-canvas.js","components/cad/cmd/cad-cmd-split.js","components/cad/cmd/cad-cmd-elem-info.js","components/cad/cmd/cad-cmd-align.js","components/cad/cmd/cad-cmd-mosk.js","components/cad/cmd/cad-cmd-del.js","components/cad/cmd/cad-cmd-set-size.js","components/cad/cmd/cad-cmd-stv-ins.js","components/cad/cmd/cad-cmd-stv-info.js","components/cad/cad-tools.js","components/cad/cad-image.js","components/cad/cad.js","App.js","store/reducers/index.js","store/store.js","index.js"],"names":["orderLoaded","order","type","payload","userLoaded","user","setElemSize","setCadSize","setCadUpdated","tr","string","args","jsonData","localStorage","getItem","translatedString","JSON","parse","find","e","ru","template","undefined","res","pos","indexOf","slice","pos2","format","apiBaseUrl","process","value4query","key","value","serverFetch","address","options","a","url","URL","Object","keys","queryParams","forEach","Array","isArray","map","searchParams","append","init","method","headers","body","Headers","accept","id","window","location","hostname","bodyData","stringify","fetch","response","console","log","error","message","Error","ok","status","responseContentPromise","rawResponse","text","download","blob","json","content","statusText","Login","d","useDispatch","Form","useForm","form","useState","userName","password","state","setState","loading","setLoading","setVisibleForm","useEffect","document","addEventListener","onKeyDown","removeEventListener","keyCode","submit","onChange","data","target","name","Item","icon","LoginOutlined","to","onClick","forceRender","visible","showTitle","title","closeOnOutsideClick","footer","getContainer","width","onCancel","colon","initialValues","remember","rules","required","placeholder","username","disabled","Password","style","marginBottom","float","htmlType","validateFields","then","catch","UserMessage","permission","hasPermission","permissions","NavMenu","Header","Layout","current","setCurrent","useSelector","s","pathname","className","companyLogo","src","verticalAlign","size","href","companyName","notification","selectedKeys","mode","theme","disabledOverflow","ShoppingCartOutlined","InboxOutlined","UserSwitchOutlined","SubMenu","UserOutlined","LogoutOutlined","OrderHead","orderGuid","onSave","TabPane","Tabs","Text","Typography","setOrder","getData","docdate","Date","showCloseButton","okText","cancelText","onOk","okButtonProps","isReadOnly","bodyStyle","paddingTop","labelCol","span","wrapperCol","readOnlyDescription","defaultActiveKey","tab","fontWeight","depno","docnum","moment","initialValue","dAddress","label","comment","syma","plat","dolg","cName","cAddress","cPhone","cPassport","dAcc","dIzd","dAks","dJob","PackageSelection","orders","onClose","refreshRequired","setRefreshRequired","packages","setPackages","currentPackage","setCurrentPackage","selectedPackageIds","setSelectedPackageIds","onSelectChange","selectedRowKeys","length","pack","o","idDoc","rowSelection","display","ReloadOutlined","AppstoreAddOutlined","result","success","PlusOutlined","columns","dataIndex","sortDirections","sorter","b","defaultSortOrder","docDate","unix","render","_","record","rowKey","dataSource","onRow","event","scroll","y","x","pagination","showSizeChanger","defaultPageSize","renderTable","delphiToRgb","iValue","color","toString","substring","getKanvaX","canvasDx","canvasZoom","Math","round","getKanvaY","canvasDy","Orders","history","useHistory","settingsForm","setOrders","reports","setReports","setStatuses","selectedOrderIds","setSelectedOrderIds","currentOrder","setCurrentOrder","editMode","setEditMode","packMode","setPackMode","openSettings","setOpenSettings","columnSettings","setColumnSettings","filter","setFilter","storedFilter","dateFrom","dateTo","add","getStatuses","getReports","setItem","settingType","context","settings","settingValue","getColumns","c","push","column","statuses","handlePrintMenuClick","report","r","file","Blob","fileURL","createObjectURL","open","closed","CheckOutlined","align","backgroundColor","statusColor","marginLeft","divOrderHead","now","utcOffset","set","hour","minute","second","millisecond","divPackHead","printMenu","allowClear","dateX","date","EditOutlined","FolderOpenOutlined","overlay","PrinterOutlined","shape","SettingOutlined","renderToolbar","setting","paddingBottom","extra","SaveFilled","entries","getFieldsValue","layout","valuePropName","MButton","enabled","btnType","btnText","DeleteOutlined","CloseOutlined","toFinanceString","decimalPrecision","parseFloat","toLocaleString","maximumFractionDigits","getItemByIdOrNull","getItemIdOrNull","item","ProductModal","idStr","ordno","Option","Select","construction","setConstruction","templateGroups","setTemplateGroups","currentGroup","setCurrentGroup","isEditMode","groupForm","configForm","templates","setTemplates","currentTemplate","setCurrentTemplate","selectedTemplateIds","setSelectedTemplateIds","systems","setSystems","zapolns","setZapolns","diffs","setDiffs","monts","setMonts","furns","setFurns","vsts","setVsts","paramNames","setParamNames","paramValues","setParamValues","selectedSysId","setSelectedSysId","selectedColor","setSelectedColor","selectedColorIn","setSelectedColorIn","selectedColorOut","setSelectedColorOut","selectedColorB","setSelectedColorB","selectedColorF","setSelectedColorF","selectedZapoln","setSelectedZapoln","selectedMont","setSelectedMont","selectedFurn","setSelectedFurn","selectedVst","setSelectedVst","selectedDiff","setSelectedDiff","qty","setQty","setComment","constName","setConstName","setWidth","height","setHeight","chooseSelectedGroup","newSelectedGroup","setFieldsValue","chooseSelectedSys","idName","idValue","chooseTemplate","selectedTemplate","newSys","sprSys","newIdSys","w","h","newColorId","sprColor","cadParams","params2","p","idVal","getColorSideIsPallete","colorSideName","vid","getDataTemplateGroups","getConstruction","getAllSys","idVst","idMont","idFurn","idDiff","sys","idSys","colorGroup","colors","idColor","colorIn","colorCnt","idColorIn","colorOut","idColorOut","colorBase","idColorB","colorF","idColorF","system","cadParamValues","initData","save","GetId","obj","allParamsFilled","params","pn","IdName","IdVal","warning","templateId","diff","zapoln","colorB","mont","vst","furn","sParam","renderCombobox","selectedValue","onChoose","propName","onSelectTemplateChange","selectedSys","cancelButtonProps","fileName","alt","showHeader","position","rendertTemplatesTable","paramName","copy","values","Product","props","product","onDelete","onRefresh","openProduct","setOpenProduct","divError","calcError","textAlign","confirm","sysName","colorName","diffName","montName","vstName","zapolnName","furnName","moskName","Products","deleteProduct","orderIzds","total","marginRight","bordered","renderItem","kindsAks","OrderAks","selectedAks","izds","selectedColorId","selectedColorInId","selectedColorOutId","selectedColorBId","selectedColorFId","idIzd","idMat","selectedItem","setSelectedItem","setParams","setPramValues","items","setItems","tipR","setTipR","setColors","matVid","setVid","xParams","onChooseVid","onChooseItem","onChooseColor","selectedItemObj","chooseSelectedColor","AddCmb","idKompl","idElem","elem","idDetal","detal","alignItems","justifyContent","tip","electedColor","OrderAksList","selectedAksesIds","setSelectedAksesIds","currentAkses","setCurrentAkses","orderAkses","izd","i","editing","u","Order","useParams","reload","buff","defaultValue","statusId","marginTop","PackageProperties","docNum","countAcc","sumAcc","countIzd","sqrtIzd","countIzdMax","PackageDetails","packageId","Packages","detailsMode","setDetailsMode","dateCreate","divPackPropertiesHead","divDetails","DownloadOutlined","FileSaver","RollbackOutlined","User","basePermissions","setBasePermissions","treeData","setTreeData","checkedKeys","setCheckedKeys","split","index","tree","root","children","onCheck","checkedKeysValue","basePermission","k","join","fullName","orientation","plain","checkable","defaultExpandAll","Users","users","setUsers","setSelectedUserIds","currentUser","setCurrentUser","entity","getSizeArrow","direction","points","strokeWidth","stroke","drawSizeX","prefix","x1","x2","val","fill","sizeLineText","fontSize","sizeVal","drawSizeY","y1","y2","rotation","Izd","objectClick","newObjectIds","objId","attrs","evt","shiftKey","selectedObjectIds","pop","izdSelected","elemSelectedColor","maxX","Number","maxY","min","canvasHeight","canvasWidth","drawElems","this","cadElems","cadContours","contour","penColor","fillColor","objVid","getElemDraw","sValue","element","el","idx","sX","sY","stringToPoint","coord","pen","ids","isSelected","brush","kindPos","getElemSizeDraw","sizeClick","React","Component","CadCanvas","innerWidth","innerHeight","connect","CadCmdSplitPopup","vidOper","elemSize","xValue","CadCmdSplitStartOper","selectedObject","minX","minY","CadCmdSplitDoOper","refreshCad","CadCmdElemInfoPopup","selectedZapolnValue","CadCmdElemInfoStartOper","CadCmdElemInfoDoOper","IdSpr","CadCmdAlignStartOper","onDoOper","CadCmdAlignDoOper","kind","CadCmdMoskPopup","mosks","selectedMoskValue","CadCmdMoskStartOper","selectedCons","cons","idMosk","CadCmdMoskDoOper","selectedConsIds","CadCmdDelStartOper","Modal","CadCmdDelDoOper","CadCmdSetSizePopup","cadSize","cadSizeValStart","cadSizeVal","autoFocus","onFocus","select","CadCmdSetSizeDoOper","CadCmdStvInsPopup","vars","idFurnVar","CadCmdStvInsStartOper","CadCmdStvInsDoOper","CadCmdStvInfoPopup","CadCmdStvInfoStartOper","mainParams","idParamName","idParamValue","idVar","CadCmdStvInfoDoOper","CadTools","setVidOper","setMosks","setSelectedMoskValue","getSprs","getObjects","selectedObjects","getIzdObjects","selectedQty","vidObjects","isFrame","parent","onCancelOper","onStartOper","errors","cadErrors","parseInt","getButton","action","hasUndo","block","onChangeSize","CadImage","useCookies","cookies","setCookie","rndState","setRndState","imgSize","setImgSize","isDragging","setIsDragging","isResizing","setIsResizing","cadImage","boxShadow","border","onDrag","onDragStop","onResizeStart","onResize","ref","delta","widthStr","heightStr","onResizeStop","picture","Cad","cadUpdated","setPicture","loadingImg","setLoadingImg","loadData","App","Content","intervalId","setIntervalId","err","clearInterval","setInterval","exact","path","component","padding","initialState","reducer","configureStore","store","createStore","persistReducer","storage","whitelist","getState","persistor","persistStore","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","basename","CookiesProvider"],"mappings":"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","file":"static/js/main.b2374de6.chunk.js","sourcesContent":["const orderLoaded = (order) => {\r\n return {\r\n type: 'ORDER_LOADED',\r\n payload: order,\r\n };\r\n};\r\n\r\nconst userLoaded = (user) => {\r\n return {\r\n type: 'USER_LOADED',\r\n payload: user,\r\n };\r\n};\r\n\r\nconst izdLoaded = (newIzd) => {\r\n return {\r\n type: 'IZD_LOADED',\r\n payload: newIzd,\r\n };\r\n};\r\n\r\nconst izdSelected = (selectedObjectIds) => {\r\n return {\r\n type: 'IZD_SELECTED',\r\n payload: selectedObjectIds,\r\n };\r\n};\r\n\r\nconst setElemSize = (payload) => {\r\n return {\r\n type: 'SET_ELEM_SIZE',\r\n payload: payload,\r\n };\r\n};\r\n\r\nconst setCadSize = (payload) => {\r\n return {\r\n type: 'SET_CAD_SIZE',\r\n payload: payload,\r\n };\r\n};\r\n\r\nconst setCadUpdated = (payload) => {\r\n return {\r\n type: 'CAD_UPDATED',\r\n payload: payload,\r\n };\r\n};\r\n\r\nexport { orderLoaded, userLoaded, izdLoaded, izdSelected, setElemSize, setCadSize, setCadUpdated };\r\n","function format(template, args) {\r\n if (args === undefined) return template;\r\n let res = '';\r\n while (template !== '') {\r\n const pos = template.indexOf('{');\r\n if (pos === -1) {\r\n res = res + template;\r\n template = '';\r\n } else {\r\n res = res + template.slice(0, pos);\r\n template = template.slice(pos + 1);\r\n const pos2 = template.indexOf('}');\r\n if (pos2 === -1) {\r\n res = res + template;\r\n template = '';\r\n } else {\r\n res = res + args[template.slice(0, pos2)];\r\n template = template.slice(pos2 + 1);\r\n }\r\n }\r\n }\r\n return res;\r\n}\r\n\r\nexport function trSetLocale(locale) {}\r\n\r\nexport function tr(string, args) {\r\n const locale = process.env.REACT_APP_LANGUAGE;\r\n\r\n const jsonData = localStorage.getItem('localization');\r\n let strings = JSON.parse(jsonData) || [];\r\n\r\n const s = strings.find((e) => e.ru === string);\r\n let translatedString = string;\r\n\r\n if (locale !== 'ru') {\r\n if (s !== undefined) translatedString = s[locale];\r\n else console.log('Не переведено', string);\r\n }\r\n\r\n return format(translatedString, args);\r\n}\r\n","import { message } from 'antd';\r\n\r\nexport const apiBaseUrl = process.env.REACT_APP_API_BASE_URL;\r\n\r\nfunction value4query(key, value) {\r\n if (value === null || value === undefined) {\r\n return '';\r\n }\r\n\r\n return value; //encodeURIComponent(value);\r\n}\r\n\r\nexport async function serverFetch(address, options, user) {\r\n options = options || {};\r\n let url = new URL(`${apiBaseUrl}/api/${address}`);\r\n Object.keys(options.queryParams || {}).forEach((key) => {\r\n if (Array.isArray(options.queryParams[key])) {\r\n options.queryParams[key].map((value) => url.searchParams.append(key, value4query(key, value)));\r\n } else {\r\n url.searchParams.append(key, value4query(key, options.queryParams[key]));\r\n }\r\n });\r\n\r\n let init = {\r\n method: 'GET',\r\n ...options,\r\n headers: options.body ? new Headers() : new Headers({ accept: 'application/json', 'Content-Type': 'application/json-patch+json' }),\r\n };\r\n\r\n if (user) {\r\n init.headers.append('SessionId', user.id ? user.id : '');\r\n }\r\n\r\n init.headers.append('Domain', window.location.hostname);\r\n\r\n if (options.bodyData != null) {\r\n init.body = JSON.stringify(options.bodyData);\r\n }\r\n\r\n if (options.headers) {\r\n Object.keys(options.headers).forEach((key) => {\r\n init.headers.append(key, options.headers[key]);\r\n });\r\n }\r\n\r\n let response;\r\n try {\r\n response = await fetch(url, init);\r\n } catch (exc) {\r\n console.log('error fetch', exc);\r\n console.error(exc);\r\n message.error('Извините, сервер недоступен');\r\n throw new Error('Error parsing response body');\r\n }\r\n\r\n if (response.ok && response.status == 204) {\r\n return;\r\n }\r\n\r\n let responseContentPromise;\r\n if (!response.ok || options.rawResponse) {\r\n responseContentPromise = response.text();\r\n } else if (options.download || options.blob) {\r\n responseContentPromise = response.blob();\r\n } else {\r\n responseContentPromise = response.json();\r\n }\r\n\r\n console.log('server wait content');\r\n let content;\r\n try {\r\n content = await responseContentPromise;\r\n console.log('server content', content);\r\n } catch (exc) {\r\n console.error(exc);\r\n message.error('Извините, сервер недоступен');\r\n throw new Error('Error parsing response body');\r\n }\r\n\r\n if (response.ok) {\r\n return content;\r\n }\r\n\r\n if (!content) {\r\n content = {\r\n status: response.status,\r\n message: response.statusText,\r\n };\r\n } else if (typeof content == 'string') {\r\n try {\r\n content = JSON.parse(content);\r\n console.log('contentParsed', content);\r\n } catch {\r\n message.error('Извините, сервер недоступен');\r\n // ignore\r\n }\r\n }\r\n throw content;\r\n\r\n // return fetch(url, init);\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { Menu, Input, Form, Modal, Space, Button, message } from 'antd';\r\nimport { LoginOutlined } from '@ant-design/icons';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { userLoaded } from '../store/actions';\r\n\r\nimport { tr } from '../utils';\r\nimport { serverFetch } from '../server';\r\n\r\nconst Login = () => {\r\n const d = useDispatch();\r\n\r\n const [form] = Form.useForm();\r\n\r\n const [state, setState] = useState({\r\n userName: '',\r\n password: '',\r\n });\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [visibleForm, setVisibleForm] = useState(false);\r\n\r\n useEffect(() => {\r\n document.addEventListener('keydown', onKeyDown, false);\r\n return () => {\r\n document.removeEventListener('keydown', onKeyDown, false);\r\n setLoading(false);\r\n };\r\n }, []);\r\n\r\n const onKeyDown = (e) => {\r\n if (e.keyCode === 13) {\r\n form.submit();\r\n }\r\n };\r\n\r\n const onSignIn = () => {\r\n form.validateFields().then(() => {\r\n setLoading(true);\r\n\r\n serverFetch(`account/login/${state.username}/${state.password}`, { method: 'GET' })\r\n .then((data) => {\r\n if (data) {\r\n d(userLoaded(data));\r\n } else {\r\n message.error(tr('Ошибка авторизации'));\r\n setLoading(false);\r\n }\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n });\r\n };\r\n\r\n const onChange = (data) => {\r\n setState({ ...state, [data.target.name]: data.target.value });\r\n };\r\n\r\n return (\r\n <>\r\n }>\r\n setVisibleForm(true)}>\r\n {tr('Вход')}\r\n \r\n \r\n\r\n setVisibleForm(false)}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Login;\r\n","export const permission = {\r\n CanManageUsers: 1,\r\n CanLoadSettings: 4,\r\n AddOrderToPackage: 23,\r\n ViewPackages: 84,\r\n};\r\n\r\nexport function hasPermission(permissions, permission) {\r\n if (!permissions) return false;\r\n\r\n let value = permissions[permission - 1];\r\n return value == 1;\r\n}\r\n\r\nexport const getPermissionLabel = (code) => {\r\n switch (code) {\r\n // --------------- CR PERMISSIONS ---------------\r\n case permission.CanManageUsers:\r\n return 'Can Manage Users';\r\n case permission.CanLoadSettings:\r\n return 'Can Load Settings';\r\n case permission.AddOrderToPackage:\r\n return 'Add Order To Package';\r\n case permission.ViewPackages:\r\n return 'View Packages';\r\n default:\r\n return '';\r\n }\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\n\r\nimport { Link } from 'react-router-dom';\r\nimport { Layout, Avatar, notification, message } from 'antd';\r\n\r\nimport { Menu } from 'antd';\r\nimport { ShoppingCartOutlined, InboxOutlined, UserOutlined, LogoutOutlined, UserSwitchOutlined } from '@ant-design/icons';\r\n\r\nimport './NavMenu.css';\r\nimport Login from './login.js';\r\n\r\nimport { tr } from '../utils';\r\nimport { permission, hasPermission } from '../extensions/helper';\r\nimport { userLoaded } from '../store/actions';\r\n\r\nimport { serverFetch } from '../server';\r\n\r\nconst NavMenu = () => {\r\n const { Header } = Layout;\r\n\r\n const d = useDispatch();\r\n\r\n const [current, setCurrent] = useState();\r\n\r\n const user = useSelector((s) => s.user);\r\n\r\n useEffect(() => {\r\n if (user) {\r\n const pathname = window.location.pathname;\r\n setCurrent(pathname && pathname !== '/' ? pathname.slice(1) : 'orders');\r\n }\r\n }, [user]);\r\n\r\n const handleClick = (e) => {\r\n switch (e.key) {\r\n case 'loadSettings': {\r\n serverFetch(`repository/updateSettings`, { method: 'POST' }, user)\r\n .then(() =>\r\n notification['success']({\r\n message: tr('Новые настройки успешно загружены'),\r\n })\r\n )\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n break;\r\n }\r\n case 'logout': {\r\n d(userLoaded(null));\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n console.log('e.key', e.key);\r\n if (e.key === 'orders' || e.key === 'packages' || e.key === 'usermanagement') {\r\n setCurrent(e.key);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {user && user.companyLogo && (\r\n \r\n )}\r\n
\r\n\r\n
\r\n \r\n {(user && user.companyName) || tr('ИТ Окна Онлайн')} {process.env.REACT_APP_VERSION}\r\n \r\n
\r\n\r\n {user ? (\r\n \r\n }>\r\n {tr('Заказы')}\r\n \r\n\r\n }\r\n >\r\n {tr('Пакеты')}\r\n \r\n\r\n }\r\n >\r\n {tr('Пользователи')}\r\n \r\n\r\n } title={user.userName}>\r\n }>\r\n {tr('Выход')}\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\n{\r\n /* \r\n \r\n \r\n \r\n \r\n setCollapsed(!collapsed)} className='mr-2' />\r\n \r\n \r\n {navMenu}\r\n \r\n \r\n */\r\n}\r\n\r\nexport default NavMenu;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport moment from 'moment';\r\n\r\nimport { Modal, Tabs, Form, Input, Typography, Alert, message } from 'antd';\r\n\r\nimport '../shared.css';\r\nimport { tr } from '../../utils/translate';\r\nimport { serverFetch } from '../../server';\r\n\r\nconst OrderHead = ({ orderGuid, onCancel, onSave }) => {\r\n const { TabPane } = Tabs;\r\n const { Text } = Typography;\r\n\r\n const user = useSelector((s) => s.user);\r\n\r\n const [order, setOrder] = useState();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n getData();\r\n }, []);\r\n\r\n const getData = () => {\r\n if (!orderGuid) {\r\n setLoading(false);\r\n setOrder({\r\n docdate: new Date(),\r\n orderGuid: '',\r\n });\r\n } else {\r\n serverFetch(`orders/orderHead/${orderGuid}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n setOrder(data);\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }\r\n };\r\n\r\n const save = () => {\r\n setLoading(true);\r\n serverFetch(`orders/saveorder`, { method: 'POST', bodyData: order }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n onSave();\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n message.error(\r\n <>\r\n {tr('Ошибка сохранения заказа')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n });\r\n };\r\n\r\n if (!order) return
{tr('Заказ не найден')}
;\r\n\r\n return (\r\n onCancel()}\r\n onOk={() => save()}\r\n okButtonProps={{ disabled: order.isReadOnly || loading }}\r\n bodyStyle={{ paddingTop: 10 }}\r\n >\r\n
\r\n {order.readOnlyDescription && }\r\n\r\n \r\n \r\n \r\n \r\n {tr('Заказ')} {order.depno} / {order.docnum} {tr('от')} {moment(order.docdate).format('DD.MM.YYYY')}\r\n \r\n \r\n \r\n {\r\n setOrder({ ...order, dAddress: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n {\r\n setOrder({ ...order, comment: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setOrder({ ...order, cName: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n {\r\n setOrder({ ...order, cAddress: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n {\r\n setOrder({ ...order, cPhone: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n {\r\n setOrder({ ...order, cPassport: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n setOrder({ ...order, dAcc: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n {\r\n setOrder({ ...order, dIzd: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n {\r\n setOrder({ ...order, dAks: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n {\r\n setOrder({ ...order, dJob: data.target.value });\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OrderHead;\r\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport { useSelector } from 'react-redux';\r\nimport moment from 'moment';\r\n\r\nimport { Table, Modal, Space, Button, notification, message } from 'antd';\r\nimport { ReloadOutlined, PlusOutlined, AppstoreAddOutlined } from '@ant-design/icons';\r\n\r\nimport { serverFetch } from '../../server';\r\nimport { tr } from '../../utils/translate';\r\n\r\nconst PackageSelection = ({ orders, onClose }) => {\r\n const user = useSelector((s) => s.user);\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [refreshRequired, setRefreshRequired] = useState(true);\r\n const [packages, setPackages] = useState([]);\r\n const [currentPackage, setCurrentPackage] = useState();\r\n const [selectedPackageIds, setSelectedPackageIds] = useState([]);\r\n\r\n useEffect(() => {\r\n if (refreshRequired) {\r\n setRefreshRequired(false);\r\n getData();\r\n }\r\n }, [refreshRequired]);\r\n\r\n const getData = () => {\r\n serverFetch(`packages/open`, { method: 'GET' }, user)\r\n .then((data) => {\r\n setPackages(data);\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n message.error(\r\n <>\r\n {tr('Ошибка получения пакетов')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const renderToolbar = () => {\r\n return (\r\n \r\n }\r\n onClick={() => {\r\n setRefreshRequired(true);\r\n }}\r\n >\r\n {tr('Обновить')}\r\n \r\n }\r\n onClick={() => {\r\n serverFetch(`packages/addorders/${currentPackage.idDoc}`, { method: 'POST', bodyData: { orders: orders } }, user)\r\n .then((result) => {\r\n setLoading(false);\r\n if (result.success == true) {\r\n notification['success']({\r\n message: tr('Заказы успешно добавлены в пакет') + ` #${currentPackage.idDoc}`,\r\n });\r\n } else {\r\n notification['error']({\r\n message: result.error,\r\n });\r\n }\r\n })\r\n .catch((e) => {\r\n message.error(\r\n <>\r\n {tr('Ошибка добавления в пакет')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n\r\n setLoading(false);\r\n });\r\n }}\r\n >\r\n {tr('В пакет')}\r\n \r\n\r\n }\r\n onClick={() => {\r\n serverFetch(`packages/add`, { method: 'POST' }, user)\r\n .then(() => {\r\n setCurrentPackage();\r\n setRefreshRequired(true);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n }}\r\n >\r\n {tr('Создать пакет')}\r\n \r\n
\r\n );\r\n };\r\n\r\n const onSelectChange = (selectedRowKeys) => {\r\n setSelectedPackageIds(selectedRowKeys);\r\n\r\n if (selectedRowKeys.length == 1) {\r\n let pack = packages.find((o) => o.idDoc == selectedRowKeys[0]);\r\n setCurrentPackage(pack);\r\n } else {\r\n setCurrentPackage();\r\n }\r\n };\r\n const rowSelection = {\r\n selectedRowKeys: selectedPackageIds,\r\n onChange: onSelectChange,\r\n type: 'radio',\r\n };\r\n\r\n function renderTable() {\r\n const columns = [\r\n {\r\n title: '#',\r\n dataIndex: 'idDoc',\r\n sortDirections: ['ascend', 'descend', 'ascend'],\r\n sorter: (a, b) => a.idDoc - b.idDoc,\r\n width: 80,\r\n },\r\n {\r\n title: tr('Дата'),\r\n dataIndex: 'docdate',\r\n sortDirections: ['ascend', 'descend', 'ascend'],\r\n defaultSortOrder: 'descend',\r\n sorter: (a, b) => moment(a.docDate).unix() - moment(b.docdate).unix(),\r\n render: (_, record) => {\r\n return <>{moment(record.docDate).format('DD.MM.YYYY')} ;\r\n },\r\n width: 120,\r\n },\r\n {\r\n title: '№',\r\n dataIndex: 'docnum',\r\n width: 80,\r\n },\r\n {\r\n title: tr('Комментарий'),\r\n dataIndex: 'comment',\r\n width: 200,\r\n },\r\n\r\n {\r\n title: tr('Изделия'),\r\n dataIndex: 'countIzd',\r\n width: 120,\r\n },\r\n {\r\n title: tr('Макс.'),\r\n dataIndex: 'countIzdMax',\r\n width: 120,\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n {\r\n return {\r\n onClick: (event) => {\r\n onSelectChange([record.idDoc]);\r\n },\r\n };\r\n }}\r\n scroll={{ y: 'calc(100vh - 514px)', x: 'calc(100vw - 40px)' }}\r\n pagination={{\r\n showSizeChanger: true,\r\n current: 1,\r\n defaultPageSize: 20,\r\n }}\r\n />\r\n \r\n );\r\n }\r\n\r\n return (\r\n onClose()}\r\n okButtonProps={{ style: { display: 'none' } }}\r\n width={1000}\r\n >\r\n {renderToolbar()}\r\n {renderTable()}\r\n \r\n );\r\n};\r\n\r\nexport default PackageSelection;\r\n","// Конвертация строки вида (100.1,200)(200.1,120.2) в массив точек с округлением [100,200,200,120]\r\nfunction stringToPoint(sValue, canvasDx, canvasDy, canvasZoom) {\r\n const r = [];\r\n sValue.split(\")\").forEach(element => {\r\n if (element.length > 0) {\r\n const el = element.substring(1, element.length);\r\n const idx = el.indexOf(\",\");\r\n let sX = el.substring(0, idx);\r\n if (sX.indexOf(\".\") !== -1) sX = sX.substring(0, sX.indexOf(\".\"));\r\n let sY = el.substring(idx + 1);\r\n if (sY.indexOf(\".\") !== -1) sY = sY.substring(0, sY.indexOf(\".\"));\r\n r.push(canvasDx + Math.round(Number(sX) * canvasZoom));\r\n r.push(canvasDy - Math.round(Number(sY) * canvasZoom));\r\n }\r\n });\r\n return r;\r\n}\r\n\r\n// Конвертация числа кода цвета Delphi в RGB hex\r\nfunction delphiToRgb(iValue) {\r\n let color = iValue.toString(16);\r\n if (color.length < 6) color = \"000000\".substring(0, 6 - color.length) + color;\r\n if (color.length === 6) color = color.substring(4, 6) + color.substring(2, 4) + color.substring(0, 2);\r\n return `#${color}`;\r\n}\r\n\r\n// Получение позиции на канве по координате изделия - X\r\nfunction getKanvaX(pos, { canvasDx, canvasZoom }) {\r\n return canvasDx + Math.round(pos * canvasZoom);\r\n}\r\n\r\n// Получение позиции на канве по координате изделия - Y\r\nfunction getKanvaY(pos, { canvasDy, canvasZoom }) {\r\n return canvasDy - Math.round(pos * canvasZoom);\r\n}\r\n\r\nfunction getIzdObjects(izd, selectedObjectIds) {\r\n return selectedObjectIds.map(id => {\r\n return izd.cadElems.find(elem => {\r\n return elem.id === id\r\n })\r\n });\r\n}\r\n\r\nexport { stringToPoint, delphiToRgb, getKanvaX, getKanvaY, getIzdObjects };\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router';\r\n\r\nimport moment from 'moment';\r\n\r\nimport { Typography, Table, Space, Button, Menu, Dropdown, DatePicker, Drawer, Row, Col, Form, Switch, Tooltip, message } from 'antd';\r\n\r\nimport {\r\n CheckOutlined,\r\n PlusOutlined,\r\n AppstoreAddOutlined,\r\n EditOutlined,\r\n FolderOpenOutlined,\r\n PrinterOutlined,\r\n ReloadOutlined,\r\n SettingOutlined,\r\n SaveFilled,\r\n} from '@ant-design/icons';\r\n\r\nimport OrderHead from './order-head';\r\nimport PackageSelection from '../package/package-selection';\r\nimport * as FileSaver from 'file-saver';\r\nimport { delphiToRgb } from '../cad/cad-funcs';\r\nimport { tr } from '../../utils';\r\n\r\nimport { permission, hasPermission } from '../../extensions/helper';\r\n\r\nimport { serverFetch } from '../../server';\r\n\r\nimport '../shared.css';\r\nimport './orders.css';\r\n\r\nconst settingContext = 'Orders';\r\nconst settingType = 'TableColumns';\r\n\r\nconst Orders = () => {\r\n const { Text } = Typography;\r\n\r\n const user = useSelector((s) => s.user);\r\n const history = useHistory();\r\n\r\n const [settingsForm] = Form.useForm();\r\n\r\n const [orders, setOrders] = useState([]);\r\n const [reports, setReports] = useState([]);\r\n const [statuses, setStatuses] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [selectedOrderIds, setSelectedOrderIds] = useState([]);\r\n const [currentOrder, setCurrentOrder] = useState();\r\n const [refreshRequired, setRefreshRequired] = useState(true);\r\n const [editMode, setEditMode] = useState(false);\r\n const [packMode, setPackMode] = useState(false);\r\n const [openSettings, setOpenSettings] = useState(false);\r\n const [columnSettings, setColumnSettings] = useState();\r\n\r\n const [filter, setFilter] = useState({});\r\n\r\n useEffect(() => {\r\n let storedFilter = localStorage.getItem('ordersFilter');\r\n\r\n if (storedFilter) {\r\n storedFilter = JSON.parse(storedFilter);\r\n setFilter({\r\n ...storedFilter,\r\n dateFrom: storedFilter.dateFrom && moment(storedFilter.dateFrom),\r\n dateTo: storedFilter.dateTo && moment(storedFilter.dateTo),\r\n });\r\n } else {\r\n setFilter({\r\n dateFrom: moment().add(-1, 'days'),\r\n dateTo: moment(),\r\n });\r\n }\r\n\r\n getStatuses();\r\n getReports();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (filter.dateFrom && filter.dateTo && refreshRequired) {\r\n setRefreshRequired(false);\r\n getData();\r\n }\r\n\r\n localStorage.setItem('ordersFilter', JSON.stringify(filter));\r\n }, [filter, refreshRequired]);\r\n\r\n const getData = () => {\r\n setLoading(true);\r\n\r\n let queryParams = {\r\n dateFrom: filter.dateFrom && filter.dateFrom.format(),\r\n dateTo: filter.dateTo && filter.dateTo.format(),\r\n };\r\n\r\n serverFetch('orders', { method: 'GET', queryParams: queryParams }, user)\r\n .then((data) => {\r\n setOrders(data);\r\n setLoading(false);\r\n setEditMode(false);\r\n })\r\n .catch((e) => {\r\n message.error(tr('Ошибка получения заказов'));\r\n setLoading(false);\r\n });\r\n\r\n let settingsQueryParams = {\r\n settingType: settingType,\r\n context: settingContext,\r\n };\r\n\r\n serverFetch('usersettings', { method: 'GET', queryParams: settingsQueryParams }, user)\r\n .then((data) => {\r\n let settings = [];\r\n if (data) {\r\n settings = JSON.parse(data.settingValue);\r\n } else {\r\n let columns = getColumns();\r\n\r\n columns.map((c) => {\r\n settings.push({ visible: true, column: c.dataIndex, title: c.title });\r\n });\r\n }\r\n\r\n setColumnSettings(settings);\r\n })\r\n .catch((e) => {\r\n message.error(tr('Ошибка получения настроек'));\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const getStatuses = () => {\r\n serverFetch(`orders/statuses`, { method: 'GET' }, user)\r\n .then((statuses) => setStatuses(statuses))\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n };\r\n\r\n const getReports = () => {\r\n serverFetch(`repository/reports`, { method: 'GET' }, user)\r\n .then((reports) => {\r\n setReports(reports);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n };\r\n\r\n function handlePrintMenuClick(e) {\r\n let report = reports.find((r) => r.id == e.key);\r\n if (!report) return;\r\n\r\n setLoading(true);\r\n\r\n serverFetch(`orders/report/${currentOrder.orderGuid}/${report.id}`, { method: 'GET', blob: true }, user)\r\n .then((data) => {\r\n const file = new Blob([data], { type: 'application/pdf' });\r\n const fileURL = URL.createObjectURL(file);\r\n const pdfWindow = window.open();\r\n pdfWindow.location.href = fileURL;\r\n //FileSaver.saveAs(blob, report.name + '.pdf');\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n message.error(\r\n <>\r\n {tr('Ошибка печати')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n setLoading(false);\r\n });\r\n }\r\n\r\n const renderToolbar = () => {\r\n const printMenu = (\r\n \r\n {reports.map((r) => {\r\n return {r.name};\r\n })}\r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n {tr('Заказы за период')}\r\n {\r\n var dateFrom =\r\n date &&\r\n moment(date, 'DD.MM.YYYY').utcOffset(0, true).set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\r\n\r\n setFilter({ ...filter, dateFrom: dateFrom });\r\n\r\n setRefreshRequired(true);\r\n }}\r\n />\r\n -\r\n {\r\n var dateTo =\r\n date &&\r\n moment(date, 'DD.MM.YYYY').utcOffset(0, true).set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\r\n\r\n setFilter({ ...filter, dateTo: dateTo });\r\n\r\n setRefreshRequired(true);\r\n }}\r\n />\r\n\r\n }\r\n onClick={() => {\r\n setRefreshRequired(true);\r\n }}\r\n >\r\n {tr('Обновить')}\r\n \r\n }\r\n onClick={() => {\r\n setSelectedOrderIds([]);\r\n setCurrentOrder({});\r\n setEditMode(true);\r\n }}\r\n >\r\n {tr('Добавить')}\r\n \r\n }\r\n onClick={() => {\r\n setPackMode(true);\r\n }}\r\n >\r\n {tr('В пакет')}\r\n \r\n }\r\n onClick={() => {\r\n setEditMode(true);\r\n }}\r\n >\r\n {tr('Изменить')}\r\n \r\n }\r\n onClick={() => {\r\n history.push(`/order/edit/${currentOrder.orderGuid}`);\r\n }}\r\n >\r\n {tr('Открыть')}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n
\r\n {columnSettings.map((s) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {renderToolbar()}\r\n {columnSettings && renderTable()}\r\n {columnSettings && renderTableSettings()}\r\n {divPackHead}\r\n {divOrderHead}\r\n \r\n );\r\n};\r\n\r\nexport default Orders;\r\n","import MButton from './button';\r\n\r\nexport default MButton;","import React from 'react';\r\nimport { Button } from 'antd';\r\nimport { CheckOutlined, PlusOutlined, EditOutlined, DeleteOutlined, CloseOutlined } from '@ant-design/icons';\r\n\r\nimport './button.css';\r\nimport { tr } from '../../../utils';\r\n\r\nconst MButton = ({ text, type, onClick, enabled = true, visible = true }) => {\r\n let icon = '';\r\n let btnType = 'normal';\r\n let btnText = text;\r\n switch (type) {\r\n case 'add':\r\n icon = ;\r\n btnType = 'primary';\r\n btnText = tr('Добавить');\r\n break;\r\n case 'delete':\r\n icon = ;\r\n btnType = 'danger';\r\n btnText = tr('Удалить');\r\n break;\r\n case 'edit':\r\n icon = ;\r\n btnType = 'default';\r\n btnText = tr('Изменить');\r\n break;\r\n case 'ok':\r\n icon = ;\r\n btnType = 'success';\r\n btnText = 'OK';\r\n break;\r\n case 'cancel':\r\n icon = ;\r\n btnType = 'danger';\r\n btnText = tr('Отмена');\r\n break;\r\n default:\r\n break;\r\n }\r\n return (\r\n visible && (\r\n \r\n )\r\n );\r\n};\r\n\r\nexport default MButton;\r\n","import moment from 'moment';\r\nimport uuidv4 from 'uuid/v4';\r\n\r\nexport function tie(changeFunction, name) {\r\n return {\r\n value: this.props && this.props[name],\r\n onChange: (v) => changeFunction(name, v),\r\n error: this.props && this.props.errors && this.props.errors[name],\r\n };\r\n}\r\n\r\nexport function newtie(changeFunction, name) {\r\n return {\r\n value: this.props && this.props[name],\r\n name: name,\r\n onChange: changeFunction,\r\n error: this.props && this.props.errors && this.props.errors[name],\r\n };\r\n}\r\n\r\nexport function formatSum(s) {\r\n if (isNaN(s)) s = 0;\r\n return s.toLocaleString(undefined, { minimumFractionDigits: 2 });\r\n}\r\n\r\nexport function getRouterParameter(props, name, toObject = false) {\r\n const v = props.match && props.match.params && props.match.params[name];\r\n return toObject && v ? JSON.parse(decodeURIComponent(v)) : v;\r\n}\r\n\r\nexport function sanitize(text, allowedTags = ['b', 'i', 'u', 'br', 'br', 'div']) {\r\n return (\r\n text &&\r\n text.replace(/<[^>]*>/gm, (tag, a, b, c, d) => {\r\n let at = allowedTags.find((x) => tag.startsWith('<' + x));\r\n if (at) return '<' + at + '>';\r\n at = allowedTags.find((x) => tag === '');\r\n if (at) return tag;\r\n return '';\r\n })\r\n );\r\n}\r\n\r\nexport function nvl(a, b) {\r\n return a === null || a === undefined ? b : a;\r\n}\r\n\r\nexport function toUrl(o) {\r\n return encodeURIComponent(JSON.stringify(o));\r\n}\r\n\r\nexport function capitalizeFirstLetter(string) {\r\n return string ? string.charAt(0).toUpperCase() + string.slice(1) : string;\r\n}\r\n\r\nexport function flattenArray(arr1) {\r\n return arr1.reduce((arr, val) => (Array.isArray(val) ? arr.concat(flattenArray(val)) : arr.concat(val)), []);\r\n}\r\n\r\nexport function dateToServerFormat(d) {\r\n return d ? moment(d).locale('en').format('YYYY-MM-DD') + 'T00:00:00.000Z' : null;\r\n}\r\n\r\nexport function getErrorTitleFromHtml(htmlText) {\r\n if (!htmlText || !htmlText.startsWith || !htmlText.startsWith('')) {\r\n return null;\r\n }\r\n\r\n let htmlError = 'Server error: ';\r\n let startIdx = htmlText.indexOf('

') + 4;\r\n let endIdx = htmlText.indexOf('

', startIdx);\r\n htmlError = htmlError + htmlText.substring(startIdx, endIdx);\r\n startIdx = htmlText.indexOf('
', endIdx) + 24;\r\n endIdx = htmlText.indexOf('
', startIdx);\r\n htmlError = htmlError + ' ' + htmlText.substring(startIdx, endIdx);\r\n return htmlError;\r\n}\r\n\r\nexport function distinct(arr) {\r\n let distinctArray = [];\r\n arr.forEach((x) => !distinctArray.includes(x) && distinctArray.push(x));\r\n return distinctArray;\r\n}\r\n\r\nexport function getBase64(file) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = (error) => reject(error);\r\n });\r\n}\r\n\r\nexport async function files2ServerFormat(files = []) {\r\n console.log('files2ServerFormat', files);\r\n\r\n let bodies = [];\r\n await Promise.all(files.map((f, idx) => getBase64(f).then((base64) => (bodies[idx] = base64.substr(base64.indexOf('base64,') + 7)))));\r\n return files.map((f, idx) => ({\r\n fileName: f.name,\r\n fileExtension: f.name.slice(-3),\r\n fileSize: f.size,\r\n pageNumber: idx,\r\n fileBody: bodies[idx],\r\n url: undefined,\r\n documentDataType: f.type.startsWith('image')\r\n ? 'Image'\r\n : f.type.startsWith('video')\r\n ? 'Video'\r\n : f.type === 'application/pdf'\r\n ? 'Pdf'\r\n : 'None',\r\n }));\r\n}\r\n\r\nexport function jsonParse(str, errValue = undefined) {\r\n let retval = errValue;\r\n try {\r\n retval = JSON.parse(str);\r\n } catch (err) {\r\n console.error('json parse error', str, err);\r\n }\r\n return retval;\r\n}\r\n\r\nexport function uuid() {\r\n return uuidv4();\r\n}\r\n\r\nexport function byProperty(propertyName, descending = false) {\r\n return (a, b) => (a[propertyName] < b[propertyName] ? 1 : -1) * (descending ? 1 : -1);\r\n}\r\n\r\nexport function byDateProperty(propertyName, descending = false) {\r\n return (a, b) => (new Date(a[propertyName]) < new Date(b[propertyName]) ? 1 : -1) * (descending ? 1 : -1);\r\n}\r\n\r\nexport function byPropertyDesc(propertyName) {\r\n return byProperty(propertyName, true);\r\n}\r\n\r\nexport const ASC = false;\r\nexport const DESC = true;\r\nexport function byProperties(props) {\r\n const keys = Object.keys(props);\r\n return (a, b) => {\r\n for (let i = 0; i < keys.length; i++) {\r\n const propName = keys[i];\r\n const descending = props[propName];\r\n if (a[propName] < b[propName]) return descending ? 1 : -1;\r\n if (a[propName] > b[propName]) return descending ? -1 : 1;\r\n }\r\n return 0;\r\n };\r\n}\r\n\r\nexport function object2Array(obj, keyName) {\r\n return Object.keys(obj).map((k) => ({ ...obj[k], [keyName]: k }));\r\n}\r\n\r\nexport const addDays = (fromDate, daysCnt) => {\r\n let result = new Date(fromDate);\r\n result.setDate(result.getDate() + daysCnt);\r\n return result;\r\n};\r\n\r\nexport const addMonths = (fromDate, mnthCnt) => {\r\n let result = new Date(fromDate);\r\n result.setMonth(result.getMonth() + mnthCnt);\r\n return result;\r\n};\r\n\r\nexport const endOfDate = (d) => {\r\n let result = zeroTime(addDays(d, 1));\r\n result.setTime(result.getTime() - 1);\r\n return result;\r\n};\r\n\r\nexport const zeroTime = (d) => d && new Date(d.toDateString());\r\n\r\nexport const today = () => zeroTime(new Date());\r\n\r\nexport const ellipsis = (str, length = 100) => {\r\n return str && str.length > length ? str.substr(0, length) + '...' : str;\r\n};\r\n\r\nexport const getFloat = (prevValue, newValue) => {\r\n if (!(newValue && newValue.match(/^\\-?\\d*\\.?\\d*$/gm))) {\r\n if (!prevValue || !newValue) {\r\n return '';\r\n }\r\n } else {\r\n return newValue;\r\n }\r\n\r\n return prevValue;\r\n};\r\n\r\nexport const getInteger = (prevValue, newValue) => {\r\n if (newValue === 0) return 0;\r\n\r\n if (!(newValue && newValue.match(/^\\-?\\d*$/gm))) {\r\n if (!prevValue || !newValue) {\r\n return '';\r\n }\r\n } else {\r\n return newValue;\r\n }\r\n\r\n return prevValue;\r\n};\r\n\r\nexport const getBoolean = (value) => {\r\n if (!value) return false;\r\n\r\n return value.toUpperCase() == 'TRUE';\r\n};\r\n\r\nexport const get = (array = [], func) => {\r\n var result;\r\n Object.values(array).forEach((item) => {\r\n if (func(item)) {\r\n result = item;\r\n }\r\n });\r\n return result;\r\n};\r\n\r\nexport const getFiscalYear = (data, fcl) => {\r\n var fullYear = new Date(data).getFullYear();\r\n var result = get(fcl, function (item) {\r\n return item.month == 1 && item.year == fullYear;\r\n });\r\n\r\n if (result) {\r\n if (new Date(data).withoutTime() >= new Date(result.startDate).asUTC().withoutTime()) {\r\n return parseInt(result.year);\r\n } else {\r\n return parseInt(result.year) - 1;\r\n }\r\n }\r\n};\r\n\r\nexport const getFiscalMonth = (data, inServiceDate, fcl) => {\r\n var currentFcl = get(fcl, function (item) {\r\n return (\r\n new Date(item.startDate).withoutTime() <= new Date(data).withoutTime() &&\r\n new Date(item.endDate).withoutTime() >= new Date(data).withoutTime()\r\n );\r\n });\r\n\r\n return currentFcl ? parseInt(currentFcl.month) : new Date(inServiceDate).getMonth();\r\n};\r\n\r\nexport const toUpperCase = (value) => {\r\n if (!value || typeof value !== 'string') return null;\r\n\r\n return value.toUpperCase();\r\n};\r\n\r\nexport const dataURItoBlob = (dataURI) => {\r\n // convert base64 to raw binary data held in a string\r\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\r\n var byteString = atob(dataURI.split(',')[1]);\r\n\r\n // separate out the mime component\r\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n\r\n // write the bytes of the string to an ArrayBuffer\r\n var ab = new ArrayBuffer(byteString.length);\r\n\r\n // create a view into the buffer\r\n var ia = new Uint8Array(ab);\r\n\r\n // set the bytes of the buffer to the correct values\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n // write the ArrayBuffer to a blob, and you're done\r\n var blob = new Blob([ab], { type: mimeString });\r\n return blob;\r\n};\r\n\r\nexport const rowsCounter = (value, printRowLength) => {\r\n if (!value) return 0;\r\n\r\n if (!printRowLength) printRowLength = 230; //max row length for printing document with Font Size = 10;\r\n\r\n var rows = value.split(newLine());\r\n var result = 0;\r\n for (var i = 0; i < rows.length; i++) {\r\n if (rows[i].length > printRowLength) {\r\n result += Math.ceil(rows[i].length / printRowLength);\r\n } else {\r\n result += 1;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport const writeLine = (string) => {\r\n return string + newLine();\r\n};\r\n\r\nexport const newLine = () => {\r\n return '\\n';\r\n};\r\n\r\n\r\nexport function dynamicSort(property, descending) {\r\n var sortOrder = 1;\r\n if (property[0] === '-') {\r\n sortOrder = -1;\r\n property = property.substr(1);\r\n }\r\n return function (a, b) {\r\n var result;\r\n\r\n if (!descending) {\r\n result = a[property] - b[property];\r\n } else {\r\n result = b[property] - a[property];\r\n }\r\n\r\n return result * sortOrder;\r\n };\r\n}\r\n\r\nexport const toFinanceString = (value, decimalPrecision = 2) => {\r\n if (!value || value === 0) return 0;\r\n\r\n return parseFloat(value).toLocaleString('ru-RU', { maximumFractionDigits: decimalPrecision });\r\n};\r\n\r\nexport const getEnumDictionary = (enumList, getItemLabel) => {\r\n let items = [];\r\n Object.values(enumList).map(function (key) {\r\n items.push({ name: getItemLabel(key), value: key });\r\n });\r\n\r\n return items;\r\n};\r\n","import React from 'react';\r\nimport { SelectBox } from 'devextreme-react/select-box';\r\nimport TextBox from 'devextreme-react/text-box';\r\nimport moment from 'moment';\r\n\r\nfunction getCurrentDate() {\r\n return moment().startOf('day');\r\n}\r\n\r\nfunction getDaysFromMs(ms) {\r\n return Math.floor(ms / 1000 / 60 / 60 / 24) + 1;\r\n}\r\n\r\nfunction utilsGetDateSession(ValueName, DefaultValue) {\r\n let date = getCurrentDate();\r\n let QtySec = sessionStorage.getItem(ValueName);\r\n if (QtySec != null) date.setTime(QtySec);\r\n return date;\r\n}\r\n\r\nfunction utilsSetDateSession(ValueName, Value) {\r\n let QtySec = Value.getTime();\r\n sessionStorage.setItem(ValueName, QtySec);\r\n}\r\n\r\nfunction utilsGetDateLocalStorage(name, DefaultValue) {\r\n let ms = localStorage.getItem(name);\r\n if (ms) moment.unix(ms / 1000);\r\n\r\n return getCurrentDate();\r\n}\r\n\r\nfunction utilsSetDateLocalStorage(name, value) {\r\n console.log(name, value);\r\n let date = moment(value, 'DD.MM.YYYY').valueOf();\r\n localStorage.setItem(name, date);\r\n}\r\n\r\nfunction utilsCreateForm() {\r\n //this.setLocale(e.value);\r\n //console.log(\"Установка локали\");\r\n //DevExpress.localization.loadMessages();\r\n //DevExpress.localization.locale(\"ru\");\r\n}\r\n\r\nfunction getItemByIdOrNull(data, id) {\r\n if (data === null) return null;\r\n if (id === null) return null;\r\n const res = data.find((e) => e.id === id);\r\n if (res === undefined) return null;\r\n return res;\r\n}\r\n\r\nfunction getItemIdOrNull(item) {\r\n if (item === undefined || item === null) return null;\r\n return item.id;\r\n}\r\n\r\n\r\nfunction formsAddTextBoxField(fieldTitle, propertyValue, propertyName, forma) {\r\n return (\r\n
\r\n
{fieldTitle}
\r\n
\r\n {propertyName === undefined ? (\r\n \r\n ) : (\r\n {\r\n const p = propertyName.indexOf('.');\r\n if (p === -1) forma.setState({ [propertyName]: e.value });\r\n else {\r\n const objName = propertyName.slice(0, p);\r\n const propName = propertyName.slice(p + 1);\r\n forma.setState((prevState) => {\r\n let xxx = Object.assign({}, prevState[objName], { [propName]: e.value });\r\n return { [objName]: xxx };\r\n });\r\n }\r\n }}\r\n />\r\n )}\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction formsAddTextBoxFieldNumber(fieldTitle, propertyValue, propertyName, forma) {\r\n return (\r\n
\r\n
{fieldTitle}
\r\n
\r\n {propertyName === undefined ? (\r\n \r\n ) : (\r\n {\r\n const p = propertyName.indexOf('.');\r\n if (p === -1) forma.setState({ [propertyName]: e.value });\r\n else {\r\n const objName = propertyName.slice(0, p);\r\n const propName = propertyName.slice(p + 1);\r\n forma.setState((prevState) => {\r\n let xxx = Object.assign({}, prevState[objName], { [propName]: Number(e.value) });\r\n return { [objName]: Number(xxx) };\r\n });\r\n }\r\n }}\r\n />\r\n )}\r\n
\r\n
\r\n );\r\n}\r\n\r\n// Выбор свойства\r\nfunction chooseSelectedValue(id, onSelect, items, propName) {\r\n console.log('chooseSelectedValue', id, propName);\r\n onSelect({\r\n [propName]: items.find((e) => e.id === id),\r\n });\r\n}\r\n\r\n\r\nexport {\r\n getDaysFromMs,\r\n utilsGetDateSession,\r\n utilsSetDateSession,\r\n utilsCreateForm,\r\n getItemByIdOrNull,\r\n getItemIdOrNull,\r\n chooseSelectedValue,\r\n formsAddTextBoxField,\r\n formsAddTextBoxFieldNumber,\r\n utilsGetDateLocalStorage,\r\n utilsSetDateLocalStorage,\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Table, Select, Modal, Form, Input, Col, Row, message } from 'antd';\r\nimport './order.css';\r\nimport { getItemByIdOrNull, getItemIdOrNull } from '../../utils/utils';\r\nimport { tr } from '../../utils/translate';\r\nimport { serverFetch, apiBaseUrl } from '../../server';\r\nimport './order-product-modal.css';\r\n\r\nconst ProductModal = ({ orderGuid, idStr, onCancel, onSave, user, ordno }) => {\r\n const { Option } = Select;\r\n // Группа типовых конструкций\r\n const [construction, setConstruction] = useState();\r\n const [templateGroups, setTemplateGroups] = useState([]);\r\n const [currentGroup, setCurrentGroup] = useState();\r\n const [isEditMode] = useState(!!idStr);\r\n const [groupForm] = isEditMode ? [] : Form.useForm();\r\n const [configForm] = Form.useForm();\r\n const [loading, setLoading] = useState(true);\r\n // Типовая конструкция\r\n const [templates, setTemplates] = useState([]);\r\n const [currentTemplate, setCurrentTemplate] = useState();\r\n const [selectedTemplateIds, setSelectedTemplateIds] = useState([]);\r\n const [systems, setSystems] = useState([]);\r\n const [zapolns, setZapolns] = useState([]);\r\n const [diffs, setDiffs] = useState([]);\r\n const [monts, setMonts] = useState([]);\r\n const [furns, setFurns] = useState([]);\r\n const [vsts, setVsts] = useState([]);\r\n const [paramNames, setParamNames] = useState([]);\r\n const [paramValues, setParamValues] = useState();\r\n const [selectedSysId, setSelectedSysId] = useState();\r\n const [selectedColor, setSelectedColor] = useState();\r\n const [selectedColorIn, setSelectedColorIn] = useState();\r\n const [selectedColorOut, setSelectedColorOut] = useState();\r\n const [selectedColorB, setSelectedColorB] = useState(); // Цвет основы\r\n const [selectedColorF, setSelectedColorF] = useState(); // Цвет фальца\r\n const [selectedZapoln, setSelectedZapoln] = useState();\r\n const [selectedMont, setSelectedMont] = useState();\r\n const [selectedFurn, setSelectedFurn] = useState();\r\n const [selectedVst, setSelectedVst] = useState();\r\n const [selectedDiff, setSelectedDiff] = useState();\r\n const [qty, setQty] = useState(1);\r\n const [comment, setComment] = useState();\r\n const [constName, setConstName] = useState();\r\n const [width, setWidth] = useState(1000);\r\n const [height, setHeight] = useState(1000);\r\n\r\n useEffect(() => {\r\n getDataTemplateGroups();\r\n if (isEditMode) {\r\n getConstruction();\r\n getAllSys();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (templateGroups.length > 0 && !currentGroup) {\r\n chooseSelectedGroup(templateGroups[0].id);\r\n }\r\n }, [templateGroups]);\r\n\r\n useEffect(() => {\r\n if (isEditMode && construction) setSelectedVst(vsts.find((e) => e.id === construction.idVst));\r\n }, [vsts, construction]);\r\n\r\n useEffect(() => {\r\n if (isEditMode && construction) setSelectedMont(monts.find((e) => e.id === construction.idMont));\r\n }, [monts, construction]);\r\n\r\n useEffect(() => {\r\n if (isEditMode && construction) setSelectedFurn(furns.find((e) => e.id === construction.idFurn));\r\n }, [furns, construction]);\r\n\r\n useEffect(() => {\r\n if (isEditMode && construction) setSelectedDiff(diffs.find((e) => e.id === construction.idDiff));\r\n }, [diffs, construction]);\r\n\r\n useEffect(() => {\r\n if (isEditMode && construction) {\r\n let sys = getItemByIdOrNull(systems, construction.idSys);\r\n let color = sys ? sys.colorGroup.colors.find((e) => e.id === construction.idColor) : null;\r\n setSelectedColor(color);\r\n\r\n if (color) {\r\n color.colorIn && setSelectedColorIn(color.colorIn.colorCnt.find((e) => e.id === construction.idColorIn));\r\n color.colorOut && setSelectedColorOut(color.colorOut.colorCnt.find((e) => e.id === construction.idColorOut));\r\n color.colorBase && setSelectedColorB(color.colorBase.colorCnt.find((e) => e.id === construction.idColorB));\r\n color.colorF && setSelectedColorF(color.colorF.colorCnt.find((e) => e.id === construction.idColorF));\r\n }\r\n }\r\n }, [systems, construction]);\r\n\r\n useEffect(() => {\r\n const system = getItemByIdOrNull(systems, selectedSysId);\r\n const color = !selectedColor || !getItemByIdOrNull(system.colorGroup.colors, selectedColor.id) ? null : selectedColor;\r\n setSelectedColor(color);\r\n }, [selectedSysId]);\r\n\r\n useEffect(() => {\r\n async function initData() {\r\n if (isEditMode && construction) {\r\n await chooseSelectedSys(construction.idSys)\r\n .then((r) => {\r\n\r\n setQty(construction.qty);\r\n setComment(construction.comment);\r\n setConstName(construction.constName);\r\n setWidth(construction.w);\r\n setHeight(construction.h);\r\n \r\n let cadParams = [];\r\n construction.cadParamValues.map((p) => {\r\n cadParams['param' + p.idName] = p.idVal;\r\n });\r\n \r\n setParamValues(cadParams);\r\n \r\n configForm.setFieldsValue({\r\n qty: construction.qty,\r\n comment: construction.comment,\r\n constName: construction.constName,\r\n width: construction.w,\r\n height: construction.h,\r\n selectedMont: construction.idMont || undefined,\r\n selectedVst: construction.idVst || undefined,\r\n selectedDiff: construction.idDiff || undefined,\r\n selectedSysId: construction.idSys,\r\n selectedColor: construction.idColor,\r\n selectedColorIn: construction.idColorIn,\r\n selectedColorOut: construction.idColorOut,\r\n selectedColorB: construction.idColorB,\r\n selectedColorF: construction.idColorF,\r\n ...cadParams,\r\n });\r\n\r\n }\r\n );\r\n }\r\n };\r\n initData();\r\n }, [construction,systems]);\r\n\r\n\r\n useEffect(() => {\r\n if (groupForm && currentGroup) {\r\n groupForm.setFieldsValue({\r\n id: currentGroup.id,\r\n });\r\n\r\n setSystems(currentGroup.sys);\r\n }\r\n }, [currentGroup]);\r\n\r\n async function getConstruction() {\r\n setLoading(true);\r\n\r\n await serverFetch(`orders/construction/${orderGuid}/${idStr}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n setConstruction(data);\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }\r\n async function getAllSys() {\r\n setLoading(true);\r\n await serverFetch(`repository/allsys`, { method: 'GET' }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n setSystems(data);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n setLoading(false);\r\n });\r\n }\r\n\r\n async function getDataTemplateGroups() {\r\n setLoading(true);\r\n await serverFetch(`repository/getstartdetails`, { method: 'GET' }, user)\r\n .then((data) => {\r\n const { templateGroups, diffs } = data;\r\n setTemplateGroups(templateGroups);\r\n setDiffs(diffs);\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n setLoading(false);\r\n });\r\n }\r\n\r\n // Выбор группы типовых конструкций\r\n async function chooseSelectedGroup(id) {\r\n // Менять если не выбрана группа была и id не null и не совпадает со старой группой\r\n if (id && (!currentGroup || currentGroup.id !== id)) {\r\n const newSelectedGroup = templateGroups.find((e) => e.id === id);\r\n setCurrentGroup(newSelectedGroup);\r\n configForm.setFieldsValue({\r\n selectedSysId: undefined,\r\n width: 0,\r\n height: 0,\r\n });\r\n setLoading(true);\r\n serverFetch(`repository/gettemplates/${id}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n setTemplates(data);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n setLoading(false);\r\n });\r\n }\r\n }\r\n\r\n // Выбор профильной системы\r\n async function chooseSelectedSys(id) {\r\n console.log(`chooseSelectedSys ${id}`);\r\n setLoading(true); \r\n setSelectedSysId(id);\r\n await serverFetch(`repository/getsysdetails/${id}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n const { zapolns, furns, vsts, monts, paramNames, paramValues } = data;\r\n setZapolns(zapolns);\r\n setMonts(monts);\r\n setFurns(furns);\r\n setVsts(vsts);\r\n setParamNames(paramNames);\r\n let x = {};\r\n paramValues.forEach((item) => {\r\n x['param' + item.idName] = item.idValue;\r\n });\r\n setParamValues({ ...x });\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }\r\n\r\n // Выбор типовой конструкции\r\n async function chooseTemplate(id) {\r\n console.log(`chooseTemplate ${id}`);\r\n console.log(systems);\r\n const selectedTemplate = templates.find((e) => e.id === id);\r\n console.log(selectedTemplate);\r\n const newSys =\r\n !selectedTemplate || !selectedTemplate.sprSys || !getItemByIdOrNull(systems, selectedTemplate.sprSys.id)\r\n ? null\r\n : selectedTemplate.sprSys;\r\n const newIdSys = newSys ? newSys.id : selectedSysId;\r\n if (newSys) await chooseSelectedSys(newIdSys);\r\n setCurrentTemplate(selectedTemplate);\r\n setWidth(selectedTemplate.w);\r\n setHeight(selectedTemplate.h);\r\n const newColorId = selectedTemplate.sprColor ? selectedTemplate.sprColor.id : null;\r\n setSelectedColor(selectedTemplate.sprColor);\r\n \r\n let cadParams = [];\r\n if (selectedTemplate)\r\n selectedTemplate.params2.map((p) => {\r\n cadParams['param' + p.idName] = p.idVal;\r\n });\r\n\r\n console.log(cadParams);\r\n setParamValues(cadParams);\r\n\r\n //configForm.setFieldValue('selectedSysId', newSys.id);\r\n configForm.setFieldsValue({\r\n width: selectedTemplate.w,\r\n height: selectedTemplate.h,\r\n selectedSysId: newIdSys,\r\n selectedColor: newColorId,\r\n ...cadParams\r\n });\r\n //chooseSelectedSys(selectedTemplate.sprSys.id);\r\n setSelectedColor(selectedTemplate.sprColor);\r\n }\r\n\r\n // Определяет является ли цветовая сторона палитрой\r\n function getColorSideIsPallete(selectedColor, colorSideName) {\r\n return selectedColor && selectedColor.vid === 1 && selectedColor[colorSideName] && selectedColor[colorSideName].vid === 3;\r\n }\r\n\r\n const save = async () => {\r\n function GetId(obj) {\r\n if (!obj) return 0;\r\n return obj.id;\r\n }\r\n let allParamsFilled = true;\r\n let params = [];\r\n console.log(paramValues);\r\n paramNames.forEach((pn) => {\r\n if (!paramValues['param' + pn.id]) {\r\n console.log(\"Параметр не заполнен\", pn);\r\n allParamsFilled = false;\r\n return;\r\n }\r\n params.push({\r\n IdName: pn.id,\r\n IdVal: paramValues['param' + pn.id],\r\n });\r\n });\r\n if (!allParamsFilled) {\r\n message.warning('Пожалуйста укажите все параметры изделия');\r\n return;\r\n }\r\n const order = {\r\n orderGuid: orderGuid,\r\n idStr: idStr || 0,\r\n templateId: GetId(currentTemplate),\r\n qty: qty,\r\n constName: constName,\r\n comment: comment,\r\n w: width,\r\n h: height,\r\n diff: GetId(selectedDiff),\r\n sys: selectedSysId,\r\n zapoln: GetId(selectedZapoln),\r\n color: GetId(selectedColor),\r\n colorIn: GetId(selectedColorIn),\r\n colorOut: GetId(selectedColorOut),\r\n colorB: GetId(selectedColorB),\r\n colorF: GetId(selectedColorF),\r\n mont: GetId(selectedMont),\r\n vst: GetId(selectedVst),\r\n furn: GetId(selectedFurn),\r\n sParam: JSON.stringify(params),\r\n };\r\n\r\n setLoading(true);\r\n\r\n serverFetch(`orders/addconstruct`, { method: 'POST', bodyData: order }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n onSave();\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n\r\n message.error(\r\n <>\r\n {tr('Ошибка сохранения конструкции')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n });\r\n };\r\n\r\n function renderCombobox(dataSource, title, placeholder, selectedValue, onChoose, propName) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const onSelectTemplateChange = (selectedRowKeys) => {\r\n setSelectedTemplateIds(selectedRowKeys);\r\n\r\n if (selectedRowKeys.length == 1) {\r\n let template = templates.find((o) => o.id == selectedRowKeys[0]);\r\n chooseTemplate(template.id);\r\n } else {\r\n chooseTemplate();\r\n }\r\n };\r\n const rowSelection = {\r\n selectedRowKeys: selectedTemplateIds,\r\n onChange: onSelectTemplateChange,\r\n type: 'radio',\r\n };\r\n\r\n function rendertTemplatesTable() {\r\n const columns = [\r\n {\r\n dataIndex: 'id',\r\n render: (_, record) => {\r\n return (\r\n
\r\n {record.name}\r\n
\r\n {\r\n chooseTemplate(record.id);\r\n }}\r\n alt={record.fileName}\r\n />\r\n
\r\n );\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n {\r\n return {\r\n onClick: (event) => {\r\n onSelectTemplateChange([record.id]);\r\n },\r\n };\r\n }}\r\n scroll={{ y: 'calc(100vh - 150px)' }}\r\n />\r\n );\r\n }\r\n const selectedSys = getItemByIdOrNull(systems, selectedSysId);\r\n //const selectedSysId2 = 45;\r\n //console.log('render', typeof(selectedSysId2), typeof(selectedSysId), selectedSysId, typeof(45));\r\n //console.log(selectedSysId, Number(selectedSysId));\r\n return (\r\n onCancel()}\r\n onOk={() => save()}\r\n cancelButtonProps={{ disabled: loading }}\r\n okButtonProps={{ disabled: loading }}\r\n width={isEditMode ? 900 : 1400}\r\n >\r\n
\r\n \r\n {!isEditMode && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {rendertTemplatesTable()}\r\n \r\n )}\r\n\r\n \r\n <>

{tr('Основные')}

\r\n {/*selectedSys &&*/\r\n renderCombobox(\r\n systems,\r\n tr('Система'),\r\n tr('Выберите систему'),\r\n selectedSysId,\r\n chooseSelectedSys,\r\n 'selectedSysId'\r\n )}\r\n {renderCombobox(\r\n zapolns,\r\n tr('Заполнение'),\r\n tr('Выберите заполнение'),\r\n getItemIdOrNull(selectedZapoln),\r\n (id) => {setSelectedZapoln(zapolns.find((e) => e.id === id));},\r\n 'selectedZapoln'\r\n )}\r\n {selectedSys &&\r\n renderCombobox(\r\n selectedSys.colorGroup.colors,\r\n tr('Цвет'),\r\n tr('Выберите цвет'),\r\n getItemIdOrNull(selectedColor),\r\n (id) => {setSelectedColor(selectedSys.colorGroup.colors.find((e) => e.id === id));},\r\n 'selectedColor'\r\n )}\r\n {getColorSideIsPallete(selectedColor, 'colorIn') &&\r\n renderCombobox(\r\n selectedColor.colorIn.colorCnt,\r\n tr('Цвет изнутри'),\r\n tr('Выберите цвет'),\r\n getItemIdOrNull(selectedColorIn),\r\n (id) => {setSelectedColorIn(selectedColor.colorIn.colorCnt.find((e) => e.id === id));},\r\n 'selectedColorIn'\r\n )}\r\n {getColorSideIsPallete(selectedColor, 'colorOut') &&\r\n renderCombobox(\r\n selectedColor.colorOut.colorCnt,\r\n tr('Цвет снаружи'),\r\n tr('Выберите цвет'),\r\n getItemIdOrNull(selectedColorOut),\r\n (id) => {setSelectedColorOut(selectedColor.colorOut.colorCnt.find((e) => e.id === id));},\r\n 'selectedColorOut'\r\n )}\r\n {getColorSideIsPallete(selectedColor, 'colorBase') &&\r\n renderCombobox(\r\n selectedColor.colorBase.colorCnt,\r\n tr('Цвет основы'),\r\n tr('Выберите цвет'),\r\n getItemIdOrNull(selectedColorB),\r\n (id) => {setSelectedColorB(selectedColor.colorBase.colorCnt.find((e) => e.id === id));},\r\n 'selectedColorB'\r\n )}\r\n {getColorSideIsPallete(selectedColor, 'colorF') &&\r\n renderCombobox(\r\n selectedColor.colorF.colorCnt,\r\n tr('Цвет фальца'),\r\n tr('Выберите цвет'),\r\n getItemIdOrNull(selectedColorF),\r\n (id) => {setSelectedColorF(selectedColor.colorF.colorCnt.find((e) => e.id === id));},\r\n 'selectedColorF'\r\n )}\r\n \r\n {setWidth(data.target.value);}}\r\n />\r\n \r\n \r\n {setHeight(data.target.value);}}/>\r\n \r\n \r\n {\r\n setQty(data.target.value);\r\n }}\r\n />\r\n \r\n \r\n {setConstName(data.target.value);}}/>\r\n \r\n\r\n \r\n {setComment(data.target.value);}} />\r\n \r\n {vsts.length > 0 &&\r\n renderCombobox(\r\n vsts,\r\n tr('Вставка'),\r\n tr('Выберите вставку'),\r\n getItemIdOrNull(selectedVst),\r\n (id) => {setSelectedVst(vsts.find((e) => e.id === id));},\r\n 'selectedVst'\r\n )}\r\n {monts.length > 0 &&\r\n renderCombobox(\r\n monts,\r\n tr('Монтаж'),\r\n tr('Выберите монтаж'),\r\n getItemIdOrNull(selectedMont),\r\n (id) => {setSelectedMont(monts.find((e) => e.id === id));},\r\n 'selectedMont'\r\n )}\r\n {furns.length > 0 &&\r\n renderCombobox(\r\n furns,\r\n tr('Фурнитура'),\r\n tr('Выберите фурнитуру'),\r\n getItemIdOrNull(selectedFurn),\r\n (id) => {setSelectedFurn(furns.find((e) => e.id === id));},\r\n 'selectedFurn'\r\n )}\r\n {diffs.length > 0 &&\r\n renderCombobox(\r\n diffs,\r\n tr('Сложность'),\r\n tr('Выберите сложность'),\r\n getItemIdOrNull(selectedDiff),\r\n (id) => {setSelectedDiff(diffs.find((e) => e.id === id));},\r\n 'selectedDiff'\r\n )}\r\n \r\n \r\n \r\n {paramNames.length > 0 && paramValues && (\r\n <>\r\n

{tr('Параметры')}

\r\n {paramNames.map((paramName) => {\r\n return (\r\n \r\n {\r\n let copy = { ...paramValues };\r\n copy['param' + paramName.id] = value;\r\n setParamValues(copy);\r\n }}\r\n value={paramValues['param' + paramName.id]}\r\n >\r\n {paramName.values.map((d) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProductModal;","import React, { useState } from 'react';\r\n\r\nimport { Col, Form, Input, message } from 'antd';\r\nimport { MButton } from '../lib';\r\nimport './order-product.css';\r\nimport { serverFetch, apiBaseUrl } from '../../server';\r\n\r\nimport { tr } from '../../utils/translate';\r\nimport ProductModal from './order-product-modal';\r\n\r\nconst Product = ({ ...props }) => {\r\n const { product, order, user, onDelete, onRefresh } = props;\r\n\r\n const [openProduct, setOpenProduct] = useState(false);\r\n\r\n const cancel = () => {\r\n setOpenProduct(false);\r\n };\r\n\r\n const saveProduct = () => {\r\n setOpenProduct(false);\r\n onRefresh();\r\n };\r\n\r\n const btnDeleteConstruction = () => {\r\n if (window.confirm(tr('Удалить изделие') + ` ${product.idStr}?`)) {\r\n serverFetch(`orders/delconstruct/${order.orderGuid}/${product.idStr}`, { method: 'DELETE' }, user)\r\n .then((data) => {\r\n onDelete();\r\n })\r\n .catch((e) => {\r\n message.error(\r\n <>\r\n {tr('Ошибка удаления конструкции')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n });\r\n }\r\n };\r\n\r\n const divError = product.calcError && product.calcError !== 0 ? \r\n
Ошибка {product.calcError}
: \r\n scheme;\r\n\r\n return (\r\n <>\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {order.isReadOnly ? (\r\n {divError}\r\n ) : (\r\n \r\n {divError}\r\n \r\n )}\r\n \r\n\r\n {!order.isReadOnly && (\r\n \r\n
\r\n {\r\n setOpenProduct(true);\r\n }}\r\n />\r\n {\r\n btnDeleteConstruction();\r\n }}\r\n />\r\n {\r\n document.location.href = `cad/${order.orderGuid}/${product.idStr}`;\r\n }}\r\n />\r\n
\r\n
\r\n )}\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n\r\n {openProduct && (\r\n cancel()}\r\n onSave={() => saveProduct()}\r\n user={user}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Product;\r\n","import React, { useState } from 'react';\r\nimport { List, Alert, message } from 'antd';\r\n\r\nimport { MButton } from '../lib';\r\nimport { tr } from '../../utils/translate';\r\nimport { toFinanceString } from '../../extensions/utils';\r\nimport Product from './order-product';\r\nimport ProductModal from './order-product-modal';\r\n\r\nimport './order-products.css';\r\n\r\nconst Products = ({ ...props }) => {\r\n const { order, user, onRefresh } = props;\r\n\r\n const [openProduct, setOpenProduct] = useState(false);\r\n\r\n const cancel = () => {\r\n setOpenProduct(false);\r\n };\r\n\r\n const saveProduct = () => {\r\n setOpenProduct(false);\r\n onRefresh();\r\n };\r\n\r\n const deleteProduct = () => {\r\n onRefresh();\r\n };\r\n\r\n if (order.orderIzds === undefined) return null;\r\n\r\n let total = 0;\r\n if (order && order.orderIzds) order.orderIzds.map((s) => (total = total + s.syma));\r\n\r\n return (\r\n <>\r\n {order.readOnlyDescription && }\r\n\r\n
\r\n

{tr('Изделия')}

\r\n

\r\n {tr('Итого')}: {toFinanceString(total)}\r\n

\r\n
\r\n\r\n {!order.isReadOnly && (\r\n {\r\n setOpenProduct(true);\r\n }}\r\n />\r\n )}\r\n (\r\n \r\n \r\n \r\n )}\r\n />\r\n {openProduct && }\r\n \r\n );\r\n};\r\n\r\nexport default Products;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Spin, Select, Modal, Form, Input, message } from 'antd';\r\n\r\nimport { tr } from '../../utils/translate';\r\nimport { serverFetch } from '../../server';\r\n\r\nconst kindsAks = [\r\n { id: 0, name: tr('Аксессуар') },\r\n { id: 1, name: tr('Комплект') },\r\n { id: 2, name: tr('Работа') },\r\n];\r\n\r\nconst OrderAks = ({ selectedAks, izds, order, user, onCancel, onSave }) => {\r\n const { Option } = Select;\r\n const [loading, setLoading] = useState(false);\r\n\r\n const [state, setState] = useState({\r\n selectedColorId: selectedAks ? selectedAks.idColor : undefined,\r\n selectedColor: undefined,\r\n selectedColorInId: selectedAks ? selectedAks.idColorIn : undefined,\r\n selectedColorOutId: selectedAks ? selectedAks.idColorOut : undefined,\r\n selectedColorBId: selectedAks ? selectedAks.idColorB : undefined,\r\n selectedColorFId: selectedAks ? selectedAks.idColorF : undefined,\r\n w: selectedAks ? selectedAks.w : undefined,\r\n h: selectedAks ? selectedAks.h : undefined,\r\n qty: selectedAks ? selectedAks.qty : 1,\r\n idIzd: selectedAks ? selectedAks.idStr : undefined,\r\n });\r\n\r\n const [selectedItem, setSelectedItem] = useState(selectedAks ? selectedAks.idMat : undefined);\r\n const [params, setParams] = useState();\r\n const [paramValues, setPramValues] = useState([]);\r\n const [items, setItems] = useState([]);\r\n const [tipR, setTipR] = useState([]);\r\n const [colors, setColors] = useState([]);\r\n const [vid, setVid] = useState(selectedAks ? selectedAks.matVid : 0);\r\n\r\n useEffect(() => {\r\n if (selectedAks) {\r\n let xParams = {};\r\n\r\n selectedAks.paramValues.forEach((item) => {\r\n xParams['param' + item.idName] = item.idVal;\r\n });\r\n\r\n setPramValues({ ...xParams });\r\n }\r\n\r\n onChooseVid(vid);\r\n selectedItem && onChooseItem(selectedItem);\r\n state.selectedColorId && onChooseColor(state.selectedColorId);\r\n\r\n setLoading(false);\r\n\r\n return () => {\r\n setState({});\r\n setVid(0);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const selectedItemObj = items.find((item) => item.id === selectedItem);\r\n setTipR(selectedItemObj && selectedItemObj.tipR);\r\n }, [items, selectedItem]);\r\n\r\n const save = () => {\r\n if (!selectedItem) {\r\n message.warning(tr('Не выбран материал'));\r\n return;\r\n }\r\n\r\n const idMat = vid === 1 ? 0 : selectedItem;\r\n const idKompl = vid === 1 ? selectedItem : 0;\r\n\r\n let sParam = [];\r\n\r\n params &&\r\n params.forEach((pn) =>\r\n sParam.push({\r\n IdName: pn.id,\r\n IdVal: paramValues['param' + pn.id],\r\n })\r\n );\r\n\r\n let data = {\r\n orderGuid: order.orderGuid,\r\n idElem: selectedAks && selectedAks.elem,\r\n idDetal: selectedAks && selectedAks.detal,\r\n idKompl: idKompl,\r\n idMat: idMat,\r\n idColor: state.selectedColorId,\r\n idColorIn: getColorSideIsPallete(state.selectedColor, 'colorIn') ? state.selectedColorInId : 0,\r\n idColorOut: getColorSideIsPallete(state.selectedColor, 'colorOut') ? state.selectedColorOutId : 0,\r\n idColorB: getColorSideIsPallete(state.selectedColor, 'colorBase') ? state.selectedColorBId : 0,\r\n idColorF: getColorSideIsPallete(state.selectedColor, 'colorF') ? state.selectedColorFId : 0,\r\n idStr: vid === 2 ? 0 : state.idIzd,\r\n w: tipR > 0 ? state.w : 0,\r\n h: tipR > 1 ? state.h : 0,\r\n qty: state.qty,\r\n sParam: JSON.stringify(sParam),\r\n };\r\n\r\n setLoading(true);\r\n\r\n serverFetch(`orders/aksadd`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n onSave();\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n };\r\n\r\n const onChooseVid = async (vid) => {\r\n setLoading(true);\r\n\r\n serverFetch(`repository/getaksbyvid/${vid}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n\r\n setItems(data);\r\n setVid(vid);\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n };\r\n\r\n const onChooseItem = async (id) => {\r\n setState({ ...state, idIzd: id });\r\n\r\n setLoading(true);\r\n\r\n serverFetch(`repository/getaksdetals/${vid}/${id}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n\r\n setColors(data.colors);\r\n if (data.colors) {\r\n const selectedColor = data.colors.find((item) => item.id === state.selectedColorId);\r\n setState({ ...state, selectedColor: selectedColor });\r\n setParams(data.paramNames);\r\n setSelectedItem(id);\r\n }\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n };\r\n\r\n const onChooseColor = (id) => {\r\n if (colors) {\r\n const selectedColor = colors.find((item) => item.id === id);\r\n setState({ ...state, selectedColorId: id, selectedColor });\r\n }\r\n };\r\n\r\n // Определяет является ли цветовая сторона палитрой\r\n const getColorSideIsPallete = (selectedColor, colorSideName) => {\r\n if (!selectedColor) return false;\r\n\r\n return selectedColor && selectedColor.vid === 1 && selectedColor[colorSideName] && selectedColor[colorSideName].vid === 3;\r\n };\r\n\r\n // Выбор цвета или цветовой стороны\r\n const chooseSelectedColor = (id, propName) => {\r\n setState({ ...state, [propName]: id });\r\n };\r\n\r\n function AddCmb(dataSource, title, placeholder, selectedValue, onChoose, propName) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n onCancel()}\r\n onOk={() => save()}\r\n cancelButtonProps={{ disabled: loading }}\r\n okButtonProps={{ disabled: loading }}\r\n width={600}\r\n >\r\n {loading && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {colors && (\r\n \r\n \r\n \r\n )}\r\n\r\n {getColorSideIsPallete(state.electedColor, 'colorIn') &&\r\n AddCmb(\r\n state.selectedColor.colorIn.colorCnt,\r\n tr('Цвет изнутри'),\r\n tr('Выберите цвет'),\r\n state.selectedColorInId,\r\n chooseSelectedColor,\r\n 'selectedColorInId'\r\n )}\r\n {getColorSideIsPallete(state.selectedColor, 'colorOut') &&\r\n AddCmb(\r\n state.selectedColor.colorOut.colorCnt,\r\n tr('Цвет снаружи'),\r\n tr('Выберите цвет'),\r\n state.selectedColorOutId,\r\n chooseSelectedColor,\r\n 'selectedColorOutId'\r\n )}\r\n {getColorSideIsPallete(state.selectedColor, 'colorBase') &&\r\n AddCmb(\r\n state.selectedColor.colorBase.colorCnt,\r\n tr('Цвет основы'),\r\n tr('Выберите цвет'),\r\n state.selectedColorBId,\r\n chooseSelectedColor,\r\n 'selectedColorBId'\r\n )}\r\n {getColorSideIsPallete(state.selectedColor, 'colorF') &&\r\n AddCmb(\r\n state.selectedColor.colorF.colorCnt,\r\n tr('Цвет фальца'),\r\n tr('Выберите цвет'),\r\n state.selectedColorFId,\r\n chooseSelectedColor,\r\n 'selectedColorFId'\r\n )}\r\n {tipR >= 1 && (\r\n \r\n {\r\n setState({ ...state, w: data.target.value });\r\n }}\r\n />\r\n \r\n )}\r\n {tipR === 2 && (\r\n \r\n {\r\n setState({ ...state, h: data.target.value });\r\n }}\r\n />\r\n \r\n )}\r\n \r\n {\r\n setState({ ...state, qty: data.target.value });\r\n }}\r\n />\r\n \r\n {(vid === 0 || vid === 1) && (\r\n \r\n \r\n \r\n )}\r\n\r\n {params && (\r\n <>\r\n

{tr('Параметры')}

\r\n {params.map((paramName) => {\r\n return (\r\n \r\n setPramValues({ ...paramValues, ['param' + paramName.id]: value })}\r\n >\r\n {paramName.values.map((d) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default OrderAks;\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nimport { Spin, Table, Space, Button, message } from 'antd';\r\n\r\nimport { PlusOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons';\r\n\r\nimport OrderAks from './order-aks';\r\nimport { serverFetch } from '../../server';\r\n\r\nimport { tr } from '../../utils';\r\nimport { toFinanceString } from '../../extensions/utils';\r\nimport './order-aks-list.css';\r\n\r\nconst OrderAksList = ({ order, onSave, user, izds }) => {\r\n const [loading, setLoading] = useState(false);\r\n const [editMode, setEditMode] = useState(false);\r\n\r\n const [selectedAksesIds, setSelectedAksesIds] = useState([]);\r\n const [currentAkses, setCurrentAkses] = useState();\r\n\r\n useEffect(() => {}, []);\r\n\r\n const addItem = () => {\r\n setCurrentAkses();\r\n setEditMode(true);\r\n };\r\n\r\n const deleteItem = () => {\r\n if (window.confirm(tr(`Удалить?`))) {\r\n setLoading(true);\r\n\r\n serverFetch(`orders/aksdel/${order.orderGuid}/${currentAkses.elem}/${currentAkses.detal}`, { method: 'DELETE' }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n onSave();\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }\r\n };\r\n\r\n const save = () => {\r\n onSave();\r\n setEditMode({ editing: false });\r\n };\r\n\r\n if (order.orderIzds === undefined) return null;\r\n //if (loading) return (

Загрузка аксессуары...

);\r\n\r\n let total = 0;\r\n if (order && order.orderAkses) order.orderAkses.map((s) => (total = total + s.syma));\r\n\r\n const renderToolbar = () => {\r\n return (\r\n \r\n }\r\n onClick={() => {\r\n addItem();\r\n }}\r\n >\r\n {tr('Добавить')}\r\n \r\n }\r\n onClick={() => {\r\n setEditMode(true);\r\n }}\r\n >\r\n {tr('Изменить')}\r\n \r\n }\r\n onClick={() => {\r\n deleteItem();\r\n }}\r\n >\r\n {tr('Удалить')}\r\n \r\n \r\n );\r\n };\r\n\r\n const onSelectChange = (selectedRowKeys) => {\r\n setSelectedAksesIds(selectedRowKeys);\r\n\r\n if (selectedRowKeys.length == 1) {\r\n let item = order.orderAkses.find((o) => o.id == selectedRowKeys[0]);\r\n setCurrentAkses(item);\r\n } else {\r\n setCurrentAkses();\r\n }\r\n };\r\n const rowSelection = {\r\n selectedRowKeys: selectedAksesIds,\r\n onChange: onSelectChange,\r\n type: 'radio',\r\n };\r\n\r\n const renderTable = (orders) => {\r\n const columns = [\r\n {\r\n title: '#',\r\n dataIndex: 'id',\r\n width: 50,\r\n },\r\n {\r\n title: 'Изделие',\r\n dataIndex: 'ordno',\r\n width: 50,\r\n render: (_, record) => {\r\n let izd = order.orderIzds.find((i) => i.idStr == record.idStr);\r\n return <>{izd ? izd.ordno : ''};\r\n },\r\n },\r\n {\r\n title: tr('Наименование'),\r\n dataIndex: 'matName',\r\n width: 120,\r\n },\r\n\r\n {\r\n title: tr('Цвет'),\r\n dataIndex: 'colorName',\r\n width: 120,\r\n },\r\n {\r\n title: tr('Длина'),\r\n dataIndex: 'w',\r\n width: 120,\r\n },\r\n {\r\n title: tr('Ширина'),\r\n dataIndex: 'h',\r\n width: 120,\r\n },\r\n {\r\n title: tr('Кол.'),\r\n dataIndex: 'qty',\r\n width: 120,\r\n },\r\n {\r\n title: tr('Сумма'),\r\n dataIndex: 'syma',\r\n width: 120,\r\n },\r\n {\r\n title: 'CAD',\r\n dataIndex: 'cad',\r\n width: 120,\r\n } /* {\r\n title: 'idStr',\r\n dataIndex: 'cad',\r\n width: 120,\r\n }, */,\r\n ];\r\n\r\n return (\r\n {\r\n return {\r\n onClick: (event) => {\r\n onSelectChange([record.id]);\r\n },\r\n };\r\n }}\r\n scroll={{ y: 'calc(100vh - 215px)', x: 'calc(100vw - 40px)' }}\r\n pagination={{\r\n showSizeChanger: true,\r\n current: 1,\r\n defaultPageSize: 20,\r\n }}\r\n />\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {loading && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n

{tr('Аксессуары и работы')}

\r\n

\r\n {tr('Итого')}: {toFinanceString(total)}\r\n

\r\n
\r\n {!order.isReadOnly && renderToolbar()}\r\n {renderTable(order.orderAkses)}\r\n {editMode && (\r\n {\r\n setEditMode(false);\r\n }}\r\n onSave={save}\r\n u\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default OrderAksList;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { useParams } from 'react-router';\r\nimport moment from 'moment';\r\nimport { Spin, Button, Menu, Dropdown, Select, Space, Form, message } from 'antd';\r\nimport { PrinterOutlined } from '@ant-design/icons';\r\nimport Products from './order-products';\r\nimport { orderLoaded } from '../../store/actions';\r\nimport OrderAksList from './order-aks-list';\r\nimport { tr } from '../../utils/translate';\r\nimport { toFinanceString } from '../../extensions/utils';\r\nimport { serverFetch } from '../../server';\r\n\r\nconst Order = () => {\r\n const { Option } = Select;\r\n const { orderGuid } = useParams();\r\n const d = useDispatch();\r\n const [loading, setLoading] = useState(true);\r\n const [reports, setReports] = useState([]);\r\n const [statuses, setStatuses] = useState([]);\r\n const user = useSelector((s) => s.user);\r\n const order = useSelector((s) => s.order);\r\n const [refreshRequired, setRefreshRequired] = useState(false);\r\n\r\n useEffect(() => {\r\n getData();\r\n getReports();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (refreshRequired) {\r\n window.location.reload();\r\n }\r\n }, [refreshRequired]);\r\n\r\n useEffect(() => {\r\n if (order && order.statuses) {\r\n getStatuses();\r\n }\r\n }, [order]);\r\n\r\n const getData = () => {\r\n setLoading(true);\r\n\r\n if (orderGuid) {\r\n serverFetch(`orders/order/${orderGuid}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n d(orderLoaded(data));\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n } else {\r\n d(orderLoaded({ id: 0, orderGuid: '', docdate: new Date() }));\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const getStatuses = () => {\r\n serverFetch(`orders/statuses`, { method: 'GET' }, user)\r\n .then((data) => {\r\n let buff = data.filter((s) => {\r\n let status = order.statuses.find((e) => e == s.id);\r\n if (status) return s;\r\n });\r\n\r\n setStatuses(buff);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n };\r\n\r\n const getReports = () => {\r\n serverFetch(`repository/reports/`, { method: 'GET' }, user)\r\n .then((reports) => {\r\n setReports(reports);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n };\r\n\r\n if (!order)\r\n return (\r\n
\r\n \r\n
\r\n );\r\n\r\n let izds = [];\r\n izds.push({ id: 0, name: '' });\r\n order.orderIzds.map((izd) => izds.push({ id: izd.idStr, name: izd.ordno }));\r\n\r\n function handlePrintMenuClick(e) {\r\n let report = reports.find((r) => r.id == e.key);\r\n if (!report) return;\r\n\r\n setLoading(true);\r\n\r\n serverFetch(`orders/report/${order.orderGuid}/${report.id}`, { method: 'GET', blob: true }, user)\r\n .then((data) => {\r\n const file = new Blob([data], { type: 'application/pdf' });\r\n\r\n const fileURL = URL.createObjectURL(file);\r\n const pdfWindow = window.open();\r\n pdfWindow.location.href = fileURL;\r\n\r\n //FileSaver.saveAs(blob, report.name + '.pdf');\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n message.error(tr('Ошибка печати'));\r\n setLoading(false);\r\n });\r\n }\r\n\r\n const printMenu = (\r\n \r\n {reports.map((r) => {\r\n return {r.name};\r\n })}\r\n \r\n );\r\n\r\n return (\r\n <>\r\n {loading ? (\r\n
\r\n \r\n
\r\n ) : (\r\n <>\r\n
\r\n

\r\n {tr('Заказ')} {order.depno} / {order.docnum} {tr('от')} {moment(order.docdate).format('DD.MM.YYYY')}\r\n

\r\n \r\n \r\n \r\n \r\n
{tr('Статус')}
\r\n {\r\n let status = statuses.find((e) => e.name == value);\r\n setLoading(true);\r\n\r\n let data = { orderGuid: order.orderGuid, statusId: status.id };\r\n\r\n serverFetch(`orders/setorderstatus`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n setLoading(false);\r\n setRefreshRequired(true);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n setLoading(false);\r\n });\r\n }}\r\n style={{ width: 250 }}\r\n >\r\n {statuses.map((s) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n
\r\n\r\n

\r\n {tr('Итого')}: {toFinanceString(order.syma)}\r\n {tr('Оплачено')}: {toFinanceString(order.plat)}\r\n {tr('Долг')}: {toFinanceString(order.dolg)}\r\n

\r\n
\r\n\r\n
\r\n\r\n {\r\n setRefreshRequired(true);\r\n }}\r\n />\r\n\r\n
\r\n setRefreshRequired(true)} user={user} izds={izds} />\r\n
\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Order;\r\n","import React, { useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { Modal, Form, Input, message } from 'antd';\r\n\r\nimport { tr } from '../../utils/translate';\r\nimport { serverFetch } from '../../server';\r\n\r\nconst PackageProperties = ({ ...props }) => {\r\n const user = useSelector((s) => s.user);\r\n\r\n const { onChange } = props;\r\n\r\n const [pack] = useState(props.pack);\r\n\r\n const [comment, setComment] = useState(pack.comment);\r\n\r\n const onSave = () => {\r\n let data = {\r\n id: pack.idDoc,\r\n comment: comment,\r\n };\r\n serverFetch(`packages`, { method: 'PUT', bodyData: data }, user)\r\n .then(() => {\r\n onChange(true);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n };\r\n\r\n return (\r\n <>\r\n onChange(false)}\r\n onOk={() => onSave()}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setComment(data.target.value);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default PackageProperties;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport moment from 'moment';\r\n\r\nimport { Table, Modal, Space, Button, message } from 'antd';\r\nimport { ReloadOutlined, DeleteOutlined } from '@ant-design/icons';\r\n\r\nimport { tr } from '../../utils/translate';\r\nimport { serverFetch } from '../../server';\r\n\r\nconst PackageDetails = ({ packageId, onClose }) => {\r\n const user = useSelector((s) => s.user);\r\n\r\n const [selectedOrderIds, setSelectedOrderIds] = useState([]);\r\n const [orders, setOrders] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [currentOrder, setCurrentOrder] = useState();\r\n const [refreshRequired, setRefreshRequired] = useState(true);\r\n\r\n useEffect(() => {\r\n if (refreshRequired) {\r\n setRefreshRequired(false);\r\n getData();\r\n }\r\n }, [refreshRequired]);\r\n\r\n const getData = () => {\r\n serverFetch(`packages/orders/${packageId}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n setOrders(data);\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n message.error(\r\n <>\r\n {tr('Ошибка получения заказов')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const renderToolbar = () => {\r\n return (\r\n \r\n }\r\n onClick={() => {\r\n setRefreshRequired(true);\r\n }}\r\n >\r\n {tr('Обновить')}\r\n \r\n }\r\n onClick={() => {\r\n serverFetch(`packages/deleteorder/${packageId}/${currentOrder.orderGuid}`, { method: 'DELETE' }, user)\r\n .then(() => {\r\n setCurrentOrder(null);\r\n setRefreshRequired(true);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n }}\r\n >\r\n {tr('Удалить')}\r\n \r\n \r\n );\r\n };\r\n\r\n const onSelectChange = (selectedRowKeys) => {\r\n setSelectedOrderIds(selectedRowKeys);\r\n\r\n if (selectedRowKeys.length == 1) {\r\n let order = orders.find((o) => o.docnum == selectedRowKeys[0]);\r\n setCurrentOrder(order);\r\n } else {\r\n setCurrentOrder();\r\n }\r\n };\r\n const rowSelection = {\r\n selectedRowKeys: selectedOrderIds,\r\n onChange: onSelectChange,\r\n };\r\n\r\n function renderTable() {\r\n const columns = [\r\n {\r\n title: tr('Дата'),\r\n dataIndex: 'docdate',\r\n sortDirections: ['ascend', 'descend', 'ascend'],\r\n defaultSortOrder: 'descend',\r\n sorter: (a, b) => moment(a.docDate).unix() - moment(b.docdate).unix(),\r\n render: (_, record) => {\r\n return <>{moment(record.docDate).format('DD.MM.YYYY')} ;\r\n },\r\n width: 120,\r\n },\r\n {\r\n title: tr('Отдел'),\r\n dataIndex: 'depno',\r\n width: 80,\r\n },\r\n {\r\n title: '№',\r\n dataIndex: 'docnum',\r\n width: 80,\r\n },\r\n {\r\n title: tr('Клиент'),\r\n dataIndex: 'cName',\r\n width: 120,\r\n },\r\n {\r\n title: tr('Сумма'),\r\n dataIndex: 'syma',\r\n width: 120,\r\n },\r\n {\r\n title: tr('Площадь'),\r\n dataIndex: 'sqrtIzd',\r\n width: 100,\r\n },\r\n {\r\n title: tr('Договор'),\r\n dataIndex: 'comment',\r\n width: 200,\r\n },\r\n ];\r\n return (\r\n <>\r\n {\r\n return {\r\n onClick: (event) => {\r\n onSelectChange([record.docnum]);\r\n },\r\n };\r\n }}\r\n scroll={{ y: 'calc(100vh - 514px)', x: 'calc(100vw - 40px)' }}\r\n pagination={{\r\n showSizeChanger: true,\r\n current: 1,\r\n defaultPageSize: 20,\r\n }}\r\n />\r\n \r\n );\r\n }\r\n\r\n return (\r\n onClose()}\r\n okButtonProps={{ style: { display: 'none' } }}\r\n width={1000}\r\n >\r\n {renderToolbar()}\r\n {renderTable()}\r\n \r\n );\r\n};\r\n\r\nexport default PackageDetails;\r\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport moment from 'moment';\r\n\r\nimport { Typography, Table, Space, Button, DatePicker, Drawer, Row, Col, Form, Switch, Tooltip, message } from 'antd';\r\nimport {\r\n PlusOutlined,\r\n EditOutlined,\r\n FolderOpenOutlined,\r\n ReloadOutlined,\r\n DownloadOutlined,\r\n RollbackOutlined,\r\n DeleteOutlined,\r\n SettingOutlined,\r\n SaveFilled,\r\n} from '@ant-design/icons';\r\n\r\nimport * as FileSaver from 'file-saver';\r\nimport PackageProperties from './package-properties';\r\nimport PackageDetails from './package-details';\r\nimport { tr } from '../../utils/translate';\r\nimport { serverFetch } from '../../server';\r\n\r\nconst settingContext = 'Packages';\r\nconst settingType = 'TableColumns';\r\n\r\nconst Packages = () => {\r\n const { Text } = Typography;\r\n\r\n const [settingsForm] = Form.useForm();\r\n\r\n const user = useSelector((s) => s.user);\r\n\r\n const [packages, setPackages] = useState([]);\r\n const [statuses, setStatuses] = useState([]);\r\n const [selectedPackageIds, setSelectedPackageIds] = useState([]);\r\n const [currentPackage, setCurrentPackage] = useState();\r\n const [editMode, setEditMode] = useState(false);\r\n const [detailsMode, setDetailsMode] = useState(false);\r\n\r\n const [filter, setFilter] = useState({});\r\n const [loading, setLoading] = useState(false);\r\n const [refreshRequired, setRefreshRequired] = useState(true);\r\n\r\n const [openSettings, setOpenSettings] = useState(false);\r\n const [columnSettings, setColumnSettings] = useState();\r\n\r\n useEffect(() => {\r\n let storedFilter = localStorage.getItem('packagesFilter');\r\n\r\n if (storedFilter) {\r\n storedFilter = JSON.parse(storedFilter);\r\n setFilter({\r\n ...storedFilter,\r\n dateFrom: storedFilter.dateFrom && moment(storedFilter.dateFrom),\r\n dateTo: storedFilter.dateTo && moment(storedFilter.dateTo),\r\n });\r\n } else {\r\n setFilter({\r\n dateFrom: moment().add(-1, 'days'),\r\n dateTo: moment(),\r\n });\r\n }\r\n\r\n getStatuses();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (filter.dateFrom && filter.dateTo && refreshRequired) {\r\n setRefreshRequired(false);\r\n getData();\r\n }\r\n\r\n localStorage.setItem('packagesFilter', JSON.stringify(filter));\r\n }, [filter, refreshRequired]);\r\n\r\n const getStatuses = () => {\r\n serverFetch(`orders/statuses`, { method: 'GET' }, user)\r\n .then((statuses) => setStatuses(statuses))\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n };\r\n\r\n const getData = () => {\r\n setLoading(true);\r\n\r\n let queryParams = {\r\n dateFrom: filter.dateFrom && filter.dateFrom.format(),\r\n dateTo: filter.dateTo && filter.dateTo.format(),\r\n };\r\n\r\n serverFetch('packages', { method: 'GET', queryParams: queryParams }, user)\r\n .then((data) => {\r\n setPackages(data);\r\n setLoading(false);\r\n setEditMode(false);\r\n })\r\n .catch((e) => {\r\n message.error(\r\n <>\r\n {tr('Ошибка получения пакетов')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n\r\n message.error(tr(''));\r\n setLoading(false);\r\n });\r\n\r\n let settingsQueryParams = {\r\n settingType: settingType,\r\n context: settingContext,\r\n };\r\n\r\n serverFetch('usersettings', { method: 'GET', queryParams: settingsQueryParams }, user)\r\n .then((data) => {\r\n let settings = [];\r\n if (data) {\r\n settings = JSON.parse(data.settingValue);\r\n } else {\r\n let columns = getColumns();\r\n\r\n columns.map((c) => {\r\n settings.push({ visible: true, column: c.dataIndex, title: c.title });\r\n });\r\n }\r\n\r\n setColumnSettings(settings);\r\n })\r\n .catch((e) => {\r\n message.error(tr('Ошибка получения настроек'));\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const onChange = (refresh) => {\r\n setRefreshRequired(refresh);\r\n setEditMode(false);\r\n };\r\n\r\n const renderToolbar = () => {\r\n return (\r\n \r\n \r\n \r\n {tr('Пакеты за период')}\r\n {\r\n var dateFrom =\r\n date &&\r\n moment(date, 'DD.MM.YYYY').utcOffset(0, true).set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\r\n\r\n setFilter({ ...filter, dateFrom: dateFrom });\r\n\r\n setRefreshRequired(true);\r\n }}\r\n />\r\n -\r\n {\r\n var dateTo =\r\n date &&\r\n moment(date, 'DD.MM.YYYY').utcOffset(0, true).set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\r\n\r\n setFilter({ ...filter, dateTo: dateTo });\r\n\r\n setRefreshRequired(true);\r\n }}\r\n />\r\n }\r\n onClick={() => {\r\n setRefreshRequired(true);\r\n }}\r\n >\r\n {tr('Обновить')}\r\n \r\n }\r\n onClick={() => {\r\n serverFetch(`packages/add`, { method: 'POST' }, user)\r\n .then(() => {\r\n setCurrentPackage();\r\n setRefreshRequired(true);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }}\r\n >\r\n {tr('Добавить')}\r\n \r\n }\r\n onClick={() => {\r\n setEditMode(true);\r\n }}\r\n >\r\n {tr('Изменить')}\r\n \r\n }\r\n onClick={() => {\r\n serverFetch(`packages/${currentPackage.idDoc}`, { method: 'DELETE' }, user)\r\n .then(() => {\r\n setCurrentPackage();\r\n setRefreshRequired(true);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }}\r\n >\r\n {tr('Удалить')}\r\n \r\n \r\n\r\n }\r\n onClick={() => {\r\n let name = 'it-okna_pack_' + currentPackage.idDoc;\r\n serverFetch(`packages/download/${currentPackage.idDoc}`, { method: 'GET', blob: true }, user)\r\n .then((data) => {\r\n const blob = new Blob([data], { type: 'application/xml' });\r\n\r\n if (blob.size > 3) {\r\n FileSaver.saveAs(blob, name + '.itp');\r\n }\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }}\r\n >\r\n {tr('Скачать')}\r\n \r\n\r\n }\r\n onClick={() => {\r\n serverFetch(`packages/cancel`, { method: 'PUT', bodyData: { id: currentPackage.idDoc } }, user)\r\n .then(() => {\r\n setRefreshRequired(true);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }}\r\n >\r\n {tr('Отмена')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n
\r\n {columnSettings.map((s) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {renderToolbar()}\r\n\r\n {columnSettings && renderTable()}\r\n {columnSettings && renderTableSettings()}\r\n\r\n {divPackPropertiesHead}\r\n {divDetails}\r\n \r\n );\r\n};\r\n\r\nexport default Packages;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { Modal, Form, Input, Tree, Divider, Row, Col, message } from 'antd';\r\n\r\nimport { serverFetch } from '../../server';\r\nimport { tr } from '../../utils/translate';\r\n\r\nconst User = ({ ...props }) => {\r\n const user = useSelector((s) => s.user);\r\n const [form] = Form.useForm();\r\n\r\n const { id, onCancel, onSave } = props;\r\n\r\n const [state, setState] = useState({});\r\n const [loading, setLoading] = useState(false);\r\n\r\n const [basePermissions, setBasePermissions] = useState();\r\n const [treeData, setTreeData] = useState();\r\n const [checkedKeys, setCheckedKeys] = useState();\r\n\r\n useEffect(() => {\r\n getData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n form.setFieldsValue(state);\r\n\r\n if (state.permissions) {\r\n let keys = [];\r\n for (let i = 0; i < state.permissions.length; i++) {\r\n if (state.permissions[i]) keys.push(i + 1);\r\n }\r\n\r\n setCheckedKeys(keys);\r\n }\r\n }, [state]);\r\n\r\n useEffect(() => {\r\n if (state.permissions && basePermissions) {\r\n let keys = [];\r\n for (let i = 0; i < state.permissions.length; i++) {\r\n if (state.permissions[i] == 1) {\r\n let permission = basePermissions.find((p) => p.id == i + 1);\r\n if (permission) {\r\n keys.push(permission.id);\r\n }\r\n }\r\n }\r\n\r\n setCheckedKeys(keys);\r\n }\r\n }, [state, basePermissions]);\r\n\r\n const getData = () => {\r\n if (id) {\r\n setLoading(true);\r\n\r\n serverFetch(`usermanagement/${id}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n let permissions = data.permissions.split('');\r\n\r\n if (permissions.length != 255) {\r\n for (let index = permissions.length; index < 255; index++) {\r\n permissions.push(1);\r\n }\r\n }\r\n\r\n data.permissions = permissions;\r\n\r\n setState(data);\r\n\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n } else {\r\n let data = { password: '', permissions: [] };\r\n for (let index = 0; index < 255; index++) {\r\n data.permissions.push(1);\r\n }\r\n\r\n setState(data);\r\n }\r\n\r\n serverFetch(`usermanagement/permissions`, { method: 'GET' }, user)\r\n .then((data) => {\r\n let tree = [];\r\n\r\n setBasePermissions(data.filter((d) => d.root != 0));\r\n\r\n let roots = data.filter((d) => d.root == 0);\r\n\r\n roots.map((r) => {\r\n let children = [];\r\n data.filter((c) => c.root == r.id).map((e) => {\r\n children.push({ title: e.name, key: e.id });\r\n });\r\n\r\n tree.push({\r\n title: r.name,\r\n key: r.id,\r\n children: children,\r\n });\r\n });\r\n\r\n setTreeData(tree);\r\n\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n message.error(\r\n <>\r\n {tr('Ошибка получения прав пользователя')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const save = () => {\r\n form.validateFields().then(() => {\r\n setLoading(true);\r\n\r\n let permissions = [];\r\n for (let i = 0; i < state.permissions.length; i++) {\r\n let basePermission = basePermissions.find((b) => b.id == i + 1);\r\n if (basePermission) {\r\n let key = checkedKeys.find((k) => k == basePermission.id);\r\n permissions.push(key ? 1 : 0);\r\n } else {\r\n permissions.push(state.permissions[i]);\r\n }\r\n }\r\n\r\n let data = { ...state, permissions: permissions.join('') };\r\n\r\n if (!id) {\r\n serverFetch(`usermanagement`, { method: 'POST', bodyData: data }, user)\r\n .then(() => {\r\n onSave();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n } else {\r\n serverFetch(`usermanagement`, { method: 'PUT', bodyData: data }, user)\r\n .then(() => {\r\n onSave();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }\r\n });\r\n };\r\n\r\n const onCheck = (checkedKeysValue) => {\r\n if (checkedKeysValue <= 0) return;\r\n\r\n setCheckedKeys(checkedKeysValue);\r\n };\r\n\r\n const renderPermissions = () => {\r\n return ;\r\n };\r\n\r\n return (\r\n onCancel()}\r\n onOk={() => save()}\r\n cancelButtonProps={{ disabled: loading }}\r\n okButtonProps={{ disabled: loading }}\r\n width={800}\r\n >\r\n {state && (\r\n
\r\n \r\n {\r\n setState({ ...state, userName: data.target.value });\r\n }}\r\n />\r\n \r\n\r\n \r\n {\r\n setState({ ...state, password: data.target.value });\r\n }}\r\n />\r\n \r\n\r\n \r\n {\r\n setState({ ...state, fullName: data.target.value });\r\n }}\r\n />\r\n \r\n\r\n \r\n {\r\n setState({ ...state, position: data.target.value });\r\n }}\r\n />\r\n \r\n\r\n \r\n Список прав\r\n \r\n\r\n {treeData && renderPermissions()}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default User;\r\n","import React, { useEffect, useState } from 'react';\r\n\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { Table, Space, Button, message } from 'antd';\r\nimport { PlusOutlined, EditOutlined, DeleteOutlined, ReloadOutlined } from '@ant-design/icons';\r\n\r\nimport { serverFetch } from '../../server';\r\n\r\nimport { permission, hasPermission } from '../../extensions/helper';\r\nimport { tr } from '../../utils/translate';\r\nimport User from './user';\r\n\r\nconst Users = () => {\r\n console.log('Users');\r\n const user = useSelector((s) => s.user);\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [users, setUsers] = useState([]);\r\n const [selectedOrderIds, setSelectedUserIds] = useState([]);\r\n const [currentUser, setCurrentUser] = useState();\r\n const [editMode, setEditMode] = useState(false);\r\n const [refreshRequired, setRefreshRequired] = useState(true);\r\n\r\n useEffect(() => {\r\n if (refreshRequired) {\r\n setRefreshRequired(false);\r\n getData();\r\n }\r\n }, [refreshRequired]);\r\n\r\n const getData = () => {\r\n if (!hasPermission(user.permissions, permission.CanManageUsers)) {\r\n window.open('/', '_self');\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n\r\n serverFetch(`usermanagement`, { method: 'GET' }, user)\r\n .then((data) => {\r\n setUsers(data);\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n message.error(\r\n <>\r\n {tr('Ошибка получения пользователей')}\r\n

- {e.UserMessage}

\r\n \r\n );\r\n\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const renderToolbar = () => {\r\n return (\r\n \r\n }\r\n onClick={() => {\r\n setRefreshRequired(true);\r\n }}\r\n >\r\n {tr('Обновить')}\r\n \r\n }\r\n onClick={() => {\r\n setSelectedUserIds([]);\r\n setCurrentUser();\r\n setEditMode(true);\r\n }}\r\n >\r\n {tr('Добавить')}\r\n \r\n }\r\n onClick={() => {\r\n setEditMode(true);\r\n }}\r\n >\r\n {tr('Изменить')}\r\n \r\n }\r\n onClick={() => {\r\n const message = `Вы уверены что хотите удалить пользователя \"${currentUser && currentUser.userName}\"?`;\r\n\r\n if (window.confirm(message)) {\r\n serverFetch(`usermanagement/${currentUser.id}`, { method: 'DELETE' }, user)\r\n .then(() => {\r\n setCurrentUser();\r\n setRefreshRequired(true);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n }\r\n }}\r\n >\r\n {tr('Удалить')}\r\n \r\n \r\n );\r\n };\r\n\r\n const onSelectChange = (selectedRowKeys) => {\r\n setSelectedUserIds(selectedRowKeys);\r\n\r\n if (selectedRowKeys.length == 1) {\r\n let entity = users.find((o) => o.id == selectedRowKeys[0]);\r\n setCurrentUser(entity);\r\n } else {\r\n setCurrentUser();\r\n }\r\n };\r\n const rowSelection = {\r\n selectedRowKeys: selectedOrderIds,\r\n onChange: onSelectChange,\r\n type: 'radio',\r\n };\r\n\r\n const getColumns = () => {\r\n return [\r\n {\r\n title: tr('Имя пользователя'),\r\n dataIndex: 'userName',\r\n width: 200,\r\n },\r\n {\r\n title: tr('Должность'),\r\n dataIndex: 'position',\r\n width: 200,\r\n },\r\n {\r\n title: tr('ФИО'),\r\n dataIndex: 'fullName',\r\n width: 240,\r\n },\r\n ];\r\n };\r\n const renderTable = () => {\r\n const columns = getColumns();\r\n\r\n return (\r\n {\r\n return {\r\n onClick: (event) => {\r\n onSelectChange([record.id]);\r\n },\r\n };\r\n }}\r\n scroll={{ y: 'calc(100vh - 251px)', x: 'calc(100vw - 40px)' }}\r\n pagination={{\r\n showSizeChanger: true,\r\n defaultPageSize: 20,\r\n }}\r\n />\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {renderToolbar()}\r\n {renderTable()}\r\n\r\n {editMode && (\r\n {\r\n setEditMode(false);\r\n }}\r\n onSave={() => {\r\n setEditMode(false);\r\n setRefreshRequired(true);\r\n }}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Users;\r\n","import React from 'react';\r\nimport { Line, Text } from 'react-konva';\r\nimport { getKanvaX, getKanvaY } from './cad-funcs';\r\n\r\n// Константы\r\nconst sizeLineText = 30; // Размер ширины полосы отступа (для текста)\r\nconst sizeLineColor = \"black\";\r\nconst sizeLineWidth = 1;\r\nconst sizeLineStartName = \"sizeStart\";\r\nconst sizeLineWholeName = \"sizeWhole\";\r\n\r\n// Отрисовать элемент\r\nfunction getElemDraw(elem, id, points, closed, penColor, fillColor, onClick) {\r\n return ()\r\n}\r\n\r\nfunction getSizeArrow(x, y, direction, name) {\r\n let points = [];\r\n switch (direction) {\r\n case 'left': points = [x + 0.5 * sizeLineText, y - 0.1 * sizeLineText, x, y, x + 0.5 * sizeLineText, y + 0.1 * sizeLineText]\r\n break;\r\n case 'right': points = [x - 0.5 * sizeLineText, y - 0.1 * sizeLineText, x, y, x - 0.5 * sizeLineText, y + 0.1 * sizeLineText]\r\n break;\r\n case 'up': points = [x - 0.1 * sizeLineText, y + 0.5 * sizeLineText, x, y, x + 0.1 * sizeLineText, y + 0.5 * sizeLineText]\r\n break;\r\n case 'down': points = [x - 0.1 * sizeLineText, y - 0.5 * sizeLineText, x, y, x + 0.1 * sizeLineText, y - 0.5 * sizeLineText]\r\n break;\r\n default: points = [];\r\n }\r\n if (points.length !== 0) {\r\n return []\r\n }\r\n return [];\r\n}\r\n\r\nfunction drawSizeX(elem, prefix, x1, x2, y, val, onClick) {\r\n let r = [];\r\n r.push();\r\n r.push(getSizeArrow(x1, y + 0.9 * sizeLineText, 'left', prefix + 'Arrow1')); // Стрелка слева\r\n r.push();\r\n r.push(getSizeArrow(x2, y + 0.9 * sizeLineText, 'right', prefix + 'Arrow2')); // Стрелка справа\r\n r.push( // Размерная линия\r\n \r\n );\r\n r.push();\r\n return r;\r\n}\r\n\r\nfunction drawSizeY(elem, prefix, y1, y2, x, val, onClick) {\r\n let r = [];\r\n r.push();\r\n r.push(getSizeArrow(x + 0.9 * sizeLineText, y1, 'down', prefix + 'Arrow1')); // Стрелка снизу\r\n r.push();\r\n r.push(getSizeArrow(x + 0.9 * sizeLineText, y2, 'up', prefix + 'Arrow2')); // Стрелка сверху\r\n r.push();\r\n r.push();\r\n return r;\r\n}\r\n\r\n// Отрисовать размерные линии элемента\r\nfunction getElemSizeDraw(elem, izd, onClick, { canvasDx, canvasDy, canvasZoom }) {\r\n let r = [];\r\n if (elem.kindPos === 1) { // Позиция по X\r\n if (Number(elem.pos) !== 0) {\r\n r.push(drawSizeX(elem, `es${elem.id}_1_`, canvasDx, getKanvaX(elem.pos, { canvasDx, canvasZoom }), canvasDy, elem.pos, onClick))\r\n }\r\n if (Number(elem.pos) !== Number(izd.w)) {\r\n r.push(drawSizeX(elem, `es${elem.id}_2_`, getKanvaX(elem.pos, { canvasDx, canvasZoom }), getKanvaX(izd.w, { canvasDx, canvasZoom }), canvasDy, izd.w - elem.pos, onClick))\r\n }\r\n }\r\n if (elem.kindPos === 2) { // Позиция по Y\r\n if (Number(elem.pos) !== 0) {\r\n r.push(drawSizeY(elem, `es${elem.id}_1_`, canvasDy, getKanvaY(elem.pos, { canvasDy, canvasZoom }), getKanvaX(izd.w, { canvasDx, canvasZoom }), elem.pos, onClick))\r\n }\r\n if (Number(elem.pos) !== Number(izd.h)) {\r\n r.push(drawSizeY(elem, `es${elem.id}_1_`, getKanvaY(elem.pos, { canvasDy, canvasZoom }), getKanvaY(izd.h, { canvasDy, canvasZoom }), getKanvaX(izd.w, { canvasDx, canvasZoom }), izd.h - elem.pos, onClick))\r\n }\r\n }\r\n return r;\r\n}\r\n\r\nexport { getElemDraw, getElemSizeDraw };","import React from 'react';\r\nimport { stringToPoint, delphiToRgb } from './cad-funcs';\r\nimport { getElemDraw, getElemSizeDraw } from './cad-elem';\r\n\r\nclass Izd extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n // Константы\r\n this.sizeLineText = 30; // Размер ширины полосы отступа (для текста)\r\n this.elemSelectedColor = 'blue';\r\n // Смещение\r\n const maxX = Number(props.izd.w);\r\n const maxY = Number(props.izd.h);\r\n // Масштаб - как меньший из масштабов по X и Y\r\n const canvasZoom =\r\n maxX === 0 || maxY === 0\r\n ? 1\r\n : Math.min((props.canvasHeight - 2 * this.sizeLineText) / maxY, (props.canvasWidth - 2 * this.sizeLineText) / maxX);\r\n const canvasDx = props.canvasWidth / 2 - this.sizeLineText - (maxX / 2) * canvasZoom;\r\n const canvasDy = props.canvasHeight / 2 + (maxY / 2) * canvasZoom;\r\n this.state = {\r\n canvasHeight: props.canvasHeight,\r\n canvasWidth: props.canvasWidth,\r\n canvasZoom,\r\n canvasDx,\r\n canvasDy,\r\n };\r\n }\r\n\r\n objectClick = (e) => {\r\n let newObjectIds = [];\r\n const objId = e.target.attrs.objId;\r\n if (e.evt.shiftKey) {\r\n newObjectIds = [...this.props.selectedObjectIds];\r\n if (newObjectIds.indexOf(objId) === -1) {\r\n newObjectIds.push(objId);\r\n } else {\r\n newObjectIds.pop(objId);\r\n }\r\n } else {\r\n newObjectIds = [objId];\r\n }\r\n this.props.izdSelected(newObjectIds);\r\n };\r\n\r\n render() {\r\n function isSelected(ids, id) {\r\n return ids.indexOf(id) !== -1;\r\n }\r\n // Отрисовка элементов\r\n let id = 0;\r\n const drawElems = [];\r\n this.props.izd.cadElems.forEach((elem) => {\r\n if (elem.cadContours !== undefined) {\r\n elem.cadContours.forEach((contour) => {\r\n id = id + 1;\r\n drawElems.push(\r\n getElemDraw(\r\n elem,\r\n id,\r\n stringToPoint(contour.coord, this.state.canvasDx, this.state.canvasDy, this.state.canvasZoom),\r\n contour.closed,\r\n delphiToRgb(contour.pen),\r\n isSelected(this.props.selectedObjectIds, elem.id) ? this.elemSelectedColor : delphiToRgb(contour.brush),\r\n this.objectClick\r\n )\r\n );\r\n });\r\n }\r\n });\r\n // Отрисовка размерных линий\r\n if (this.props.selectedObjectIds.length === 1) {\r\n const elem = this.props.izd.cadElems.find((elem) => elem.id === this.props.selectedObjectIds[0]);\r\n if (elem !== undefined && elem.vid === 2) {\r\n drawElems.push(getElemSizeDraw(elem, this.props.izd, this.props.sizeClick, this.state));\r\n }\r\n }\r\n return drawElems;\r\n }\r\n}\r\n\r\nexport default Izd;\r\n","import React from 'react';\r\nimport { Stage, Layer } from 'react-konva';\r\nimport { connect } from 'react-redux';\r\nimport { izdSelected } from '../../store/actions';\r\nimport Izd from './izd';\r\n\r\nclass CadCanvas extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n };\r\n }\r\n render() {\r\n const height = this.state.height - 100;\r\n const width = this.state.width - 100;\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = ({ izd, selectedObjectIds }) => {\r\n return { izd, selectedObjectIds };\r\n};\r\n\r\nexport default connect(mapStateToProps, { izdSelected })(CadCanvas);\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { Modal, Form, Input, message } from 'antd';\r\n\r\nimport { tr } from '../../../utils';\r\n\r\nimport { serverFetch } from '../../../server';\r\n\r\nexport const CadCmdSplitPopup = ({ vidOper, onCancel, onChange, onOk }) => {\r\n const elemSize = useSelector((s) => s.elemSize);\r\n\r\n if (vidOper !== 'SPLIT_VERT' && vidOper !== 'SPLIT_HOR') return null;\r\n\r\n return (\r\n onCancel()}\r\n onOk={() => onOk()}\r\n width={300}\r\n >\r\n
\r\n \r\n onChange('xValue', data.target.value)}\r\n onKeyDown={(e) => {\r\n if (e.keyCode === 13) onOk();\r\n }}\r\n placeholder={tr('Координата')}\r\n />\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport const CadCmdSplitStartOper = (vidOper, selectedObject, setElemSize) => {\r\n if (vidOper === 'SPLIT_VERT')\r\n setElemSize({\r\n xValue: Math.round((selectedObject.minX + selectedObject.maxX) / 2),\r\n selectedObject,\r\n });\r\n else if (vidOper === 'SPLIT_HOR')\r\n setElemSize({\r\n xValue: Math.round((selectedObject.minY + selectedObject.maxY) / 2),\r\n selectedObject,\r\n });\r\n else return false;\r\n return true;\r\n};\r\n\r\nexport async function CadCmdSplitDoOper(selectedObject, vidOper, xValue, data, user, refreshCad) {\r\n if (vidOper === 'SPLIT_VERT') {\r\n data = { ...data, x1: xValue, x2: xValue, y1: selectedObject.minY, y2: selectedObject.maxY };\r\n } else if (vidOper === 'SPLIT_HOR') {\r\n data = { ...data, y1: xValue, y2: xValue, x1: selectedObject.minX, x2: selectedObject.maxX };\r\n }\r\n\r\n await serverFetch(`izd/opersplit`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n refreshCad && refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n}\r\n","import React from 'react';\r\nimport { getItemIdOrNull } from '../../../utils/utils';\r\nimport { Modal, Select, Form, message } from 'antd';\r\n\r\nimport { tr } from '../../../utils';\r\nimport { serverFetch } from '../../../server';\r\n\r\nexport const CadCmdElemInfoPopup = ({ vidOper, zapolns, selectedZapoln, onCancel, onOk, onChange }) => {\r\n const { Option } = Select;\r\n\r\n if (vidOper !== 'ELEM_INFO') return null;\r\n\r\n const selectedZapolnValue = getItemIdOrNull(selectedZapoln);\r\n return (\r\n onCancel()}\r\n onOk={() => onOk()}\r\n >\r\n
\r\n \r\n {\r\n onChange(zapolns.find((e) => e.id === value));\r\n }}\r\n >\r\n {zapolns.map((d) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport const CadCmdElemInfoStartOper = (idSys, onChange, user) => {\r\n serverFetch(`repository/getsysdetails/${idSys}`, { method: 'GET' }, user)\r\n .then((sys) => {\r\n onChange(sys.zapolns);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n};\r\n\r\nexport async function CadCmdElemInfoDoOper(selectedObjectIds, selectedZapoln, data, user, refreshCad) {\r\n data = {\r\n ...data,\r\n ids: selectedObjectIds.join(),\r\n IdSpr: getItemIdOrNull(selectedZapoln),\r\n };\r\n\r\n await serverFetch(`izd/operchangezapoln`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n refreshCad && refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n}\r\n","import { message } from 'antd';\r\n\r\nimport { serverFetch } from '../../../server';\r\n\r\nexport const CadCmdAlignStartOper = (vidOper, onDoOper) => {\r\n if (vidOper === 'ALIGN_GEOM' || vidOper === 'ALIGN_LIGHT') {\r\n onDoOper();\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport async function CadCmdAlignDoOper(selectedObjectIds, vidOper, data, user, refreshCad) {\r\n data = {\r\n ...data,\r\n ids: selectedObjectIds.join(),\r\n kind: vidOper === 'ALIGN_GEOM' ? 1 : 2, //ALIGN_GEOM = 1, ALIGN_LIGHT = 2\r\n };\r\n\r\n await serverFetch(`izd/operequal`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n refreshCad && refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n}\r\n","import React from 'react';\r\nimport { Modal, Select, Form, message } from 'antd';\r\n\r\nimport { serverFetch } from '../../../server';\r\nimport { tr } from '../../../utils';\r\n\r\nexport const CadCmdMoskPopup = ({ vidOper, mosks, selectedMoskValue, onCancel, onOk, onChange }) => {\r\n const { Option } = Select;\r\n\r\n if (vidOper !== 'MOSK') return null;\r\n\r\n return (\r\n onCancel()}\r\n onOk={() => onOk()}\r\n width={600}\r\n >\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport const CadCmdMoskStartOper = (selectedObject, izd, onChange) => {\r\n if (selectedObject === null) return true;\r\n // Получить контур выделенного элемента\r\n const selectedCons = izd.cadElems.find((item) => item.id === selectedObject.cons);\r\n if (selectedCons === null) return true;\r\n\r\n onChange(selectedCons.idMosk);\r\n};\r\n\r\nexport async function CadCmdMoskDoOper(selectedConsIds, selectedMoskValue, data, user, refreshCad) {\r\n data = {\r\n ...data,\r\n ids: selectedConsIds.join(),\r\n IdSpr: selectedMoskValue.id,\r\n };\r\n\r\n await serverFetch(`izd/operchangemosk`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n refreshCad && refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n}\r\n","import { Modal, message } from 'antd';\r\n\r\nimport { tr } from '../../../utils';\r\nimport { serverFetch } from '../../../server';\r\n\r\nexport const CadCmdDelStartOper = (onOk) => {\r\n Modal.confirm({\r\n title: tr('Удалить выбранный элемент?'),\r\n okText: tr('ОК'),\r\n cancelText: tr('Отмена'),\r\n onOk: () => {\r\n onOk();\r\n },\r\n });\r\n};\r\n\r\nexport async function CadCmdDelDoOper(selectedObject, data, user, refreshCad) {\r\n if (selectedObject.vid === 2) {\r\n await serverFetch(`izd/operdelete/${data.orderGuid}/${data.idStr}/${data.id}`, { method: 'DELETE' }, user)\r\n .then((data) => {\r\n refreshCad && refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n } else {\r\n await serverFetch(`izd/operdeletecons/${data.orderGuid}/${data.idStr}/${selectedObject.cons}`, { method: 'DELETE' }, user)\r\n .then((data) => {\r\n refreshCad && refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { setCadSize } from '../../../store/actions';\r\n\r\nimport { Modal, Form, Input, message } from 'antd';\r\nimport { tr } from '../../../utils';\r\n\r\nimport { serverFetch } from '../../../server';\r\n\r\nconst CadCmdSetSizePopup = ({ vidOper, cadSize, onCancel, onOk }) => {\r\n const d = useDispatch();\r\n\r\n if (!cadSize) return null;\r\n\r\n const { cadSizeValStart, cadSizeVal } = cadSize;\r\n\r\n if (vidOper !== 'SET_SIZE') return null;\r\n\r\n return (\r\n {\r\n onCancel();\r\n }}\r\n onOk={() => onOk()}\r\n width={300}\r\n >\r\n
\r\n \r\n {\r\n d(\r\n setCadSize({\r\n vidOper: 'SET_SIZE',\r\n cadSizeVal: data.target.value,\r\n cadSizeValStart: cadSizeValStart,\r\n })\r\n );\r\n }}\r\n onKeyDown={(e) => {\r\n if (e.keyCode === 13) onOk();\r\n }}\r\n placeholder={tr('Координата')}\r\n onFocus={(event) => {\r\n event.target.select();\r\n }}\r\n />\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default CadCmdSetSizePopup;\r\n\r\nexport async function CadCmdSetSizeDoOper(selectedObject, cadSize, data, user, refreshCad) {\r\n if (!cadSize) return;\r\n const { cadSizeValStart, cadSizeVal } = cadSize;\r\n\r\n let value = 0;\r\n if (selectedObject.pos === cadSizeValStart) {\r\n // Движение основной позиции элемента\r\n value = cadSizeVal - cadSizeValStart;\r\n } else {\r\n // Движение позиции элемента относительно габарита\r\n value = cadSizeValStart - cadSizeVal;\r\n }\r\n\r\n data = {\r\n ...data,\r\n kind: selectedObject.kindPos,\r\n size: value,\r\n };\r\n\r\n await serverFetch(`izd/opermove`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n refreshCad && refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n}\r\n","import React from 'react';\r\nimport { Modal, Select, Form, message } from 'antd';\r\nimport { tr } from '../../../utils';\r\nimport { serverFetch } from '../../../server';\r\n\r\nexport const CadCmdStvInsPopup = ({ vidOper, izd, onCancel, onOk, onChange, state, user }) => {\r\n if (vidOper !== 'STV_INS') return null;\r\n\r\n if (izd === null || izd === undefined) return null;\r\n\r\n const { Option } = Select;\r\n\r\n const { idSys } = izd;\r\n const { idFurn, furns, vars, paramNames } = state;\r\n\r\n const title = tr('Вставка створки');\r\n\r\n return (\r\n onCancel()}\r\n onOk={() => onOk()}\r\n width={500}\r\n >\r\n
\r\n {furns && (\r\n <>\r\n

{tr('Фурнитура')}

\r\n \r\n \r\n serverFetch(`repository/getsysfurnvars/${idSys}/${value}`, { method: 'GET' }, user)\r\n .then((vars) => {\r\n onChange({\r\n loading: false,\r\n vars,\r\n idFurn: value,\r\n });\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n })\r\n }\r\n >\r\n {furns.map((d) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n\r\n {vars && (\r\n \r\n \r\n serverFetch(`repository/getsysfurnvardetails/${idSys}/${idFurn}/${value}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n if (data === null) return;\r\n let x = {};\r\n data.paramValues.forEach((item) => {\r\n x['param' + item.idName] = item.idValue;\r\n });\r\n onChange({\r\n loading: false,\r\n idFurnVar: value,\r\n paramNames: data.paramNames,\r\n ...x,\r\n });\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n })\r\n }\r\n >\r\n {vars.map((d) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n )}\r\n\r\n {paramNames && (\r\n <>\r\n

{tr('Параметры')}

\r\n {paramNames.map((paramName) => {\r\n return (\r\n \r\n {\r\n onChange({ ['param' + paramName.id]: value });\r\n }}\r\n >\r\n {paramName.values.map((d) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const CadCmdStvInsStartOper = (izd, onChange, user) => {\r\n if (izd !== null) {\r\n const { idSys } = izd;\r\n serverFetch(`repository/getsysfurns/${idSys}`, { method: 'GET' }, user)\r\n .then((furns) => {\r\n onChange({ furns: furns });\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n }\r\n};\r\n\r\nexport async function CadCmdStvInsDoOper(selectedObjectIds, state, data, user, refreshCad) {\r\n const { idFurn, idFurnVar, paramNames } = state;\r\n\r\n let params = [];\r\n paramNames &&\r\n paramNames.forEach((pn) =>\r\n params.push({\r\n IdName: pn.id,\r\n IdVal: state['param' + pn.id],\r\n })\r\n );\r\n\r\n data = {\r\n ...data,\r\n ids: selectedObjectIds.join(),\r\n idFurn: idFurn,\r\n idFurnVar: idFurnVar,\r\n sParam: JSON.stringify(params),\r\n };\r\n\r\n await serverFetch(`izd/operaddsash`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n refreshCad && refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n}\r\n","import React from 'react';\r\n\r\nimport { Modal, Select, Form, message } from 'antd';\r\nimport { tr } from '../../../utils';\r\nimport { serverFetch } from '../../../server';\r\n\r\nexport const CadCmdStvInfoPopup = ({ vidOper, izd, onCancel, onOk, onChange, state, user }) => {\r\n if (vidOper !== 'STV_INFO') return null;\r\n\r\n const { Option } = Select;\r\n\r\n if (!izd) return null;\r\n\r\n const { idFurn, furns, vars, idFurnVar, paramNames } = state;\r\n const { idSys } = izd;\r\n const title = tr('Свойства створки');\r\n\r\n return (\r\n onCancel()}\r\n onOk={() => onOk(vidOper)}\r\n >\r\n
\r\n {furns && (\r\n <>\r\n

{tr('Фурнитура')}

\r\n \r\n \r\n serverFetch(`repository/getsysfurnvars/${idSys}/${value}`, { method: 'GET' }, user)\r\n .then((vars) => {\r\n onChange({\r\n vars,\r\n idFurn: value,\r\n });\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n })\r\n }\r\n >\r\n {furns.map((d) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n\r\n {vars && (\r\n \r\n \r\n serverFetch(`repository/getsysfurnvardetails/${idSys}/${idFurn}/${value}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n if (data === null) return;\r\n let x = {};\r\n data.paramValues.forEach((item) => {\r\n x['param' + item.idName] = item.idValue;\r\n });\r\n\r\n onChange({\r\n idFurnVar: value,\r\n paramNames: data.paramNames,\r\n ...x,\r\n });\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n })\r\n }\r\n >\r\n {vars.map((d) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n )}\r\n\r\n {paramNames && (\r\n <>\r\n

{tr('Параметры')}

\r\n {paramNames.map((paramName) => {\r\n return (\r\n \r\n {\r\n state['param' + paramName.id] = value;\r\n }}\r\n >\r\n {paramName.values.map((d) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const CadCmdStvInfoStartOper = async (selectedObject, izd, onChange, user) => {\r\n if (!selectedObject) return true;\r\n\r\n // Получить контур выделенного элемента\r\n const selectedCons = izd.cadElems.find((item) => item.id === selectedObject.cons);\r\n if (!selectedCons) return false;\r\n\r\n let xParams = {};\r\n selectedCons.mainParams.forEach((item) => {\r\n xParams['param' + item.idParamName] = item.idParamValue;\r\n });\r\n\r\n let furns = [];\r\n let vars = [];\r\n let paramNames = [];\r\n let x = {};\r\n\r\n if (izd !== null) {\r\n const { idSys } = izd;\r\n furns = await serverFetch(`repository/getsysfurns/${idSys}`, { method: 'GET' }, user).catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n\r\n const idFurn = selectedCons.idFurn;\r\n if (idFurn !== 0) {\r\n vars = await serverFetch(`repository/getsysfurnvars/${idSys}/${idFurn}`, { method: 'GET' }, user).catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n }\r\n\r\n const idFurnVar = selectedCons.idVar;\r\n if (idFurnVar !== 0) {\r\n const data = await serverFetch(\r\n `repository/getsysfurnvardetails/${idSys}/${idFurn}/${idFurnVar}`,\r\n { method: 'GET' },\r\n user\r\n ).catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n\r\n if (data) {\r\n paramNames = data.paramNames;\r\n\r\n data.paramValues.forEach((item) => {\r\n x['param' + item.idName] = item.idValue;\r\n });\r\n }\r\n }\r\n }\r\n\r\n onChange({\r\n idFurn: selectedCons.idFurn,\r\n idFurnVar: selectedCons.idVar,\r\n furns: furns,\r\n vars: vars,\r\n paramNames: paramNames,\r\n ...x,\r\n ...xParams,\r\n });\r\n};\r\n\r\nexport async function CadCmdStvInfoDoOper(selectedObject, izd, state, data, user, refreshCad) {\r\n const { idFurn, idFurnVar, paramNames } = state;\r\n\r\n const selectedCons = izd.cadElems.find((item) => item.id === selectedObject.cons);\r\n\r\n let params = [];\r\n paramNames &&\r\n paramNames.forEach((pn) =>\r\n params.push({\r\n IdName: pn.id,\r\n IdVal: state['param' + pn.id],\r\n })\r\n );\r\n\r\n data = {\r\n ...data,\r\n id: selectedCons.id,\r\n idFurn: idFurn,\r\n idFurnVar: idFurnVar,\r\n sParam: JSON.stringify(params),\r\n };\r\n\r\n await serverFetch(`izd/opermodsash`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n refreshCad && refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { useParams } from 'react-router';\r\n\r\nimport './cad-tools.css';\r\n\r\nimport { Button, message } from 'antd';\r\nimport { RollbackOutlined } from '@ant-design/icons';\r\n\r\nimport { getIzdObjects } from './cad-funcs';\r\nimport { setElemSize, setCadSize, setCadUpdated } from '../../store/actions';\r\nimport { CadCmdSplitPopup, CadCmdSplitDoOper, CadCmdSplitStartOper } from './cmd/cad-cmd-split';\r\nimport { CadCmdElemInfoPopup, CadCmdElemInfoDoOper, CadCmdElemInfoStartOper } from './cmd/cad-cmd-elem-info';\r\nimport { CadCmdAlignDoOper, CadCmdAlignStartOper } from './cmd/cad-cmd-align';\r\nimport { CadCmdMoskPopup, CadCmdMoskDoOper, CadCmdMoskStartOper } from './cmd/cad-cmd-mosk';\r\nimport { CadCmdDelDoOper, CadCmdDelStartOper } from './cmd/cad-cmd-del';\r\nimport CadCmdSetSizePopup, { CadCmdSetSizeDoOper } from './cmd/cad-cmd-set-size';\r\nimport { CadCmdStvInsPopup, CadCmdStvInsStartOper, CadCmdStvInsDoOper } from './cmd/cad-cmd-stv-ins';\r\nimport { CadCmdStvInfoPopup, CadCmdStvInfoStartOper, CadCmdStvInfoDoOper } from './cmd/cad-cmd-stv-info';\r\nimport { tr } from '../../utils';\r\nimport { serverFetch } from '../../server';\r\n\r\nconst CadTools = () => {\r\n const { id, orderGuid } = useParams();\r\n\r\n const d = useDispatch();\r\n const selectedObjectIds = useSelector((s) => s.selectedObjectIds);\r\n\r\n const izd = useSelector((s) => s.izd);\r\n const user = useSelector((s) => s.user);\r\n const elemSize = useSelector((s) => s.elemSize);\r\n const cadSize = useSelector((s) => s.cadSize);\r\n\r\n const [vidOper, setVidOper] = useState('');\r\n const [mosks, setMosks] = useState([]);\r\n const [selectedMoskValue, setSelectedMoskValue] = useState();\r\n const [zapolns, setZapolns] = useState([]);\r\n const [selectedZapoln, setSelectedZapoln] = useState();\r\n\r\n const [state, setState] = useState({\r\n // orderGuid: new URLSearchParams(window.location.search).get('orderGuid'),\r\n vars: [],\r\n idFurn: 0,\r\n idFurnVar: 0,\r\n paramNames: [],\r\n furns: [],\r\n });\r\n\r\n useEffect(() => {\r\n getSprs();\r\n d(setCadSize());\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (vidOper === 'DEL' || vidOper === 'UNDO' || vidOper === 'ALIGN_GEOM' || vidOper === 'ALIGN_LIGHT') {\r\n onDoOper();\r\n setVidOper();\r\n }\r\n }, [vidOper]);\r\n\r\n useEffect(() => {\r\n if (cadSize) {\r\n setVidOper('SET_SIZE');\r\n }\r\n }, [cadSize]);\r\n\r\n const getSprs = () => {\r\n serverFetch(`repository/getsprs`, { method: 'GET' }, user)\r\n .then((data) => {\r\n const { mosks } = data;\r\n setMosks(mosks);\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n };\r\n\r\n const getObjects = () => {\r\n const selectedObjects = getIzdObjects(izd, selectedObjectIds);\r\n const selectedQty = selectedObjects.length;\r\n const selectedObject = selectedObjects.length === 0 ? null : selectedObjects[0];\r\n let selectedConsIds = [];\r\n selectedObjects.forEach((item) => {\r\n if (item && selectedConsIds.indexOf(item.cons) === -1) selectedConsIds.push(item.cons);\r\n });\r\n let vidObjects = selectedQty === 0 ? 0 : selectedObject && selectedObject.vid;\r\n if (selectedQty > 1)\r\n selectedObjects.forEach((element) => {\r\n if (vidObjects !== element.vid) vidObjects = 0;\r\n });\r\n const selectedCons = selectedObject && izd.cadElems.find((item) => item.id === selectedObject.cons);\r\n const isFrame = selectedCons && selectedCons.parent === 0;\r\n return { selectedObjects, selectedQty, selectedObject, izd, vidObjects, selectedConsIds, isFrame };\r\n };\r\n\r\n const onCancelOper = () => {\r\n setVidOper();\r\n };\r\n\r\n const refreshCad = () => {\r\n d(setCadUpdated(true));\r\n };\r\n\r\n const onStartOper = async (vidOper) => {\r\n const { selectedObject } = getObjects();\r\n\r\n switch (vidOper) {\r\n case 'SPLIT_VERT':\r\n case 'SPLIT_HOR':\r\n CadCmdSplitStartOper(vidOper, selectedObject, (e) => {\r\n d(setElemSize(e));\r\n setVidOper(vidOper);\r\n });\r\n break;\r\n\r\n case 'DEL':\r\n CadCmdDelStartOper(() => setVidOper(vidOper));\r\n break;\r\n case 'ALIGN_GEOM':\r\n case 'ALIGN_LIGHT':\r\n CadCmdAlignStartOper(vidOper, () => setVidOper(vidOper));\r\n break;\r\n case 'ELEM_INFO':\r\n CadCmdElemInfoStartOper(\r\n izd.idSys,\r\n (e) => {\r\n setZapolns(e);\r\n setVidOper(vidOper);\r\n },\r\n user\r\n );\r\n break;\r\n case 'MOSK':\r\n CadCmdMoskStartOper(selectedObject, izd, (e) => {\r\n setSelectedMoskValue(e);\r\n setVidOper(vidOper);\r\n });\r\n break;\r\n case 'STV_INS':\r\n CadCmdStvInsStartOper(\r\n izd,\r\n (e) => {\r\n setState({ ...state, ...e });\r\n setVidOper(vidOper);\r\n },\r\n user\r\n );\r\n break;\r\n case 'STV_INFO':\r\n await CadCmdStvInfoStartOper(\r\n selectedObject,\r\n izd,\r\n (e) => {\r\n setState({ ...state, ...e });\r\n setVidOper(vidOper);\r\n },\r\n user\r\n );\r\n break;\r\n case 'UNDO':\r\n if (window.confirm(tr('Отменить действие?'))) {\r\n setVidOper(vidOper);\r\n }\r\n break;\r\n\r\n case 'SHOW_ERROR':\r\n let errors = [];\r\n izd.cadErrors.forEach((item) => {\r\n if (errors.indexOf(item.text) === -1) errors.push(item.text);\r\n });\r\n message.error(errors + '');\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n async function onDoOper() {\r\n const { selectedObject, selectedConsIds } = getObjects();\r\n\r\n let data = { orderGuid: orderGuid, idStr: parseInt(id) };\r\n\r\n if (selectedObject) {\r\n data = { ...data, id: selectedObject.id };\r\n }\r\n\r\n switch (vidOper) {\r\n case 'SPLIT_VERT':\r\n case 'SPLIT_HOR':\r\n CadCmdSplitDoOper(selectedObject, vidOper, elemSize && elemSize.xValue, data, user, () => refreshCad());\r\n break;\r\n case 'DEL':\r\n CadCmdDelDoOper(selectedObject, data, user, () => refreshCad());\r\n break;\r\n case 'ALIGN_GEOM':\r\n case 'ALIGN_LIGHT':\r\n CadCmdAlignDoOper(selectedObjectIds, vidOper, data, user, () => refreshCad());\r\n break;\r\n case 'ELEM_INFO':\r\n CadCmdElemInfoDoOper(selectedObjectIds, selectedZapoln, data, user, () => refreshCad());\r\n break;\r\n case 'MOSK':\r\n CadCmdMoskDoOper(selectedConsIds, selectedMoskValue, data, user, () => refreshCad());\r\n break;\r\n case 'STV_INS':\r\n CadCmdStvInsDoOper(selectedObjectIds, state, data, user, () => refreshCad());\r\n break;\r\n case 'STV_INFO':\r\n CadCmdStvInfoDoOper(selectedObject, izd, state, data, user, () => refreshCad());\r\n break;\r\n case 'SET_SIZE':\r\n CadCmdSetSizeDoOper(selectedObject, cadSize, data, user, () => refreshCad());\r\n break;\r\n case 'UNDO':\r\n await serverFetch(`izd/operundo`, { method: 'POST', bodyData: data }, user)\r\n .then((data) => {\r\n refreshCad();\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n setVidOper();\r\n }\r\n\r\n const onChangeSize = (name, value) => {\r\n d(setElemSize({ [name]: value }));\r\n };\r\n\r\n const getButton = (icon, action, vidOper) => {\r\n const { selectedObject, selectedQty, izd, vidObjects, isFrame } = getObjects();\r\n\r\n let disabled = false;\r\n switch (vidOper) {\r\n case 'SPLIT_VERT':\r\n case 'SPLIT_HOR':\r\n disabled = selectedQty !== 1 || !selectedObject || selectedObject.vid !== 3;\r\n break;\r\n case 'DEL':\r\n disabled = selectedQty !== 1 || !selectedObject || selectedObject.vid === 1;\r\n break;\r\n case 'UNDO':\r\n disabled = !izd.hasUndo;\r\n break;\r\n case 'ALIGN_GEOM':\r\n case 'ALIGN_LIGHT':\r\n disabled = selectedQty < 2 || vidObjects !== 3;\r\n break;\r\n case 'SHOW_ERROR':\r\n disabled = izd.cadErrors.length === 0;\r\n break;\r\n case 'ELEM_INFO':\r\n case 'STV_INS':\r\n case 'STV_INFO':\r\n disabled = selectedQty === 0 || vidObjects !== 3;\r\n break;\r\n case 'MOSK':\r\n disabled = selectedQty === 0 || vidObjects !== 3 || isFrame;\r\n break;\r\n case 'CHANGE':\r\n disabled = false;\r\n break;\r\n case 'AKS_INS':\r\n disabled = selectedQty === 0 || vidObjects !== 2;\r\n break;\r\n default:\r\n disabled = true;\r\n }\r\n return (\r\n }\r\n onClick={() => {\r\n action(vidOper);\r\n }}\r\n id={vidOper}\r\n block\r\n size='large'\r\n style={{\r\n backgroundColor: !disabled && '#ffffff',\r\n filter: disabled && 'grayscale(100%)',\r\n }}\r\n />\r\n );\r\n };\r\n return (\r\n <>\r\n
\r\n }\r\n onClick={() => window.open(`/order/edit/${orderGuid}`, '_self')}\r\n block\r\n size='large'\r\n style={{ marginBottom: 20 }}\r\n />\r\n {getButton('images/icons/cad-split-vert.png', onStartOper, 'SPLIT_VERT')}\r\n {getButton('images/icons/cad-split-hor.png', onStartOper, 'SPLIT_HOR')}\r\n {getButton('images/icons/cad-del.png', onStartOper, 'DEL')}\r\n {getButton('images/icons/cad-allign-geom.png', onStartOper, 'ALIGN_GEOM')}\r\n {getButton('images/icons/cad-allign-ligth.png', onStartOper, 'ALIGN_LIGHT')}\r\n {getButton('images/icons/cad-undo.png', onStartOper, 'UNDO')}\r\n {getButton('images/icons/cad-elem-info.png', onStartOper, 'ELEM_INFO')}\r\n {getButton('images/icons/cad-mosk.png', onStartOper, 'MOSK')}\r\n {getButton('images/icons/cad-stv-ins.png', onStartOper, 'STV_INS')}\r\n {getButton('images/icons/cad-stv-info.png', onStartOper, 'STV_INFO')}\r\n {/*{getButton(\"images/icons/cad-sys-change.png\", this.onStartOper, \"CHANGE\")}*/}\r\n {/*{getButton(\"images/icons/cad-aks-ins.png\", this.onStartOper, \"AKS_INS\")}*/}\r\n {getButton('images/icons/cad-error.png', onStartOper, 'SHOW_ERROR')}\r\n
\r\n onCancelOper()}\r\n onOk={() => onDoOper()}\r\n onChange={(name, value) => onChangeSize(name, value)}\r\n />\r\n onCancelOper()}\r\n onOk={() => onDoOper()}\r\n onChange={(e) => setSelectedZapoln(e)}\r\n />\r\n onCancelOper()}\r\n onOk={() => onDoOper()}\r\n onChange={(e) => setSelectedMoskValue(e)}\r\n />\r\n {\r\n setState({ ...state, ...e });\r\n }}\r\n onCancel={() => onCancelOper()}\r\n onOk={() => onDoOper()}\r\n />\r\n {\r\n setState({ ...state, ...e });\r\n }}\r\n onCancel={() => onCancelOper()}\r\n onOk={() => onDoOper()}\r\n />\r\n onCancelOper()} onOk={() => onDoOper()} />\r\n \r\n );\r\n};\r\n\r\nexport default CadTools;\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nimport { useCookies } from 'react-cookie';\r\nimport { Rnd } from 'react-rnd';\r\n\r\nimport './cad-image.css';\r\n\r\nexport const CadImage = (props) => {\r\n const [cookies, setCookie] = useCookies(['cadImage']);\r\n\r\n const [rndState, setRndState] = useState();\r\n const [imgSize, setImgSize] = useState({});\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [isResizing, setIsResizing] = useState(false);\r\n\r\n useEffect(() => {\r\n if (cookies.cadImage === undefined || cookies.cadImage === 'undefined') {\r\n setRndState({ x: 100, y: 0, width: 200, height: 200 });\r\n setImgSize({ width: 200, height: 200 });\r\n } else {\r\n setRndState(cookies.cadImage);\r\n\r\n let width =\r\n typeof cookies.cadImage.width == 'number'\r\n ? cookies.cadImage.width\r\n : parseInt(cookies.cadImage.width.substring(0, cookies.cadImage.width.length - 2));\r\n\r\n let height =\r\n typeof cookies.cadImage.height == 'number'\r\n ? cookies.cadImage.height\r\n : parseInt(cookies.cadImage.height.substring(0, cookies.cadImage.height.length - 2));\r\n\r\n setImgSize({ width: width, height: height });\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n setCookie('cadImage', rndState);\r\n }, [rndState]);\r\n\r\n return rndState ? (\r\n {\r\n setIsDragging(true);\r\n }}\r\n onDragStop={(e, d) => {\r\n setRndState({ ...rndState, x: d.x, y: d.y });\r\n setIsDragging(false);\r\n }}\r\n onResizeStart={() => {\r\n setIsResizing(true);\r\n }}\r\n onResize={(e, direction, ref, delta, position) => {\r\n let size = delta.width !== 0 ? ref.style.width : ref.style.height;\r\n\r\n setRndState({\r\n ...rndState,\r\n width: size,\r\n height: size,\r\n ...position,\r\n });\r\n\r\n let widthStr = size.substring(0, size.length - 2);\r\n let heightStr = size.substring(0, size.length - 2);\r\n setImgSize({ width: parseInt(widthStr), height: parseInt(heightStr) });\r\n }}\r\n onResizeStop={() => {\r\n setIsResizing(false);\r\n }}\r\n >\r\n {!isDragging && scheme}\r\n \r\n ) : (\r\n ''\r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\n\r\nimport { useParams } from 'react-router';\r\n\r\nimport { Spin, message } from 'antd';\r\n\r\nimport CadCanvas from './cad-canvas';\r\nimport CadTools from './cad-tools';\r\nimport { izdLoaded, setCadSize, setCadUpdated } from '../../store/actions';\r\nimport { CadImage } from './cad-image';\r\nimport { serverFetch } from '../../server';\r\n\r\nimport { tr } from '../../utils';\r\n\r\nimport './cad.css';\r\n\r\nconst Cad = () => {\r\n const { id, orderGuid } = useParams();\r\n\r\n const d = useDispatch();\r\n const user = useSelector((s) => s.user);\r\n const cadUpdated = useSelector((s) => s.cadUpdated);\r\n\r\n const [picture, setPicture] = useState();\r\n const [loading, setLoading] = useState(true);\r\n const [loadingImg, setLoadingImg] = useState(true);\r\n\r\n useEffect(() => {\r\n loadData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (cadUpdated) {\r\n d(setCadUpdated(false));\r\n\r\n setLoading(true);\r\n setLoadingImg(true);\r\n\r\n loadData();\r\n }\r\n }, [cadUpdated]);\r\n\r\n const loadData = () => {\r\n serverFetch(`orders/constructionscheme/${orderGuid}/${id}`, { method: 'GET' }, user)\r\n .then((data) => {\r\n d(izdLoaded(data));\r\n setLoading(false);\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n e.UserMessage && message.error(e.UserMessage);\r\n });\r\n\r\n serverFetch(`orders/getizdimg/${orderGuid}/${id}/300`, { method: 'GET', blob: true }, user)\r\n .then((data) => {\r\n setLoadingImg(false);\r\n data && setPicture(URL.createObjectURL(data));\r\n })\r\n .catch((e) => {\r\n setLoading(false);\r\n e.UserMessage && message.error(e.UserMessage);;\r\n });\r\n };\r\n\r\n const sizeClick = (e) => {\r\n d(\r\n setCadSize({\r\n cadSizeVal: e.target.attrs.sizeVal,\r\n cadSizeValStart: e.target.attrs.sizeVal,\r\n })\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {loading || loadingImg ? (\r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Cad;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { BrowserRouter as Router, Switch, Route } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { Layout, message, Space, Avatar } from 'antd';\r\n\r\nimport NavMenu from './components/NavMenu';\r\n\r\nimport Orders from './components/order/orders';\r\nimport Order from './components/order/order';\r\nimport Packages from './components/package/packages';\r\nimport Users from './components/user-managment/users';\r\nimport Cad from './components/cad/cad';\r\nimport './custom.css';\r\nimport { userLoaded } from './store/actions';\r\n\r\nimport 'antd/dist/antd.css';\r\nimport { serverFetch } from './server';\r\nimport { Footer } from 'antd/lib/layout/layout';\r\n\r\nconst App = () => {\r\n const { Content } = Layout;\r\n const d = useDispatch();\r\n const user = useSelector((s) => s.user);\r\n const [intervalId, setIntervalId] = useState();\r\n\r\n useEffect(() => {\r\n fetch('./localization.json')\r\n .then(function (res) {\r\n return res.json();\r\n })\r\n .then(function (data) {\r\n localStorage.setItem('localization', JSON.stringify(data));\r\n })\r\n .catch(function (err) {\r\n console.log(err, ' error');\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n intervalId && clearInterval(intervalId);\r\n\r\n //check is user session active\r\n if (user) {\r\n const id = setInterval(() => {\r\n serverFetch(`account/checksession`, { method: 'GET' }, user)\r\n .then((data) => {\r\n return;\r\n })\r\n .catch((e) => {\r\n e.UserMessage && message.error(e.UserMessage);\r\n d(userLoaded(null));\r\n intervalId && clearInterval(intervalId);\r\n });\r\n }, 10000);\r\n\r\n setIntervalId(id);\r\n }\r\n }, [user]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {user && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","export const initialState = {\r\n order: null,\r\n user: null,\r\n izd: null,\r\n selectedObjectIds: [],\r\n cadUpdated: false,\r\n elemSize: null,\r\n cadSize: null,\r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n switch (action.type) {\r\n case 'ORDER_LOADED':\r\n return {\r\n ...state,\r\n order: action.payload,\r\n };\r\n case 'USER_LOADED':\r\n return {\r\n ...state,\r\n user: action.payload,\r\n };\r\n case 'IZD_LOADED':\r\n return {\r\n ...state,\r\n izd: action.payload,\r\n };\r\n case 'IZD_SELECTED':\r\n return {\r\n ...state,\r\n selectedObjectIds: action.payload,\r\n };\r\n case 'SET_VID_OPER': {\r\n return {\r\n ...state,\r\n vidOper: action.payload && action.payload.vidOper,\r\n };\r\n }\r\n case 'SET_ELEM_SIZE':\r\n return {\r\n ...state,\r\n elemSize: action.payload,\r\n };\r\n case 'SET_CAD_SIZE':\r\n return {\r\n ...state,\r\n cadSize: action.payload,\r\n };\r\n case 'CAD_UPDATED':\r\n return {\r\n ...state,\r\n cadUpdated: action.payload,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { createStore } from 'redux';\r\nimport { persistStore, persistReducer } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\n\r\nimport { initialState, reducer } from './reducers';\r\n\r\nfunction configureStore() {\r\n const store = createStore(\r\n persistReducer(\r\n {\r\n key: 'root',\r\n storage,\r\n whitelist: ['user'],\r\n },\r\n reducer\r\n ),\r\n initialState\r\n );\r\n\r\n console.log('initialState', store.getState());\r\n\r\n const persistor = persistStore(store, null, () => {\r\n // if you want to get restoredState\r\n console.log('restoredState', store.getState());\r\n });\r\n\r\n return { store, persistor };\r\n}\r\n\r\nexport default configureStore;\r\n","import './custom.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\n\r\nimport App from './App';\r\nimport { CookiesProvider } from 'react-cookie';\r\nimport configureStore from './store/store';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nconst { store, persistor } = configureStore();\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n"],"sourceRoot":""}