{"version":3,"sources":["api/ajax.js","pages/account/account-add/single-add/index.jsx","api/index.js","utils/storeUtils.js","config/siteConfig.js","pages/login/login.jsx","config/menuConfig.js","components/link-button/index.jsx","assets/images/avatar01.png","components/header/header.jsx","components/left-nav/left-nav.jsx","pages/home/index.jsx","pages/logs/log-card/search-bar/index.jsx","pages/logs/log-card/card-log.jsx","pages/logs/logs-account/search-bar/index.jsx","pages/logs/logs-account/account-log.jsx","pages/logs/index.jsx","pages/company/company-list/assign-num-add/index.jsx","pages/company/company-list/rollback-num-add/rollback-num-add.jsx","pages/company/company-list/assign-card/index.jsx","pages/company/company-list/edit-subcompany/index.jsx","redux/action_types.js","redux/actions.js","pages/company/company-list/index.jsx","pages/company/company-add/index.jsx","pages/company/company-rights/index.jsx","pages/company/index.jsx","pages/account/account-add/batch-add/index.jsx","pages/account/account-add/upload-add/index.jsx","pages/account/account-add/index.jsx","pages/account/account-list/search-bar/index.jsx","pages/account/account-list/batch-activate/index.jsx","pages/account/account-list/batch-edit-company/index.jsx","pages/account/account-list/batch-edit-default-group/index.jsx","pages/account/account-list/batch-edit-account-pwd/index.jsx","pages/account/account-list/batch-delete-account/index.jsx","pages/account/account-list/batch-edit-position/index.js","pages/account/account-list/edit-mobile/edit-mobile.jsx","pages/account/account-list/edit-remark/index.js","pages/account/account-list/edit-account/index.jsx","components/file-down/file-down.jsx","pages/account/account-list/index.jsx","pages/account/index.jsx","pages/group/components/edit-speech-second/index.jsx","pages/group/components/edit-group-remark/index.js","pages/group/components/search-bar/index.jsx","pages/group/group-list/index.jsx","pages/group/group-add/add-form.jsx","pages/group/group-add/select-member.jsx","pages/group/group-add/add-result.jsx","pages/group/group-add/index.jsx","pages/group/group-edit/index.jsx","pages/group/group-member/remove-member.jsx","pages/group/group-member/index.jsx","pages/group/index.jsx","pages/card/card-create/index.jsx","pages/card/index.jsx","pages/system/system-settings/basic-setting.jsx","pages/system/system-settings/poster-setting.jsx","pages/system/system-settings/index.jsx","pages/system/index.jsx","utils/memoryUtils.js","pages/admin/admin.jsx","assets/images/logo.png","App.js","redux/reducer.js","redux/store.js","index.js"],"names":["ajax","url","data","method","Promise","resolve","reject","a","key","undefined","toLowerCase","promise","fetch","headers","body","JSON","stringify","then","res","json","queryStr","Object","keys","length","push","join","response","message","error","md5","require","reqAccountList","options","company_id","page_index","reqGetAccountType","reqGetCompany","reqGetGroup","reqEditPosition","reqGetAccountDetail","user_id","reqEditAccount","reqDeleteAccountGroup","group_id","reqDeleteAccount","reqEditOpenPosition","open_position","reqEditTempCall","temp_call","reqAddAccount","pwd","confirm_pwd","reqBatchAddAccount","reqGetCompanyList","sub_company_name","reqGetCompanyRights","reqAssignNumAdd","assign_count","reqAssignCard","reqDeleteCompany","reqGetSubCompanyRights","user_account","company_name","reqSaveRights","rights","reqGetGroupList","reqDeleteGroup","reqGetMember","reqEditPriority","reqRemoveMember","reqRemoveSingleMember","reqCreateGroup","reqGetGroupName","reqEditGroupName","reqGetUserModifyLogs","reqGetUserCardLogs","reqEditMobile","mobile","reqEditRemark","remark","reqEditGroupRemark","oldOptions","store","get","set","clearAll","SITE","DISABLE_SPEEK","TELEPHONE_OPERATOR","SUPER_DISPATCHER","ASSOCIATED_GROUP","ACROSS_GROUP","PLAYBACK","TITLE","VERSION","Login","props","onFinish","values","username","password","result","success","history","replace","parent","company_account","err_msg","cookie","load","to","className","params","name","Item","rules","required","prefix","UserOutlined","placeholder","LockOutlined","type","htmlType","Menu","title","icon","HomeOutlined","children","EditOutlined","UserAddOutlined","BankOutlined","FileAddOutlined","TrademarkCircleOutlined","TeamOutlined","UsergroupAddOutlined","CreditCardOutlined","DollarCircleOutlined","SettingOutlined","ToolOutlined","FileOutlined","DiffOutlined","FileTextOutlined","LinkButton","confirm","Modal","handleClick","ExclamationCircleOutlined","onOk","remove","path","onCancel","Header","useHistory","useState","Date","toLocaleString","changeTime","useEffect","id","setInterval","clearInterval","style","marginTop","backgroundColor","size","src","img","href","onClick","SubMenu","getMenuNodes","list","map","item","rootSubmenuKeys","menuList","LeftNav","location","pathname","subpath","substring","lastIndexOf","openKeys","setOpenKeys","selectedKeys","defaultOpenKeys","onOpenChange","latestOpenKey","find","indexOf","mode","theme","Home","RangePicker","DatePicker","Option","Select","SearchBar","Form","useForm","form","loading","setLoading","onSearch","initialValues","op_type","gutter","span","label","value","showTime","format","textAlign","margin","resetFields","CardLog","setOptions","total","setTotal","current","pageSize","page","setPage","tableLoading","setTableLoading","setData","page_size","code","row_count","getUserCardLogs","range","range_time","template","tinytime","start_time","render","end_time","columns","dataIndex","align","dataSource","pagination","defaultPageSize","pageSizeOptions","showTotal","showQuickJumper","position","sticky","onChange","filters","sorter","bordered","connect","state","groups","companies","currentCompany","subCompanys","allowClear","showSearch","filterOption","input","option","AccountLog","getUserModifyLogs","ellipsis","rowKey","Logs","component","AssignNumAdd","visible","onSubmit","existingNum","currentEdit","SwapRightOutlined","okText","cancelText","validateFields","catch","info","console","log","layout","pattern","min","RollBackNumAdd","SwapLeftOutlined","okButtonProps","danger","num_add_users","validator","rule","callback","formItemLayout","labelCol","wrapperCol","AssignCard","setTimeout","card_type","count","operation_type","Group","buttonStyle","Button","TextArea","EditSubCompany","company_info","user_name","phone_num","setFieldsValue","disabled","Password","dependencies","getFieldValue","_","UPDATE_COMPANIES","UPDATE_GROUPS","DELETE_GROUP_BYID","DELETE_COMPANY_BYID","update_companies","update_groups","delete_company_by_id","setCurrentEdit","companyList","setCompanyList","companyInfo","setCompanyInfo","keyWord","setKeyWord","showAssignNumAdd","setShowAssignNumAdd","showRollBackNumAdd","setShowRollBackNumAdd","closeAssignNumAdd","closeRollBackNumAdd","assignNumAdd","updateTable","rollBackNumAdd","showAssignCard","setShowAssignCard","closeAssignCard","assignCard","remarks","showEditSubCompany","setShowEditSubCompany","closeEditSubCompany","editSubCompany","user_pwd","confirmDeleteCompany","record","subcompany_list","getCompanyList","b","user_count","group_count","alarm_count","expire_count","width","overlay","openAssignNumAdd","openRollBackNumAdd","DownOutlined","openAssignCard","openEditSubCompany","onConfirm","IdcardTwoTone","twoToneColor","subcompany_count","PlusCircleTwoTone","CreditCardTwoTone","perm_cadrs_count","year_cadrs_count","month_cadrs_count","showSizeChanger","Search","marginLeft","updateReduxCompanies","handleSubmit","xs","sm","scrollToFirstError","hasFeedback","whitespace","offset","treeData","CompanyRights","treeVisible","setTreeVisible","setRights","currentSelectedRights","setCurrentSelectedRights","right_name","right_id","user_list","updataTable","editRights","filter","color","openEditRights","height","checkable","defaultExpandAll","checkedKeys","onCheck","Company","CompanyList","CompanyAdd","mockData","i","toString","description","SingleAdd","isParent","formRef","React","createRef","checkIsParent","setState","setPrefix","tailFormItemLayout","service_end_time","group_ids","warn","this","nextProps","ref","account_model","test","valuePropName","group_name","Component","BatchAdd","Dragger","Upload","UploadAdd","download","action","fileList","shift","status","file","InboxOutlined","AccountAdd","addModel","setAddModel","getAccountPrefix","inner","tabList","tab","onTabChange","accountTypes","getGroupsByCompany","selectedCompany","group_list","onCompanychange","getAccounttype","user_type_list","resetForm","marginBottom","display","initialValue","type_name","BatchActivate","TreeSelect","TreeNode","BatchEditAccountPwd","BatchDeleteAccount","setUrl","getTime","extra","noStyle","alt","EditPosition","e","Error","EditMobile","EditRemark","EditAccount","accountDetail","addGroupVisible","checkedGroups","lockAccount","expandedKeys","getDetail","user_info","moment","default_group","closeAddGrop","deleteAccountGroup","index","findIndex","newList","updateUserGroup","group","index2","addGroup","priority","concat","updataDetail","editAccount","updataAccountTable","errorInfo","changeLock","onCheckedGroups","getParentKey","tree","parentKey","node","some","onClose","placement","footer","marginRight","hideRequiredMark","addonBefore","onDoubleClick","UnlockOutlined","FileDown","handleDownFile","event","api_url","preventDefault","stopPropagation","queryArr","loadingStatus","buttonDisabled","credentials","blob","document","createElement","querySelector","window","URL","createObjectURL","appendChild","click","removeChild","revokeObjectURL","text","downFileBtnClass","DownloadOutlined","PureComponent","proTypes","PropTypes","isRequired","defaultProps","AccountList","getAccountList","fixed","location_server_port","editRemarkVisible","currentEditAccountInfo","checked","editTempCall","defaultChecked","editOpenPosition","user_enable","editAccountVisible","confirmDeleteSingleAccount","editMobile","editMobileVisible","editRemark","activate","user_ids","selectedRowKeys","batchActivateVisible","editCompany","editCompanyVisible","editDefaultGroup","editDefaultGroupVisible","editPosition","editPositionVisible","editUserPwd","editUserPwdVisible","deleteAccount","validate_code","deleteAccountVisible","end_time_start","end_time_end","order_by","order_dir","handleTableChange","field","order","cancelActivate","onSelectChange","selectedRow","cancelEditCompany","cancelEditDefaultGroup","cancelEditUserPwd","cancelDeleteAccount","cancelEditRemark","cancelEditPosition","cancelEditAccount","cancelEditMobile","columsOnChange","checkedValues","showColums","subSet","arr1","arr2","set1","Set","set2","subset","has","rowSelection","hasSelected","hideColumns","column","getOwnPropertyNames","TransactionOutlined","BranchesOutlined","EnvironmentOutlined","EyeInvisibleOutlined","CloseSquareOutlined","trigger","content","defaultValue","OrderedListOutlined","scroll","x","Account","EditSpeechSecond","limit_sencond","second","EditGroupRemark","setSelectedCompany","delete_group_by_id","setEditRemarkVisible","start_creat_time","end_creat_time","editSpeechSecondVisible","setEditSpeechSecondVisible","editSpeechSecond","confirmDeleteGroup","onNextStep","refForm","useRef","tansferVisible","setTransferVisible","selectedGroups","setSelectedGroups","union_group","group_type","listStyle","targetKeys","titles","setSelectedRowKeys","arr","AddResult","prev","Step","Steps","setCurrent","addOptions","setAddOptions","setUnionGroups","carateGroup","updateReduxGroups","complate","match","getGroupName","goBack","ArrowLeftOutlined","saveEdit","RemoveMember","GroupMember","searchType","setSearchType","removeVisible","setRemoveVisible","member_list","editPriority","confirmDeleteSingleMember","comfirmRemoveMemver","v","accept","UploadOutlined","GroupList","GroupEdit","GroupAdd","CardCreate","permCount","setPermCount","yearCount","setYearCount","monthCount","setMonthCount","setVisible","cardType","setCardType","createCard","card_count","Message","actions","Meta","avatar","Card","BasicSetting","QuestionCircleOutlined","PosterSetting","imageUrl","setImageUrl","saveUrl","setSaveUrl","getBase64","reader","FileReader","addEventListener","readAsDataURL","poster","savePoster","file_url","uploadButton","LoadingOutlined","PlusOutlined","listType","showUploadList","beforeUpload","isJpgOrPng","isLt2M","originFileObj","TabPane","Tabs","SystemSettings","List","tabPosition","defaultActiveKey","System","Footer","Layout","Sider","Content","Admin","companyLoadingCompleted","rightsLoadingCompleted","collapsed","isLogin","getGroups","checkOn","saveRightsList","onCollapse","checkDevices","system","win","mac","xll","ipad","p","navigator","platform","x11","userAgent","alert","getTitle","App","memory","combineReducers","c","splice","g","persistConfig","storage","blacklist","persistedReducer","persistReducer","reducers","createStore","persistor","persistStore","ReactDom","locale","zhCN","getElementById"],"mappings":"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","file":"static/js/main.6ef808d5.chunk.js","sourcesContent":["//封装ajax请求\r\nimport { message } from \"antd\"\r\nexport default function ajax(url, data = {}, method = \"get\") {\r\n return new Promise(async (resolve, reject) => {\r\n //如果值为空就移除\r\n for (const key in data) {\r\n if (data[key]===undefined) {\r\n delete data[key]\r\n }\r\n }\r\n\r\n var promise;\r\n if (method.toLowerCase() === \"post\") { //如果是POST请求\r\n promise = fetch(url, {\r\n method: method,\r\n headers: {\r\n 'content-type': 'application/json'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(res => res.json())\r\n\r\n } else if (method.toLowerCase() === \"get\") { //如果是GET请求\r\n let queryStr = [];\r\n if (Object.keys(data).length !== 0) {\r\n for (const key in data) {\r\n queryStr.push(key + \"=\" + data[key])\r\n }\r\n }\r\n queryStr = queryStr.join(\"&\")\r\n promise = fetch(url + \"?\" + queryStr).then(res => res.json())\r\n }\r\n\r\n try {\r\n const response = await promise\r\n resolve(response)\r\n } catch (error) {\r\n message.error(\"请求错误\" + error.message)\r\n }\r\n\r\n })\r\n\r\n}","import React from \"react\"\r\nimport {\r\n Form,\r\n Input,\r\n Tooltip,\r\n Cascader,\r\n Select,\r\n Row,\r\n DatePicker,\r\n Checkbox,\r\n Switch,\r\n Button,\r\n Transfer,\r\n message,\r\n} from 'antd';\r\nimport { QuestionCircleOutlined } from '@ant-design/icons';\r\nimport store from \"../../../../utils/storeUtils\"\r\nimport { reqAddAccount } from \"../../../../api\"\r\nimport { connect } from \"react-redux\";\r\nconst { Option } = Select\r\nconst mockData = [];\r\nfor (let i = 0; i < 20; i++) {\r\n mockData.push({\r\n key: i.toString(),\r\n title: `content${i + 1}`,\r\n description: `description of content${i + 1}`,\r\n disabled: i % 3 < 1,\r\n });\r\n}\r\nclass SingleAdd extends React.Component {\r\n state = {\r\n isParent: false //是否是总公司 决定是否显示到期时间得选择\r\n\r\n }\r\n // const [form] = Form.useForm()\r\n formRef = React.createRef()\r\n //准备前缀\r\n componentDidMount() {\r\n this.setPrefix(this.props.prefix)\r\n this.checkIsParent()\r\n }\r\n checkIsParent = () => {\r\n if (store.getCompanyInfo()?.parent === 0) {\r\n this.setState({\r\n isParent: true\r\n })\r\n }\r\n }\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n const prefix = nextProps.prefix\r\n console.log(\"SingleAdd\", prefix)\r\n this.setPrefix(prefix)\r\n }\r\n\r\n //设置前缀\r\n setPrefix = (prefix) => {\r\n this.formRef.current.setFieldsValue({ prefix })\r\n }\r\n // useEffect(() => {\r\n // form.setFieldsValue({ prefix }) //给表单设置默认值 这里不能使用initialValues 因为初始化时props.prefix的值可能为空值\r\n // }, [prefix])\r\n tailFormItemLayout = {\r\n wrapperCol: {\r\n xs: {\r\n span: 24,\r\n offset: 0,\r\n },\r\n sm: {\r\n span: 16,\r\n offset: 6,\r\n },\r\n },\r\n };\r\n formItemLayout = {\r\n labelCol: {\r\n xs: {\r\n span: 12,\r\n },\r\n sm: {\r\n span: 6,\r\n },\r\n },\r\n wrapperCol: {\r\n xs: {\r\n span: 12,\r\n },\r\n sm: {\r\n span: 8,\r\n },\r\n },\r\n };\r\n handleSubmit = async values => {\r\n values.service_end_time = values.service_end_time?.format('YYYY-MM-DD HH:mm:ss')\r\n const group_ids = values.group_ids?.join(',')\r\n const res = await reqAddAccount({ ...values, group_ids })\r\n if (res.data?.result === 1) {\r\n message.success('添加成功')\r\n } else {\r\n message.warn(res.data?.err_msg)\r\n }\r\n }\r\n render() {\r\n const { formItemLayout, tailFormItemLayout, handleSubmit } = this\r\n const { groups } = this.props\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ({\r\n validator(_, value) {\r\n const mode = getFieldValue('account_model')\r\n switch (mode) {\r\n case \"2\":\r\n return /^\\w{19,20}$/.test(value) ? Promise.resolve() : Promise.reject(\"必需是英文字母或数字,且长度在19~20位之间\")\r\n case \"1\":\r\n return /^\\w{2,7}$/.test(value) ? Promise.resolve() : Promise.reject(\"必需是英文字母或数字,且长度在2~7之间\")\r\n case \"3\":\r\n return /^\\w{7,20}$/.test(value) ? Promise.resolve() : Promise.reject(\"必需是英文字母或数字,且长度在7~20之间\")\r\n default:\r\n return Promise.resolve()\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 validator(_, value) {\r\n if (!value || getFieldValue('pwd') === value) {\r\n return Promise.resolve();\r\n }\r\n return Promise.reject('两次输入密码不一致!');\r\n },\r\n }),\r\n ]}\r\n >\r\n \r\n \r\n\r\n {\r\n this.state.isParent ? (\r\n \r\n ) : null\r\n\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n option.children.indexOf(input) >= 0\r\n }\r\n mode=\"multiple\"\r\n >\r\n {\r\n groups.map(item => )\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 connect(\r\n state => ({\r\n groups: state.groups\r\n })\r\n)(SingleAdd)","/*\r\n 通过接口文档定义接口函数\r\n*/\r\nimport ajax from \"./ajax\"\r\nconst md5 =require(\"md5\")\r\n//登录\r\nexport const reqLogin =(user_account,pwd)=>ajax(\"/api/company_user/login\",{user_account,pwd:md5(pwd)},\"POST\")\r\n//登出\r\nexport const reqLogout =()=>ajax(\"/api/company_user/logout\",{},\"GET\")\r\n//查询修改用户\r\nexport const reqAccountList=(options={company_id:0,page_index:1})=>ajax(\"/api/user/get_list\",options,\"GET\")\r\n// 查询修改用户-用户表查询-用户类型选择\r\nexport const reqGetAccountType=()=>ajax(\"/api/user/get_user_type\")\r\n// 查询修改用户-用户表查询-所属集团选择\r\nexport const reqGetCompany=()=>ajax(\"/api/company/get_company\",{},\"GET\")\r\n//查询修改用户-获取选择群组 参数:company_id 可选\r\nexport const reqGetGroup=(options)=>ajax(\"/api/user/get_group\",options,\"GET\")\r\n//批量激活\r\nexport const reqBatchActivate=(user_ids,card_type)=>ajax(\"/api/user/batch_activate_users\",{user_ids,card_type},\"GET\")\r\n//批量分配\r\nexport const reqBatchEditCompany =(user_ids,company_id)=>ajax(\"/api/user/batch_edit_company\",{user_ids,company_id},\"GET\")\r\n//批量设置默认群组\r\nexport const reqBatchEditDefaultGroup =(user_ids,group_id)=>ajax(\"/api/user/batch_default_group\",{user_ids,group_id},\"GET\")\r\n//批量设置位置服务地址\r\nexport const reqEditPosition =(options)=>ajax(\"/api/user/setting_location_server\",options,\"POST\")\r\n//批量修改密码\r\nexport const reqBatchEditAccountPwd =(user_ids,pwd)=>ajax(\"/api/user/batch_user_pwd\",{user_ids,pwd:md5(pwd)},\"GET\")\r\n//批量删除账号\r\nexport const reqBatchDeleteAccount =(user_ids,validate_code)=>ajax(\"/api/user/batch_delete_users\",{user_ids,validate_code},\"GET\")\r\n//获取验证码\r\nexport const reqGetValidateCode =type=>ajax(\"/api/validate_code/get_validate_code\",{type},\"GET\")\r\n//获取账号详情\r\nexport const reqGetAccountDetail =(user_id,company_id)=>ajax(\"/api/user/get_user_detail\",{user_id,company_id},\"GET\")\r\n//编辑账号信息\r\nexport const reqEditAccount=(options)=>ajax(\"/api/user/edit_user\",options)\r\n//删除账号群\r\nexport const reqDeleteAccountGroup=(user_id,group_id)=>ajax(\"/api/user/delete_user_group\",{user_id,group_id})\r\n//删除单个账号\r\nexport const reqDeleteAccount=(user_id,company_id)=>ajax(\"/api/user/delete_user\",{user_id,company_id})\r\n// 设置定位\r\nexport const reqEditOpenPosition=(user_id,open_position)=>ajax(\"/api/user/edit_open_position\",{user_id,open_position})\r\n//设置单呼\r\nexport const reqEditTempCall=(user_id,temp_call)=>ajax(\"/api/user/edit_temp_call\",{user_id,temp_call})\r\n//获取账号前缀\r\nexport const reqGetAccountPrefix=()=>ajax(\"/api/user/get_account_prefix\",{})\r\n//添加账号\r\nexport const reqAddAccount=options=>ajax(\"/api/user/add_user\",{...options,pwd:md5(options.pwd),confirm_pwd:md5(options.confirm_pwd)})\r\n//批量添加账号\r\nexport const reqBatchAddAccount=options=>ajax(\"/api/user/batch_add_user\",{...options,pwd:md5(options.pwd),confirm_pwd:md5(options.confirm_pwd)})\r\n//公司管理-获取公司列表\r\nexport const reqGetCompanyList=(company_id,sub_company_name)=>ajax(\"/api/company/company_list\",{company_id,sub_company_name})\r\n//获取当前公司权限\r\nexport const reqGetCompanyRights=()=>ajax(\"/api/company/get_user_rights\",[])\r\n//分配可添加用户数\r\nexport const reqAssignNumAdd=(company_id,assign_count)=>ajax(\"/api/company/assign_num_add_users\",{company_id,assign_count})\r\n//分配年卡\r\nexport const reqAssignCard=(options)=>ajax(\"/api/company/assign_cards\",options)\r\n//修改子公司\r\nexport const reqEditSubCompany=(options)=>ajax(\"/api/company/add_edit_subcompany\",{...options,user_pwd:md5(options.user_pwd),confirm_pwd:md5(options.confirm_pwd)})\r\n//删除子公司\r\nexport const reqDeleteCompany=company_id=>ajax(\"/api/company/delete_subcompany\",{company_id})\r\n//新增公司\r\nexport const reqAddSubCompany=(options)=>ajax(\"/api/company/add_edit_subcompany\",{...options,user_pwd:md5(options.user_pwd),confirm_pwd:md5(options.confirm_pwd)})\r\n//获取子公司用户及权限\r\nexport const reqGetSubCompanyRights=(user_account,company_name)=>ajax(\"/api/company/get_sub_company_user_rights\",{user_account,company_name})\r\n//保存公司权限\r\nexport const reqSaveRights=(user_id,rights)=>ajax(\"/api/company/save_sub_company_user_rights\",{user_id,rights})\r\n//获取群组列表\r\nexport const reqGetGroupList=options=>ajax(\"/api/group/get_list\",options)\r\n//编辑群组通话时长\r\nexport const reqEditSpeechSecond=(group_id,second)=>ajax(\"/api/group/edit_group_speech_second\",{group_id,second})\r\n//删除群组\r\nexport const reqDeleteGroup=(group_id)=>ajax(\"/api/group/delete_group\",{group_id})\r\n//获取成员列表\r\nexport const reqGetMember=(options={page_index:1})=>ajax(\"/api/group/get_member\",options)\r\n//修改成员优先级\r\nexport const reqEditPriority=options=>ajax(\"/api/group/edit_member_priority\",options)\r\n\r\n//批量移除成员\r\nexport const reqRemoveMember =options => ajax(\"/api/group/member_batch_delete\",options)\r\n//删除成员\r\nexport const reqRemoveSingleMember=(group_id,user_id)=>ajax(\"/api/group/delete_member\",{group_id,user_id})\r\n//创建群组\r\nexport const reqCreateGroup =options => ajax(\"/api/group/add_group\",options)\r\n//生成年卡\r\nexport const reqCreateCard=(card_type,card_count)=>ajax(\"/api/company/create_cards\",{card_type,card_count})\r\n//获取公司海报\r\nexport const reqGetPoster=()=>ajax(\"/api/setting/get_company_poster\",{})\r\n//保存海报\r\nexport const reqSavePoster=(file_url)=>ajax(\"/api/setting/save_poster\",{file_url})\r\n//修改公司\r\nexport const reqEditCompany=(options)=>ajax(\"/api/company/edit_company\",{...options,user_pwd:md5(options.user_pwd),confirm_pwd:md5(options.confirm_pwd)})\r\n//获取群组名称\r\nexport const reqGetGroupName=(company_id,group_id)=>ajax(\"/api/group/get_group_name\",{company_id,group_id})\r\n//修改群组名称\r\nexport const reqEditGroupName=(options)=>ajax(\"/api/group/edit_group_name\",options)\r\n//导出群组成员\r\n//用户修改日志\r\nexport const reqGetUserModifyLogs=(options={page_index:1})=>ajax(\"/api/logs/get_user_modify_logs\",options)\r\n//用户数充值卡日志\r\nexport const reqGetUserCardLogs=(options={page_index:1})=>ajax(\"/api/logs/get_user_card_logs\",options)\r\n//修改关联手机号\r\nexport const reqEditMobile =(user_id,mobile)=>ajax(\"/api/user/edit_mobile\",{user_id,mobile})\r\n//修改备注\r\nexport const reqEditRemark =(user_id,remark)=>ajax(\"/api/user/edit_remark\",{user_id,remark})\r\n//修改群组备注\r\nexport const reqEditGroupRemark =(group_id,remark)=>ajax(\"/api/group/edit_remark\",{group_id,remark})","import store from \"store\"\r\nexport default {\r\n saveCompanyInfo: (options) => {\r\n const oldOptions = store.get(\"company_info\")\r\n store.set(\"company_info\", {...oldOptions,...options})\r\n },\r\n getCompanyInfo: () => {\r\n return store.get(\"company_info\")\r\n },\r\n clear: () => {\r\n store.clearAll()\r\n }\r\n}","const SITE={\r\n DISABLE_SPEEK:false, //是否支持禁言功能\r\n TELEPHONE_OPERATOR:false, //是否支持接线员账号\r\n SUPER_DISPATCHER:false, //是否支持超级调度\r\n ASSOCIATED_GROUP:false,//是否支持关联群组,默认为false\r\n ACROSS_GROUP:false,//是否支持跨群组单呼\r\n PLAYBACK:false,//是否支持录音回放\r\n TITLE:'对讲管理平台',\r\n VERSION:'v1.1'\r\n}\r\n\r\nexport default SITE","\r\nimport { Form, Input, Button, message } from 'antd';\r\nimport Particles from 'react-particles-js';\r\nimport { UserOutlined, LockOutlined } from '@ant-design/icons';\r\nimport cookie from \"react-cookies\"\r\nimport { Redirect } from \"react-router-dom\"\r\nimport \"./login.less\";\r\nimport { reqLogin } from \"../../api\"\r\nimport store from \"../../utils/storeUtils\"\r\nimport SITE from '../../config/siteConfig';\r\nimport logo from \"../../assets/images/logo.png\"\r\nconst Login = (props) => {\r\n\r\n const onFinish = async (values) => {\r\n const { username, password } = values\r\n const response = await reqLogin(username, password)\r\n if (response.data.result === 1) {\r\n message.success(\"登录成功\")\r\n props.history.replace(\"/\")\r\n store.saveCompanyInfo({ parent: response.data.parent, company_account: username, company_name: response.data.company_name })\r\n } else {\r\n message.error(response.data.err_msg)\r\n }\r\n };\r\n //如果cookie已经存在 直接进入admin 实现自动登录\r\n if (cookie.load(\".SCAUTH\")) {\r\n return \r\n }\r\n return (\r\n
\r\n \r\n
\r\n
\r\n {/* */}\r\n

{SITE.TITLE}

\r\n
\r\n \r\n \r\n } placeholder=\"请输入账号\" />\r\n \r\n \r\n }\r\n type=\"password\"\r\n placeholder=\"请输入密码\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\nexport default Login","import {\r\n UserOutlined,\r\n EditOutlined,\r\n HomeOutlined,\r\n UserAddOutlined,\r\n BankOutlined,\r\n TeamOutlined,\r\n DiffOutlined,\r\n FileTextOutlined,\r\n CreditCardOutlined,\r\n SettingOutlined,\r\n UsergroupAddOutlined,\r\n FileAddOutlined,\r\n ToolOutlined,\r\n FileOutlined,\r\n DollarCircleOutlined,\r\n TrademarkCircleOutlined\r\n} from '@ant-design/icons';\r\nconst Menu = [\r\n {\r\n title: \"首页\",\r\n key: \"/home\",\r\n icon: \r\n }, {\r\n title: \"账号管理\",\r\n key: \"/account\",\r\n icon: ,\r\n children: [\r\n {\r\n title: \"查询修改账号\",\r\n key: \"/account/list\",\r\n icon: \r\n }, {\r\n title: \"添加账号\",\r\n key: \"/account/add\",\r\n icon: }\r\n // }, {\r\n // title: \"批量添加账号\",\r\n // key: \"/account/batch-add\",\r\n // icon: \r\n // }\r\n ]\r\n }, {\r\n title: \"公司管理\",\r\n key: \"/company\",\r\n icon: ,\r\n children:[\r\n {\r\n title: \"公司列表\",\r\n key: \"/company/list\",\r\n icon: \r\n },\r\n {\r\n title: \"新增公司\",\r\n key: \"/company/add\",\r\n icon: \r\n },\r\n {\r\n title: \"公司权限管理\",\r\n key: \"/company/rights\",\r\n icon: \r\n }\r\n \r\n \r\n ]\r\n \r\n },\r\n {\r\n title: \"群组管理\",\r\n key: \"/group\",\r\n icon: ,\r\n children:[\r\n {\r\n title: \"查询修改群组\",\r\n key: \"/group/list\",\r\n icon: \r\n },\r\n {\r\n title: \"新增群组\",\r\n key: \"/group/add\",\r\n icon: \r\n }, \r\n ]\r\n },\r\n {\r\n title: \"充值卡\",\r\n key: \"/card\",\r\n icon: ,\r\n children:[\r\n {\r\n title: \"生成充值卡\",\r\n key: \"/card/create\",\r\n icon: \r\n },\r\n\r\n ]\r\n },\r\n {\r\n title: \"系统管理\",\r\n key: \"/system\",\r\n icon: ,\r\n children:[\r\n {\r\n title: \"系统设置\",\r\n key: \"/system/settings\",\r\n icon:\r\n },\r\n ]\r\n },\r\n {\r\n title: \"操作日志\",\r\n key: \"/logs\",\r\n icon: ,\r\n children:[\r\n {\r\n title: \"用户数充值卡日志\",\r\n key: \"/logs/card\",\r\n icon:\r\n },{\r\n title: \"用户修改日志\",\r\n key: \"/logs/account\",\r\n icon:\r\n }\r\n ]\r\n }\r\n]\r\n\r\nexport default Menu","import \"./index.less\"\r\nconst LinkButton = (props)=>{\r\n return \r\n}\r\n\r\nexport default LinkButton","export default __webpack_public_path__ + \"static/media/avatar01.f434fefa.png\";","import { reqLogout } from \"../../api\"\r\nimport { useHistory } from \"react-router-dom\"\r\nimport \"./header.less\"\r\nimport { useState, useEffect } from \"react\"\r\nimport { Modal, Avatar, Space } from \"antd\"\r\nimport { ExclamationCircleOutlined, UserOutlined } from \"@ant-design/icons\"\r\nimport LinkButton from \"../link-button\"\r\nimport store from \"../../utils/storeUtils\"\r\nimport img from \"../../assets/images/avatar01.png\"\r\nimport cookie from 'react-cookies'\r\nconst { confirm } = Modal\r\nconst handleClick = async (history) => {\r\n //登出\r\n confirm({\r\n title: '确定要退出吗?',\r\n icon: ,\r\n async onOk() {\r\n const res = await reqLogout()\r\n if (res.data.result === 1) {\r\n store.clear()\r\n cookie.remove('.SCAUTH', { path: '/' })\r\n history.replace(\"/login\")\r\n }\r\n\r\n },\r\n onCancel() {\r\n\r\n },\r\n });\r\n}\r\n\r\n\r\nconst Header = props => {\r\n const history = useHistory()\r\n const [currentTime, changeTime] = useState(new Date().toLocaleString())\r\n const [title, setTitle] = useState(\"\")\r\n useEffect(() => {\r\n const id = setInterval(() => {\r\n changeTime(new Date().toLocaleString())\r\n }, 1000);\r\n return () => {\r\n clearInterval(id)\r\n }\r\n }, [])\r\n return (\r\n\r\n
\r\n {/*
*/}\r\n 欢迎,\r\n \r\n {store.getCompanyInfo()?.company_name}\r\n { handleClick(history) }}>\r\n 退出\r\n \r\n\r\n {/*
*/}\r\n {/*
\r\n
{title}
\r\n
\r\n {currentTime}\r\n
\r\n
*/}\r\n
\r\n )\r\n}\r\n\r\nexport default Header","import { Menu } from 'antd'\r\nimport {useState} from 'react'\r\nimport { Link, useHistory } from 'react-router-dom'\r\nimport './left-nav.less'\r\nimport logo from \"../../assets/images/logo.png\"\r\nimport menuList from \"../../config/menuConfig\"\r\nconst { SubMenu } = Menu\r\nconst getMenuNodes = list => {\r\n return list.map(item => {\r\n if (!item.children) {\r\n return (\r\n \r\n \r\n {item.title}\r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n {getMenuNodes(item.children)}\r\n \r\n )\r\n }\r\n })\r\n}\r\n\r\nconst rootKeys=list=>{\r\n return list.map(item=>{\r\n return item.key\r\n })\r\n}\r\nconst rootSubmenuKeys=rootKeys(menuList)\r\nconst LeftNav = props => {\r\n const history = useHistory()\r\n const path = history.location.pathname\r\n const subpath = path.substring(0, path.lastIndexOf(\"/\"))\r\n const [openKeys, setOpenKeys] = useState([path]);\r\n\r\n const onOpenChange = keys => {\r\n const latestOpenKey = keys.find(key => openKeys.indexOf(key) === -1);\r\n if (rootSubmenuKeys.indexOf(latestOpenKey) === -1) {\r\n setOpenKeys(keys);\r\n } else {\r\n setOpenKeys(latestOpenKey ? [latestOpenKey] : []);\r\n }\r\n };\r\n \r\n return (\r\n
\r\n {/* \r\n
\r\n \"\"\r\n
\r\n */}\r\n
\r\n \r\n {\r\n getMenuNodes(menuList)\r\n }\r\n \r\n
\r\n
\r\n )\r\n}\r\nexport default LeftNav","import { Timeline } from \"antd\"\r\nimport SITE from \"../../config/siteConfig\"\r\nimport \"./index.less\"\r\nconst Home = props => {\r\n return
\r\n \r\n {/* \r\n 易洽语音对讲软件 2020-03-04\r\n \r\n

易洽巡更管理系统 2019-11-09

\r\n
\r\n \r\n\r\n

易洽物联卡管理系统 2019-11-08

\r\n
\r\n 一种能实现倒地报警的对讲机 2018-04-06\r\n \r\n\r\n

易洽通信部标808定位软件 2017-06-13

\r\n
\r\n \r\n

成立时间 2014年08月06日

\r\n
\r\n
*/}\r\n\r\n

