Commit 205f0ca45a8c4a0cde931eb35249be09fac98aaf
1 parent
8653124a
新增用户注册功能;
Showing
3 changed files
with
340 additions
and
140 deletions
src/components/UserRegistration/index.jsx
0 → 100644
| 1 | +import { ConfigProvider, Modal, Form, Input, Select } from "antd"; | |
| 2 | + | |
| 3 | +const UserRegistration = ({ _this }) => { | |
| 4 | + const { userRegisterMode } = _this.state; | |
| 5 | + if (!userRegisterMode) return ""; | |
| 6 | + | |
| 7 | + const [form] = Form.useForm(); | |
| 8 | + | |
| 9 | + const handleCancel = () => { | |
| 10 | + _this.setState({ | |
| 11 | + userRegisterMode: false, | |
| 12 | + }); | |
| 13 | + }; | |
| 14 | + | |
| 15 | + const handleOk = () => { | |
| 16 | + form.submit(); | |
| 17 | + }; | |
| 18 | + | |
| 19 | + const onFinish = values => { | |
| 20 | + console.log("=====Success:", values); | |
| 21 | + }; | |
| 22 | + | |
| 23 | + return ( | |
| 24 | + <ConfigProvider prefixCls="antdV5"> | |
| 25 | + <Modal | |
| 26 | + title="用户注册" | |
| 27 | + open={userRegisterMode} | |
| 28 | + okText="确认" | |
| 29 | + cancelText="取消" | |
| 30 | + onOk={handleOk} | |
| 31 | + onCancel={handleCancel} | |
| 32 | + width={400} | |
| 33 | + > | |
| 34 | + <Form | |
| 35 | + name="basic" | |
| 36 | + form={form} | |
| 37 | + labelCol={{ span: 6 }} | |
| 38 | + wrapperCol={{ span: 18 }} | |
| 39 | + style={{ maxWidth: 600 }} | |
| 40 | + initialValues={{ remember: true }} | |
| 41 | + onFinish={onFinish} | |
| 42 | + autoComplete="off" | |
| 43 | + labelAlign="left" | |
| 44 | + > | |
| 45 | + <Form.Item label="用户名" name="username" rules={[{ required: true, message: "未填写用户名!" }]}> | |
| 46 | + <Input /> | |
| 47 | + </Form.Item> | |
| 48 | + | |
| 49 | + <Form.Item | |
| 50 | + label="手机号" | |
| 51 | + name="telenumber" | |
| 52 | + rules={[ | |
| 53 | + { required: true, message: "未填写手机号!" }, | |
| 54 | + { | |
| 55 | + pattern: /^1[3-9]\d{9}$/, | |
| 56 | + message: "请输入有效的中国大陆手机号", | |
| 57 | + }, | |
| 58 | + ]} | |
| 59 | + > | |
| 60 | + <Input /> | |
| 61 | + </Form.Item> | |
| 62 | + | |
| 63 | + <Form.Item label="公司名称" name="company" rules={[{ required: true, message: "未选择公司!" }]}> | |
| 64 | + <Select | |
| 65 | + options={[ | |
| 66 | + { value: "xly", label: "上海小羚羊" }, | |
| 67 | + { value: "jinjia", label: "深圳劲嘉" }, | |
| 68 | + { value: "pushi", label: "四川3D" }, | |
| 69 | + ]} | |
| 70 | + /> | |
| 71 | + </Form.Item> | |
| 72 | + </Form> | |
| 73 | + </Modal> | |
| 74 | + </ConfigProvider> | |
| 75 | + ); | |
| 76 | +}; | |
| 77 | + | |
| 78 | +export default UserRegistration; | ... | ... |
src/components/login/Login.css
src/components/login/Login.js
| 1 | 1 | /* eslint-disable */ |
| 2 | 2 | /* eslint-disable no-undef,no-param-reassign */ |
| 3 | -import React, { Component } from 'react'; | |
| 4 | -import { LockOutlined, UserOutlined } from '@ant-design/icons'; | |
| 5 | -import { Form } from '@ant-design/compatible'; | |
| 3 | +import React, { Component } from "react"; | |
| 4 | +import { LockOutlined, UserOutlined } from "@ant-design/icons"; | |
| 5 | +import { Form } from "@ant-design/compatible"; | |
| 6 | 6 | // import '@ant-design/compatible/assets/index.css'; |
| 7 | 7 | import { Input, Button, Select, message, Radio } from 'antd-v4'; |
| 8 | -import commonConfig from '@/utils/config'; | |
| 8 | +import commonConfig from "@/utils/config"; | |
| 9 | 9 | // import * as commonUtils from '../../utils/utils'; |
| 10 | -import * as commonServices from '@/services/services'; | |
| 11 | -import * as commonFunc from '@/components/Common/commonFunc'; | |
| 12 | -import logo from '@/assets/foot_logo.png'; | |
| 13 | -import * as commonUtils from '@/utils/utils'; | |
| 14 | -import styles from './Login.css'; | |
| 15 | -import FaceDetect from '../FaceDetect'; | |
| 10 | +import * as commonServices from "@/services/services"; | |
| 11 | +import * as commonFunc from "@/components/Common/commonFunc"; | |
| 12 | +import logo from "@/assets/foot_logo.png"; | |
| 13 | +import * as commonUtils from "@/utils/utils"; | |
| 14 | +import styles from "./Login.css"; | |
| 15 | +import FaceDetect from "../FaceDetect"; | |
| 16 | +import UserRegistration from "../UserRegistration"; | |
| 16 | 17 | |
| 17 | 18 | const FormItem = Form.Item; |
| 18 | 19 | const { Option } = Select; |
| 19 | 20 | |
| 20 | 21 | class LoginForm extends Component { |
| 21 | 22 | constructor(props) { |
| 22 | - | |
| 23 | 23 | let ssoLoginParams = {}; |
| 24 | 24 | const urlParams = new URLSearchParams(location.search); |
| 25 | 25 | const params = {}; |
| ... | ... | @@ -34,16 +34,16 @@ class LoginForm extends Component { |
| 34 | 34 | super(props); |
| 35 | 35 | this.state = { |
| 36 | 36 | companys: [], |
| 37 | - sParentId: JSON.parse(localStorage.getItem(`${commonConfig.prefix}companysParentId`)) || '', | |
| 38 | - sId: JSON.parse(localStorage.getItem(`${commonConfig.prefix}companyId`)) || '', | |
| 37 | + sParentId: JSON.parse(localStorage.getItem(`${commonConfig.prefix}companysParentId`)) || "", | |
| 38 | + sId: JSON.parse(localStorage.getItem(`${commonConfig.prefix}companyId`)) || "", | |
| 39 | 39 | loginInfo: [], |
| 40 | - loginType: 'normal', | |
| 41 | - sEmployeeNo: '', | |
| 40 | + loginType: "normal", | |
| 41 | + sEmployeeNo: "", | |
| 42 | 42 | ssoLoginParams, |
| 43 | 43 | logoImageInfo: [], |
| 44 | 44 | }; |
| 45 | - this.loginSRMC = props.baseInfo?.flag === 'loginSRMC'; | |
| 46 | - this.erpBaseWord = this.loginSRMC ? this.props.baseInfo.word : 'ERP' | |
| 45 | + this.loginSRMC = props.baseInfo?.flag === "loginSRMC"; | |
| 46 | + this.erpBaseWord = this.loginSRMC ? this.props.baseInfo.word : "ERP"; | |
| 47 | 47 | } |
| 48 | 48 | |
| 49 | 49 | componentWillMount() { |
| ... | ... | @@ -57,7 +57,7 @@ class LoginForm extends Component { |
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | handleInit = async () => { |
| 60 | - this.handleGetLoginInfo();/* 根据后台配置获取公司信息 */ | |
| 60 | + this.handleGetLoginInfo(); /* 根据后台配置获取公司信息 */ | |
| 61 | 61 | const configUrl = `${commonConfig.server_host}sysbrands/getSysbrands`; |
| 62 | 62 | const configReturn = (await commonServices.getService(null, configUrl)).data; |
| 63 | 63 | if (configReturn.code === 1) { |
| ... | ... | @@ -69,7 +69,7 @@ class LoginForm extends Component { |
| 69 | 69 | } else { |
| 70 | 70 | message.error(configReturn.msg); |
| 71 | 71 | } |
| 72 | - } | |
| 72 | + }; | |
| 73 | 73 | |
| 74 | 74 | // 获取自定义logo |
| 75 | 75 | handleGetLogoImage = () => { |
| ... | ... | @@ -87,7 +87,7 @@ class LoginForm extends Component { |
| 87 | 87 | } else { |
| 88 | 88 | this.setState(({ logoImageInfo }) => { |
| 89 | 89 | const logoImageInfoNew = [...logoImageInfo]; |
| 90 | - logoImageInfoNew[index] = ''; | |
| 90 | + logoImageInfoNew[index] = ""; | |
| 91 | 91 | return { logoImageInfo: logoImageInfoNew }; |
| 92 | 92 | }); |
| 93 | 93 | } |
| ... | ... | @@ -95,18 +95,18 @@ class LoginForm extends Component { |
| 95 | 95 | ImgObj.onerror = () => { |
| 96 | 96 | this.setState(({ logoImageInfo }) => { |
| 97 | 97 | const logoImageInfoNew = [...logoImageInfo]; |
| 98 | - logoImageInfoNew[index] = ''; | |
| 98 | + logoImageInfoNew[index] = ""; | |
| 99 | 99 | return { logoImageInfo: logoImageInfoNew }; |
| 100 | 100 | }); |
| 101 | 101 | }; |
| 102 | 102 | } |
| 103 | - } | |
| 103 | + }; | |
| 104 | 104 | |
| 105 | 105 | /* 获取登录窗体配置文字 */ |
| 106 | 106 | handleGetLoginInfo = async () => { |
| 107 | - const sModelsId = '16148217740007696998039471379000'; | |
| 107 | + const sModelsId = "16148217740007696998039471379000"; | |
| 108 | 108 | const configUrl = `${commonConfig.server_host}business/getModelBysId/${sModelsId}?sModelsId=${sModelsId}&sName=/commonAuto`; |
| 109 | - const configReturn = (await commonServices.getService('', configUrl)).data; | |
| 109 | + const configReturn = (await commonServices.getService("", configUrl)).data; | |
| 110 | 110 | if (configReturn.code === 1) { |
| 111 | 111 | const dataReturn = configReturn.dataset.rows; |
| 112 | 112 | if (commonUtils.isNotEmptyArr(dataReturn)) { |
| ... | ... | @@ -123,17 +123,17 @@ class LoginForm extends Component { |
| 123 | 123 | } else { |
| 124 | 124 | message.error(configReturn.msg); |
| 125 | 125 | } |
| 126 | - } | |
| 126 | + }; | |
| 127 | 127 | |
| 128 | 128 | handleSelect = (value, option) => { |
| 129 | - const sParentId = option.props['data-parentid']; | |
| 129 | + const sParentId = option.props["data-parentid"]; | |
| 130 | 130 | this.setState({ |
| 131 | 131 | sParentId, |
| 132 | 132 | sId: value, |
| 133 | 133 | }); |
| 134 | 134 | }; |
| 135 | 135 | |
| 136 | - handleSubmit = (e) => { | |
| 136 | + handleSubmit = e => { | |
| 137 | 137 | e.preventDefault(); |
| 138 | 138 | this.props.form.validateFields(async (err, values) => { |
| 139 | 139 | if (!err) { |
| ... | ... | @@ -148,19 +148,19 @@ class LoginForm extends Component { |
| 148 | 148 | const xlybusinessActiveTreeArr = []; |
| 149 | 149 | for (let i = 0; i < localStorage.length; i++) { |
| 150 | 150 | const key = localStorage.key(i); |
| 151 | - if (key && key.includes('xlybusinessActiveTree')) { | |
| 151 | + if (key && key.includes("xlybusinessActiveTree")) { | |
| 152 | 152 | xlybusinessActiveTreeArr.push([key, localStorage.getItem(key)]); |
| 153 | 153 | } |
| 154 | 154 | } |
| 155 | 155 | localStorage.clear(); |
| 156 | - xlybusinessActiveTreeArr.forEach((item) => { | |
| 156 | + xlybusinessActiveTreeArr.forEach(item => { | |
| 157 | 157 | localStorage.setItem(item[0], item[1]); |
| 158 | 158 | }); |
| 159 | 159 | const value = values; |
| 160 | 160 | if (!bSsoLogin) { |
| 161 | 161 | value.sParentId = this.state.sParentId; |
| 162 | 162 | value.sId = this.state.sId; |
| 163 | - if (this.state.loginType === 'face') { | |
| 163 | + if (this.state.loginType === "face") { | |
| 164 | 164 | value.sEmployeeNo = this.sEmployeeNo; |
| 165 | 165 | } |
| 166 | 166 | } |
| ... | ... | @@ -170,40 +170,49 @@ class LoginForm extends Component { |
| 170 | 170 | if (commonUtils.isNotEmptyObject(dataReturn.msg)) { |
| 171 | 171 | message.warning(dataReturn.msg, 6); |
| 172 | 172 | } |
| 173 | - const { | |
| 174 | - token, gdslogininfo: userinfo, systemData, commonConst, rxtx, passworIsOld, auxiliaryQty, | |
| 175 | - } = dataReturn.dataset.rows[0]; | |
| 173 | + const { token, gdslogininfo: userinfo, systemData, commonConst, rxtx, passworIsOld, auxiliaryQty } = dataReturn.dataset.rows[0]; | |
| 176 | 174 | // commonUtils.setSystemSettings(systemData); |
| 177 | 175 | // commonUtils.setCommonConst(commonConst); |
| 178 | 176 | const decimals = {}; |
| 179 | 177 | if (systemData !== undefined) { |
| 180 | - const dNetPrice = systemData.filter(item => (item.sName === 'NetPrice'))[0]; | |
| 181 | - const dNetMoney = systemData.filter(item => (item.sName === 'NetMoney'))[0]; | |
| 182 | - const dNumAlign = systemData.filter(item => (item.sName === 'CkxNumAlign'))[0]; | |
| 178 | + const dNetPrice = systemData.filter(item => item.sName === "NetPrice")[0]; | |
| 179 | + const dNetMoney = systemData.filter(item => item.sName === "NetMoney")[0]; | |
| 180 | + const dNumAlign = systemData.filter(item => item.sName === "CkxNumAlign")[0]; | |
| 183 | 181 | /* 20230628老孟提的需求:单价设置6位,金额设置2位,不根据配置走 */ |
| 184 | 182 | // decimals.dNetPrice = 12; |
| 185 | 183 | decimals.dNetPrice = Number(dNetPrice.sValue); // 20240528晚上杨昌辉提-钱豹要求改; |
| 186 | 184 | decimals.dNetMoney = 2; |
| 187 | 185 | // decimals.dNetPrice = dNetPrice !== undefined && dNetPrice.sValue !== undefined ? (dNetPrice.sValue) * 1 : 6; |
| 188 | 186 | // decimals.dNetMoney = dNetMoney !== undefined && dNetMoney.sValue !== undefined ? (dNetMoney.sValue) * 1 : 6; |
| 189 | - decimals.dNumAlign = dNumAlign !== undefined && dNumAlign.sValue !== undefined ? (dNumAlign.sValue) : 0; | |
| 187 | + decimals.dNumAlign = dNumAlign !== undefined && dNumAlign.sValue !== undefined ? dNumAlign.sValue : 0; | |
| 190 | 188 | // commonUtils.setNetPrice(decimals.dNetPrice); |
| 191 | 189 | // commonUtils.setNetMoney(decimals.dNetMoney); |
| 192 | 190 | // commonUtils.setDateFormat(commonFunc.getDateFormat(systemData)); |
| 193 | 191 | } |
| 194 | 192 | // 判断是否是初始密码 |
| 195 | - if (values.username !== 'zhangz') { | |
| 196 | - localStorage.setItem(`${commonConfig.prefix}changePwd`, (passworIsOld === true || passworIsOld === 'true') ? 'true' : 'false'); | |
| 193 | + if (values.username !== "zhangz") { | |
| 194 | + localStorage.setItem(`${commonConfig.prefix}changePwd`, passworIsOld === true || passworIsOld === "true" ? "true" : "false"); | |
| 197 | 195 | } |
| 198 | 196 | /* 登录记住公司信息 */ |
| 199 | 197 | localStorage.setItem(`${commonConfig.prefix}companysParentId`, JSON.stringify(this.state.sParentId)); |
| 200 | 198 | localStorage.setItem(`${commonConfig.prefix}companyId`, JSON.stringify(this.state.sId)); |
| 201 | - const companyName = commonUtils.isNotEmptyArr(this.state.companys) ? this.state.companys.filter(item => item.sId === userinfo.sSubsidiaryId)[0].sName : ''; | |
| 199 | + const companyName = commonUtils.isNotEmptyArr(this.state.companys) | |
| 200 | + ? this.state.companys.filter(item => item.sId === userinfo.sSubsidiaryId)[0].sName | |
| 201 | + : ""; | |
| 202 | 202 | userinfo.companyName = companyName; |
| 203 | 203 | const { footer, logoImageInfo } = this.state; |
| 204 | - const isInitPassword = passworIsOld === true || passworIsOld === 'true'; | |
| 204 | + const isInitPassword = passworIsOld === true || passworIsOld === "true"; | |
| 205 | 205 | await this.props.onLogin({ |
| 206 | - token, systemData, rxtx, commonConst, userinfo, decimals, dateFormat: commonFunc.getDateFormat(systemData), footer, logoImageInfo, auxiliaryQty, | |
| 206 | + token, | |
| 207 | + systemData, | |
| 208 | + rxtx, | |
| 209 | + commonConst, | |
| 210 | + userinfo, | |
| 211 | + decimals, | |
| 212 | + dateFormat: commonFunc.getDateFormat(systemData), | |
| 213 | + footer, | |
| 214 | + logoImageInfo, | |
| 215 | + auxiliaryQty, | |
| 207 | 216 | isInitPassword, |
| 208 | 217 | }); |
| 209 | 218 | } else { |
| ... | ... | @@ -212,128 +221,142 @@ class LoginForm extends Component { |
| 212 | 221 | this.handleInit(); |
| 213 | 222 | }); |
| 214 | 223 | } |
| 215 | - } | |
| 224 | + }; | |
| 216 | 225 | |
| 217 | - onLoginTypeChange = (e) => { | |
| 226 | + onLoginTypeChange = e => { | |
| 218 | 227 | this.setState({ |
| 219 | - loginType: e.target.value | |
| 220 | - }) | |
| 228 | + loginType: e.target.value, | |
| 229 | + }); | |
| 221 | 230 | }; |
| 222 | 231 | |
| 223 | 232 | //人脸验证登录 |
| 224 | - onIdentifySuccess = async(e) => { | |
| 233 | + onIdentifySuccess = async e => { | |
| 225 | 234 | this.sEmployeeNo = e.dataset.rows[0].sEmployeeNo; |
| 226 | 235 | const value = {}; |
| 227 | 236 | value.sEmployeeNo = this.sEmployeeNo; |
| 228 | 237 | value.sParentId = e.dataset.rows[0].sBrandsId; |
| 229 | 238 | value.sId = e.dataset.rows[0].sSubsidiaryId; |
| 230 | 239 | await this.handleLogin(value); |
| 231 | - } | |
| 240 | + }; | |
| 232 | 241 | |
| 233 | 242 | render() { |
| 234 | 243 | const { getFieldDecorator } = this.props.form; |
| 235 | 244 | const { companys, sId, loginInfo, ssoLoginParams, footer } = this.state; |
| 236 | 245 | if (commonUtils.isNotEmptyObject(ssoLoginParams)) { |
| 237 | - return (''); | |
| 246 | + return ""; | |
| 238 | 247 | } |
| 239 | 248 | |
| 240 | 249 | const companysId = commonUtils.isNotEmptyObject(sId) ? sId : commonUtils.isNotEmptyArr(companys) ? companys[0].sId : chooseBranchCompany; |
| 241 | - const options = companys.map(com => | |
| 242 | - ( | |
| 243 | - <Option key={com.sId} data-parentid={com.sParentId} className={styles.loginOption}> | |
| 244 | - {com.sName} | |
| 245 | - </Option>)); | |
| 246 | - let sLanguage = 'sChinese'; | |
| 250 | + const options = companys.map(com => ( | |
| 251 | + <Option key={com.sId} data-parentid={com.sParentId} className={styles.loginOption}> | |
| 252 | + {com.sName} | |
| 253 | + </Option> | |
| 254 | + )); | |
| 255 | + let sLanguage = "sChinese"; | |
| 247 | 256 | if (companys !== null && companys.length > 0) { |
| 248 | 257 | sLanguage = companys[0].sLanguage !== null ? companys[0].sLanguage.toString() : sLanguage; |
| 249 | 258 | } |
| 250 | 259 | const { loginLoading, logoImageInfo } = this.state; |
| 251 | - let XiaoLingYang = sLanguage === 'sChinese' ? '小羚羊' : (sLanguage === 'sEnglish' ? 'XiaoLingYang' : '小羚羊');/* 小羚羊 */ | |
| 252 | - let WelcometoERP = sLanguage === 'sChinese' ? `欢迎登录${this.erpBaseWord}` : (sLanguage === 'sEnglish' ? `Welcometo${this.erpBaseWord}` : `歡迎登錄${this.erpBaseWord}`);/* 欢迎登录ERP */ | |
| 253 | - let companyName = sLanguage === 'sChinese' ? '上海小羚羊软件' : (sLanguage === 'sEnglish' ? 'ShangHaiXiaoLingYangSoft' : '上海小羚羊軟件');/* 上海小羚羊软件 */ | |
| 254 | - let printAllFlow = sLanguage === 'sChinese' ? '智能印刷全流程' : (sLanguage === 'sEnglish' ? 'IntelligentPrintAllFlow' : '智能印刷全流程');/* 智能印刷全流程 */ | |
| 255 | - let ERP = this.erpBaseWord;/* ERP */ | |
| 256 | - let UserLogin = sLanguage === 'sChinese' ? '用户登录' : (sLanguage === 'sEnglish' ? 'UserLogin' : '用戶登錄');/* 用户登录 */ | |
| 257 | - let pleaseInputUserName = sLanguage === 'sChinese' ? '请输入你的用户名' : (sLanguage === 'sEnglish' ? 'pleaseInputUserName' : '請輸入妳的用戶名');/* 请选择分公司名称 */ | |
| 258 | - let pleaseInputPassword = sLanguage === 'sChinese' ? '请输入你的密码' : (sLanguage === 'sEnglish' ? '请输入你的密码' : '請輸入妳的用戶名');/* 请选择分公司名称 */ | |
| 259 | - let chooseBranchCompany = sLanguage === 'sChinese' ? '请选择分公司名称' : (sLanguage === 'sEnglish' ? 'Please select branch name' : '請選擇分公司名稱');/* 请选择分公司名称 */ | |
| 260 | - let btnLogin = sLanguage === 'sChinese' ? '登 录' : (sLanguage === 'sEnglish' ? 'Login' : '登 錄');/* 登 陆 */ | |
| 261 | - let Copyright = 'Copyright';/* Copyright */ | |
| 262 | - let AddrOne = sLanguage === 'sChinese' ? '小羚羊软件' : (sLanguage === 'sEnglish' ? 'XiaoLingYangSoft' : '小羚羊軟件');/* 小羚羊软件 */ | |
| 263 | - let AddrTwo = sLanguage === 'sChinese' ? '印刷智慧工厂' : (sLanguage === 'sEnglish' ? 'PrintingSmartFactory' : '印刷智慧工廠');/* 印刷智慧工厂 */ | |
| 264 | - let AddrThree = sLanguage === 'sChinese' ? '印刷MES' : (sLanguage === 'sEnglish' ? 'WelcometoMes' : '印刷MES');/* 印刷MES */ | |
| 265 | - let AddrFour = sLanguage === 'sChinese' ? '印刷ERP' : (sLanguage === 'sEnglish' ? 'PrintingErp' : '印刷ERP');/* 印刷ERP */ | |
| 266 | - let AddrFive = sLanguage === 'sChinese' ? '印刷电商平台' : (sLanguage === 'sEnglish' ? 'PrintingE-commercePlatform' : '印刷電商平台');/* 印刷电商平台 */ | |
| 267 | - let AddrSix = sLanguage === 'sChinese' ? '文件智能处理' : (sLanguage === 'sEnglish' ? 'FileIntelligenceHandle' : '文件智能處理');/* 文件智能处理 */ | |
| 268 | - let AddrSeven = sLanguage === 'sChinese' ? '印前自动化' : (sLanguage === 'sEnglish' ? 'PrepressAutomation' : '印前自動化');/* 印前自动化 */ | |
| 269 | - let AddrEight = '400-880-6237';/* 400-880-6237 */ | |
| 270 | - const AddrIcp = '沪ICP备14034791号-1'; /* 粤ICP备2022093080号-1 */ | |
| 260 | + let XiaoLingYang = sLanguage === "sChinese" ? "小羚羊" : sLanguage === "sEnglish" ? "XiaoLingYang" : "小羚羊"; /* 小羚羊 */ | |
| 261 | + let WelcometoERP = | |
| 262 | + sLanguage === "sChinese" | |
| 263 | + ? `欢迎登录${this.erpBaseWord}` | |
| 264 | + : sLanguage === "sEnglish" | |
| 265 | + ? `Welcometo${this.erpBaseWord}` | |
| 266 | + : `歡迎登錄${this.erpBaseWord}`; /* 欢迎登录ERP */ | |
| 267 | + let companyName = | |
| 268 | + sLanguage === "sChinese" ? "上海小羚羊软件" : sLanguage === "sEnglish" ? "ShangHaiXiaoLingYangSoft" : "上海小羚羊軟件"; /* 上海小羚羊软件 */ | |
| 269 | + let printAllFlow = | |
| 270 | + sLanguage === "sChinese" ? "智能印刷全流程" : sLanguage === "sEnglish" ? "IntelligentPrintAllFlow" : "智能印刷全流程"; /* 智能印刷全流程 */ | |
| 271 | + let ERP = this.erpBaseWord; /* ERP */ | |
| 272 | + let UserLogin = sLanguage === "sChinese" ? "用户登录" : sLanguage === "sEnglish" ? "UserLogin" : "用戶登錄"; /* 用户登录 */ | |
| 273 | + let pleaseInputUserName = | |
| 274 | + sLanguage === "sChinese" ? "请输入你的用户名" : sLanguage === "sEnglish" ? "pleaseInputUserName" : "請輸入妳的用戶名"; /* 请选择分公司名称 */ | |
| 275 | + let pleaseInputPassword = | |
| 276 | + sLanguage === "sChinese" ? "请输入你的密码" : sLanguage === "sEnglish" ? "请输入你的密码" : "請輸入妳的用戶名"; /* 请选择分公司名称 */ | |
| 277 | + let chooseBranchCompany = | |
| 278 | + sLanguage === "sChinese" | |
| 279 | + ? "请选择分公司名称" | |
| 280 | + : sLanguage === "sEnglish" | |
| 281 | + ? "Please select branch name" | |
| 282 | + : "請選擇分公司名稱"; /* 请选择分公司名称 */ | |
| 283 | + let btnLogin = sLanguage === "sChinese" ? "登 录" : sLanguage === "sEnglish" ? "Login" : "登 錄"; /* 登 陆 */ | |
| 284 | + let Copyright = "Copyright"; /* Copyright */ | |
| 285 | + let AddrOne = sLanguage === "sChinese" ? "小羚羊软件" : sLanguage === "sEnglish" ? "XiaoLingYangSoft" : "小羚羊軟件"; /* 小羚羊软件 */ | |
| 286 | + let AddrTwo = sLanguage === "sChinese" ? "印刷智慧工厂" : sLanguage === "sEnglish" ? "PrintingSmartFactory" : "印刷智慧工廠"; /* 印刷智慧工厂 */ | |
| 287 | + let AddrThree = sLanguage === "sChinese" ? "印刷MES" : sLanguage === "sEnglish" ? "WelcometoMes" : "印刷MES"; /* 印刷MES */ | |
| 288 | + let AddrFour = sLanguage === "sChinese" ? "印刷ERP" : sLanguage === "sEnglish" ? "PrintingErp" : "印刷ERP"; /* 印刷ERP */ | |
| 289 | + let AddrFive = | |
| 290 | + sLanguage === "sChinese" ? "印刷电商平台" : sLanguage === "sEnglish" ? "PrintingE-commercePlatform" : "印刷電商平台"; /* 印刷电商平台 */ | |
| 291 | + let AddrSix = sLanguage === "sChinese" ? "文件智能处理" : sLanguage === "sEnglish" ? "FileIntelligenceHandle" : "文件智能處理"; /* 文件智能处理 */ | |
| 292 | + let AddrSeven = sLanguage === "sChinese" ? "印前自动化" : sLanguage === "sEnglish" ? "PrepressAutomation" : "印前自動化"; /* 印前自动化 */ | |
| 293 | + let AddrEight = "400-880-6237"; /* 400-880-6237 */ | |
| 294 | + const AddrIcp = "沪ICP备14034791号-1"; /* 粤ICP备2022093080号-1 */ | |
| 271 | 295 | if (commonUtils.isNotEmptyArr(loginInfo)) { |
| 272 | - const CompanyNameData = loginInfo.filter(item => item.sControlName === 'CompanyName'); | |
| 296 | + const CompanyNameData = loginInfo.filter(item => item.sControlName === "CompanyName"); | |
| 273 | 297 | XiaoLingYang = commonUtils.isNotEmptyArr(CompanyNameData) ? CompanyNameData[0].showName : XiaoLingYang; |
| 274 | 298 | |
| 275 | 299 | if (!this.loginSRMC) { |
| 276 | - const filterDataLoginERP = loginInfo.filter(item => item.sControlName === 'LoginERP'); | |
| 300 | + const filterDataLoginERP = loginInfo.filter(item => item.sControlName === "LoginERP"); | |
| 277 | 301 | WelcometoERP = commonUtils.isNotEmptyArr(filterDataLoginERP) ? filterDataLoginERP[0].showName : WelcometoERP; |
| 278 | 302 | } |
| 279 | 303 | |
| 280 | - const CompanyAllNameData = loginInfo.filter(item => item.sControlName === 'CompanyAllName'); | |
| 304 | + const CompanyAllNameData = loginInfo.filter(item => item.sControlName === "CompanyAllName"); | |
| 281 | 305 | companyName = commonUtils.isNotEmptyArr(CompanyAllNameData) ? CompanyAllNameData[0].showName : companyName; |
| 282 | 306 | |
| 283 | - const PrintAllFlowData = loginInfo.filter(item => item.sControlName === 'PrintAllFlow'); | |
| 307 | + const PrintAllFlowData = loginInfo.filter(item => item.sControlName === "PrintAllFlow"); | |
| 284 | 308 | printAllFlow = commonUtils.isNotEmptyArr(PrintAllFlowData) ? PrintAllFlowData[0].showName : printAllFlow; |
| 285 | 309 | |
| 286 | 310 | if (!this.loginSRMC) { |
| 287 | - const ERPData = loginInfo.filter(item => item.sControlName === 'ERP'); | |
| 311 | + const ERPData = loginInfo.filter(item => item.sControlName === "ERP"); | |
| 288 | 312 | ERP = commonUtils.isNotEmptyArr(ERPData) ? ERPData[0].showName : ERP; |
| 289 | 313 | } |
| 290 | 314 | |
| 291 | - const UserLoginData = loginInfo.filter(item => item.sControlName === 'UserLogin'); | |
| 292 | - UserLogin = commonUtils.isNotEmptyArr(UserLoginData) ? UserLoginData[0].showName : 'UserLogin'; | |
| 315 | + const UserLoginData = loginInfo.filter(item => item.sControlName === "UserLogin"); | |
| 316 | + UserLogin = commonUtils.isNotEmptyArr(UserLoginData) ? UserLoginData[0].showName : "UserLogin"; | |
| 293 | 317 | |
| 294 | - const PleaseInputUserNameData = loginInfo.filter(item => item.sControlName === 'PleaseInputUserName'); | |
| 318 | + const PleaseInputUserNameData = loginInfo.filter(item => item.sControlName === "PleaseInputUserName"); | |
| 295 | 319 | pleaseInputUserName = commonUtils.isNotEmptyArr(PleaseInputUserNameData) ? PleaseInputUserNameData[0].showName : pleaseInputUserName; |
| 296 | 320 | |
| 297 | - const PasswordData = loginInfo.filter(item => item.sControlName === 'PleaseInputPassword'); | |
| 298 | - pleaseInputPassword = commonUtils.isNotEmptyArr(PasswordData) ? PasswordData[0].showName : 'PleaseInputPassword'; | |
| 321 | + const PasswordData = loginInfo.filter(item => item.sControlName === "PleaseInputPassword"); | |
| 322 | + pleaseInputPassword = commonUtils.isNotEmptyArr(PasswordData) ? PasswordData[0].showName : "PleaseInputPassword"; | |
| 299 | 323 | |
| 300 | - const ChooseBranchCompanyData = loginInfo.filter(item => item.sControlName === 'ChooseBranchCompany'); | |
| 324 | + const ChooseBranchCompanyData = loginInfo.filter(item => item.sControlName === "ChooseBranchCompany"); | |
| 301 | 325 | chooseBranchCompany = commonUtils.isNotEmptyArr(ChooseBranchCompanyData) ? ChooseBranchCompanyData[0].showName : chooseBranchCompany; |
| 302 | 326 | |
| 303 | - const BtnLoginData = loginInfo.filter(item => item.sControlName === 'BtnLogin'); | |
| 327 | + const BtnLoginData = loginInfo.filter(item => item.sControlName === "BtnLogin"); | |
| 304 | 328 | btnLogin = commonUtils.isNotEmptyArr(BtnLoginData) ? BtnLoginData[0].showName : btnLogin; |
| 305 | 329 | |
| 306 | - const CopyrightData = loginInfo.filter(item => item.sControlName === 'Copyright'); | |
| 330 | + const CopyrightData = loginInfo.filter(item => item.sControlName === "Copyright"); | |
| 307 | 331 | Copyright = commonUtils.isNotEmptyArr(CopyrightData) ? CopyrightData[0].showName : Copyright; |
| 308 | 332 | |
| 309 | - const AddrOneData = loginInfo.filter(item => item.sControlName === 'AddrOne'); | |
| 333 | + const AddrOneData = loginInfo.filter(item => item.sControlName === "AddrOne"); | |
| 310 | 334 | AddrOne = commonUtils.isNotEmptyArr(AddrOneData) ? AddrOneData[0].showName : AddrOne; |
| 311 | 335 | |
| 312 | - const AddrTwoData = loginInfo.filter(item => item.sControlName === 'AddrTwo'); | |
| 336 | + const AddrTwoData = loginInfo.filter(item => item.sControlName === "AddrTwo"); | |
| 313 | 337 | AddrTwo = commonUtils.isNotEmptyArr(AddrTwoData) ? AddrTwoData[0].showName : AddrTwo; |
| 314 | 338 | |
| 315 | - const AddrThreeData = loginInfo.filter(item => item.sControlName === 'AddrThree'); | |
| 339 | + const AddrThreeData = loginInfo.filter(item => item.sControlName === "AddrThree"); | |
| 316 | 340 | AddrThree = commonUtils.isNotEmptyArr(AddrThreeData) ? AddrThreeData[0].showName : AddrThree; |
| 317 | 341 | |
| 318 | - const AddrFourData = loginInfo.filter(item => item.sControlName === 'AddrFour'); | |
| 342 | + const AddrFourData = loginInfo.filter(item => item.sControlName === "AddrFour"); | |
| 319 | 343 | AddrFour = commonUtils.isNotEmptyArr(AddrFourData) ? AddrFourData[0].showName : AddrFour; |
| 320 | 344 | |
| 321 | - const AddrFiveData = loginInfo.filter(item => item.sControlName === 'AddrFive'); | |
| 345 | + const AddrFiveData = loginInfo.filter(item => item.sControlName === "AddrFive"); | |
| 322 | 346 | AddrFive = commonUtils.isNotEmptyArr(AddrFiveData) ? AddrFiveData[0].showName : AddrFive; |
| 323 | 347 | |
| 324 | - const AddrSixData = loginInfo.filter(item => item.sControlName === 'AddrSix'); | |
| 348 | + const AddrSixData = loginInfo.filter(item => item.sControlName === "AddrSix"); | |
| 325 | 349 | AddrSix = commonUtils.isNotEmptyArr(AddrSixData) ? AddrSixData[0].showName : AddrSix; |
| 326 | 350 | |
| 327 | - const AddrSevenData = loginInfo.filter(item => item.sControlName === 'AddrSeven'); | |
| 351 | + const AddrSevenData = loginInfo.filter(item => item.sControlName === "AddrSeven"); | |
| 328 | 352 | AddrSeven = commonUtils.isNotEmptyArr(AddrSevenData) ? AddrSevenData[0].showName : AddrSeven; |
| 329 | 353 | |
| 330 | - const AddrEightData = loginInfo.filter(item => item.sControlName === 'AddrEight'); | |
| 354 | + const AddrEightData = loginInfo.filter(item => item.sControlName === "AddrEight"); | |
| 331 | 355 | AddrEight = commonUtils.isNotEmptyArr(AddrEightData) ? AddrEightData[0].showName : AddrEight; |
| 332 | 356 | } |
| 333 | 357 | |
| 334 | - | |
| 335 | 358 | const dropdownStyle = { |
| 336 | - fontSize: '14px', | |
| 359 | + fontSize: "14px", | |
| 337 | 360 | }; |
| 338 | 361 | |
| 339 | 362 | // 修改favicon |
| ... | ... | @@ -352,24 +375,27 @@ class LoginForm extends Component { |
| 352 | 375 | |
| 353 | 376 | // 修改左上角logo |
| 354 | 377 | const xlyHeaderLogo = logoImageInfo[1]; |
| 355 | - const root = document.querySelector('#root'); | |
| 356 | - root.style.removeProperty('--xly-header-logo-opacity'); | |
| 357 | - root.style.removeProperty('--xly-header-logo'); | |
| 378 | + const root = document.querySelector("#root"); | |
| 379 | + root.style.removeProperty("--xly-header-logo-opacity"); | |
| 380 | + root.style.removeProperty("--xly-header-logo"); | |
| 358 | 381 | if (xlyHeaderLogo !== undefined) { |
| 359 | - root.style.setProperty('--xly-header-logo-opacity', 1); | |
| 360 | - if (xlyHeaderLogo !== '') { | |
| 361 | - root.style.setProperty('--xly-header-logo', `url(${xlyHeaderLogo})`); | |
| 382 | + root.style.setProperty("--xly-header-logo-opacity", 1); | |
| 383 | + if (xlyHeaderLogo !== "") { | |
| 384 | + root.style.setProperty("--xly-header-logo", `url(${xlyHeaderLogo})`); | |
| 362 | 385 | } |
| 363 | 386 | } |
| 364 | 387 | |
| 365 | 388 | // 修改foot的logo |
| 366 | - const xlyFootLogo = logoImageInfo[3] === '' ? logo : logoImageInfo[3]; | |
| 389 | + const xlyFootLogo = logoImageInfo[3] === "" ? logo : logoImageInfo[3]; | |
| 367 | 390 | |
| 368 | 391 | return ( |
| 369 | 392 | <div className={styles.wraper}> |
| 370 | 393 | <div className={styles.header}> |
| 371 | 394 | <div className={styles.logo}> |
| 372 | - <h1>{XiaoLingYang}<span>{WelcometoERP}</span></h1> | |
| 395 | + <h1> | |
| 396 | + {XiaoLingYang} | |
| 397 | + <span>{WelcometoERP}</span> | |
| 398 | + </h1> | |
| 373 | 399 | </div> |
| 374 | 400 | </div> |
| 375 | 401 | <div className={styles.login}> |
| ... | ... | @@ -379,29 +405,42 @@ class LoginForm extends Component { |
| 379 | 405 | <h2>{printAllFlow}</h2> |
| 380 | 406 | <h3>{ERP}</h3> |
| 381 | 407 | </div> |
| 382 | - <Form onSubmit={this.handleSubmit} className={`${styles.loginForm_mode} ${this.state.loginType === 'face' ? styles.loginForm_face : ''}`}> | |
| 383 | - <div className={styles.loginTitle}> | |
| 384 | - {UserLogin} | |
| 385 | - </div> | |
| 408 | + <Form onSubmit={this.handleSubmit} className={`${styles.loginForm_mode} ${this.state.loginType === "face" ? styles.loginForm_face : ""}`}> | |
| 409 | + <div className={styles.loginTitle}>{UserLogin}</div> | |
| 386 | 410 | <div className={styles.loginMiddle}> |
| 387 | - { this.state.loginType === 'face' ? | |
| 388 | - <div style={{marginBottom: '22px'}}> | |
| 389 | - <FaceDetect loginAfterInit={true} onIdentifySuccess={this.onIdentifySuccess} actionType={'identifyFace'}></FaceDetect> | |
| 411 | + {this.state.loginType === "face" ? ( | |
| 412 | + <div style={{ marginBottom: "22px" }}> | |
| 413 | + <FaceDetect loginAfterInit={true} onIdentifySuccess={this.onIdentifySuccess} actionType={"identifyFace"}></FaceDetect> | |
| 390 | 414 | </div> |
| 391 | - : | |
| 415 | + ) : ( | |
| 392 | 416 | <> |
| 393 | 417 | <FormItem className={styles.loginTip}> |
| 394 | - {getFieldDecorator('username', { | |
| 418 | + {getFieldDecorator("username", { | |
| 395 | 419 | rules: [{ required: true, message: pleaseInputUserName }], |
| 396 | - })(<Input className={styles.loginInput} size="large" prefix={<UserOutlined className={styles.loginIcon} />} placeholder={pleaseInputUserName} />)} | |
| 420 | + })( | |
| 421 | + <Input | |
| 422 | + className={styles.loginInput} | |
| 423 | + size="large" | |
| 424 | + prefix={<UserOutlined className={styles.loginIcon} />} | |
| 425 | + placeholder={pleaseInputUserName} | |
| 426 | + /> | |
| 427 | + )} | |
| 397 | 428 | </FormItem> |
| 398 | 429 | <FormItem className={styles.loginTip}> |
| 399 | - {getFieldDecorator('password', { | |
| 430 | + {getFieldDecorator("password", { | |
| 400 | 431 | rules: [{ required: true, message: pleaseInputPassword }], |
| 401 | - })(<Input className={styles.loginInput} size="large" prefix={<LockOutlined className={styles.loginIcon} />} type="password" placeholder={pleaseInputPassword} />)} | |
| 432 | + })( | |
| 433 | + <Input | |
| 434 | + className={styles.loginInput} | |
| 435 | + size="large" | |
| 436 | + prefix={<LockOutlined className={styles.loginIcon} />} | |
| 437 | + type="password" | |
| 438 | + placeholder={pleaseInputPassword} | |
| 439 | + /> | |
| 440 | + )} | |
| 402 | 441 | </FormItem> |
| 403 | 442 | </> |
| 404 | - } | |
| 443 | + )} | |
| 405 | 444 | {/*<FormItem className={styles.loginTip}>*/} |
| 406 | 445 | {/* {getFieldDecorator('username', {*/} |
| 407 | 446 | {/* rules: [{ required: true, message: pleaseInputUserName }],*/} |
| ... | ... | @@ -427,35 +466,110 @@ class LoginForm extends Component { |
| 427 | 466 | </Button> |
| 428 | 467 | </FormItem> |
| 429 | 468 | {/*屏蔽人脸*/} |
| 430 | - <div style={{textAlign: 'right'}}> | |
| 431 | - <Radio.Group onChange={this.onLoginTypeChange} value={this.state.loginType} buttonStyle="solid"> | |
| 469 | + <div style={{ textAlign: "right", position: "relative" }}> | |
| 470 | + { ['project.xlyprint.cn', 'localhost'].includes(location.hostname) ? ( | |
| 471 | + <Button type="link" size="large" className={styles.userRegister} onClick={() => { this.setState({ userRegisterMode: true }); }}> | |
| 472 | + 用户注册 | |
| 473 | + </Button> | |
| 474 | + ) : "" } | |
| 475 | + <Radio.Group onChange={this.onLoginTypeChange} value={this.state.loginType} buttonStyle="solid"> | |
| 432 | 476 | <Radio.Button value="normal">普通登录</Radio.Button> |
| 433 | 477 | <Radio.Button value="face">扫脸登录</Radio.Button> |
| 434 | 478 | </Radio.Group> |
| 435 | 479 | </div> |
| 436 | 480 | </Form> |
| 481 | + <UserRegistration _this={this} /> | |
| 437 | 482 | </div> |
| 438 | 483 | </div> |
| 439 | 484 | <div className={styles.footer}> |
| 440 | - {xlyFootLogo && <img alt="logo" src={xlyFootLogo} style={{ maxWidth: 20, maxHeight: 20 }} />} | |
| 441 | - ©{Copyright} <span className={styles.linkStyle}><a href="http://www.xlyprint.com/" target="_blank" rel="noopener noreferrer">{AddrOne}</a> </span> | |
| 442 | - { | |
| 443 | - commonUtils.isNotEmptyArr(footer) ? ( | |
| 444 | - <> | |
| 445 | - {footer.map(item => { | |
| 446 | - const { sIcon, sLink, sName } = item; | |
| 447 | - let sPart = ''; | |
| 448 | - const sIconPart = sIcon ? <img src={sIcon} alt="" /> : ''; | |
| 449 | - if (sLink) { | |
| 450 | - sPart = <> | <span className={styles.linkStyle}><a href={sLink} target="_blank" rel="noopener noreferrer"> {sIconPart} {sName}</a></span></>; | |
| 451 | - } else { | |
| 452 | - sPart = <> | <span>{sIconPart}{sName}</span></>; | |
| 453 | - } | |
| 454 | - return sPart; | |
| 455 | - })} | |
| 456 | - </> | |
| 457 | - ) : <> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/zngc.html" target="_blank" rel="noopener noreferrer">{AddrTwo}</a> </span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/znwl.html" target="_blank" rel="noopener noreferrer">{AddrThree}</a></span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/yb.html" target="_blank" rel="noopener noreferrer" >{AddrFour}</a></span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/yshlw.html" target="_blank" rel="noopener noreferrer">{AddrFive}</a></span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/znwj.html" target="_blank" rel="noopener noreferrer">{AddrSix}</a></span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/yqzdh.html" target="_blank" rel="noopener noreferrer">{AddrSeven}</a></span> | {AddrEight} | <span className={styles.linkStyle}><a href="http://beian.miit.gov.cn" target="_blank" rel="noopener noreferrer"> <img src="//gw.alicdn.com/tfs/TB1jwakrbH1gK0jSZFwXXc7aXXa-20-20.png" alt="" /> {AddrIcp}</a></span></> | |
| 458 | - } | |
| 485 | + {xlyFootLogo && <img alt="logo" src={xlyFootLogo} style={{ maxWidth: 20, maxHeight: 20 }} />}©{Copyright}{" "} | |
| 486 | + <span className={styles.linkStyle}> | |
| 487 | + <a href="http://www.xlyprint.com/" target="_blank" rel="noopener noreferrer"> | |
| 488 | + {AddrOne} | |
| 489 | + </a>{" "} | |
| 490 | + </span> | |
| 491 | + {commonUtils.isNotEmptyArr(footer) ? ( | |
| 492 | + <> | |
| 493 | + {footer.map(item => { | |
| 494 | + const { sIcon, sLink, sName } = item; | |
| 495 | + let sPart = ""; | |
| 496 | + const sIconPart = sIcon ? <img src={sIcon} alt="" /> : ""; | |
| 497 | + if (sLink) { | |
| 498 | + sPart = ( | |
| 499 | + <> | |
| 500 | + {" "} | |
| 501 | + |{" "} | |
| 502 | + <span className={styles.linkStyle}> | |
| 503 | + <a href={sLink} target="_blank" rel="noopener noreferrer"> | |
| 504 | + {" "} | |
| 505 | + {sIconPart} {sName} | |
| 506 | + </a> | |
| 507 | + </span> | |
| 508 | + </> | |
| 509 | + ); | |
| 510 | + } else { | |
| 511 | + sPart = ( | |
| 512 | + <> | |
| 513 | + {" "} | |
| 514 | + |{" "} | |
| 515 | + <span> | |
| 516 | + {sIconPart} | |
| 517 | + {sName} | |
| 518 | + </span> | |
| 519 | + </> | |
| 520 | + ); | |
| 521 | + } | |
| 522 | + return sPart; | |
| 523 | + })} | |
| 524 | + </> | |
| 525 | + ) : ( | |
| 526 | + <> | |
| 527 | + {" "} | |
| 528 | + |{" "} | |
| 529 | + <span className={styles.linkStyle}> | |
| 530 | + <a href="http://www.xlyprint.com/zngc.html" target="_blank" rel="noopener noreferrer"> | |
| 531 | + {AddrTwo} | |
| 532 | + </a>{" "} | |
| 533 | + </span>{" "} | |
| 534 | + |{" "} | |
| 535 | + <span className={styles.linkStyle}> | |
| 536 | + <a href="http://www.xlyprint.com/znwl.html" target="_blank" rel="noopener noreferrer"> | |
| 537 | + {AddrThree} | |
| 538 | + </a> | |
| 539 | + </span>{" "} | |
| 540 | + |{" "} | |
| 541 | + <span className={styles.linkStyle}> | |
| 542 | + <a href="http://www.xlyprint.com/yb.html" target="_blank" rel="noopener noreferrer"> | |
| 543 | + {AddrFour} | |
| 544 | + </a> | |
| 545 | + </span>{" "} | |
| 546 | + |{" "} | |
| 547 | + <span className={styles.linkStyle}> | |
| 548 | + <a href="http://www.xlyprint.com/yshlw.html" target="_blank" rel="noopener noreferrer"> | |
| 549 | + {AddrFive} | |
| 550 | + </a> | |
| 551 | + </span>{" "} | |
| 552 | + |{" "} | |
| 553 | + <span className={styles.linkStyle}> | |
| 554 | + <a href="http://www.xlyprint.com/znwj.html" target="_blank" rel="noopener noreferrer"> | |
| 555 | + {AddrSix} | |
| 556 | + </a> | |
| 557 | + </span>{" "} | |
| 558 | + |{" "} | |
| 559 | + <span className={styles.linkStyle}> | |
| 560 | + <a href="http://www.xlyprint.com/yqzdh.html" target="_blank" rel="noopener noreferrer"> | |
| 561 | + {AddrSeven} | |
| 562 | + </a> | |
| 563 | + </span>{" "} | |
| 564 | + | {AddrEight} |{" "} | |
| 565 | + <span className={styles.linkStyle}> | |
| 566 | + <a href="http://beian.miit.gov.cn" target="_blank" rel="noopener noreferrer"> | |
| 567 | + {" "} | |
| 568 | + <img src="//gw.alicdn.com/tfs/TB1jwakrbH1gK0jSZFwXXc7aXXa-20-20.png" alt="" /> {AddrIcp} | |
| 569 | + </a> | |
| 570 | + </span> | |
| 571 | + </> | |
| 572 | + )} | |
| 459 | 573 | {/* ©{Copyright} <span className={styles.linkStyle}><a href="http://beian.miit.gov.cn/" target="_blank" rel="noopener noreferrer">{AddrOne}</a> </span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/zngc.html" target="_blank" rel="noopener noreferrer">{AddrTwo}</a> </span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/znwl.html" target="_blank" rel="noopener noreferrer">{AddrThree}</a></span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/yb.html" target="_blank" rel="noopener noreferrer" >{AddrFour}</a></span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/yshlw.html" target="_blank" rel="noopener noreferrer">{AddrFive}</a></span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/znwj.html" target="_blank" rel="noopener noreferrer">{AddrSix}</a></span> | <span className={styles.linkStyle}><a href="http://www.xlyprint.com/yqzdh.html" target="_blank" rel="noopener noreferrer">{AddrSeven}</a></span> | {AddrEight} | <span className={styles.linkStyle}><a href="http://beian.miit.gov.cn"> <img src="//gw.alicdn.com/tfs/TB1jwakrbH1gK0jSZFwXXc7aXXa-20-20.png" alt="" /> {AddrIcp}</a></span> */} |
| 460 | 574 | </div> |
| 461 | 575 | </div> | ... | ... |