欢迎使用{SITE.TITLE}

\r\n\r\n
\r\n}\r\n\r\nexport default Home","import { useState } from 'react';\r\nimport {\r\n Form\r\n , Row\r\n , Col\r\n , Input\r\n , Button\r\n , DatePicker,\r\n Select\r\n} from 'antd';\r\nimport \"./index.less\"\r\nconst { RangePicker } = DatePicker\r\nconst { Option } = Select\r\nconst SearchBar = (props) => {\r\n const [form] = Form.useForm()\r\n const [loading, setLoading] = useState(false)\r\n const onFinish = (values) => {\r\n setLoading(true)\r\n //清楚空属性\r\n for (const key in values) {\r\n if (values[key]) {\r\n continue\r\n } else {\r\n delete values[key]\r\n }\r\n }\r\n //onSearch是async函数 n为返回的promist\r\n const resultPromise = props.onSearch(values)\r\n //如果promisi是成功状态说明查询已经完毕\r\n resultPromise.then(res => {\r\n setLoading(false)\r\n })\r\n };\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\n \r\n \r\n \r\n {\r\n form.resetFields();\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 SearchBar","import { useState, useEffect } from \"react\";\r\nimport { Table, message } from \"antd\"\r\nimport tinytime from 'tinytime';\r\nimport SearchBar from \"./search-bar\"\r\nimport { reqGetUserCardLogs } from \"../../../api\"\r\nimport \"./card-log.less\"\r\nconst CardLog = () => {\r\n const [options, setOptions] = useState()\r\n //分页状态\r\n const [total, setTotal] = useState(0);\r\n const [page, setPage] = useState({ current: 1, pageSize: 30 });\r\n const [tableLoading, setTableLoading] = useState()\r\n const [data, setData] = useState([])\r\n const [currentEdit, setCurrentEdit] = useState({})\r\n useEffect(() => {\r\n const getUserCardLogs = async () => {\r\n const { current, pageSize } = page\r\n setTableLoading(true)\r\n const res = await reqGetUserCardLogs({ ...options, page_size: pageSize, page_index: current })\r\n setTableLoading(false)\r\n if (res.code === 200) {\r\n //改变总条数total 展开 「...page」 以确保我们没有 「丢失」 pageSize 和 current\r\n setTotal(res.data.row_count);\r\n setData(res.data.list)\r\n } else {\r\n message.error(\"获取列表失败\")\r\n }\r\n\r\n }\r\n getUserCardLogs()\r\n }, [page, options])\r\n const onSearch = async (options) => {\r\n const range = options.range_time\r\n if (range) {\r\n const template = tinytime('{YYYY}/{Mo}/{DD} {H}:{mm}:{ss}')\r\n options.start_time = template.render(new Date(range[0]))\r\n options.end_time = template.render(new Date(range[1]))\r\n }\r\n delete options.range_time\r\n //搜索\r\n const { current, pageSize } = page\r\n // const res = await reqAccountList({ ...options, page_size: pageSize, page_index: 1 })\r\n setOptions(options)\r\n setPage({ current: 1, pageSize })\r\n // setTotal(res.data.row_count);\r\n // setData(res.data.user_list)\r\n }\r\n const columns = [\r\n {\r\n title: '时间'\r\n , dataIndex: 'time',\r\n align: 'center'\r\n }, {\r\n title: '公司名称'\r\n , dataIndex: 'company_name',\r\n align: 'center'\r\n },\r\n {\r\n title: '公司账号'\r\n , dataIndex: 'company_account',\r\n align: 'center'\r\n }, {\r\n title: '用户账号'\r\n , dataIndex: 'user_account',\r\n align: 'center'\r\n },\r\n {\r\n // 可选,操作类型:0所有,1 划出, 2收入,3消耗\r\n title: '操作类型'\r\n , dataIndex: 'op_type',\r\n align: 'center'\r\n , render: value => {\r\n if (value === 1) {\r\n return 划出\r\n } else if (value === 2) {\r\n return 收入\r\n } else if (value === 3) {\r\n return 消耗\r\n } else if (value === 4) {\r\n return 回收\r\n }\r\n }\r\n },\r\n {\r\n title: '卡类型'\r\n , dataIndex: 'user_card_type',\r\n align: 'center'\r\n , render: value => {\r\n if (value === 0) {\r\n return 可添加用户数\r\n }\r\n }\r\n },\r\n {\r\n title: '数量'\r\n , dataIndex: 'num_change',\r\n align: 'center'\r\n },\r\n {\r\n title: '操作IP'\r\n , dataIndex: 'ip',\r\n align: 'center'\r\n }\r\n ]\r\n const handleTableChange = (page, filters, sorter) => {\r\n setPage(page)\r\n }\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n `总记录: ${total} 条`, showQuickJumper: true, position: [\"bottomCenter\"] }}\r\n sticky\r\n loading={tableLoading}\r\n onChange={handleTableChange}\r\n bordered\r\n >\r\n \r\n
\r\n
\r\n )\r\n}\r\nexport default CardLog","import { useState } from 'react';\r\nimport {\r\n Form\r\n , Row\r\n , Col\r\n , Input\r\n , Button\r\n , DatePicker,\r\n Select\r\n} from 'antd';\r\nimport \"./index.less\"\r\nimport { connect } from 'react-redux';\r\nconst { RangePicker } = DatePicker\r\nconst { Option } = Select\r\nconst SearchBar = (props) => {\r\n const [form] = Form.useForm()\r\n const [loading, setLoading] = useState(false)\r\n const [currentCompany, subCompanys] = props.companies;\r\n\r\n const onFinish = (values) => {\r\n setLoading(true)\r\n //清楚空属性\r\n for (const key in values) {\r\n if (values[key]) {\r\n continue\r\n } else {\r\n delete values[key]\r\n }\r\n }\r\n //onSearch是async函数 n为返回的promist\r\n const resultPromise = props.onSearch(values)\r\n //如果promisi是成功状态说明查询已经完毕\r\n resultPromise.then(res => {\r\n setLoading(false)\r\n })\r\n };\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 option.children.indexOf(input) >= 0\r\n }\r\n // onChange={onCompanychange}\r\n placeholder=\"选择所属公司\">\r\n {\r\n {currentCompany.company_name}\r\n }\r\n {\r\n subCompanys.map(item => {\r\n //这里必须有唯一的key属性 否者会引起报错 Each child in a list should have a unique \"key\" prop\r\n return {item.company_name}\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 form.resetFields();\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 connect(\r\n state=>({\r\n groups:state.groups,\r\n companies:state.companies\r\n })\r\n)(SearchBar) ","import { useEffect, useState } from \"react\";\r\nimport { Table, message } from \"antd\"\r\nimport SearchBar from \"./search-bar\"\r\nimport tinytime from 'tinytime';\r\nimport { reqGetUserModifyLogs } from \"../../../api\"\r\nimport \"./account-log.less\"\r\nconst AccountLog = () => {\r\n const [options, setOptions] = useState()\r\n\r\n //分页状态\r\n const [total, setTotal] = useState(0);\r\n const [page, setPage] = useState({ current: 1, pageSize: 30 });\r\n const [tableLoading, setTableLoading] = useState()\r\n const [data, setData] = useState([])\r\n const [currentEdit, setCurrentEdit] = useState({})\r\n useEffect(() => {\r\n const getUserModifyLogs = async () => {\r\n const { current, pageSize } = page\r\n setTableLoading(true)\r\n const res = await reqGetUserModifyLogs({ ...options, page_size: pageSize, page_index: current })\r\n setTableLoading(false)\r\n if (res.code === 200) {\r\n //改变总条数total 展开 「...page」 以确保我们没有 「丢失」 pageSize 和 current\r\n setTotal(res.data.row_count);\r\n setData(res.data.list)\r\n } else {\r\n message.error(\"获取账号列表失败\")\r\n }\r\n\r\n }\r\n getUserModifyLogs()\r\n }, [page, options])\r\n const onSearch = async (options) => {\r\n const range = options.range_time\r\n if (range) {\r\n const template = tinytime('{YYYY}/{Mo}/{DD} {H}:{mm}:{ss}')\r\n options.start_time = template.render(new Date(range[0]))\r\n options.end_time = template.render(new Date(range[1]))\r\n }\r\n delete options.range_time\r\n //搜索\r\n const { current, pageSize } = page\r\n // const res = await reqAccountList({ ...options, page_size: pageSize, page_index: 1 })\r\n setOptions(options)\r\n setPage({ current: 1, pageSize })\r\n // setTotal(res.data.row_count);\r\n // setData(res.data.user_list)\r\n }\r\n const handleTableChange = (page) => {\r\n setPage(page)\r\n }\r\n const columns = [{\r\n title: '时间',\r\n dataIndex: 'time',\r\n align:'center'\r\n }, {\r\n title: '用户账号',\r\n dataIndex: 'user_account',\r\n align:'center'\r\n }, {\r\n title: '所属公司',\r\n dataIndex: 'company_name',\r\n align:'center'\r\n }, {\r\n // 可选参数,0为全部,操作类型:1 添加, 2编辑, 3删除, 4批量添加,5批量导入\r\n title: '操作类型',\r\n dataIndex: 'op_type',\r\n align:'center',\r\n render:\r\n value => {\r\n if (value === 1) {\r\n return 添加\r\n } else if (value === 2) {\r\n return 编辑\r\n } else if (value === 3) {\r\n return 删除\r\n } else if (value === 4) {\r\n return 批量添加\r\n } else if (value === 5) {\r\n return 批量导入\r\n }\r\n }\r\n\r\n }, {\r\n title: '操作内容',\r\n ellipsis: true,\r\n align:'center',\r\n dataIndex: 'contents'\r\n }, {\r\n title: '操作IP',\r\n align:'center',\r\n dataIndex: 'ip'\r\n }]\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n `总记录: ${total} 条`, showQuickJumper: true, position: [\"bottomCenter\"] }}\r\n sticky\r\n rowKey\r\n loading={tableLoading}\r\n onChange={handleTableChange}\r\n bordered\r\n >\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default AccountLog","import { Route, Switch } from \"react-router-dom\"\r\nimport CardLog from \"./log-card/card-log.jsx\"\r\nimport AccountLog from \"./logs-account/account-log.jsx\"\r\nconst Logs = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\nexport default Logs","//分配可添加用户数\r\nimport { useEffect } from \"react\"\r\nimport { Form, Modal, Input, Statistic, InputNumber } from \"antd\"\r\nimport {SwapRightOutlined} from \"@ant-design/icons\"\r\nimport { } from \"../../../../api\"\r\nconst AssignNumAdd = ({ visible, onCancel, onSubmit, existingNum, currentEdit }) => {\r\n const [form] = Form.useForm()\r\n return (\r\n 分配可添加用户数{currentEdit.company_name}}\r\n okText=\"分配\"\r\n cancelText=\"取消\"\r\n onCancel={onCancel}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n form.resetFields();\r\n onSubmit(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 AssignNumAdd","//分配可添加用户数\r\nimport { useEffect } from \"react\"\r\nimport { Form, Modal, Input, Statistic, InputNumber } from \"antd\"\r\nimport { SwapLeftOutlined } from \"@ant-design/icons\"\r\nimport { } from \"../../../../api\"\r\nconst RollBackNumAdd = ({ visible, onCancel, onSubmit, currentEdit }) => {\r\n const [form] = Form.useForm()\r\n const countValidator = (rule, value, callback) => { //value当前输入的值\r\n debugger\r\n if (currentEdit.num_add_users < 1) {\r\n callback('该公司无可收回的添加用户数!')\r\n }\r\n else if (1 > value || value > currentEdit.num_add_users) {\r\n callback(`请输入合法值1~${currentEdit.num_add_users}`)\r\n }\r\n callback()\r\n }\r\n return (\r\n 收回添加用户数{currentEdit.company_name}}\r\n okText=\"回收\"\r\n cancelText=\"取消\"\r\n onCancel={() => {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n okButtonProps={{ danger: true }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n form.resetFields();\r\n onSubmit(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 RollBackNumAdd","//分配可添加用户数\r\nimport { useState } from \"react\"\r\nimport { Form, Modal, InputNumber, Input, Select, Radio } from \"antd\"\r\nimport { SwapRightOutlined } from \"@ant-design/icons\"\r\nimport { } from \"../../../../api\"\r\nconst formItemLayout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 16 },\r\n};\r\nconst AssignCard = ({ visible, onCancel, onSubmit, currentEdit }) => {\r\n const [form] = Form.useForm()\r\n return (\r\n 分配充值卡{currentEdit.company_name}}\r\n okText=\"分配\"\r\n cancelText=\"取消\"\r\n onCancel={() => {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values);\r\n setTimeout(() => {\r\n form.resetFields();\r\n }, 1000);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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\nexport default AssignCard","//分配可添加用户数\r\nimport { useState,useEffect } from \"react\"\r\nimport { Form, Modal, Input, Card } from \"antd\"\r\nimport {reqGetCompanyList } from \"../../../../api\"\r\nconst formItemLayout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 18 },\r\n};\r\nconst EditSubCompany = ({ visible, onCancel, onSubmit, currentEdit}) => {\r\n const [form] = Form.useForm()\r\n useEffect(()=>{\r\n (async function(){\r\n if(!currentEdit.company_id) return\r\n const res= await reqGetCompanyList(currentEdit.company_id)\r\n if(res.code===200){\r\n const {user_name,user_account,company_name,phone_num}=res.data.company_info\r\n\r\n form.setFieldsValue({\r\n name:company_name,\r\n user_name:user_name,\r\n user_account,\r\n phone_num\r\n })\r\n }\r\n })()\r\n },[currentEdit])\r\n return (\r\n {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n form.resetFields();\r\n onSubmit(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 validator(_, value) {\r\n if (!value || getFieldValue('user_pwd') === value) {\r\n return Promise.resolve();\r\n }\r\n return Promise.reject('两次输入密码不一致!');\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 EditSubCompany","export const UPDATE_COMPANIES =\"update_companies\"\r\nexport const UPDATE_GROUPS=\"update_groups\"\r\nexport const DELETE_GROUP_BYID=\"delete_group_byid\"\r\nexport const DELETE_COMPANY_BYID=\"delete_company_byid\"","import {\r\n UPDATE_COMPANIES\r\n , UPDATE_GROUPS\r\n ,DELETE_GROUP_BYID\r\n ,DELETE_COMPANY_BYID\r\n}from \"./action_types\"\r\nexport const update_companies =(companies)=>({type:UPDATE_COMPANIES,data:companies})\r\nexport const update_groups =(groups)=>({type:UPDATE_GROUPS,data:groups})\r\nexport const delete_group_by_id =(id)=>({type:DELETE_GROUP_BYID,data:id})\r\nexport const delete_company_by_id =(id)=>({type:DELETE_COMPANY_BYID,data:id})","\r\nimport { Space, Table, Popconfirm, Row, Col, Input, Descriptions, Statistic, Card, message, Menu, Dropdown } from \"antd\"\r\nimport { useState, useEffect } from \"react\"\r\nimport { PlusCircleTwoTone, IdcardTwoTone, CreditCardTwoTone, DownOutlined } from '@ant-design/icons';\r\nimport { reqGetCompanyList, reqAssignNumAdd, reqAssignCard, reqEditSubCompany, reqDeleteCompany } from \"../../../api\"\r\nimport LinkButton from \"../../../components/link-button\"\r\nimport AssignNumAdd from \"./assign-num-add\"\r\nimport RollBackNumAdd from \"./rollback-num-add/rollback-num-add\"\r\nimport AssignCard from \"./assign-card\"\r\nimport EditSubCompany from \"./edit-subcompany\"\r\nimport {delete_company_by_id} from \"../../../redux/actions\"\r\nimport \"./index.less\"\r\nimport { connect } from \"react-redux\";\r\nconst CompanyList = props => {\r\n //当前编辑公司\r\n const [currentEdit, setCurrentEdit] = useState({})\r\n const [companyList, setCompanyList] = useState([])\r\n const [companyInfo, setCompanyInfo] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n //搜索关键字\r\n const [keyWord, setKeyWord] = useState('')\r\n //显示分配添加用户\r\n const [showAssignNumAdd, setShowAssignNumAdd] = useState(false)\r\n const [showRollBackNumAdd, setShowRollBackNumAdd] = useState(false)\r\n //分配添加用户打开模态框\r\n const openAssignNumAdd = (record) => {\r\n setShowAssignNumAdd(true)\r\n setCurrentEdit(record)\r\n }\r\n const openRollBackNumAdd = (record) => {\r\n setShowRollBackNumAdd(true)\r\n setCurrentEdit(record)\r\n }\r\n //分配添加用户关闭模态框\r\n const closeAssignNumAdd = () => {\r\n setShowAssignNumAdd(false)\r\n }\r\n const closeRollBackNumAdd = () => {\r\n setShowRollBackNumAdd(false)\r\n }\r\n //确认分配可添加用户数\r\n const assignNumAdd = async (values) => {\r\n const res = await reqAssignNumAdd(currentEdit.company_id, values.assign_count)\r\n if (res.data?.result === 1) {\r\n message.success(\"分配成功\")\r\n // const num_add_users = companyInfo.num_add_users - values.assign_count\r\n // setCompanyInfo({ ...companyInfo, num_add_users })\r\n updateTable()\r\n closeAssignNumAdd()\r\n } else {\r\n\r\n }\r\n }\r\n //收回可添加用户数\r\n const rollBackNumAdd = async (values) => {\r\n const res = await reqAssignNumAdd(currentEdit.company_id, -values.assign_count)\r\n if (res.data?.result === 1) {\r\n message.success(\"收回成功\")\r\n // const num_add_users = companyInfo.num_add_users - values.assign_count\r\n // setCompanyInfo({ ...companyInfo, num_add_users })\r\n updateTable()\r\n closeRollBackNumAdd()\r\n } else {\r\n\r\n }\r\n }\r\n //显示分配年卡\r\n const [showAssignCard, setShowAssignCard] = useState(false)\r\n const openAssignCard = (record) => {\r\n setShowAssignCard(true)\r\n setCurrentEdit(record)\r\n }\r\n const closeAssignCard = () => {\r\n setShowAssignCard(false)\r\n }\r\n // /确认分配年卡\r\n const assignCard = async (values) => {\r\n let options = {}\r\n const { card_type, count, operation_type, remarks } = values\r\n options.company_id = currentEdit.company_id\r\n options[`assign_${card_type}_cards`] = count\r\n options[`assign_${card_type}_type`] = operation_type\r\n options[`assign_${card_type}_remarks`] = remarks\r\n const res = await reqAssignCard(options)\r\n if (res.data?.result === 1) {\r\n message.success(\"分配成功\")\r\n setCompanyInfo({ ...companyInfo, [`${card_type}_cadrs_count`]: companyInfo[`${card_type}_cadrs_count`] - count })\r\n closeAssignCard()\r\n } else {\r\n message.error(res.data.err_msg)\r\n }\r\n }\r\n const [showEditSubCompany, setShowEditSubCompany] = useState(false)\r\n const openEditSubCompany = record => {\r\n setShowEditSubCompany(true)\r\n setCurrentEdit(record)\r\n }\r\n const closeEditSubCompany = () => {\r\n setShowEditSubCompany(false)\r\n }\r\n const editSubCompany = async (values) => {\r\n values.company_id = currentEdit.company_id\r\n const res = await reqEditSubCompany(values)\r\n if (res.data?.result === 1) {\r\n message.success(\"修改成功\")\r\n closeEditSubCompany()\r\n } else {\r\n message.error(\"操作失败\")\r\n }\r\n\r\n }\r\n const confirmDeleteCompany = async (record) => {\r\n const { company_id } = record\r\n const res = await reqDeleteCompany(company_id)\r\n if (res.data?.result === 1) {\r\n message.success(\"删除成功\")\r\n updateTable()\r\n //更新redux\r\n props.delete_company_by_id(company_id)\r\n } else {\r\n message.error(res.data?.err_msg)\r\n }\r\n }\r\n //刷新表格\r\n const updateTable = async () => {\r\n const res = await reqGetCompanyList(undefined, keyWord)\r\n setCompanyList(res.data.subcompany_list)\r\n setCompanyInfo(res.data.company_info)\r\n }\r\n const onSearch = async (value) => {\r\n setKeyWord(value)\r\n const res = await reqGetCompanyList(undefined, value)\r\n setCompanyList(res.data.subcompany_list)\r\n }\r\n useEffect(() => {\r\n const getCompanyList = async () => {\r\n setLoading(true)\r\n const res = await reqGetCompanyList()\r\n setLoading(false)\r\n setCompanyList(res.data.subcompany_list)\r\n setCompanyInfo(res.data.company_info)\r\n }\r\n getCompanyList()\r\n }, [])\r\n const columns = [\r\n {\r\n title: '公司名称',\r\n dataIndex: 'company_name',\r\n key: 'company_name',\r\n align: 'center',\r\n },\r\n {\r\n title: '账号数量',\r\n dataIndex: 'user_count',\r\n key: 'user_count',\r\n align: 'center',\r\n sorter: (a, b) => a.user_count - b.user_count,\r\n },\r\n {\r\n title: '群组数量',\r\n dataIndex: 'group_count',\r\n key: 'group_count',\r\n align: 'center',\r\n sorter: (a, b) => a.group_count - b.group_count,\r\n },\r\n {\r\n title: '账号预警数量',\r\n dataIndex: 'alarm_count',\r\n key: 'alarm_count',\r\n\r\n align: 'center',\r\n sorter: (a, b) => a.alarm_count - b.alarm_count,\r\n },\r\n {\r\n title: '过期账号',\r\n dataIndex: 'expire_count',\r\n key: 'expire_count',\r\n\r\n align: 'center',\r\n sorter: (a, b) => a.expire_count - b.expire_count,\r\n },\r\n {\r\n title: \"剩余添加用户数\",\r\n dataIndex: \"num_add_users\",\r\n key: \"num_add_users\",\r\n width: 160,\r\n align: 'center',\r\n sorter: (a, b) => a.num_add_users - b.num_add_users,\r\n }, {\r\n title: \"操作\",\r\n align: 'center',\r\n width: 400,\r\n render: (record) => {\r\n return (\r\n \r\n \r\n \r\n { openAssignNumAdd(record) }}>分配\r\n \r\n \r\n { openRollBackNumAdd(record) }}>回收\r\n \r\n }\r\n >\r\n \r\n 添加用户数 \r\n \r\n \r\n {/* { openAssignNumAdd(record) }}>分配可添加用户数 */}\r\n {/* { openAssignNumAdd(record) }}>回收可添加用户数 */}\r\n { openAssignCard(record) }}>分配充值卡\r\n { openEditSubCompany(record) }}>修改\r\n { confirmDeleteCompany(record) }}\r\n okText=\"删除\"\r\n cancelText=\"取消\"\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 \r\n \r\n \r\n
\r\n\r\n 编辑}\r\n >\r\n \r\n {companyInfo.user_account}\r\n {companyInfo.company_name}\r\n {companyInfo.phone_num}\r\n ,\r\n \r\n } title=\"子公司数量\" value={companyInfo.subcompany_count} />\r\n } title=\"可添加用户数\" value={companyInfo.num_add_users} />\r\n } title=\"永久卡数\" value={companyInfo.perm_cadrs_count} />\r\n } title=\"年卡数\" value={companyInfo.year_cadrs_count} />\r\n } title=\"月卡数\" value={companyInfo.month_cadrs_count} />\r\n \r\n \r\n
\r\n
\r\n `总记录: ${total} 条`\r\n }}\r\n dataSource={companyList}\r\n sticky\r\n title={() => {\r\n return (\r\n \r\n )\r\n }}\r\n bordered\r\n >\r\n
\r\n
\r\n
\r\n}\r\nexport default connect(\r\n null,\r\n {delete_company_by_id}\r\n)(CompanyList) ","import { Card, Form, Input, Button, message } from \"antd\"\r\nimport { reqAddSubCompany,reqGetCompany } from \"../../../api\"\r\nimport { useHistory } from \"react-router-dom\"\r\nimport { update_companies } from \"../../../redux/actions\"\r\nimport \"./index.less\"\r\nimport { connect } from \"react-redux\"\r\nconst CompanyAdd = props => {\r\n const [form] = Form.useForm()\r\n const history = useHistory()\r\n const tailFormItemLayout = {\r\n wrapperCol: {\r\n xs: {\r\n span: 6,\r\n offset: 0,\r\n },\r\n sm: {\r\n span: 16,\r\n offset: 6,\r\n },\r\n },\r\n };\r\n const formItemLayout = {\r\n labelCol: {\r\n xs: {\r\n span: 24,\r\n },\r\n sm: {\r\n span: 6,\r\n },\r\n },\r\n wrapperCol: {\r\n xs: {\r\n span: 24,\r\n },\r\n sm: {\r\n span: 8,\r\n },\r\n },\r\n };\r\n // 更新选择公司\r\n const updateReduxCompanies =async () => {\r\n const res = await reqGetCompany()\r\n if (res.code === 200) {\r\n const currentCompany = res.data.company_info\r\n const subCompanys = res.data.subcompany_list\r\n props.update_companies([currentCompany, subCompanys])\r\n }\r\n }\r\n const handleSubmit = async (values) => {\r\n const res = await reqAddSubCompany(values)\r\n if (res.data?.result === 1) {\r\n message.success(\"创建成功\")\r\n history.push(\"/company/manage\")\r\n setTimeout(() => { //创建公司成功后 更新到redux中\r\n updateReduxCompanies()\r\n }, 500);\r\n } else {\r\n message.error(res.data?.err_msg)\r\n }\r\n }\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\n \r\n \r\n ({\r\n validator(_, value) {\r\n console.log(getFieldValue('user_pwd'))\r\n if (!value || getFieldValue('user_pwd') === value) {\r\n return Promise.resolve();\r\n }\r\n return Promise.reject('两次输入密码不一致!');\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 connect(\r\n null,\r\n { update_companies }\r\n)(CompanyAdd)","import { useState, useEffect, useRef } from \"react\"\r\nimport { Form, Input, Button, Row, Col, Table, Tag, Tree, Card, message } from \"antd\"\r\nimport {\r\n DownOutlined,\r\n FrownOutlined,\r\n SmileOutlined,\r\n MehOutlined,\r\n FrownFilled,\r\n} from '@ant-design/icons';\r\nimport { reqGetSubCompanyRights, reqSaveRights } from \"../../../api\"\r\nimport LinkButton from \"../../../components/link-button\"\r\nimport Modal from \"antd/lib/modal/Modal\"\r\nimport store from \"../../../utils/storeUtils\"\r\nimport \"./index.less\"\r\nconst treeData = [\r\n {\r\n title: '权限列表',\r\n key: -1,\r\n },\r\n];\r\nconst CompanyRights = props => {\r\n const [treeVisible, setTreeVisible] = useState(false)\r\n const [form] = Form.useForm()\r\n const [loading, setLoading] = useState(false)\r\n const [data, setData] = useState([])\r\n const [rights, setRights] = useState([])\r\n const [currentEdit, setCurrentEdit] = useState({})\r\n const [currentSelectedRights, setCurrentSelectedRights] = useState([])\r\n const [searchUserAccount, setSearchUserAccount] = useState(\"\")\r\n const [options, setOptions] = useState({})\r\n useEffect(() => {\r\n const list = store.getCompanyInfo().rights.map(item => { return { title: item.right_name, key: item.right_id } })\r\n treeData[0].children = list\r\n setRights(treeData)\r\n }, [])\r\n useEffect(() => {\r\n (async function () {\r\n setLoading(true)\r\n const res = await reqGetSubCompanyRights()\r\n setLoading(false)\r\n if (res.code === 200) {\r\n setData(res.data?.user_list)\r\n }\r\n })()\r\n }, [])\r\n const openEditRights = (record) => {\r\n setCurrentEdit(record)\r\n setCurrentSelectedRights(record.rights)\r\n setTreeVisible(true)\r\n }\r\n const updataTable = async (user_account, company_name) => {\r\n\r\n const res = await reqGetSubCompanyRights(user_account, company_name)\r\n if (res.code === 200) {\r\n setData(res.data?.user_list)\r\n }\r\n }\r\n const onSearch = values => {\r\n setOptions(values)\r\n updataTable(values.user_account, values.company_name)\r\n }\r\n const editRights = async () => {\r\n currentSelectedRights.filter(item => item !== -1)\r\n\r\n const res = await reqSaveRights(currentEdit.user_id, currentSelectedRights.filter(item => item !== -1).join(\",\"))\r\n\r\n if (res.data?.result === 1) {\r\n message.success(\"保存成功\")\r\n setTreeVisible(false)\r\n updataTable(options.user_account, options.company_name)\r\n }\r\n }\r\n const columns = [\r\n {\r\n title: \"公司账号\",\r\n dataIndex: \"user_account\",\r\n align:'center',\r\n },\r\n {\r\n title: \"公司名称\",\r\n dataIndex: \"company_name\",\r\n align:'center',\r\n }\r\n , {\r\n title: \"权限\",\r\n align:'center',\r\n render: (record) => {\r\n return record.rights.map(item => {\r\n switch (item) {\r\n case 1: return 生成年卡\r\n default:\r\n return;\r\n }\r\n })\r\n }\r\n },\r\n {\r\n title: \"操作\",\r\n align:'center',\r\n render: (record) => {\r\n return { openEditRights(record) }}>修改权限\r\n }\r\n }\r\n ]\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\n form.resetFields();\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 { setTreeVisible(false) }}\r\n title=\"编辑权限\"\r\n okText=\"保存\"\r\n onOk={() => {\r\n editRights()\r\n }}\r\n cancelText=\"取消\"\r\n >\r\n {\r\n setCurrentSelectedRights(checkedKeys)\r\n }}\r\n />,\r\n\r\n \r\n
\r\n}\r\nexport default CompanyRights","import {Switch,Route,Redirect} from \"react-router-dom\"\r\nimport CompanyList from \"./company-list\"\r\nimport CompanyAdd from \"./company-add\"\r\nimport CompanyRights from \"./company-rights\"\r\nconst Company =()=>{ \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 default Company","import React from \"react\"\r\nimport { reqBatchAddAccount } from \"../../../../api\"\r\nimport store from \"../../../../utils/storeUtils\"\r\nimport {\r\n Form,\r\n Input,\r\n Select,\r\n DatePicker,\r\n Button,\r\n message,\r\n} from 'antd';\r\nimport { render } from \"@testing-library/react\";\r\n// import {} from '@ant-design/icons';\r\nconst { Option } = Select\r\nclass BatchAdd extends React.Component {\r\n formRef = React.createRef()\r\n state = {\r\n isParent: false //是否是总公司 决定是否显示到期时间得选择\r\n }\r\n\r\n componentDidMount() {\r\n this.setPrefix(this.props.prefix)\r\n this.checkIsParent()\r\n }\r\n //准备前缀\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n\r\n const prefix = nextProps.prefix\r\n this.setPrefix(this.props.prefix)\r\n \r\n }\r\n //设置前缀\r\n setPrefix=(prefix)=>{\r\n this.formRef.current.setFieldsValue({ prefix })\r\n }\r\n\r\n checkIsParent = () => {\r\n if (store.getCompanyInfo()?.parent === 0) {\r\n this.setState({\r\n isParent: true\r\n })\r\n }\r\n }\r\n tailFormItemLayout = {\r\n wrapperCol: {\r\n xs: {\r\n span: 24,\r\n offset: 0,\r\n },\r\n sm: {\r\n span: 16,\r\n offset: 6,\r\n },\r\n },\r\n };\r\n formItemLayout = {\r\n labelCol: {\r\n xs: {\r\n span: 24,\r\n },\r\n sm: {\r\n span: 6,\r\n },\r\n },\r\n wrapperCol: {\r\n xs: {\r\n span: 24,\r\n },\r\n sm: {\r\n span: 8,\r\n },\r\n },\r\n\r\n };\r\n\r\n handleSubmit = async values => {\r\n values.service_end_time = values.service_end_time?.format('YYYY-MM-DD HH:mm:ss')\r\n const res = await reqBatchAddAccount(values)\r\n if (res.data?.result === 1) {\r\n message.success(\"添加成功\")\r\n } else {\r\n message.warn(res.data?.err_msg)\r\n }\r\n }\r\n\r\n render() {\r\n const { formItemLayout, handleSubmit, tailFormItemLayout } = this\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ({\r\n validator(_, value) {\r\n const mode = getFieldValue('account_model')\r\n switch (mode) {\r\n case \"2\":\r\n return /^\\w{19,20}$/.test(value) ? Promise.resolve() : Promise.reject(\"必需是英文字母或数字,且长度在19~20位之间\")\r\n case \"1\":\r\n return /^\\w{2,7}$/.test(value) ? Promise.resolve() : Promise.reject(\"必需是英文字母或数字,且长度在2~7之间\")\r\n case \"3\":\r\n return /^\\w{7,20}$/.test(value) ? Promise.resolve() : Promise.reject(\"必需是英文字母或数字,且长度在7~20之间\")\r\n default:\r\n return Promise.resolve()\r\n }\r\n },\r\n }),\r\n ]}\r\n\r\n >\r\n \r\n \r\n ({\r\n validator(_, value) {\r\n const mode = getFieldValue('account_model')\r\n switch (mode) {\r\n case \"2\":\r\n return /^\\w{19,20}$/.test(value) ? Promise.resolve() : Promise.reject(\"必需是英文字母或数字,且长度在19~20位之间\")\r\n case \"1\":\r\n return /^\\w{2,7}$/.test(value) ? Promise.resolve() : Promise.reject(\"必需是英文字母或数字,且长度在2~7之间\")\r\n case \"3\":\r\n return /^\\w{7,20}$/.test(value) ? Promise.resolve() : Promise.reject(\"必需是英文字母或数字,且长度在7~20之间\")\r\n default:\r\n return Promise.resolve()\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 validator(_, value) {\r\n if (!value || getFieldValue('pwd') === value) {\r\n return Promise.resolve();\r\n }\r\n return Promise.reject('两次输入密码不一致!');\r\n },\r\n }),\r\n ]}\r\n >\r\n \r\n \r\n {\r\n this.state.isParent ? (\r\n \r\n ) : null\r\n }\r\n \r\n \r\n \r\n\r\n \r\n )\r\n }\r\n}\r\nexport default BatchAdd","import { Upload, message } from 'antd'\r\nimport { InboxOutlined } from '@ant-design/icons';\r\n\r\nimport \"./index.less\"\r\nconst { Dragger } = Upload\r\nconst UploadAdd = (props) => {\r\n const handleOnChange = (info) => {\r\n if (info.fileList.length > 1) {\r\n info.fileList.shift()\r\n }\r\n const { status } = info.file;\r\n if (status !== 'uploading') {\r\n console.log(info.file, info.fileList);\r\n }\r\n if (status === 'done') {\r\n // }\r\n\r\n // message.success(`${info.file.name} file uploaded successfully`);\r\n // } else if (info.file.status === 'error') {\r\n // message.error(`${info.file.name} file upload failed.`);\r\n console.log(info.file.response)\r\n const { code, data } = info.file.response\r\n if (code === 200) {\r\n if (data.result === 1) {\r\n message.success(`${info.file.name}导入成功`)\r\n } else {\r\n message.error(data.err_msg)\r\n }\r\n }\r\n\r\n } else if (status === 'error') {\r\n message.error(`${info.file.name} file upload failed.`);\r\n }\r\n }\r\n return (\r\n
\r\n 下载模板\r\n \r\n

\r\n \r\n

\r\n

单击或拖动文件到此区域进行上传

\r\n

\r\n Support for a single upload. Strictly prohibit from uploading company data or other\r\n band files\r\n

\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default UploadAdd","\r\nimport { useState,useEffect } from \"react\"\r\nimport {reqGetAccountPrefix} from \"../../../api\"\r\nimport {\r\n Form,\r\n Input,\r\n Tooltip,\r\n Cascader,\r\n Select,\r\n Row,\r\n Col,\r\n Checkbox,\r\n Button,\r\n AutoComplete,\r\n Card,\r\n} from 'antd';\r\n\r\nimport SingleAdd from \"./single-add\"\r\nimport BatchAdd from \"./batch-add\"\r\nimport UploadAdd from \"./upload-add\" \r\nimport \"./account-add.less\"\r\nconst { Option } = Select;\r\nconst AccountAdd = props => {\r\n const [addModel, setAddModel] = useState(\"single\")\r\n const [prefix,setPrefix]=useState(\"\")\r\n //获取前缀\r\n useEffect(()=>{\r\n const getAccountPrefix=async ()=>{\r\n const res= await reqGetAccountPrefix()\r\n setPrefix(res.data?.prefix)\r\n }\r\n getAccountPrefix()\r\n },[])\r\n const tabList = [\r\n {\r\n key: 'single',\r\n tab: '单个添加',\r\n },\r\n {\r\n key: 'batch',\r\n tab: '批量添加',\r\n },{\r\n key:'upload',\r\n tab:'Excel导入'\r\n }\r\n ];\r\n const handleTabChange=key=>{\r\n setAddModel(key)\r\n }\r\n let inner;\r\n if(addModel === \"single\"){\r\n inner=\r\n }else if(addModel===\"batch\"){\r\n inner=\r\n }else{\r\n inner=\r\n }\r\n return (\r\n
\r\n \r\n {\r\n inner\r\n }\r\n \r\n
\r\n )\r\n\r\n}\r\n\r\nexport default AccountAdd","import React, { useState, useEffect } from \"react\"\r\nimport { reqGetAccountType,reqGetGroup } from \"../../../../api\"\r\nimport {\r\n Form\r\n , Row\r\n , Col\r\n , Input\r\n , Button\r\n , Select\r\n , DatePicker\r\n} from 'antd';\r\n\r\nimport \"./index.less\"\r\nimport { connect } from \"react-redux\";\r\nimport { render } from \"@testing-library/react\";\r\nimport { thisExpression } from \"@babel/types\";\r\nconst { RangePicker } = DatePicker\r\nclass SearchBar extends React.Component {\r\n\r\n formRef = React.createRef()\r\n state = {\r\n loading: false,\r\n accountTypes: [],\r\n currentCompany: {},\r\n groups: [],\r\n subCompanys: [],\r\n }\r\n componentDidMount() {\r\n this.getAccounttype()\r\n }\r\n getGroupsByCompany=async ()=>{\r\n const companyId =this.state.selectedCompany\r\n if(!companyId) return\r\n const res= await reqGetGroup({company_id:this.state.selectedCompany})\r\n if(res.code===200){\r\n this.setState({\r\n groups:res.data.group_list\r\n })\r\n }\r\n }\r\n onCompanychange = value => {\r\n console.log(\"切换公司\",value)\r\n this.setState({\r\n selectedCompany: value\r\n },()=>{\r\n this.getGroupsByCompany()\r\n })\r\n }\r\n getAccounttype = async () => {\r\n const res = await reqGetAccountType()\r\n if (res.code === 200) {\r\n this.setState({\r\n accountTypes: res.data.user_type_list\r\n })\r\n }\r\n }\r\n onFinish = (values) => {\r\n \r\n this.setState({\r\n loading:true\r\n })\r\n //清楚空属性\r\n for (const key in values) {\r\n if (values[key]) {\r\n continue\r\n } else {\r\n delete values[key]\r\n \r\n }\r\n }\r\n // //onSearch是async函数 n为返回的promist\r\n const resultPromise = this.props.onSearch(values)\r\n // //如果promisi是成功状态说明查询已经完毕\r\n resultPromise.then(res => {\r\n this.setState({\r\n loading:false\r\n })\r\n })\r\n };\r\n resetForm=()=>{\r\n this.formRef.current.resetFields()\r\n this.setState({\r\n selectedCompany:undefined\r\n })\r\n }\r\n render() {\r\n const { onFinish ,onCompanychange} = this\r\n const { loading, accountTypes } = this.state\r\n let { companies, groups}=this.props\r\n const [currentCompany,subCompanys] =companies\r\n if(this.state.selectedCompany){\r\n groups=this.state.groups\r\n }\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\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 option.children.indexOf(input) >= 0\r\n }\r\n showSearch\r\n placeholder=\"选择所属群组\">\r\n\r\n {\r\n groups.map(item => {\r\n return {item.group_name}\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 connect(state => ({\r\n companies: state.companies,\r\n groups: state.groups\r\n}))(SearchBar)","//批量激活模态框组件\r\nimport React, { useState } from 'react';\r\nimport { Radio, Modal, Form, Select } from 'antd';\r\nconst BatchActivate = ({ visible, onSubmit, onCancel }) => {\r\n const [form] = Form.useForm();\r\n return (\r\n {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values,form);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 BatchActivate\r\n\r\n","import React, { useState } from 'react';\r\nimport { Radio, Modal, Form, Select, TreeSelect } from 'antd';\r\nimport { connect } from 'react-redux';\r\nconst { Option } = Select\r\nconst { TreeNode } = TreeSelect;\r\nconst BatchEditCompany = props => {\r\n const { visible, onCancel, onSubmit, companies } = props\r\n const [form] = Form.useForm();\r\n const [currentCompany, subCompanys] = companies\r\n return (\r\n {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 connect(\r\n state => ({ companies: state.companies })\r\n)(BatchEditCompany)","import React, { useState } from 'react';\r\nimport { Radio, Modal, Form, Select, TreeSelect } from 'antd';\r\nimport { connect } from 'react-redux';\r\nconst { Option } = Select\r\nconst { TreeNode } = TreeSelect;\r\nconst BatchEditDefaultGroup = ({ visible, onCancel, onSubmit,groups }) => {\r\n const [form] = Form.useForm();\r\n return (\r\n {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 connect(\r\n state=>({\r\n groups:state.groups\r\n })\r\n)(BatchEditDefaultGroup)","import React, { useState } from 'react';\r\nimport { Input, Modal, Form, Select, TreeSelect } from 'antd';\r\n\r\nconst BatchEditAccountPwd = ({ visible, onCancel, onSubmit }) => {\r\n const [form] = Form.useForm();\r\n return (\r\n {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values,form);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 BatchEditAccountPwd","//批量删除账号\r\nimport React, { useState,useEffect } from 'react';\r\nimport { Radio, Modal, Form, Input, Row, Col, Button } from 'antd';\r\nimport \"./index.less\"\r\nconst BatchDeleteAccount = ({ visible, onSubmit, onCancel }) => {\r\n const [form] = Form.useForm();\r\n const [url,setUrl] =useState(\"/api/validate_code/get_validate_code?type=1\")\r\n const handleOnClick=()=>{\r\n setUrl(\"/api/validate_code/get_validate_code?type=1&\"+new Date().getTime())\r\n }\r\n useEffect(()=>{\r\n setUrl(\"/api/validate_code/get_validate_code?type=1&\"+new Date().getTime())\r\n },[visible])\r\n return (\r\n {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values);\r\n form.resetFields()\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 BatchDeleteAccount\r\n\r\n","import { Modal, Form, Input, InputNumber} from \"antd\";\r\nimport React, { Component } from \"react\";\r\n\r\nclass EditPosition extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n\r\n }\r\n }\r\n formRef=React.createRef()\r\n onCancel = () => {\r\n console.log(this.props)\r\n this.props.onCancel()\r\n }\r\n onOk=e=>{\r\n // console.log(e )\r\n // console.log(this.formRef.current)\r\n this.formRef.current\r\n .validateFields()\r\n .then(values=>{\r\n this.props.onSubmit(values)\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\r\n });\r\n }\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n if(value<1||value>65535)\r\n throw new Error('端口号不合法!');\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 EditPosition","//批量激活模态框组件\r\nimport React, { useState } from 'react';\r\nimport { Radio, Modal, Form, Select,Input } from 'antd';\r\nconst EditMobile = ({ visible, onSubmit, onCancel }) => {\r\n const [form] = Form.useForm();\r\n return (\r\n {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values,form);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 EditMobile\r\n\r\n","//批量激活模态框组件\r\nimport React, { useState } from 'react';\r\nimport { Radio, Modal, Form, Select,Input } from 'antd';\r\nconst EditRemark = ({ visible, onSubmit, onCancel }) => {\r\n const [form] = Form.useForm();\r\n return (\r\n {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values,form);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 EditRemark\r\n","import React from 'react';\r\nimport { Drawer, Form, TreeSelect, Col, Button, Row, Input, Select, Table, Card, Tree, Switch, message, DatePicker } from 'antd';\r\nimport {\r\n LockOutlined,\r\n UnlockOutlined\r\n} from \"@ant-design/icons\"\r\nimport { reqGetAccountDetail, reqDeleteAccountGroup, reqEditAccount } from \"../../../../api\"\r\nimport store from \"../../../../utils/storeUtils\"\r\nimport LinkButton from \"../../../../components/link-button\";\r\nimport moment from \"moment\";\r\nimport SITE from \"../../../../config/siteConfig\"\r\nimport { connect } from \"react-redux\";\r\nconst { Option } = Select\r\nclass EditAccount extends React.Component {\r\n formRef = React.createRef()\r\n state = {\r\n accountDetail: {},\r\n addGroupVisible: false,\r\n checkedGroups: [],\r\n lockAccount: true,\r\n expandedKeys: [],\r\n loading: false,\r\n group_list: []\r\n }\r\n\r\n\r\n componentDidMount() {\r\n const { user_id, company_id,visible } = this.props\r\n if(visible){\r\n\r\n this.getDetail(user_id, company_id)\r\n }\r\n }\r\n UNSAFE_componentWillReceiveProps(nextProps) {\r\n const { user_id, company_id ,visible} = nextProps\r\n if(visible){\r\n \r\n this.getDetail(user_id, company_id)\r\n }\r\n }\r\n getDetail = async (user_id, company_id) => {\r\n\r\n const form = this.formRef.current\r\n this.setState({\r\n loading: true\r\n })\r\n const res = await reqGetAccountDetail(user_id, company_id)\r\n this.setState({\r\n group_list: res.data.group_list,\r\n loading: false\r\n })\r\n const service_end_time = res.data.user_info.service_end_time\r\n res.data.user_info.service_end_time = moment(service_end_time)\r\n if (res.data.user_info.default_group === 0) {\r\n delete res.data.user_info.default_group\r\n }\r\n\r\n form.setFieldsValue(res.data.user_info)\r\n form.setFieldsValue({ company_id: company_id })\r\n }\r\n closeAddGrop = () => {\r\n this.setState({\r\n addGroupVisible: false\r\n })\r\n }\r\n \r\n // treeData = [\r\n // {\r\n // title: currentCompany.company_name,\r\n // key: \"\",\r\n // children:\r\n // groups.map(item => {\r\n // return { title: item.group_name, key: item.group_id }\r\n // })\r\n\r\n // }\r\n\r\n // ];\r\n columns = [\r\n { title: '群组名称',align:'center', dataIndex: 'group_name' },\r\n { title: '所属公司',align:'center', dataIndex: 'company_name' },\r\n { title: '账号名称',align:'center', dataIndex: 'name' },\r\n {\r\n title: '优先级',\r\n dataIndex: 'priority',\r\n align:'center',\r\n render: (value) => {\r\n if (value === 1) return 普通\r\n else if (value === 2) return 中级\r\n else if (value === 3) return 高级\r\n }\r\n },\r\n {\r\n title: '操作',\r\n dataIndex: '',\r\n align:'center',\r\n key: 'x',\r\n render: record => { this.deleteAccountGroup(record) }}>删除,\r\n }\r\n ];\r\n //删除群组\r\n deleteAccountGroup = async (record) => {\r\n const { group_list } = this.state\r\n const { user_id } = this.props\r\n // 1.删除行\r\n // 2.发送请求删除群组\r\n const res = await reqDeleteAccountGroup(user_id, record.group_id)\r\n if (res.data?.result === 1) {\r\n //删除行\r\n const index = group_list.findIndex((item) => item.group_id === record.group_id);\r\n const newList = group_list.filter((item, i) => i !== index)\r\n this.setState({\r\n group_list: newList\r\n })\r\n message.success(\"删除成功\")\r\n }\r\n }\r\n //更新账号的群组列表\r\n updateUserGroup = (group_id, name) => {\r\n const { group_list } = this.state\r\n const index = group_list.findIndex(group => {\r\n return group.group_id === group_id\r\n })\r\n if (index === -1) { //群组列表中没有添加的群组\r\n const index2 = this.props.groups.findIndex(group => {\r\n return group.group_id === group_id\r\n })\r\n\r\n const addGroup = this.props.groups[index2]\r\n addGroup.name = name\r\n addGroup.company_name = \"未知\"\r\n addGroup.priority = 1\r\n const newList = group_list.concat([addGroup])\r\n this.setState({\r\n group_list:newList\r\n })\r\n }\r\n }\r\n //更新详情\r\n updataDetail = async (values) => {\r\n console.log(\"更新详情\", values)\r\n const { group_id, name, default_group } = values\r\n if (group_id) { //如果操作添加了群组\r\n this.updateUserGroup(group_id, name)\r\n }\r\n this.updateUserGroup(default_group, name)\r\n\r\n // const {user_id,company_id}=this.props\r\n // this.setState({\r\n // loading:true\r\n // })\r\n // const res = await reqGetAccountDetail(user_id, company_id)\r\n // this.setState({\r\n // loading:false\r\n // })\r\n // this.setState({\r\n // group_list:res.data.group_list\r\n // })\r\n // const service_end_time = res.data.user_info.service_end_time\r\n // res.data.user_info.service_end_time = moment(service_end_time)\r\n // if (res.data.user_info.default_group === 0) {\r\n // delete res.data.user_info.default_group\r\n // }\r\n // form.setFieldsValue(res.data.user_info)\r\n }\r\n editAccount = async () => {\r\n const { user_id, updataAccountTable } = this.props\r\n console.log(this.formRef.current)\r\n this.formRef.current.validateFields().then(\r\n async values => {\r\n const service_end_time = values.service_end_time?.format('YYYY-MM-DD HH:mm:ss')\r\n // 2.发起请求\r\n const res = await reqEditAccount({ user_id, ...values, service_end_time })\r\n // 3.更新账号详情\r\n if (res.data?.result === 1) {\r\n // if (checkedGroups.length > 0) {\r\n // message.success(\"添加成功\")\r\n // //清空选中的群组\r\n // setCheckedGroups([])\r\n // //关闭抽屉\r\n // closeAddGrop()\r\n // } else {\r\n message.success(\"编辑成功\")\r\n //更新账号列表\r\n updataAccountTable()\r\n // }\r\n this.updataDetail(values)\r\n } else {\r\n message.warn(res.data.err_msg)\r\n }\r\n }\r\n ).catch(errorInfo => { })\r\n // 1.获取表单数据\r\n\r\n }\r\n changeLock = () => {\r\n this.setState({\r\n lockAccount: !this.state.lockAccount\r\n })\r\n }\r\n onCheckedGroups = (checkedKeys) => {\r\n console.log('onCheck', checkedKeys);\r\n // setCheckedGroups(checkedKeys);\r\n this.state({\r\n checkedKeys\r\n })\r\n }\r\n\r\n getParentKey = (key, tree) => {\r\n const getParentKey = this.getParentKey\r\n let parentKey;\r\n for (let i = 0; i < tree.length; i++) {\r\n const node = tree[i];\r\n if (node.children) {\r\n if (node.children.some(item => item.key === key)) {\r\n parentKey = node.key;\r\n } else if (getParentKey(key, node.children)) {\r\n parentKey = getParentKey(key, node.children);\r\n }\r\n }\r\n }\r\n return parentKey;\r\n };\r\n //#region 废弃的\r\n // searchGroup = (e) => {\r\n\r\n // const { value } = e.target;\r\n // const Keys = this.treeData[0].children\r\n // .map(item => {\r\n // if (item.title.indexOf(value) > -1) {\r\n // return item.key\r\n // }\r\n // return null;\r\n // }).filter((item, i, self) => item && self.indexOf(item) === i);\r\n // // setExpandedKeys(Keys)\r\n // // this.setState({\r\n // // expandedKeys,\r\n // // searchValue: value,\r\n // // autoExpandParent: true,\r\n // // });\r\n // }\r\n //#endregion\r\n onClose = () => {\r\n\r\n this.formRef.current.setFieldsValue({ group_id: null })\r\n this.props.onCancel()\r\n this.setState({\r\n lockAccount: true\r\n })\r\n }\r\n render() {\r\n const { changeLock, editAccount, onClose, columns, formRef } = this\r\n const { loading, group_list, lockAccount } = this.state\r\n const { visible, companies, groups } = this.props\r\n // const {companies,groups} = this.props \r\n const [currentCompany, subCompanys] = companies\r\n\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\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n option.children.indexOf(input) >= 0\r\n }\r\n placeholder=\"请选择\"\r\n >\r\n \r\n {\r\n\r\n subCompanys.map(item => {\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\n option.children.indexOf(input) >= 0\r\n }\r\n placeholder=\"请选择\"\r\n >\r\n {\r\n\r\n groups.map(item => {\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 option.children.indexOf(input) >= 0\r\n }\r\n placeholder=\"请选择\"\r\n allowClear={true}\r\n >\r\n {\r\n\r\n groups.map(item => {\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 store.getCompanyInfo().parent === 0 ?\r\n \r\n \r\n \r\n \r\n : null\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 { setAddGroupVisible(true) }}>新增群组}\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 connect(\r\n state => ({ groups: state.groups, companies: state.companies })\r\n)(EditAccount)","import React, { PureComponent } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button } from 'antd';\r\nimport {\r\n DownloadOutlined\r\n} from '@ant-design/icons';\r\n// import User from '/utils/user';\r\n// import times from '_TOOLS_/times';\r\n// import styles from './index.less';\r\n\r\n\r\n// const downFileBtn = styles.downFileBtn;\r\n\r\nclass FileDown extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loadingStatus: true,\r\n buttonDisabled: false\r\n }\r\n }\r\n\r\n //文件下载操作\r\n handleDownFile = (event, api_url, options) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n //如果传了options 拼接到url上\r\n if (options !== undefined) {\r\n let queryArr = [];\r\n for (const key in options) {\r\n if (options[key]) {//如果有值再传\r\n queryArr.push(key + '=' + options[key])\r\n }\r\n }\r\n let queryStr = queryArr.join('&');\r\n debugger\r\n api_url += (\"?\" + queryStr)\r\n }\r\n //开启loading 按钮置灰\r\n this.setState({\r\n loadingStatus: false,\r\n buttonDisabled: true,\r\n });\r\n fetch(api_url, {\r\n method: 'get',\r\n credentials: 'include',\r\n }).then((res) => {\r\n return res.blob()\r\n }).then(res => {\r\n // 对blob对象进行处理\r\n const a = document.createElement('a');\r\n const body = document.querySelector('body');\r\n // 这里注意添加需要下载的文件后缀;\r\n a.download = '账号列表.xls';\r\n a.href = window.URL.createObjectURL(res);\r\n a.style.display = 'none';\r\n body.appendChild(a);\r\n a.click();\r\n body.removeChild(a);\r\n window.URL.revokeObjectURL(a.href);\r\n this.setState({\r\n loadingStatus: true,\r\n buttonDisabled: false,\r\n });\r\n\r\n }).catch((error) => {\r\n //关闭loading 按钮恢复正常\r\n this.setState({\r\n loadingStatus: false,\r\n buttonDisabled: false,\r\n });\r\n console.log('文件下载失败', error);\r\n });\r\n };\r\n render() {\r\n const { api_url, text, options, downFileBtnClass } = this.props;\r\n const { loadingStatus, buttonDisabled } = this.state;\r\n return (\r\n }\r\n className={downFileBtnClass}\r\n onClick={(event) => this.handleDownFile(event, api_url, options)}\r\n disabled={buttonDisabled}\r\n >\r\n {/* */}\r\n {loadingStatus ? text : '下载中...'}\r\n \r\n );\r\n }\r\n}\r\n\r\n//定义属性 类型以及是否必填项\r\nFileDown.proTypes = {\r\n api_url: PropTypes.isRequired\r\n};\r\n//定义属性的默认值\r\nFileDown.defaultProps = {\r\n text: '文件下载',\r\n icon: 'download',\r\n // downFileBtnClass: downFileBtn,\r\n};\r\nexport default FileDown;","import React from 'react';\r\nimport tinytime from 'tinytime';\r\nimport LinkButton from \"../../../components/link-button\"\r\nimport {\r\n reqAccountList\r\n , reqBatchActivate\r\n , reqBatchEditCompany\r\n , reqBatchEditDefaultGroup\r\n , reqBatchEditAccountPwd\r\n , reqBatchDeleteAccount\r\n , reqDeleteAccount\r\n , reqEditTempCall\r\n , reqEditOpenPosition\r\n , reqEditMobile\r\n , reqEditPosition\r\n , reqEditRemark\r\n} from \"../../../api\"\r\nimport SearchBar from \"./search-bar\"\r\nimport BatchActivate from \"./batch-activate\"\r\nimport BatchEditCompany from \"./batch-edit-company\"\r\nimport BatchEditDefaultGroup from \"./batch-edit-default-group\"\r\nimport BatchEditAccountPwd from \"./batch-edit-account-pwd\"\r\nimport BatchDeleteAccount from \"./batch-delete-account\"\r\nimport EditPosition from './batch-edit-position';\r\nimport EditMobile from \"./edit-mobile/edit-mobile\"\r\nimport EditRemark from \"./edit-remark\"\r\nimport EditAccount from \"./edit-account\"\r\nimport FileDown from \"../../../components/file-down/file-down.jsx\"\r\nimport { Form, Input } from \"antd\"\r\nimport { connect } from \"react-redux\"\r\nimport {\r\n TransactionOutlined\r\n , BranchesOutlined\r\n , TeamOutlined\r\n , CloseSquareOutlined\r\n , EyeInvisibleOutlined\r\n , EnvironmentOutlined\r\n , OrderedListOutlined\r\n\r\n} from '@ant-design/icons';\r\nimport {\r\n Button\r\n , Table\r\n , Switch\r\n , Space\r\n , message\r\n , Popconfirm\r\n , Popover\r\n , Checkbox\r\n , Row\r\n , Col\r\n} from 'antd';\r\nimport \"./index.css\"\r\nconst { Item } = Form;\r\n\r\nclass AccountList extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n currentEditAccountInfo: {},\r\n loading: false,\r\n tableLoading: false,\r\n rowSelection: [],\r\n selectedRowKeys: [],\r\n data: [],\r\n total: 0,\r\n page: { current: 1, pageSize: 30 },\r\n options: {\r\n // order_by: \"user_create_time\",\r\n // order_dir: 0\r\n },\r\n editMobileVisible: false,\r\n editRemarkVisible: false,\r\n batchActivateVisible: false,\r\n editPositionVisible: false,\r\n showColums: ['service_begin_time', 'remark']\r\n }\r\n }\r\n componentDidMount() {\r\n this.getAccountList()\r\n }\r\n getAccountList = async () => {\r\n const { page, options } = this.state\r\n const { current, pageSize } = page\r\n\r\n this.setState({\r\n tableLoading: true\r\n })\r\n const res = await reqAccountList({ ...options, page_size: pageSize, page_index: current })\r\n\r\n if (res.code === 200) {\r\n //改变总条数total 展开 「...page」 以确保我们没有 「丢失」 pageSize 和 current\r\n this.setState({\r\n tableLoading: false,\r\n total: res.data.row_count,\r\n data: res.data.user_list\r\n })\r\n } else {\r\n message.error(\"获取账号列表失败\")\r\n }\r\n }\r\n columns = [\r\n // Table.SELECTION_COLUMN,\r\n {\r\n title: '登录账号',\r\n width: 140,\r\n fixed: 'left',\r\n align:'center',\r\n dataIndex: 'user_account',\r\n },\r\n {\r\n title: '账号名称',\r\n width: 100,\r\n align:'center',\r\n dataIndex: 'name',\r\n },\r\n {\r\n title: 'ICCID',\r\n width: 140,\r\n align:'center',\r\n dataIndex: 'iccid',\r\n },\r\n {\r\n title: 'IMEI',\r\n width: 120,\r\n align:'center',\r\n dataIndex: 'imei',\r\n },\r\n {\r\n title: '所属集团',\r\n width: 90,\r\n align:'center',\r\n dataIndex: 'company_name',\r\n },\r\n {\r\n title: '状态',\r\n width: 40,\r\n align:'center',\r\n dataIndex: 'user_enable',\r\n render: value => {\r\n switch (value) {\r\n case 0: return 未激活\r\n case 1: return 可用\r\n case 2: return 暂停\r\n case 3: return 禁言\r\n default: return 停用\r\n }\r\n }\r\n },\r\n {\r\n\r\n title: '创建时间',\r\n width: 120,\r\n align:'center',\r\n dataIndex: 'user_create_time',\r\n },\r\n {\r\n\r\n title: '启用时间',\r\n width: 120,\r\n align:'center',\r\n // sorter:true,\r\n dataIndex: 'service_begin_time',\r\n },\r\n {\r\n title: '到期时间',\r\n width: 120,\r\n align:'center',\r\n dataIndex: 'service_end_time',\r\n sorter: true,\r\n render: (value) => {\r\n if (new Date(value).getTime() < new Date().getTime()) {\r\n return
{value}
\r\n } else {\r\n return
{value}
\r\n }\r\n }\r\n },\r\n {\r\n title: '设备ID',\r\n dataIndex: \"device_id\",\r\n width: 90,\r\n align:'center',\r\n dataIndex: 'device_id',\r\n },\r\n {\r\n title: '位置服务地址',\r\n dataIndex: \"location_server\",\r\n width: 120,\r\n align:'center',\r\n render: (value, record) => {\r\n return {value ? `${value}:${record.location_server_port}` : \"\"}\r\n }\r\n },\r\n // {\r\n // title: '关联手机号',\r\n // width: 80,\r\n // dataIndex: 'mobile',\r\n // render: (value, record) => {\r\n // return { this.setState({ editMobileVisible: true, currentEditAccountInfo: record }); }}>{value ? value : \"关联手机号\"}\r\n // }\r\n // },\r\n {\r\n title: '备注',\r\n width: 110,\r\n ellipsis: true,\r\n align:'center',\r\n dataIndex: 'remark',\r\n render: (value, record) => {\r\n return { this.setState({ editRemarkVisible: true, currentEditAccountInfo: record }); }}>{value ? value : \"备注\"}\r\n }\r\n },\r\n {\r\n title: '单呼',\r\n width: 30,\r\n align:'center',\r\n dataIndex: 'temp_call',\r\n render: (value, record) => { this.editTempCall(checked, value, record) }} defaultChecked={value} />\r\n },\r\n {\r\n title: '定位',\r\n width: 30,\r\n align:'center',\r\n dataIndex: 'open_position',\r\n render: (value, record) => { this.editOpenPosition(checked, value, record) }} defaultChecked={value} />\r\n },\r\n {\r\n title: '操作',\r\n width: 100,\r\n fixed: 'right',\r\n align:'center',\r\n render: (text, record) => {\r\n return (\r\n \r\n {\r\n record.user_enable === 0 ? null : { this.setState({ currentEditAccountInfo: record, editAccountVisible: true }) }}>修改\r\n }\r\n { this.confirmDeleteSingleAccount(record) }}\r\n okText=\"删除\"\r\n cancelText=\"取消\"\r\n >\r\n 删除\r\n \r\n \r\n )\r\n }\r\n },\r\n ]\r\n editMobile = async (values, form) => {\r\n const { user_id } = this.state.currentEditAccountInfo\r\n const { mobile } = values\r\n const res = await reqEditMobile(user_id, mobile)\r\n if (res.data.result === 1) {\r\n // setEMobileVisible(false)\r\n this.setState({\r\n editMobileVisible: false\r\n })\r\n message.success(\"修改成功\")\r\n form.resetFields()\r\n //更新表格\r\n this.updataTable()\r\n } else {\r\n message.error(res.data.err_msg)\r\n }\r\n }\r\n editRemark = async (values, form) => {\r\n const { user_id } = this.state.currentEditAccountInfo\r\n let { remark } = values\r\n remark = remark || \"备注\"\r\n const res = await reqEditRemark(user_id, remark)\r\n if (res.data.result === 1) {\r\n // setEMobileVisible(false)\r\n this.setState({\r\n editRemarkVisible: false\r\n })\r\n message.success(\"修改备注成功\")\r\n form.resetFields()\r\n //更新表格\r\n this.updataTable()\r\n } else {\r\n message.error(res.data.err_msg)\r\n }\r\n }\r\n //批量激活\r\n activate = async (values, form) => {\r\n const res = await reqBatchActivate(this.state.selectedRowKeys.join(\",\"), values.card_type)\r\n if (res.data.result === 1) {\r\n // setBatchActivateVisible(false)\r\n this.setState({\r\n batchActivateVisible: false\r\n })\r\n message.success(\"激活成功\")\r\n form.resetFields()\r\n //更新表格\r\n this.updataTable()\r\n } else {\r\n message.error(res.data.err_msg)\r\n }\r\n }\r\n //批量分配\r\n editCompany = async (values) => {\r\n const res = await reqBatchEditCompany(this.state.selectedRowKeys.join(\",\"), values.company_id)\r\n if (res.data.result === 1) {\r\n // setEditCompanyVisible(false)\r\n this.setState({\r\n editCompanyVisible: false\r\n })\r\n //更新表格\r\n message.success(\"分配成功\")\r\n this.updataTable()\r\n }\r\n }\r\n // //批量设置默认群组\r\n editDefaultGroup = async (values) => {\r\n const res = await reqBatchEditDefaultGroup(this.state.selectedRowKeys.join(\",\"), values.group_id)\r\n if (res.data.result === 1) {\r\n // setEditDefaultGroupVisible(false)\r\n this.setState({\r\n editDefaultGroupVisible: false\r\n })\r\n //更新表格\r\n message.success(\"设置默认群组成功\")\r\n }\r\n }\r\n //批量设置位置服务\r\n editPosition = async (values) => {\r\n const options = {\r\n user_ids: this.state.selectedRowKeys,\r\n ...values\r\n }\r\n const res = await reqEditPosition(options)\r\n if (res.data.result === 1) {\r\n // setEditPositionVisible(false)\r\n this.setState({\r\n editPositionVisible: false\r\n })\r\n //更新表格\r\n message.success(\"设置位置服务成功\")\r\n this.updataTable()\r\n }\r\n }\r\n // //批量设置账号密码\r\n editUserPwd = async (values, form) => {\r\n const res = await reqBatchEditAccountPwd(this.state.selectedRowKeys.join(\",\"), values.pwd)\r\n if (res.data.result === 1) {\r\n // setEditUserPwdVisible(false)\r\n this.setState({\r\n editUserPwdVisible: false\r\n })\r\n form.resetFields()\r\n //更新表格\r\n message.success(\"修改密码成功\")\r\n }\r\n }\r\n //批量删除账号\r\n deleteAccount = async (values) => {\r\n const res = await reqBatchDeleteAccount(this.state.selectedRowKeys.join(\",\"), values.validate_code)\r\n if (res.data?.result === 1) {\r\n this.setState({\r\n deleteAccountVisible: false\r\n })\r\n //更新表格\r\n message.success(\"删除成功\")\r\n this.updataTable()\r\n } else {\r\n message.error(\"验证码不正确\")\r\n }\r\n }\r\n //刷新表格\r\n updataTable = async () => {\r\n const { options } = this.state\r\n const { current, pageSize } = this.state.page\r\n const res = await reqAccountList({ ...options, page_size: pageSize, page_index: current })\r\n //改变总条数total 展开 「...page」 以确保我们没有 「丢失」 pageSize 和 current\r\n this.setState({\r\n total: res.data.row_count,\r\n data: res.data.user_list\r\n })\r\n }\r\n //删除单个账号\r\n confirmDeleteSingleAccount = async (record) => {\r\n const { user_id, company_id } = record\r\n const res = await reqDeleteAccount(user_id, company_id)\r\n if (res.data.result === 1) {\r\n message.success(\"删除成功\")\r\n this.updataTable()\r\n }\r\n }\r\n //设置单呼 \r\n editTempCall = async (checked, value, record) => {\r\n //value:账号的当前单呼权限状态\r\n //checked 开关Swich改变后的状态\r\n //record 当前操作的行信息\r\n const { user_id } = record\r\n const res = await reqEditTempCall(user_id, checked)\r\n if (res.data.result === 1) {\r\n message.success(\"操作成功!\")\r\n }\r\n }\r\n editOpenPosition = async (checked, value, record) => {\r\n //value:账号的当前定位权限状态\r\n //checked 开关Swich改变后的状态\r\n //record 当前操作的行信息\r\n const { user_id } = record\r\n const res = await reqEditOpenPosition(user_id, checked)\r\n if (res.data.result === 1) {\r\n message.success(\"操作成功!\")\r\n }\r\n }\r\n onSearch = async (options) => {\r\n\r\n const range = options.range_time\r\n if (range) {\r\n const template = tinytime('{YYYY}/{Mo}/{DD} {H}:{mm}:{ss}')\r\n options.end_time_start = template.render(new Date(range[0]))\r\n options.end_time_end = template.render(new Date(range[1]))\r\n }\r\n delete options.range_time\r\n //搜索\r\n const { current, pageSize } = this.state.page\r\n // const res = await reqAccountList({ ...options, page_size: pageSize, page_index: 1 })\r\n const { order_by, order_dir } = this.state.options\r\n options.order_by = order_by\r\n options.order_dir = order_dir\r\n this.setState({\r\n options,\r\n page: { current: 1, pageSize }\r\n }, () => {\r\n this.getAccountList()\r\n })\r\n // setOptions(options)\r\n // setPage({ current: 1, pageSize })\r\n // setTotal(res.data.row_count);\r\n // setData(res.data.user_list)\r\n }\r\n // // 分页、排序、筛选变化时触发\r\n handleTableChange = (page, filters, sorter) => {\r\n\r\n let { options } = this.state\r\n const { field, order } = sorter\r\n //如果不排序 删除掉排序属性\r\n if (order !== undefined) {\r\n options = { ...options, order_by: field, order_dir: order === 'ascend' ? 1 : 0 }\r\n }\r\n this.setState({\r\n options,\r\n page\r\n }, () => {\r\n this.getAccountList()\r\n })\r\n\r\n //改变state 会重新执行 useEffect副作用(发起异步请求获取UserList)\r\n // setPage(page)\r\n //分页状态变化 清空当前列表数据 否则可能会引起 total总数据长度 大于 pageSize\r\n // Warning: [antd: Table] `dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode. \r\n // setData([])\r\n\r\n\r\n }\r\n cancelActivate = () => {\r\n this.setState({\r\n editAccountVisible: false\r\n })\r\n }\r\n onSelectChange = selectedRow => {\r\n this.setState({\r\n selectedRowKeys: selectedRow\r\n })\r\n };\r\n cancelEditCompany = () => {\r\n this.setState({\r\n editCompanyVisible: false\r\n })\r\n }\r\n cancelEditDefaultGroup = () => {\r\n this.setState({\r\n editDefaultGroupVisible: false\r\n })\r\n }\r\n cancelEditUserPwd = () => {\r\n this.setState({\r\n editUserPwdVisible: false\r\n })\r\n }\r\n cancelDeleteAccount = () => {\r\n this.setState({\r\n deleteAccountVisible: false\r\n })\r\n }\r\n cancelEditRemark = () => {\r\n this.setState({\r\n editRemarkVisible: false\r\n })\r\n }\r\n cancelEditPosition = () => {\r\n this.setState({\r\n editPositionVisible: false\r\n })\r\n }\r\n cancelActivate = () => {\r\n this.setState({\r\n batchActivateVisible: false\r\n })\r\n }\r\n cancelEditAccount = () => {\r\n this.setState({\r\n editAccountVisible: false\r\n })\r\n }\r\n cancelEditMobile = () => {\r\n this.setState({\r\n editMobileVisible: false\r\n })\r\n }\r\n columsOnChange = (checkedValues) => {\r\n console.log(console.log('checked = ', checkedValues))\r\n this.setState({\r\n showColums: checkedValues\r\n })\r\n }\r\n //求两个数组的差集\r\n subSet = function (arr1, arr2) {\r\n var set1 = new Set(arr1);\r\n var set2 = new Set(arr2);\r\n\r\n var subset = [];\r\n\r\n for (let item of set1) {\r\n if (!set2.has(item)) {\r\n subset.push(item);\r\n }\r\n }\r\n\r\n return subset;\r\n };\r\n render() {\r\n\r\n const { page, data, total, options, loading, tableLoading, selectedRowKeys, currentEditAccountInfo\r\n , editAccountVisible\r\n , editPositionVisible\r\n , editUserPwdVisible\r\n , deleteAccountVisible\r\n , editDefaultGroupVisible\r\n , editCompanyVisible\r\n , batchActivateVisible\r\n , editMobileVisible\r\n , editRemarkVisible\r\n } = this.state\r\n const {\r\n onSelectChange\r\n , handleTableChange\r\n , activate\r\n , editUserPwd\r\n , deleteAccount\r\n , editMobile\r\n , editRemark\r\n , editDefaultGroup\r\n , editCompany\r\n , onSearch, cancelEditCompany\r\n , cancelEditDefaultGroup\r\n , cancelEditUserPwd\r\n , cancelDeleteAccount\r\n , cancelEditPosition\r\n , cancelEditAccount\r\n , cancelEditMobile\r\n , cancelEditRemark\r\n , cancelActivate\r\n , updataTable\r\n , editPosition\r\n , columsOnChange\r\n } = this\r\n\r\n const rowSelection = {\r\n selectedRowKeys,\r\n onChange: onSelectChange,\r\n }\r\n\r\n const hasSelected = selectedRowKeys.length > 0;\r\n // 要隐藏的列\r\n const dfHideColumns = ['imei', 'iccid', 'location_server', 'service_begin_time','remark','user_create_time','device_id'] //, 'mobile'\r\n //\r\n const hideColumns = this.subSet(dfHideColumns, this.state.showColums)\r\n const columns = this.columns.filter(column => {\r\n return hideColumns.findIndex(i => column?.dataIndex === i) === -1\r\n })\r\n\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 {Object.getOwnPropertyNames(currentEditAccountInfo).length !== 0 ? : null}\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 {hasSelected ? `已选中 ${selectedRowKeys.length} 行` : ''}\r\n \r\n \r\n \r\n \r\n ICCID\r\n \r\n \r\n IEMI\r\n \r\n \r\n 启用时间\r\n \r\n \r\n 位置服务\r\n \r\n \r\n 创建时间\r\n \r\n \r\n 设备ID\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 `总记录: ${total} 条`, showQuickJumper: true, position: [\"bottomCenter\"] }}\r\n onChange={handleTableChange}\r\n sticky\r\n loading={tableLoading}\r\n scroll={{ x: 1500 }}\r\n bordered\r\n // expandable={{\r\n // expandedRowRender: record =>

{record.remark}

,\r\n // rowExpandable: record => !!record.name\r\n // }}\r\n >\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default AccountList","import {Switch,Route,Redirect} from \"react-router-dom\"\r\nimport AccountAdd from \"./account-add\"\r\nimport AccountList from \"./account-list\"\r\nconst Account =()=>{ \r\n return(\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\nexport default Account","import { useEffect } from \"react\";\r\nimport { Modal, Form, Radio } from \"antd\";\r\nconst EditSpeechSecond = ({ visible, onCancel, onSubmit,limit_sencond }) => {\r\n const [form] = Form.useForm()\r\n useEffect(()=>{\r\n form.setFieldsValue({\r\n second:limit_sencond\r\n })\r\n },[limit_sencond,form])\r\n return (\r\n {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\r\n });\r\n }}\r\n\r\n >\r\n \r\n \r\n \r\n 30s\r\n 60s\r\n 120s\r\n \r\n \r\n \r\n \r\n )\r\n}\r\nexport default EditSpeechSecond","//批量激活模态框组件\r\nimport React, { useState } from 'react';\r\nimport { Radio, Modal, Form, Select,Input } from 'antd';\r\nconst EditGroupRemark = ({ visible, onSubmit, onCancel }) => {\r\n const [form] = Form.useForm();\r\n return (\r\n {\r\n form.resetFields()\r\n onCancel()\r\n }}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values,form);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 EditGroupRemark\r\n","import { useState } from \"react\"\r\nimport {connect} from \"react-redux\"\r\nimport {\r\n Form\r\n , Row\r\n , Col\r\n , Input\r\n , Button\r\n , Select\r\n , DatePicker\r\n} from 'antd';\r\nimport \"./index.less\"\r\nconst { RangePicker } = DatePicker;\r\nconst SearchBar = props => {\r\n //查询按钮加载中\r\n const [loading, setLoading] = useState(false);\r\n const [form] = Form.useForm();\r\n //选择公司\r\n const [currentCompany, subCompanys] = props.companies;\r\n //当前选择的公司\r\n let [selectedCompany, setSelectedCompany] = useState(-1);\r\n //选择群组\r\n const onCompanychange = value => {\r\n setSelectedCompany(value)\r\n }\r\n const onFinish = (values) => {\r\n setLoading(true)\r\n //清楚空属性\r\n for (const key in values) {\r\n if (values[key]) {\r\n continue\r\n } else {\r\n delete values[key]\r\n }\r\n }\r\n //onSearch是async函数 n为返回的promist\r\n const resultPromise = props.onSearch(values)\r\n //如果promisi是成功状态说明查询已经完毕\r\n resultPromise.then(res => {\r\n setLoading(false)\r\n })\r\n };\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 option.children.indexOf(input) >= 0\r\n }\r\n onChange={onCompanychange}\r\n placeholder=\"选择所属公司\">\r\n {\r\n {currentCompany.company_name}\r\n }\r\n {\r\n subCompanys.map(item => {\r\n //这里必须有唯一的key属性 否者会引起报错 Each child in a list should have a unique \"key\" prop\r\n return {item.company_name}\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 form.resetFields();\r\n }}\r\n >\r\n 重置\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\nexport default connect(\r\n state=>({companies:state.companies})\r\n)(SearchBar)","import { useState, useEffect } from \"react\"\r\nimport { Space, Table, message, Popconfirm } from \"antd\"\r\nimport { useHistory, Link } from \"react-router-dom\"\r\nimport EditSpeechSecond from \"../components/edit-speech-second\"\r\nimport EditGroupRemark from \"../components/edit-group-remark\"\r\nimport tinytime from 'tinytime';\r\nimport SearchBar from \"../components/search-bar\";\r\nimport \"./index.less\"\r\nimport { render } from \"@testing-library/react\";\r\nimport LinkButton from \"../../../components/link-button\";\r\nimport { reqGetGroupList, reqEditSpeechSecond, reqDeleteGroup, reqEditGroupRemark } from \"../../../api\"\r\nimport { connect } from \"react-redux\";\r\nimport { delete_group_by_id } from \"../../../redux/actions\"\r\n\r\nconst GroupList = props => {\r\n const history = useHistory()\r\n const [options, setOptions] = useState({})\r\n //分页状态\r\n const [total, setTotal] = useState(0);\r\n const [page, setPage] = useState({ current: 1, pageSize: 30 });\r\n const [tableLoading, setTableLoading] = useState()\r\n const [data, setData] = useState([])\r\n const [currentEdit, setCurrentEdit] = useState({})\r\n const [editRemarkVisible, setEditRemarkVisible] = useState(false)\r\n // 分页、排序、筛选变化时触发\r\n const handleTableChange = (page, filters, sorter) => {\r\n //改变state 会重新执行 useEffect副作用(发起异步请求获取UserList)\r\n const { field, order } = sorter\r\n\r\n //如果不排序 删除掉排序属性\r\n if (order === undefined) {\r\n delete options.order_by\r\n delete options.order_dir\r\n } else { //如果有排序 加上排序属性\r\n setOptions({ ...options, order_by: sorter.field, order_dir: sorter.order === 'ascend' ? 1 : 0 })\r\n }\r\n setPage(page)\r\n //分页状态变化 清空当前列表数据 否则可能会引起 total总数据长度 大于 pageSize\r\n // Warning: [antd: Table] `dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode. \r\n setData([])\r\n }\r\n const onSearch = async (options) => {\r\n const range = options.range_time\r\n if (range) {\r\n const template = tinytime('{YYYY}/{Mo}/{DD} {H}:{mm}:{ss}')\r\n options.start_creat_time = template.render(new Date(range[0]))\r\n options.end_creat_time = template.render(new Date(range[1]))\r\n }\r\n delete options.range_time\r\n //搜索\r\n const { current, pageSize } = page\r\n // const res = await reqAccountList({ ...options, page_size: pageSize, page_index: 1 })\r\n setOptions(options)\r\n setPage({ current: 1, pageSize })\r\n // setTotal(res.data.row_count);\r\n // setData(res.data.user_list)\r\n }\r\n const updataTable = async () => {\r\n const { current, pageSize } = page\r\n const res = await reqGetGroupList({ ...options, page_size: pageSize, page_index: current })\r\n //改变总条数total 展开 「...page」 以确保我们没有 「丢失」 pageSize 和 current\r\n setTotal(res.data.row_count);\r\n setData(res.data.user_list)\r\n }\r\n //编辑通话时长 是否可见\r\n const [editSpeechSecondVisible, setEditSpeechSecondVisible] = useState(false)\r\n //取消编辑通话时长\r\n const cancelEditSpeechSecond = () => {\r\n setEditSpeechSecondVisible(false)\r\n }\r\n //编辑通话时长\r\n const editSpeechSecond = async (values) => {\r\n\r\n const res = await reqEditSpeechSecond(currentEdit.group_id, values.second)\r\n if (res.data.result === 1) {\r\n setEditSpeechSecondVisible(false)\r\n //更新表格\r\n message.success(\"设置通话时长成功\")\r\n updataTable()\r\n }\r\n }\r\n //确认删除群组\r\n const confirmDeleteGroup = async (record) => {\r\n const { group_id } = record\r\n const res = await reqDeleteGroup(group_id)\r\n if (res.data?.result === 1) {\r\n message.success(\"删除成功\")\r\n updataTable()\r\n //更新redux\r\n props.delete_group_by_id(group_id)\r\n } else {\r\n message.error(res.data.err_msg)\r\n }\r\n }\r\n useEffect(() => {\r\n const getAccountList = async () => {\r\n const { current, pageSize } = page\r\n setTableLoading(true)\r\n const res = await reqGetGroupList({ ...options, page_size: pageSize, page_index: current })\r\n setTableLoading(false)\r\n if (res.code === 200) {\r\n //改变总条数total 展开 「...page」 以确保我们没有 「丢失」 pageSize 和 current\r\n setTotal(res.data.row_count);\r\n setData(res.data.user_list)\r\n } else {\r\n message.error(\"获取账号列表失败\")\r\n }\r\n\r\n }\r\n getAccountList()\r\n }, [page, options])\r\n const columns = [\r\n {\r\n title: \"群组名称\",\r\n dataIndex: \"group_name\",\r\n align:'center',\r\n }\r\n , {\r\n title: \"通话时长(秒)\",\r\n dataIndex: \"limit_sencond\",\r\n align:'center',\r\n sorter: true,\r\n },\r\n {\r\n title: \"群组类型\",\r\n dataIndex: \"group_type\",\r\n align:'center',\r\n render: (value) => {\r\n if (value === 1) {\r\n return 普通群组\r\n } else if (value === 2) {\r\n return 超级调度\r\n } else if (value === 3) {\r\n return 关联组\r\n } else {\r\n return {value}\r\n }\r\n }\r\n },\r\n {\r\n title: \"创建时间\",\r\n dataIndex: \"creat_time\",\r\n align:'center',\r\n sorter: true,\r\n },\r\n {\r\n title: \"所属公司\",\r\n dataIndex: \"company_name\",\r\n align:'center'\r\n }\r\n , \r\n {\r\n title: '备注',\r\n width: 220,\r\n ellipsis:true,\r\n dataIndex: 'remark',\r\n align:'center',\r\n render: (value, record) => {\r\n return { setEditRemarkVisible(true); setCurrentEdit(record) }}>{value ? value : \"备注\"}\r\n }\r\n },\r\n , {\r\n title: \"操作\",\r\n align:'center',\r\n width: 300\r\n ,\r\n render: (record) => {\r\n return (\r\n \r\n {\r\n props.history.push({ pathname: `/group/edit/${record.group_id}/${record.company_id}` })\r\n }}>修改群组\r\n {\r\n props.history.push({ pathname: `/group/member/${record.group_id}` })\r\n }}\r\n >成员管理\r\n {\r\n setCurrentEdit(record)\r\n setEditSpeechSecondVisible(true)\r\n }}\r\n >通话时长\r\n { confirmDeleteGroup(record) }}\r\n okText=\"删除\"\r\n cancelText=\"取消\"\r\n >\r\n 删除\r\n \r\n \r\n )\r\n }\r\n }\r\n ]\r\n const editRemark = async (values, form) => {\r\n const { group_id } = currentEdit\r\n let { remark } = values\r\n remark=remark||'备注'\r\n const res = await reqEditGroupRemark(group_id, remark)\r\n if (res.data.result === 1) {\r\n // setEMobileVisible(false)\r\n setEditRemarkVisible(false)\r\n message.success(\"修改备注成功\")\r\n form.resetFields()\r\n //更新表格\r\n updataTable()\r\n } else {\r\n message.error(res.data.err_msg)\r\n }\r\n }\r\n const cancelEditRemark = () => {\r\n setEditRemarkVisible(false)\r\n }\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n `总记录: ${total} 条`, showQuickJumper: true, position: [\"bottomCenter\"] }}\r\n sticky\r\n loading={tableLoading}\r\n bordered\r\n >\r\n\r\n
\r\n
\r\n
\r\n )\r\n}\r\nexport default connect(\r\n null,\r\n { delete_group_by_id }\r\n)(GroupList) ","import { useState, useRef } from \"react\"\r\nimport { Form, Input, Select, Transfer, Button, Steps, message, Space } from \"antd\"\r\nimport { connect } from \"react-redux\";\r\nconst { Item } = Form\r\nconst { Option } = Select\r\nconst formItemLayout = {\r\n labelCol: {\r\n xs: {\r\n span: 12,\r\n },\r\n sm: {\r\n span: 6,\r\n },\r\n },\r\n wrapperCol: {\r\n xs: {\r\n span: 12,\r\n },\r\n sm: {\r\n span: 8,\r\n },\r\n },\r\n};\r\nconst tailFormItemLayout = {\r\n wrapperCol: {\r\n xs: {\r\n span: 24,\r\n offset: 0,\r\n },\r\n sm: {\r\n span: 16,\r\n offset: 6,\r\n },\r\n },\r\n};\r\nconst AddForm = ({ onNextStep, onSubmit,groups,companies }) => {\r\n const [form] = Form.useForm()\r\n const refForm = useRef(form);\r\n //选择公司\r\n const [currentCompany, subCompanys] = companies;\r\n const [tansferVisible, setTransferVisible] = useState(false)\r\n //已选中的关联群组\r\n const [selectedGroups, setSelectedGroups] = useState([])\r\n const onSelectedChange = (values) => {\r\n setSelectedGroups(values)\r\n }\r\n const createGroup = () => {\r\n refForm.current\r\n .validateFields()\r\n .then(values => {\r\n values.union_group = selectedGroups\r\n onSubmit(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\r\n });\r\n }\r\n const submit = () => {\r\n refForm.current\r\n .validateFields()\r\n .then(values => {\r\n values.union_group = selectedGroups\r\n onNextStep(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\r\n });\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {\r\n if (value === 3) {\r\n setTransferVisible(true)\r\n } else {\r\n setTransferVisible(false)\r\n }\r\n }}>\r\n \r\n {/* \r\n */}\r\n \r\n \r\n \r\n \r\n option.children.indexOf(input) >= 0\r\n }\r\n placeholder=\"选择所属公司\">\r\n\r\n {\r\n {currentCompany.company_name}\r\n }\r\n {\r\n subCompanys.map(item => {\r\n //这里必须有唯一的key属性 否者会引起报错 Each child in a list should have a unique \"key\" prop\r\n return {item.company_name}\r\n })\r\n }\r\n \r\n \r\n\r\n {\r\n tansferVisible ? (\r\n \r\n {\r\n item.key = item.group_id\r\n return item\r\n })}\r\n render={item => item.group_name}\r\n targetKeys={selectedGroups}\r\n onChange={onSelectedChange}\r\n titles={['群组列表', '关联列表']}\r\n >\r\n \r\n ) : null\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 connect(\r\n state=>({\r\n groups:state.groups,\r\n companies:state.companies\r\n })\r\n)(AddForm)","import { Row, Col, Select, Button, Input, Space, Form, message } from \"antd\"\r\nimport { reqAccountList } from \"../../../api\";\r\nimport { Table } from \"antd\";\r\nimport { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nconst columns = [\r\n {\r\n title: \"账号\",\r\n dataIndex: \"user_account\",\r\n align:'center'\r\n }, {\r\n title: \"名称\",\r\n dataIndex: \"name\",\r\n align:'center'\r\n }, {\r\n title: \"所属公司\",\r\n dataIndex: \"company_name\",\r\n align:'center'\r\n }, {\r\n title: \"状态\",\r\n dataIndex: \"user_enable\",\r\n render: value => {\r\n if (value === 1) {\r\n return 可用\r\n } else if (value === 2) {\r\n return 暂停\r\n } else if (value === 3) {\r\n return 禁言\r\n } else {\r\n return 未激活\r\n }\r\n }\r\n }, {\r\n title: \"到期时间\",\r\n dataIndex: \"service_end_time\"\r\n }\r\n\r\n\r\n]\r\n\r\nconst SelectMember = ({ onSubmit,companies,groups }) => {\r\n //选择公司\r\n const [currentCompany, subCompanys] = companies;\r\n //当前选择的公司\r\n let [selectedCompany, setSelectedCompany] = useState(-1);\r\n //选择群组\r\n const [form] = Form.useForm()\r\n const [selectedRowKeys, setSelectedRowKeys] = useState([])\r\n const [data, setData] = useState([])\r\n const [options, setOptions] = useState({})\r\n const [page, setPage] = useState({ current: 1, pageSize: 30 })\r\n const [total, setTotal] = useState(0);\r\n const [loading, setLoading] = useState(false)\r\n\r\n useEffect(() => {\r\n const getAccountList = async () => {\r\n const { current, pageSize } = page\r\n setLoading(true)\r\n const res = await reqAccountList({ ...options, page_size: pageSize, page_index: current })\r\n setLoading(false)\r\n if (res.code === 200) {\r\n //改变总条数total 展开 「...page」 以确保我们没有 「丢失」 pageSize 和 current\r\n setTotal(res.data.row_count);\r\n setData(res.data.user_list)\r\n } else {\r\n message.error(\"获取账号列表失败\")\r\n }\r\n\r\n }\r\n getAccountList()\r\n }, [page, options])\r\n const onChange = (keys) => {\r\n let arr = new Set([...selectedRowKeys, ...keys]) //set去重\r\n setSelectedRowKeys([...arr])\r\n }\r\n const onSearch = (values) => {\r\n const { current, pageSize } = page\r\n // const res = await reqAccountList({ ...options, page_size: pageSize, page_index: 1 })\r\n setOptions(values)\r\n setPage({ current: 1, pageSize })\r\n }\r\n const nextStep = () => {\r\n onSubmit(selectedRowKeys)\r\n }\r\n const onCompanychange = value => {\r\n setSelectedCompany(value)\r\n }\r\n // 分页、排序、筛选变化时触发\r\n const handleTableChange = page => {\r\n //改变state 会重新执行 useEffect副作用(发起异步请求获取UserList)\r\n setPage(page)\r\n //分页状态变化 清空当前列表数据 否则可能会引起 total总数据长度 大于 pageSize\r\n // Warning: [antd: Table] `dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode. \r\n setData([])\r\n }\r\n const clearSelected = () => {\r\n setSelectedRowKeys([])\r\n }\r\n\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\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 option.children.indexOf(input) >= 0\r\n }\r\n showSearch\r\n placeholder=\"选择所属群组\">\r\n\r\n {\r\n groups.map(item => {\r\n return {item.group_name}\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 已选中 {selectedRowKeys.length} 行\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n `总记录: ${total} 条`, showQuickJumper: true, position: [\"bottomCenter\"] }}\r\n loading={loading}\r\n bordered\r\n onChange={handleTableChange}\r\n >\r\n\r\n \r\n
\r\n
\r\n\r\n )\r\n}\r\nexport default connect(\r\n state=>({\r\n groups:state.groups\r\n ,companies:state.companies\r\n })\r\n)(SelectMember)","import { Result, Button, Row,Col } from \"antd\";\r\nimport {Link, useHistory} from \"react-router-dom\"\r\nconst AddResult = ({prev}) => {\r\n const history= useHistory()\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 default AddResult","import { useState } from \"react\"\r\nimport { Form, Input, Select, Transfer, Button, Steps, message, Card, Row, Col } from \"antd\"\r\nimport AddForm from \"./add-form\";\r\nimport SelectMember from \"./select-member\";\r\nimport AddResult from \"./add-result\";\r\nimport { reqCreateGroup, reqGetGroup } from \"../../../api\";\r\nimport { update_groups } from \"../../../redux/actions\"\r\nimport \"./index.less\";\r\nimport { connect } from \"react-redux\";\r\nconst { Option } = Form\r\nconst { Step } = Steps;\r\n\r\n\r\nconst GroupAdd = props => {\r\n const [current, setCurrent] = useState(0);\r\n const [addOptions, setAddOptions] = useState({})\r\n const [unionGroups, setUnionGroups] = useState([])\r\n\r\n //去选择成员\r\n const goSelectMember = (values) => {\r\n setCurrent(current + 1);\r\n setUnionGroups(values.union_group)\r\n delete values.union_group\r\n setAddOptions(values)\r\n };\r\n //创建群组\r\n const carateGroup = async (values) => {\r\n delete values.union_group\r\n setAddOptions(values)\r\n const res = await reqCreateGroup(values)\r\n if (res.data?.result == 1) {\r\n setCurrent(2)\r\n setTimeout(() => { //创建新群组成功后 更新redux groups\r\n updateReduxGroups()\r\n }, 500);\r\n } else {\r\n message.error(res.data.err_msg)\r\n }\r\n };\r\n //选择成员后 完成创建\r\n const complate = async (values) => {\r\n console.log(\"完成创建\", values)\r\n const res = await reqCreateGroup({ ...addOptions, user_ids: values.join(\",\") })\r\n if (res.data?.result == 1) {\r\n setCurrent(2)\r\n setTimeout(() => { //创建新群组成功后 更新redux groups\r\n updateReduxGroups()\r\n }, 500);\r\n } else {\r\n message.error(res.data.err_msg)\r\n }\r\n }\r\n const prevStep1 = () => {\r\n\r\n setCurrent(0);\r\n };\r\n //新增群组完成后 更新到reduex中\r\n const updateReduxGroups =async () => {\r\n const res = await reqGetGroup()\r\n if (res.code === 200) {\r\n console.log(props)\r\n props.update_groups(res.data.group_list)\r\n }\r\n }\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\n {current === 0 && (\r\n \r\n )}\r\n {current === 1 && (\r\n \r\n )}\r\n {current === 2 && (\r\n \r\n )}\r\n
\r\n \r\n
\r\n\r\n\r\n \r\n
\r\n}\r\nexport default connect(\r\n null,\r\n { update_groups }\r\n)(GroupAdd)","import LinkButton from \"../../../components/link-button\"\r\nimport { Card, Form, Input, Select, Transfer, message, Col, Button } from \"antd\"\r\nimport { useHistory } from \"react-router-dom\"\r\nimport { reqEditCompany, reqEditGroupName, reqGetGroupName } from \"../../../api\";\r\nimport SITE from \"../../../config/siteConfig\"\r\nimport {\r\n SettingOutlined,\r\n ArrowLeftOutlined,\r\n EditOutlined,\r\n EllipsisOutlined\r\n} from \"@ant-design/icons\"\r\nimport \"./index.less\"\r\nimport { useState, useEffect } from \"react\"\r\nimport { connect } from \"react-redux\";\r\nconst { Item } = Form\r\nconst { Option } = Select\r\nconst formItemLayout = {\r\n labelCol: {\r\n xs: {\r\n span: 24,\r\n },\r\n sm: {\r\n span: 6,\r\n },\r\n },\r\n wrapperCol: {\r\n xs: {\r\n span: 24,\r\n },\r\n sm: {\r\n span: 8,\r\n },\r\n }\r\n}\r\nconst tailFormItemLayout = {\r\n wrapperCol: {\r\n xs: {\r\n span: 24,\r\n offset: 0,\r\n },\r\n sm: {\r\n span: 16,\r\n offset: 6,\r\n },\r\n },\r\n};\r\nconst GroupEdit = props => {\r\n const [form] = Form.useForm()\r\n const groups = props.groups\r\n const [loading, setLoading] = useState(false)\r\n // const history = useHistory()\r\n const { group_id, company_id } = props.match.params\r\n //是否可见\r\n const [tansferVisible, setTransferVisible] = useState(false)\r\n //已选中的关联群组\r\n const [selectedGroups, setSelectedGroups] = useState([])\r\n const onSelectedChange = (values) => {\r\n setSelectedGroups(values)\r\n }\r\n useEffect(() => {\r\n //获取群组信息\r\n const getGroupName = async () => {\r\n setLoading(true)\r\n const res = await reqGetGroupName(company_id, group_id)\r\n setLoading(false)\r\n if (res.code === 200) {\r\n //改变总条数total 展开 「...page」 以确保我们没有 「丢失」 pageSize 和 current\r\n const { group_name, group_type, union_group } = res.data\r\n form.setFieldsValue({ group_name, group_type })\r\n if (group_type === 3) {\r\n setTransferVisible(true)\r\n setSelectedGroups(union_group || [])\r\n }\r\n } else {\r\n message.error(\"获取账号列表失败\")\r\n }\r\n }\r\n getGroupName()\r\n }, [company_id, group_id])\r\n const title = (\r\n <>\r\n { props.history.goBack() }}>\r\n \r\n \r\n 修改群组\r\n \r\n )\r\n const onTypeChange = value => {\r\n console.log(value)\r\n if (value === 3) {\r\n setTransferVisible(true)\r\n } else {\r\n setTransferVisible(false)\r\n }\r\n }\r\n const saveEdit = async values => {\r\n const { group_name, group_type=1 } = values\r\n // if(group_type==undefined){\r\n // group_type=1\r\n // }\r\n const union_group = selectedGroups?.join(',')\r\n const options = {\r\n company_id, group_id, group_name, group_type\r\n }\r\n if (group_type === 3) {\r\n options.union_group = union_group\r\n }\r\n const res = await reqEditGroupName(options)\r\n if (res.code === 200) {\r\n if (res.data.result === 1) {\r\n message.success('修改成功')\r\n } else {\r\n message.error(res.data.err_msg)\r\n }\r\n } else {\r\n message.error('失败了')\r\n }\r\n // console.log(res)\r\n\r\n }\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {!SITE.SUPER_DISPATCHER && !SITE.ASSOCIATED_GROUP ? null : (\r\n \r\n \r\n )}\r\n {\r\n tansferVisible && SITE.ASSOCIATED_GROUP ? (\r\n \r\n {\r\n item.key = item.group_id\r\n if (item.group_id == group_id) {\r\n item.disabled = true\r\n }\r\n return item\r\n })}\r\n render={item => item.group_name}\r\n targetKeys={selectedGroups}\r\n onChange={onSelectedChange}\r\n titles={['群组列表', '关联列表']}\r\n >\r\n \r\n ) : null\r\n }\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\nexport default connect(\r\n state=>({\r\n groups:state.groups\r\n })\r\n)(GroupEdit)","//批量删除账号\r\nimport React, { useState,useEffect } from 'react';\r\nimport { Radio, Modal, Form, Input, Row, Col, Button } from 'antd';\r\nimport \"./index.less\"\r\nconst RemoveMember = ({ visible, onSubmit, onCancel }) => {\r\n const [form] = Form.useForm();\r\n const [url,setUrl] =useState(\"/api/validate_code/get_validate_code?type=2\")\r\n const handleOnClick=()=>{\r\n setUrl(\"/api/validate_code/get_validate_code?type=2&\"+new Date().getTime())\r\n }\r\n useEffect(()=>{\r\n setUrl(\"/api/validate_code/get_validate_code?type=2&\"+new Date().getTime())\r\n },[visible])\r\n return (\r\n {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 RemoveMember\r\n\r\n","import { useEffect } from \"react\"\r\nimport { Card, Space, Button, Input, Select, Table, message, Popconfirm, Upload } from \"antd\"\r\nimport { useHistory } from \"react-router-dom\"\r\nimport LinkButton from \"../../../components/link-button\"\r\nimport { ArrowLeftOutlined, UploadOutlined } from \"@ant-design/icons\"\r\nimport { reqGetMember, reqEditPriority, reqRemoveMember, reqRemoveSingleMember } from \"../../../api\";\r\nimport \"./index.less\"\r\nimport { useState } from \"react\"\r\nimport RemoveMember from \"./remove-member\"\r\nimport FileDown from \"../../../components/file-down/file-down\"\r\nconst { Option } = Select\r\n\r\nconst GroupMember = props => {\r\n const history = useHistory()\r\n const { group_id } = props.match.params\r\n const [selectedRowKeys, setSelectedRowKeys] = useState([])\r\n const [data, setData] = useState([])\r\n const [searchType, setSearchType] = useState(\"user_account\")\r\n //分页状态\r\n const [total, setTotal] = useState(0);\r\n const [page, setPage] = useState({ current: 1, pageSize: 30 });\r\n const [options, setOptions] = useState({})\r\n const [removeVisible, setRemoveVisible] = useState(false)\r\n const [loading, setLoading] = useState(false)\r\n useEffect(() => {\r\n (async function () {\r\n const { current, pageSize } = page\r\n setLoading(true)\r\n const res = await reqGetMember({ ...options, group_id, page_size: pageSize, page_index: current })\r\n setLoading(false)\r\n if (res.code === 200) {\r\n setData(res.data.member_list)\r\n setTotal(res.data.row_count)\r\n }\r\n })()\r\n }, [group_id, page, options])\r\n const onSearch = value => {\r\n const { current, pageSize } = page\r\n setOptions({ ...options, [searchType]: value })\r\n setPage({ current: 1, pageSize })\r\n }\r\n //编辑优先级\r\n const editPriority = async (value, record) => {\r\n const priority = value\r\n const { user_id } = record\r\n const res = await reqEditPriority({ user_id, group_id, priority })\r\n if (res.data?.result === 1) {\r\n message.success(\"优先级设置成功\")\r\n }\r\n }\r\n const onSelectChange = (keys) => {\r\n setSelectedRowKeys(keys)\r\n }\r\n const updataTable = async () => {\r\n const { current, pageSize } = page\r\n setLoading(true)\r\n const res = await reqGetMember({ ...options, group_id, page_size: pageSize, page_index: current })\r\n setLoading(false)\r\n if (res.code === 200) {\r\n setData(res.data.member_list)\r\n setTotal(res.data.row_count)\r\n }\r\n }\r\n // 分页、排序、筛选变化时触发\r\n const handleTableChange = page => {\r\n //改变state 会重新执行 useEffect副作用(发起异步请求获取UserList)\r\n setPage(page)\r\n //分页状态变化 清空当前列表数据 否则可能会引起 total总数据长度 大于 pageSize\r\n // Warning: [antd: Table] `dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode. \r\n setData([])\r\n }\r\n //取消移除成员\r\n const cancelRemove = () => {\r\n setRemoveVisible(false)\r\n }\r\n //确认删除成员\r\n const confirmDeleteSingleMember = async (record) => {\r\n const { user_id } = record\r\n const res = await reqRemoveSingleMember(group_id, user_id)\r\n if (res.data.result === 1) {\r\n message.success(\"删除成功\")\r\n updataTable()\r\n }\r\n\r\n }\r\n //确认移除成员\r\n const comfirmRemoveMemver = async (values) => {\r\n const user_ids = selectedRowKeys.join(',')\r\n const validate_code = values.validate_code\r\n const res = await reqRemoveMember({ group_id, user_ids, validate_code })\r\n if (res.data?.result === 1) {\r\n setRemoveVisible(false)\r\n message.success(\"删除成功\")\r\n // 更新表格\r\n // 方法1\r\n // let indexs = []\r\n // selectedRowKeys.forEach(element => {\r\n // const index = data.findIndex(item => item.user_id === element)\r\n // indexs.push(index)\r\n // });\r\n // const newData = data.filter((item,index) => {\r\n // return indexs.indexOf(index) === -1\r\n // })\r\n // setData(newData)\r\n // 方法2\r\n updataTable()\r\n } else {\r\n message.error(\"验证码不正确\")\r\n }\r\n\r\n }\r\n //导入\r\n const onChange = (info) => {\r\n if (info.fileList.length > 1) {\r\n info.fileList.shift()\r\n }\r\n const { status } = info.file;\r\n if (status !== 'uploading') {\r\n console.log(info.file, info.fileList);\r\n }\r\n if (status === 'done') {\r\n console.log(info.file.response)\r\n const { code, data } = info.file.response\r\n if (code === 200) {\r\n if (data.result === 1) {\r\n message.success(`${info.file.name}导入成功`)\r\n updataTable()\r\n } else {\r\n message.error(data.err_msg)\r\n }\r\n }\r\n\r\n } else if (status === 'error') {\r\n message.error(`${info.file.name} file upload failed.`);\r\n }\r\n // if (info.file.status !== 'uploading') {\r\n // console.log(info.file, info.fileList);\r\n // debugger\r\n // }\r\n // if (info.file.status === 'done') {\r\n // // message.success(`${info.file.name} file uploaded successfully`);\r\n // // } else if (info.file.status === 'error') {\r\n // // message.error(`${info.file.name} file upload failed.`);\r\n // console.log(info.file.response)\r\n // const { code, data } = info.file.response\r\n // if (code === 200) {\r\n // if (data.result === 1) {\r\n // message.success(\"上传成功\")\r\n // updataTable()\r\n // } else {\r\n // message.error(data.err_msg)\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n }\r\n const hasSelected = selectedRowKeys.length > 0;\r\n const columns = [\r\n {\r\n title: \"登录账号\",\r\n dataIndex: \"user_account\",\r\n align:'center'\r\n },\r\n {\r\n title: \"中文名\",\r\n dataIndex: \"name\",\r\n align:'center'\r\n },\r\n {\r\n title: \"所属公司\",\r\n dataIndex: \"company_name\",\r\n align:'center'\r\n },\r\n {\r\n title: \"优先级\",\r\n dataIndex: 'priority',\r\n align:'center',\r\n render: (value, record) => {\r\n return (\r\n { editPriority(v, record) }}\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n },\r\n {\r\n title: \"操作\",\r\n width: 200,\r\n align:'center',\r\n render: (record) => {\r\n return (\r\n { confirmDeleteSingleMember(record) }}\r\n okText=\"移除\"\r\n cancelText=\"取消\"\r\n\r\n >\r\n 移除成员\r\n \r\n )\r\n }\r\n },\r\n ]\r\n const title = (\r\n <>\r\n { history.goBack() }}>\r\n \r\n \r\n 成员管理\r\n \r\n )\r\n const extra = (\r\n <>\r\n \r\n {\r\n setOptions({ ...options, priority: value })\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {\r\n setSearchType(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 return (\r\n
\r\n \r\n \r\n {\r\n return (\r\n \r\n \r\n {hasSelected ? 已选中 {selectedRowKeys.length} 行 : null}\r\n \r\n )\r\n }}\r\n pagination={{ total: total, defaultPageSize: page.pageSize, pageSizeOptions: [10, 30, 50, 100], current: page.current, showTotal: total => `总记录: ${total} 条`, showQuickJumper: true, position: [\"bottomCenter\"] }}\r\n onChange={handleTableChange}\r\n bordered\r\n >\r\n \r\n \r\n
\r\n )\r\n}\r\nexport default GroupMember","import {Switch,Route,Redirect} from \"react-router-dom\"\r\nimport GroupList from \"./group-list\"\r\nimport GroupAdd from \"./group-add\"\r\nimport GroupEdit from \"./group-edit\"\r\nimport GroupMember from \"./group-member\"\r\nconst Group =()=>{ \r\n return(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\nexport default Group","import { Card, List, Form, InputNumber, Button, message } from \"antd\";\r\nimport { useEffect, useState } from \"react\";\r\nimport LinkButton from \"../../../components/link-button\"\r\nimport store from \"../../../utils/storeUtils\";\r\nimport { reqGetCompanyList, reqCreateCard } from \"../../../api\";\r\nimport \"./index.less\"\r\nimport Modal from \"antd/lib/modal/Modal\";\r\nimport { CreditCardTwoTone } from \"@ant-design/icons\"\r\nconst CardCreate = props => {\r\n const [permCount, setPermCount] = useState(0)\r\n const [yearCount, setYearCount] = useState(0)\r\n const [monthCount, setMonthCount] = useState(0)\r\n const [visible, setVisible] = useState(false)\r\n const [form] = Form.useForm()\r\n const [cardType, setCardType] = useState(-1)\r\n const [loading, setLoading] = useState(false)\r\n useEffect(() => {\r\n (async function () {\r\n setLoading(true)\r\n const res = await reqGetCompanyList()\r\n setLoading(false)\r\n if (res.code === 200) {\r\n const { perm_cadrs_count, year_cadrs_count, month_cadrs_count } = res.data.company_info\r\n setPermCount(perm_cadrs_count)\r\n setYearCount(year_cadrs_count)\r\n setMonthCount(month_cadrs_count)\r\n }\r\n })()\r\n }, [])\r\n\r\n const createCard = (type) => {\r\n setVisible(true)\r\n setCardType(type)\r\n }\r\n const onSubmit = async (values) => {\r\n const res = await reqCreateCard(cardType, values.card_count)\r\n if (res.code === 200) {\r\n if (res.data?.result === 1) {\r\n message.success(\"生成成功\")\r\n if (cardType === 1) {\r\n setPermCount(permCount + values.card_count)\r\n } else if (cardType === 2) {\r\n setYearCount(yearCount + values.card_count)\r\n } else {\r\n setMonthCount(monthCount + values.card_count)\r\n }\r\n setVisible(false)\r\n form.resetFields()\r\n }\r\n }else if(res.code===403){\r\n message.warn(res.Message)\r\n }\r\n }\r\n const onCancel = () => {\r\n setVisible(false);\r\n form.resetFields()\r\n }\r\n return
\r\n {\r\n form\r\n .validateFields()\r\n .then(values => {\r\n onSubmit(values);\r\n })\r\n .catch(info => {\r\n console.log('Validate Failed:', info);\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 { createCard(1) }}>生成]}\r\n >\r\n }\r\n title=\"永久卡\"\r\n description={\"现有数量:\" + permCount}\r\n />\r\n \r\n { createCard(2) }}>生成]}\r\n >\r\n }\r\n title=\"年卡\"\r\n description={\"现有数量:\" + yearCount}\r\n />\r\n \r\n { createCard(3) }}>生成]}\r\n >\r\n }\r\n title=\"月卡\"\r\n description={\"现有数量:\" + monthCount}\r\n />\r\n \r\n \r\n\r\n \r\n
\r\n}\r\nexport default CardCreate","import {Switch,Route,Redirect} from \"react-router-dom\"\r\nimport CardCreate from \"./card-create\"\r\nconst Card =()=>{ \r\n return(\r\n \r\n \r\n\r\n \r\n \r\n )\r\n}\r\n\r\nexport default Card","import { Form, Input, Tooltip,Button, message } from \"antd\"\r\nimport { QuestionCircleOutlined } from \"@ant-design/icons\"\r\nimport store from \"../../../utils/storeUtils\"\r\nimport { useEffect, useState } from \"react\"\r\nimport {reqEditCompany} from \"../../../api\"\r\nconst BasicSetting = () => {\r\n const [form] = Form.useForm() \r\n const [companyInfo,setCompanyInfo]=useState({})\r\n useEffect(()=>{ \r\n const{company_name,user_name,user_account,phone_num}= store.getCompanyInfo()\r\n form.setFieldsValue({user_name,user_account,phone_num,name:company_name})\r\n },[])\r\n const onFinish =async (values)=>{\r\n delete values.user_account\r\n const res =await reqEditCompany(values)\r\n if(res.data?.result===1){\r\n message.success(\"设置成功\")\r\n }else{\r\n message.error(\"设置失败\")\r\n }\r\n }\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\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 validator(_, value) {\r\n console.log(getFieldValue('user_pwd'))\r\n if (!value || getFieldValue('user_pwd') === value) {\r\n return Promise.resolve();\r\n }\r\n return Promise.reject('两次输入密码不一致!');\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 BasicSetting","import { Upload, message, Button, List, Modal, Input, Form } from \"antd\"\r\nimport { useState, useEffect } from \"react\"\r\nimport { reqGetPoster, reqSavePoster } from \"../../../api\"\r\nimport { LoadingOutlined, PlusOutlined, QuestionCircleOutlined } from '@ant-design/icons';\r\nimport store from \"../../../utils/storeUtils\"\r\nconst PosterSetting = () => {\r\n const [imageUrl, setImageUrl] = useState(false)\r\n const [saveUrl, setSaveUrl] = useState(\"\")\r\n const [loading, setLoading] = useState(false)\r\n const [previewVisible, setPreviewVisible] = useState(false)\r\n const [previewImage, setPreviewImage] = useState('')\r\n const [previewTitle, setPreviewTitle] = useState('')\r\n useEffect(() => {\r\n (async function () {\r\n const res = await reqGetPoster()\r\n if (res.code === 200) {\r\n setImageUrl(res.data?.poster)\r\n }\r\n })()\r\n }, [])\r\n function getBase64(img, callback) {\r\n const reader = new FileReader();\r\n reader.addEventListener('load', () => callback(reader.result));\r\n reader.readAsDataURL(img);\r\n }\r\n function beforeUpload(file) {\r\n const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';\r\n if (!isJpgOrPng) {\r\n message.error('You can only upload JPG/PNG file!');\r\n }\r\n const isLt2M = file.size / 1024 / 1024 < 2;\r\n if (!isLt2M) {\r\n message.error('Image must smaller than 2MB!');\r\n }\r\n return isJpgOrPng && isLt2M;\r\n }\r\n const handleChange = info => {\r\n if (info.file.status === 'uploading') {\r\n setLoading(true)\r\n return;\r\n }\r\n if (info.file.status === 'done') {\r\n setSaveUrl(info.file.response.data.file_url)\r\n // Get this url from response in real world.\r\n getBase64(info.file.originFileObj, imageUrl => {\r\n setImageUrl(imageUrl)\r\n setLoading(false)\r\n }\r\n );\r\n }\r\n };\r\n\r\n //\r\n const savePoster = async () => {\r\n const res = await reqSavePoster(saveUrl)\r\n if (res.data?.result === 1) {\r\n message.success(\"保存成功\")\r\n }\r\n }\r\n const uploadButton = (\r\n
\r\n {loading ? : }\r\n
Upload
\r\n
\r\n );\r\n const handlePreview = async file => {\r\n if (!file.url && !file.preview) {\r\n file.preview = await getBase64(file.originFileObj);\r\n }\r\n setPreviewImage(file.url || file.preview);\r\n setPreviewVisible(true)\r\n setPreviewTitle(file.name || file.url.substring(file.url.lastIndexOf('/') + 1))\r\n\r\n };\r\n const handleCancel = () => setPreviewVisible(false);\r\n return (\r\n
\r\n
\r\n

公司海报

\r\n
\r\n
\r\n {/*
    \r\n
  • \r\n 公司名称:\r\n {store.getCompanyInfo().company_name}\r\n
  • \r\n
  • \r\n 联系电话:\r\n {store.getCompanyInfo().phone_num}\r\n
  • \r\n
  • \r\n \r\n 海报  \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n {imageUrl ? \"avatar\" : uploadButton}\r\n \r\n \r\n
  • \r\n
*/}\r\n {/*
\r\n \r\n
*/}\r\n
\r\n \r\n \r\n {store.getCompanyInfo().company_name}\r\n \r\n \r\n {store.getCompanyInfo().phone_num}\r\n \r\n \r\n \r\n {imageUrl ? \"avatar\" : uploadButton}\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 PosterSetting","import { Tabs, List } from \"antd\"\r\nimport BasicSetting from \"./basic-setting\"\r\nimport PosterSetting from \"./poster-setting\"\r\nimport \"./index.less\"\r\nconst { TabPane } = Tabs;\r\nconst { Item } = List\r\nconst SystemSettings = props => {\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 default SystemSettings","import {Switch,Route,Redirect} from \"react-router-dom\"\r\nimport SystemSettings from \"./system-settings\"\r\nconst System =()=>{ \r\n return(\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default System","/*\r\n用来在内存中存储数据\r\n */\r\nexport default{\r\n company_info:{\r\n company_account:\"\"\r\n } //保存当前登录的用户信息\r\n}","import React, { useEffect, useState, useLayoutEffect } from \"react\"\r\nimport cookie from \"react-cookies\"\r\nimport { Layout, PageHeader, Result } from 'antd';\r\nimport menuConfig from \"../../config/menuConfig\"\r\nimport { Route, Redirect, Switch, useHistory, Link } from 'react-router-dom'\r\nimport Header from '../../components/header/header'\r\nimport LeftNav from '../../components/left-nav/left-nav'\r\nimport Home from '../home'\r\nimport Logs from '../logs'\r\nimport Company from '../company'\r\nimport Account from \"../account\";\r\nimport Group from '../group'\r\nimport Card from '../card'\r\nimport System from '../system'\r\nimport { reqGetCompanyList, reqGetCompanyRights, reqGetCompany, reqGetGroup } from \"../../api\"\r\nimport store from \"../../utils/storeUtils\"\r\nimport { message } from \"antd\";\r\nimport memory from \"../../utils/memoryUtils\"\r\nimport logo from \"../../assets/images/logo.png\"\r\nimport SITE from \"../../config/siteConfig\"\r\nimport \"./admin.css\"\r\nimport { connect } from \"react-redux\"\r\nimport { update_companies, update_groups } from \"../../redux/actions\"\r\nconst { Footer, Sider, Content } = Layout;\r\n\r\nclass Admin extends React.Component {\r\n state = {\r\n companyLoadingCompleted: false,\r\n rightsLoadingCompleted: false,\r\n collapsed: false,\r\n isLogin: false\r\n }\r\n\r\n UNSAFE_componentWillMount() {\r\n this.checkOn()\r\n\r\n }\r\n componentDidMount() {\r\n\r\n if (this.state.isLogin) {\r\n this.saveRightsList()\r\n // this.saveCompanyInfo()\r\n this.getCompanyList()\r\n this.getGroups()\r\n this.checkDevices()\r\n }\r\n\r\n }\r\n //获取选择群组列表\r\n getGroups = async () => {\r\n const res = await reqGetGroup()\r\n if (res.code === 200) {\r\n this.props.update_groups(res.data.group_list)\r\n }\r\n }\r\n //获取选择公司列表\r\n getCompanyList = async () => {\r\n const res = await reqGetCompany()\r\n if (res.code === 200) {\r\n const currentCompany = res.data.company_info\r\n const subCompanys = res.data.subcompany_list\r\n this.props.update_companies([currentCompany, subCompanys])\r\n }\r\n }\r\n //检测是否登陆\r\n checkOn = () => {\r\n if (!cookie.load(\".SCAUTH\")) {\r\n this.props.history.replace(\"/login\")\r\n return\r\n } else {\r\n this.setState({\r\n isLogin: true\r\n })\r\n }\r\n\r\n }\r\n //#region 终端检测\r\n // const[companyLoadingCompleted, setCompanyLoadingCompleted] = useState(false)\r\n // const[rightsLoadingCompleted, setRightsLoadingCompleted] = useState(false)\r\n // const[collapsed, setCollapsed] = useState(false)\r\n // const history = useHistory()\r\n // const path = history.location.pathname;\r\n // //判断cookie如果不存在 跳转到登陆界面\r\n // if(!cookie.load(\".SCAUTH\")) {\r\n // history.replace(\"/login\")\r\n // }\r\n // var system = {\r\n // win: false,\r\n // mac: false,\r\n // xll: false,\r\n // ipad: false\r\n // };\r\n //检测平台 \r\n // var p = navigator.platform;\r\n // system.win = p.indexOf(\"Win\") === 0;\r\n // system.mac = p.indexOf(\"Mac\") === 0;\r\n // system.x11 = (p === \"X11\") || (p.indexOf(\"Linux\") === 0);\r\n // system.ipad = (navigator.userAgent.match(/iPad/i) != null) ? true : false;\r\n // //跳转语句,如果是手机访问就自动跳转到wap.baidu.com页面 \r\n\r\n // if (system.win || system.mac || system.xll || system.ipad) {\r\n // } else {\r\n // alert(\"请用电脑端访问站点,获得最佳视图\")\r\n // }\r\n //把权限列表存起来方便后面使用\r\n //#endregion\r\n checkDevices() {\r\n var system = {\r\n win: false,\r\n mac: false,\r\n xll: false,\r\n ipad: false\r\n };\r\n var p = navigator.platform;\r\n system.win = p.indexOf(\"Win\") === 0;\r\n system.mac = p.indexOf(\"Mac\") === 0;\r\n system.x11 = (p === \"X11\") || (p.indexOf(\"Linux\") === 0);\r\n system.ipad = (navigator.userAgent.match(/iPad/i) != null) ? true : false;\r\n //跳转语句,如果是手机访问就自动跳转到wap.baidu.com页面 \r\n\r\n if (system.win || system.mac || system.xll || system.ipad) {\r\n } else {\r\n alert(\"请用电脑端访问站点,获得最佳视图\")\r\n }\r\n }\r\n saveRightsList = async () => {\r\n const res = await reqGetCompanyRights()\r\n if (res.code === 200) {\r\n store.saveCompanyInfo({ rights: res.data.list })\r\n this.setState({\r\n rightsLoadingCompleted: true\r\n })\r\n } else {\r\n console.log(\"未登录\")\r\n }\r\n }\r\n //先把公司信息存起来 方便后面使用\r\n // saveCompanyInfo = async () => {\r\n // const res = await reqGetCompanyList()\r\n // if (res.code === 200) {\r\n // store.saveCompanyInfo(res.data.company_info)\r\n // this.setState({\r\n // companyLoadingCompleted: true\r\n // })\r\n // } else {\r\n // console.log(\"未登录\")\r\n // }\r\n // }\r\n onCollapse = collapsed => {\r\n this.setState({\r\n collapsed\r\n })\r\n };\r\n //#region 获取当前菜单title\r\n // getTitle = (path, menuItem) => {\r\n // for (let index = 0; index < menuItem.length; index++) {\r\n // const element = menuItem[index];\r\n // if (!element.children) {\r\n // if (element.key === path) {\r\n // return element.title\r\n // }\r\n // } else {\r\n // if (this.getTitle(path, element.children)) {\r\n // return this.getTitle(path, element.children)\r\n // } else {\r\n // continue\r\n // }\r\n // }\r\n // }\r\n // }\r\n // getMenuTitle = (path, menuItem) => {\r\n // const routes = []\r\n // try {\r\n // if (path === \"/home\") {\r\n // routes.push({\r\n // path: 'index',\r\n // breadcrumbName: '首页',\r\n // })\r\n // } else {\r\n // var reg1 = /(\\/[a-z]+)/\r\n // var reg2 = /(\\/[a-z]+){2}/\r\n // debugger\r\n // var result1 = reg1.exec(path)[0]\r\n // var result2 = reg2.exec(path)[0]\r\n // for (let index = 0; index < menuItem.length; index++) {\r\n // const element = menuItem[index];\r\n // if (element.key === result1) {\r\n // routes.push({\r\n // path: element.key,\r\n // breadcrumbName: element.title,\r\n // })\r\n // }\r\n // if (!element.children) {\r\n // continue\r\n // }\r\n // for (let i = 0; i < element.children.length; i++) {\r\n // const el = element.children[i];\r\n // if (el.key === result2) {\r\n // routes.push({\r\n // path: el.key,\r\n // breadcrumbName: el.title,\r\n // })\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n // }\r\n // } catch (error) {\r\n\r\n // }\r\n\r\n // return { routes }\r\n // }\r\n //#endregion\r\n render() {\r\n const { collapsed, isLogin } = this.state\r\n const { onCollapse, getTitle } = this\r\n return (\r\n isLogin ? (\r\n \r\n \r\n \r\n
\r\n \"\"\r\n

{SITE.TITLE}

\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
{`Powered By Copyright Owners ${SITE.VERSION}`}
\r\n
\r\n
\r\n ) : null\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default connect(\r\n null,\r\n { update_companies, update_groups }\r\n)(Admin)","export default \"data:image/png;base64,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\"","//项目根组件\r\n\r\nimport { Component, useEffect } from \"react\";\r\nimport { HashRouter as Router, Redirect, Route, Switch } from \"react-router-dom\"\r\nimport Login from \"./pages/login/login\"\r\nimport Admin from \"./pages/admin/admin\"\r\nimport store from \"./utils/storeUtils\"\r\nimport memory from \"./utils/memoryUtils\"\r\n\r\nconst App = () => {\r\n memory.company_info=store.getCompanyInfo()\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\nexport default App","\r\nimport {\r\n UPDATE_COMPANIES,\r\n UPDATE_GROUPS,\r\n DELETE_GROUP_BYID\r\n , DELETE_COMPANY_BYID\r\n} from \"./action_types\"\r\n\r\nimport { combineReducers } from \"redux\"\r\nfunction companies(state = [], action) {\r\n switch (action.type) {\r\n case UPDATE_COMPANIES:\r\n return [...action.data]\r\n case DELETE_COMPANY_BYID:\r\n let index = state[1].findIndex(c => c.company_id === action.data)\r\n if (index !== -1) {\r\n state[1].splice(index, 1)\r\n }\r\n return state\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nfunction groups(state = [], action) {\r\n switch (action.type) {\r\n case UPDATE_GROUPS:\r\n return [...action.data]\r\n case DELETE_GROUP_BYID:\r\n let index = state.findIndex(g => g.group_id === action.data)\r\n if (index !== -1) {\r\n state.splice(index, 1)\r\n }\r\n return state\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default combineReducers({ companies, groups })","import {createStore} from \"redux\"\r\nimport reducers from \"./reducer\"\r\n// import { composeWithDevTools } from 'redux-devtools-extension';\r\nimport { persistStore, persistReducer } from 'redux-persist'\r\n// import thunk from \"redux-thunk\"\r\nimport storage from 'redux-persist/lib/storage'\r\n\r\nconst persistConfig = {\r\n key: 'root',\r\n storage: storage,\r\n blacklist: [] // navigation will not be persisted\r\n};\r\n\r\nconst persistedReducer = persistReducer(persistConfig, reducers)\r\n// const store = createStore(persistedReducer,composeWithDevTools())\r\nconst store = createStore(persistedReducer)\r\nlet persistor = persistStore(store)\r\nexport default {store,persistor}","//项目入口文件\r\nimport React from 'react'\r\nimport ReactDom from 'react-dom'\r\nimport App from './App'\r\nimport { ConfigProvider } from \"antd\"\r\nimport zhCN from 'antd/lib/locale/zh_CN';\r\nimport \"antd/dist/antd.less\"\r\nimport 'moment/locale/zh-cn';\r\nimport { PersistGate } from 'redux-persist/integration/react'\r\nimport { Provider } from \"react-redux\"\r\nimport persistStore from './redux/store'\r\nconst { store, persistor } = persistStore\r\nReactDom.render(\r\n \r\n \r\n \r\n \r\n \r\n , document.getElementById('root'))"],"sourceRoot":""}