system-copyright-react/src/layout/head/Head.tsx
2025-05-12 16:29:25 +08:00

2411 lines
89 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import './head.css'
// import { NodeJS } from 'types/node';
import {
useDispatch,
useSelector,
} from 'react-redux'
import {
// operatorBaseUrl,
copyBaseUrl
} from '../../util/AjaxUtils.ts'
import {
getCode,
// checkPhone,
// updatePhone
updateBindPhone
} from '../../request/api'
import BalanceHead from '../../components/balance/BalanceHead.tsx';
import RechargeHead from '../../components/recharge/RechargeHead.tsx';
import {
// Empty,
Dropdown, MenuProps, message, Modal, Space, Spin, Input, Table, Form, Button
// Form, Button, InputNumber
} from "antd";
// import {
// CloseOutlined
// } from '@ant-design/icons';
import title from '../../static/Phone/title.png'
import titleB from '../../static/Phone/titleB.png'
import line from '../../static/Phone/line.png'
import pack from '@theme/img/pack.png'
// import pack from '@theme/pack.png'
// import type { TableProps, FormProps } from 'antd';
interface DataType {
usericId: string;
icPriceMaterial: number;
icPriceAll: number;
createTime: string;
}
// interface icDataType {
// contactName: string;//联系人姓名
// contactPhone: string;//联系人电话
// idCardNumber: string;//证件号
// idCardType: string;//证件类型
// lastLoginTime: string;//最后登录时间
// userId: string;//用户id
// userInfoId: string;//主键
// userInfoName: string;//用户名称
// userInfoNameEn: string;//用户英文名称
// userInfoType: string;//用户类型
// userUsername: string;//用户名
// }
// type FieldType = {
// icPriceMaterial: string;
// icPriceAll: string;
// };
// const data: DataType[] = [
// {
// key: '1',
// code: 'xixi112',
// price: 32,
// },
// {
// key: '2',
// code: 'xixi22',
// price: 42,
// },
// {
// key: '3',
// code: 'hehe23',
// price: 32,
// },
// {
// key: '4',
// code: 'hehe1232',
// price: 32,
// },
// {
// key: '4',
// code: 'hehe123',
// price: 32,
// },
// {
// key: '5',
// code: 'hehe1235',
// price: 32,
// },
// {
// key: '6',
// code: 'hehe1236',
// price: 32,
// },
// {
// key: '7',
// code: 'hehe1237',
// price: 32,
// },
// {
// key: '8',
// code: 'hehe1238',
// price: 32,
// },
// {
// key: '9',
// code: 'hehe1239',
// price: 32,
// },
// ];
import { DownOutlined, UserOutlined, QuestionCircleOutlined, BellOutlined, KeyOutlined, LogoutOutlined, GiftOutlined, AccountBookOutlined, ContainerOutlined, MenuFoldOutlined, UsergroupAddOutlined, TableOutlined } from "@ant-design/icons";
import {
useContext, useEffect, useState,
// useRef
} from "react";
import {
put, get,
// post,
getUseUrl
} from "../../util/AjaxUtils.ts";
import { getLoginflag } from '../../request/api'
import { GlobalContext, GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts";
import UserEdit from "../../components/user/UserEdit.tsx";
import PasswordChange from "../../components/password/PasswordChange.tsx";
// import headRightBg from '../../assets/head-right-bg.png';
import InvoiceList from "../../components/invoice/InvoiceList.tsx";
import logoImg from '@theme/img/head/logo.png'
// import userImg from '../../static/homeimg/userimg.png'
import kf from '../../static/head/kf.png'
// import kfImg from '../../static/head/kfImg.png'//@theme/img/right/set.png
import kfImg from '@theme/img/head/kfImg.png'
import headBg from '@theme/img/head/background.png';
import { reMenuActive } from '../../util/cache';
// import BelongPeople from '../../components/BelongPeople/BelongPeople.tsx'
import BelongPeople from '../../components/BelongPeople/BelongPeople.tsx'
import ContactPeople from '../../components/ContactPeople/ContactPeople.tsx'
import inv from '../../static/inv.png'
import MyOrder from '../../components/myOrder/MyOrder.tsx'
import NoticeModal from '../../components/NoticeModal/NoticeModal.tsx';
import type {
TableColumnsType,
} from 'antd';
// import { log } from 'console';
// import HeadCouponModal from '../../components/CouponModal/HeadCouponModal.tsx'
export default function Head() {
// const currentUrl = window.location.href;
// const formRef = useRef<HTMLFormElement>(null);
// const triggerFormSubmit = () => {
// if (formRef.current) {
// formRef.current.submit();
// }
// };
// lyp
const [form] = Form.useForm<any>();
const [isUpdateWxUsernamePhone, setIsUpdateWxUsernamePhone] = useState(false); // 绑定手机号号弹窗
// 解除绑定是否显示
const [isUnbindPhone, setIsUnbindPhone] = useState(false); // 解除绑定
// const [userId, setUserId] = useState(''); // 验证码ID
// const submit = async (phone: string, code: string) => {
// try {
// const formData = new URLSearchParams();
// formData.append('userId', userId);
// formData.append('phone', phone);
// formData.append('smsCode', code);
// // await updatePhone();
// const res = await updatePhone(formData);
// console.log('表单提交数据', res)
// // console.log(res);
// } catch (error: any) {
// setPhoneLoading(false)
// if (error.response) {
// const data = error.response.data;
// messageApi.open({
// type: 'error',
// content: data.msg ? data.msg : `${data.path}(${data.status})`,
// });
// } else {
// console.error(error)
// }
// }
// }
const [phoneloading, setPhoneLoading] = useState(false)
// const handleFormSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
// e.preventDefault(); // 阻止表单默认提交行为
// // const form = e.currentTarget;
// // const formData = new FormData(form);
// // const url = operatorBaseUrl + '/operator/oauth/wx/update/phone';
// // console.log('嘻嘻',formData);
// // await fetch(url, {
// // method: 'POST',
// // body: formData
// // });
// // console.log(response);
// // if (!response.ok) {
// // // 响应状态码不是 200-299 时,认为请求失败
// // const errorData = await response.json();
// // messageApi.open({
// // type: 'error',
// // content: errorData.msg ? errorData.msg : `请求失败,状态码: ${response.status}`
// // });
// // } else {
// // console.log('表单提交成功');
// // const result = await response.json();
// // console.log('响应数据:', result);
// // }
// };
const onFinish = async (values: any) => {
// console.log('Success:', values);
// try {
// setPhoneLoading(true)
// const res = await checkPhone(values.phone)
// // const formData = new URLSearchParams();
// // formData.append('userId', userId);
// // formData.append('phone', values.phone);
// // formData.append('smsCode', values.smsCode);
// // console.log('结果',res);
// if (res.data == 'SUCCESS') {
// // if (formRef.current) {
// // // // 触发表单提交
// // formRef.current.submit();
// // // console.log(formRef.current);
// // }
// } else {
// setPhoneLoading(false)
// messageApi.open({
// type: 'error',
// content: '手机号已被绑定,请更换手机号',
// });
// }
// // await submit(values.phone, values.smsCode)
// } catch (error: any) {
// setPhoneLoading(false)
// if (error.response) {
// const data = error.response.data;
// messageApi.open({
// type: 'error',
// content: data.msg ? data.msg : `${data.path}(${data.status})`,
// });
// } else {
// console.error(error)
// }
// }
try {
setPhoneLoading(true)
const res: any = await updateBindPhone({
newPhone: values.phone,
verificationCode: values.smsCode,
})
// console.log(res);
// window.location.href = `${operatorBaseUrl}/operator/oauth/wx/update/login?userId=${userId}&code=${res.data}`
sessionStorage.removeItem('token')
window.location.href = `${copyBaseUrl}/copyright/route/user/wx/update-login?code=${res.data}`
} catch (error: any) {
setPhoneLoading(false)
if (error.response) {
const data = error.response.data;
messageApi.open({
type: 'error',
content: data.msg ? data.msg : `${data.path}(${data.status})`,
});
} else {
console.error(error)
}
}
};
const [countdown, setCountdown] = useState(0); // 倒计时状态
const sendCode = async () => {
try {
// 验证手机号输入项
await form.validateFields(['phone']);
setCountdown(120);
// console.log('发送验证码');
const timer = setInterval(() => {
setCountdown((prevCountdown) => {
if (prevCountdown > 0) {
return prevCountdown - 1;
} else {
clearInterval(timer);
return 0;
}
});
}, 1000);
// 获取表单phone的值
// const phone = form.getFieldValue('phone');
await getCode(form.getFieldValue('phone'))
} catch (error: any) {
if (error.response) {
const data = error.response.data;
messageApi.open({
type: 'error',
content: data.msg ? data.msg : `${data.path}(${data.status})`,
});
} else {
console.error(error)
}
}
}
const [packloading, setPackloading] = useState(false)
const [packList, setPackList] = useState<any[]>([]) //服务包列表
const [packPage, setPackPage] = useState(1) //服务包分页
const [packTotal, setPackTotal] = useState(0) //服务包总数
// const [packageType, setPackageType] = useState('')
// 获取我得服务包信息
const getPickList = (page: number, packageType: string) => {
get<any>({
messageApi,
url: `/api/proj/servicepkg/packageorder/listpage/self`,
config: {
params: {
page: page,
rows: 10,
packageType: packageType
}
},
onBefore() {
setPackloading(true)
},
onSuccess({ data }) {
setPackList(data.rows)
setPackTotal(data.total)
},
onFinally() {
setPackloading(false)
}
})
}
// useEffect(() => {
// console.log('路径',currentUrl);
// }, []);
// const [page, setPage] = useState(1) //邀请码使用人数分页
// const [total, setTotal] = useState(0) //邀请码使用人数总量
// const [icListLoading, setIcListLoading] = useState(false)
// const [myInvModal, setMyInvModal] = useState(false) //我的邀请码弹窗
// const [createInvModal, setCreateInvModal] = useState(false) //创建邀请码弹窗
// const [icModal, setIcModal] = useState(false) //查看邀请码详情弹窗
// const [selectIc, setSelectIc] = useState('') //选中的邀请码
const redxuState: any = useSelector(state => state)
// const [packageType, setPackageType] = useState('')
const packNum = redxuState.packNum
const phoneModal = redxuState.phoneModal
// const packItems: MenuProps['items'] = [
// {
// key: '1',
// label: (
// <div
// onClick={() => {
// setPackageModal(true)
// setPackPage(1);
// getPickList(1, 'ALL')
// setPackageType('ALL')
// }}
// >
// <span style={{
// fontWeight: 'bold'
// }}>全托管 : {packNum.ALL}件</span>
// </div>
// ),
// },
// {
// key: '2',
// label: (
// <div
// onClick={() => {
// setPackageModal(true)
// setPackPage(1);
// getPickList(1, 'MATERIAL')
// setPackageType('MATERIAL')
// }}
// >
// <span style={{
// fontWeight: 'bold'
// }}>写材料 : {packNum.MATERIAL}件</span>
// </div>
// ),
// },
// ]
// 消息通知弹窗
const [noticeModal, setNoticeModal] = useState(false)
// 客服弹窗
const [kfModal, setkfModal] = useState(false)
// 未读消息数
const [unRead, setUnRead] = useState(0)
// 获取未读消息总数
const getUnRead = () => {
get<any>({
messageApi,
url: '/api/user-msg/count-un-read/self',
onSuccess({ data }) {
// console.log(data);
setUnRead(data.data)
}
})
}
// 邀请码弹窗
const [invitationModal, setinvitationModal] = useState(false)
// 邀请码弹窗加载
const [isLoading, setisLoading] = useState(false)
// 解除绑定邀请码弹窗
// const [relieveModal, setRelieveModal] = useState(false)
// 申请的邀请码
// const [invNum, setInvNum] = useState('')
// 输入的邀请码
const [inInvNum, setInInvNum] = useState('')
// 已绑定的邀请码
const [bindingInvNum, setBindingInvNum] = useState('')
// 邀请码申请状态
// const [icStatus, setIcStatus] = useState('')
// 邀请码返利比例
// const [icRebateRatio, seticRebateRatio] = useState('')
// 全托管分账
// const [icPriceAll, seticPriceAll] = useState(0)
// 写材料分账
// const [icPriceMaterial, seticPriceMaterial] = useState(0)
// 获取邀请码申请状态
// const getIcStatus = () => {
// get<any>({
// messageApi,
// url: '/api/ic/apply/get/self',
// onSuccess({ data }) {
// // console.log(data);
// if (data) {
// setIcStatus(data.applyStatus)
// }
// }
// })
// }
// 获取邀请码信息
const getIc = () => {
get<any>({
messageApi,
url: '/api/ic/get/self',
onBefore() {
setisLoading(true)
},
onSuccess({ data }) {
// console.log(data);
// setInvNum(data.ic)
setBindingInvNum(data.relationIc)
// seticRebateRatio(data.icRebateRatio)
// seticPriceAll(Number(data.icPriceAll) / 100 * Number(data.icRebateRatio) / 100)
// seticPriceMaterial(Number(data.icPriceMaterial) / 100 * Number(data.icRebateRatio) / 100)
if (data.ic == '') {
// getIcStatus()
}
},
onFinally() {
setisLoading(false)
}
})
}
// 绑定邀请码
const putIc = () => {
put<any>({
messageApi,
url: `/api/ic/update-relation-ic`,
body: {
value: inInvNum
},
onBefore() {
},
onSuccess() {
// messageApi.success('保存成功,点击编辑按钮可继续修改项目简介');
// console.log(data);
getIc()
},
onFinally() {
}
})
}
// 确定输入的邀请码事件
const postInvNum = () => {
if (!inInvNum) {
messageApi.open({
type: 'error',
content: '请输入邀请码'
})
} else {
// setBindingInvNum(inInvNum)
// messageApi.open({
// type: 'success',
// content: '已绑定邀请码'
// })
putIc()
}
}
// 我的邀请码列表
// const [myIcList, setMyIcList] = useState([])
// 获取我得邀请码列表
// const getMyIcList = () => {
// get<any>({
// messageApi,
// url: '/api/ic/v2/list/self',
// // body: {
// // value: inInvNum
// // },
// onBefore() {
// setIcListLoading(true)
// },
// onSuccess({ data }) {
// // console.log(data);
// setMyIcList(data)
// // setMyIcList([])
// },
// onFinally() {
// setIcListLoading(false)
// }
// })
// }
// const [minAllPrice, setMinAllPrice] = useState(0) //最低全托管折扣价
// const [minMaterialPrice, setMinMaterialPrice] = useState(0) //最低写材料折扣价
// 查看我得最低定价
// const getMyIcMinPrice = () => {
// get<any>({
// messageApi,
// url: '/api/proj/charge/get',
// onBefore() {
// },
// onSuccess({ data }) {
// // console.log(data.projTypes);
// // console.log((data.projTypes.find((item:any) => item.type === 'MATERIAL')).price/100);
// setMinAllPrice((data.projTypes.find((item: any) => item.type === 'ALL')).price / 100)
// setMinMaterialPrice((data.projTypes.find((item: any) => item.type === 'MATERIAL')).price / 100)
// },
// onFinally() {
// }
// })
// }
// 查看我的邀请码是否超出限制
// const getIcLimit = () => {
// get<any>({
// messageApi,
// url: '/api/ic/v2/list/self',
// onBefore() {
// },
// onSuccess({ data }) {
// // console.log(data);
// // console.log(data.length);
// if (data.length >= 10) {
// messageApi.open({
// type: 'error',
// content: '您的邀请码已达上限'
// })
// } else {
// setCreateInvModal(true)
// getMyIcMinPrice()
// }
// }
// })
// }
// 点击获取邀请码
// const getInvNum = () => {
// post<any>({
// messageApi,
// url: `/api/ic/apply/apply`,
// onBefore() {
// },
// onSuccess() {
// messageApi.success('已申请')
// getIcStatus()
// },
// onFinally() {
// }
// })
// // setInvNum('RSDNQ5H7')
// }
// 表单事件
// const onFinish: FormProps<FieldType>['onFinish'] = (values: any) => {
// // console.log('Success:', values.icPriceAll);
// // console.log('Success:', values.icPriceMaterial);
// post<any>({
// messageApi,
// url: `/api/ic/v2/save`,
// body: {
// icPriceAll: values.icPriceAll * 100,
// icPriceMaterial: values.icPriceMaterial * 100
// },
// onBefore() {
// setIcListLoading(true)
// },
// onSuccess() {
// // console.log(data);
// messageApi.success('创建成功')
// // 关闭弹窗
// setCreateInvModal(false)
// },
// onFinally() {
// setIcListLoading(false)
// }
// })
// };
// const onFinishFailed: FormProps<FieldType>['onFinishFailed'] = (errorInfo) => {
// console.log('Failed:', errorInfo);
// };
// 使用的邀请码的人的信息列表
// const [icList, setIcList] = useState<icDataType[]>([]);
// 获取使用的邀请码的人的信息
// const getIcUserInfo = (id: string, page: number) => {
// get<any>({
// messageApi,
// url: `/api/ic/v2/user-list/${id}`,
// config: {
// params: {
// page: page,
// rows: 10
// }
// },
// onBefore() {
// setIcListLoading(true)
// },
// onSuccess({ data }) {
// setIcList(data.rows)
// setTotal(data.total)
// },
// onFinally() {
// setIcListLoading(false)
// }
// })
// }
// 复制邀请码
// const copyInvNum = (code: any) => {
// // 创建一个临时的 input 元素
// const tempInput = document.createElement('input');
// document.body.appendChild(tempInput);
// tempInput.value = code;
// // 选中 input 中的内容
// tempInput.select();
// tempInput.setSelectionRange(0, 99999); // 对于移动设备的支持
// // 执行复制操作
// try {
// document.execCommand('copy');
// messageApi.open({
// type: 'success',
// content: '已复制到剪切板'
// })
// } catch (err) {
// messageApi.open({
// type: 'error',
// content: '复制失败,请手动复制'
// })
// }
// // 移除临时的 input 元素
// document.body.removeChild(tempInput);
// }
// const columns: TableProps<DataType>['columns'] = [
// {
// title: '序号',
// align: 'center',
// dataIndex: 'usericId',
// key: 'usericId',
// render: (_text, _record, index) => <div>
// {index + 1}
// </div>,
// },
// {
// title: '邀请码',
// align: 'center',
// dataIndex: 'usericId',
// key: 'usericId',
// // render: (text) => <a>{text}</a>,
// },
// {
// title: '创建时间',
// align: 'center',
// dataIndex: 'createTime',
// key: 'usericId',
// // render: (text) => <a>{text}</a>,
// },
// {
// title: '写材料价格',
// align: 'center',
// dataIndex: 'icPriceMaterial',
// key: 'usericId',
// render: (text) => <>{text / 100}元</>
// },
// {
// title: '全托管价格',
// align: 'center',
// dataIndex: 'icPriceAll',
// key: 'usericId',
// render: (text) => <>{text / 100}元</>
// },
// // {
// // title: '返利比例',
// // align: 'center',
// // dataIndex: 'icRebateTatio',
// // key: 'usericId',
// // render: (text) => <>{text}%</>,
// // },
// // {
// // title: '产生的成交金额',
// // align: 'center',
// // dataIndex: 'totalMoney',
// // key: 'usericId',
// // },
// {
// title: '操作',
// align: 'center',
// key: 'usericId',
// render: (_, record) => (
// <Space size="middle">
// <a style={{
// textDecoration: 'underline',
// }} onClick={() => {
// copyInvNum(record.usericId)
// }}>复制</a>
// <a style={{
// textDecoration: 'underline',
// }} onClick={() => {
// setIcModal(true)
// setSelectIc(record.usericId)
// getIcUserInfo(record.usericId, page)
// }}>查看使用用户</a>
// </Space>
// ),
// },
// ];
// const icColumns: TableProps<icDataType>['columns'] = [
// {
// title: '序号',
// align: 'center',
// dataIndex: 'index',
// key: 'userInfoId',
// render: (_text, _record, index) => <div>
// {index + 1}
// </div>,
// },
// // {
// // title: '用户ID',
// // align: 'center',
// // dataIndex: 'userId',
// // key: 'userInfoId',
// // // render: (text) => <a>{text}</a>,
// // },
// {
// title: '账号',
// align: 'center',
// dataIndex: 'userUsername',
// key: 'userInfoId',
// // render: (text) => <a>{text}</a>,
// },
// {
// title: '昵称',
// align: 'center',
// dataIndex: 'userInfoName',
// key: 'userInfoId',
// // render: (text) => <a>{text}</a>,
// },
// {
// title: '最近登录时间',
// align: 'center',
// dataIndex: 'lastLoginTime',
// key: 'userInfoId',
// // render: (text) => <a>{text}</a>,
// },
// ]
const dispath = useDispatch()
// 更新所属者表格储存至redux
const upBelongArray = () => {
get({
messageApi,
url: `/api/proj-owner/list/self`,
onBefore() {
},
onSuccess(data: any) {
// console.log('所属者表格', data.data);
// setBelongPeopleArray(data.data)
// 存redux的belongArray
dispath({
type: 'uparray',
val: data.data
})
},
onFinally() {
}
})
}
const globalContext = useContext(GlobalContext);
const globalDispatchContext = useContext(GlobalDispatchContext);
const [messageApi, contextHolder] = message.useMessage();
const [modal, modalHolder] = Modal.useModal();
const [loading, setLoading] = useState<boolean>(false);
const [isSelfModalOpen, setIsSelfModalOpen] = useState(false);
const [isPasswordModalOpen, setIsPasswordModalOpen] = useState(false);
const [isInvoiceModalOpen, setIsInvoiceModalOpen] = useState(false);
// 我的订单弹窗
const [myorderModal, setMyorderModal] = useState(false)
// 所属者弹窗
const [belongModal, setBelongModal] = useState(false)
const [belongPeopleInfo, setBelongPeopleInfo] = useState({
authorName: '',
authorType: '',
authorIdCardType: '',
authorIdCard: '',
authorCrcAccount: '',
authorId: '',
authorProvinceCity: ''
})
const setValue = () => {
// console.log(value);
}
const setConcatValue = () => {
}
// 联系人弹窗
const [contactModal, setContactModal] = useState(false)
// 套餐包弹窗
const [packageModal, setPackageModal] = useState(false)
const [concatPeopleInfo, setConcatPeopleInfo] = useState({
applyConcatId: '',
applyContactCsaNo: '',
applyContactEmail: '',
applyContactName: '',
applyContactPhone: '',
applyContactCompany: ''
})
const packColumns: TableColumnsType<DataType> = [
{
title: '序号',
dataIndex: 'index',
key: 'packageOrderId',
align: 'center',
render: (_text, _record, index) => (packPage - 1) * 10 + index + 1, // 显示序号从1开始
},
{
title: '套餐名称',
dataIndex: 'packageName',
key: 'packageOrderId',
// 居中显示
align: 'center',
},
// packageType
{
title: '套餐类型',
dataIndex: 'packageInfoAppDTO',
key: 'packageOrderId',
// 居中显示
align: 'center',
render: (text) => {
return <div>{text.packageType == "ALL" ? '全托管' : '写材料'} </div>
}
},
// {
// title: '套餐类型',
// dataIndex: 'packageInfoAppDTO',
// key: 'packageOrderId',
// // 居中显示
// align: 'center',
// render: (text) => {
// return <div>{text} </div>
// }
// },
{
title: '价格',
dataIndex: 'packageTotalMoney',
key: 'packageOrderId',
// 居中显示
align: 'center',
render: (text) => {
return <div>{text / 100}</div>
}
},
{
title: '剩余次数',
dataIndex: 'packageTotalSurplusCount',
align: 'center',
key: 'packageOrderId',
render: (text: number) => {
return <div>{text} </div>
}
},
{
title: '总次数',
dataIndex: 'packageTotalCount',
align: 'center',
key: 'packageOrderId',
render: (text: any) => {
return <div>{text} </div>
}
},
{
title: '下单时间',
align: 'center',
dataIndex: 'gmtCreate',
key: 'packageOrderId',
// render: (text: string) => {
// return <div title={text} style={{ width: 200, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>{text}</div>
// }
},
];
// 优惠券弹窗
// const [couponModal, setCouponModal] = useState(false)
// const [belongArray,setBelongArray] = useState([])
// // 获取初始所属者数组
// const getLength = () => {
// get({
// messageApi,
// url: `/api/proj-owner/list/self`,
// onBefore() {
// },
// onSuccess(data: any) {
// // console.log('所属者表格', data.data);
// // setBelongPeopleArray(data.data)
// setBelongArray(data.data )
// },
// onFinally() {
// }
// })
// }
// // 获取更新的所属者数组并且做对比查看是否刷新网页
// const getNewLength = () => {
// get({
// messageApi,
// url: `/api/proj-owner/list/self`,
// onBefore() {
// },
// onSuccess(data: any) {
// // console.log('所属者表格', data.data);
// // setBelongPeopleArray(data.data)
// console.log('查看结果',data.data != belongArray);
// // if (data.data == belongArray) {
// // window.location.reload();
// // }
// },
// onFinally() {
// }
// })
// }
useEffect(() => {
// getLength()
reloadUser(messageApi, globalDispatchContext).then((data) => {
// console.log('嘎嘎嘎哈哈', data);
// setUserId(data.userId)
if (data.isUpdateWxUsernamePhone == 1) {
// if (data.isUpdateWxUsernamePhone != 1) {
setIsUpdateWxUsernamePhone(true);
dispath({
type: 'changePhoneModal',
val: true
})
}
if (data.isUpdateWxUsernamePhone != -1) {
setIsUnbindPhone(true);
}
//嘻嘻嘻
// if(!data.hasUserInfo && data.isUpdateWxUsernamePhone != 1) {
// setIsSelfModalOpen(true);
// }
if (!data.hasUserInfo) {
setIsSelfModalOpen(true);
}
});
}, [globalContext.user]);
// const getUserData = () => {
// reloadUser(messageApi, globalDispatchContext).then((data) => {
// // console.log(data);
// //嘻嘻嘻
// if (!data.hasUserInfo) {
// setIsSelfModalOpen(true);
// }
// if (data.isUpdateWxUsernamePhone != -1) {
// setIsUnbindPhone(true);
// }
// // if (!data.hasUserInfo && !phoneModal) {
// // setIsSelfModalOpen(true);
// // }
// });
// }
// 刷新用户信息
const reloadUserInterval = async () => {
await reloadUser(messageApi, globalDispatchContext);
};
// 我的套餐包统计
const getMyPackNum = () => {
get<any>({
messageApi,
url: `/api/proj/servicepkg/packageorder/count/self`,
onBefore() {
},
onSuccess({ data }) {
// console.log(data);
dispath({
type: 'upPackNum',
val: {
ALL: data.ALL,
MATERIAL: data.MATERIAL,
}
})
},
onFinally() {
}
})
}
useEffect(() => {
getUnRead()
// 五分钟刷新一次用户信息
setInterval(reloadUserInterval, 5 * 60 * 1000);
getMyPackNum()
// console.log('是否关闭',phoneModal);
}, [])
const loginFlag = async () => {
try {
await getLoginflag(globalContext.user.userId)
sessionStorage.setItem('isLoggedIn', 'true');
}
catch (error: any) {
if (error.response) {
const data = error.response.data;
messageApi.open({
type: 'error',
content: data.msg ? data.msg : `${data.path}(${data.status})`,
});
} else {
console.error(error)
}
}
}
useEffect(() => {
if (globalContext.user.userId) {
const islogin = sessionStorage.getItem('isLoggedIn');
if (!islogin) {
loginFlag()
}
// loginFlag()
}
// loginFlag()
}, [globalContext.user.userId])
const items: MenuProps['items'] = [
{
key: 'userinfo',
label: (
<div className="dropdown-item">
<UserOutlined />
<span className="title"></span>
</div>
),
onClick: () => {
setIsSelfModalOpen(true);
}
},
// ...(isUnbindPhone ? [
// {
// key: 'UnbindPhone',
// label: (
// <div className="dropdown-item">
// <UserOutlined />
// <span className="title">解除绑定</span>
// </div>
// ),
// onClick: () => {
// // setIsSelfModalOpen(true);
// }
// }
// ] : []),
{
key: 'changePass',
label: (
<div className="dropdown-item">
<KeyOutlined />
<span className="title"></span>
</div>
),
onClick: () => {
setIsPasswordModalOpen(true);
}
},
{
key: 'invoice',
label: (
<div className="dropdown-item">
<AccountBookOutlined />
<span className="title"></span>
</div>
),
onClick: () => {
setIsInvoiceModalOpen(true);
}
},
{
key: 'myorder',
label: (
<div className="dropdown-item">
{/* <UsergroupAddOutlined /> */}
<ContainerOutlined />
<span className="title"></span>
</div>
),
onClick: () => {
setMyorderModal(true)
}
},
{
key: 'belong',
label: (
<div className="dropdown-item">
<MenuFoldOutlined />
<span className="title"></span>
</div>
),
onClick: () => {
setBelongModal(true)
}
},
{
key: 'contact',
label: (
<div className="dropdown-item">
<UsergroupAddOutlined />
<span className="title"></span>
</div>
),
onClick: () => {
setContactModal(true)
}
},
{
key: 'coupon',
label: (
<div className="dropdown-item">
<GiftOutlined />
<span className="title"></span>
</div>
),
onClick: () => {
// setCouponModal(true)
dispath({
type: 'changeCouponModal',
val: true
})
}
},
{
key: 'package',
label: (
<div className="dropdown-item">
<TableOutlined />
<span className="title"></span>
</div>
),
onClick: () => {
// setCouponModal(true)
setPackageModal(true)
setPackPage(1);
getPickList(1, '')
// setPackageType('')
}
},
{
key: 'logout',
label: (
<div className="dropdown-item">
<LogoutOutlined />
<span className="title">退</span>
</div>
),
onClick: () => {
reMenuActive()
// 清除缓存
sessionStorage.clear()
window.location.href = '/copyright/logout'
}
},
]
return (
<>
<div className="head" style={{
// background: THEME == 'blue' ? '#001529' : '#181818',
backgroundImage: `url(${headBg})`,
}}>
<div className="center">
<div className="left">
{/* <span className="sys-title">AI引擎软著</span>
<Divider type="vertical"/>
<span className="sys-title-sub">软件著作权一站式服务平台</span> */}
<img style={{
marginLeft: THEME == 'fzkj' ? 20 : 120,
}} src={logoImg} alt="" />
</div>
{/* <div className="right" style={{backgroundImage: `url(${headRightBg})`}}> */}
<div className="right">
<div className='kf' onClick={() => {
setkfModal(true)
}}>
<div className='kfIcon'>
<img src={kf} width={20} alt="" />
</div>
<div className='kfText'>
线
</div>
</div>
<div className='headLine'></div>
{/* <div style={{ padding: '10px 20px', background: 'rgba(255,228,181,0.2)', display: 'flex' }}>
<div style={{
fontSize: 16,
color: '#FF9F08',
fontWeight: 700,
cursor: 'pointer'
}}
onClick={() => {
setPackageModal(true)
setPackPage(1);
getPickList(1, '')
}}
> 套餐包</div>
<div className='headLine' style={{ background: "#FFEDCA" }}></div>
<div>
<span style={{
fontSize: 12,
color: '#FF9F08',
// fontWeight: 700,
}}>全托管</span>
<span style={{
fontSize: 16,
color: '#FF9F08',
fontWeight: 700,
marginLeft: 5,
marginRight: 5,
}}>{packNum.ALL}</span>
<span style={{
fontSize: 12,
color: '#FF9F08',
// fontWeight: 700,
}}>件</span>
</div>
<div style={{ marginLeft: 10 }}>
<span style={{
fontSize: 12,
color: '#FF9F08',
// fontWeight: 700,
}}>写材料</span>
<span style={{
fontSize: 16,
color: '#FF9F08',
fontWeight: 700,
marginLeft: 5,
marginRight: 5,
}}>{packNum.MATERIAL}</span>
<span style={{
fontSize: 12,
color: '#FF9F08',
// fontWeight: 700,
}}>件</span>
</div>
</div> */}
<div style={{
padding: '3px 20px',
// boxSizing: 'border-box',
// background: 'rgba(222,222,222,0.3)',
background: 'var(--color-pickback)',
marginTop: -3,
}}>
<div style={{
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
cursor: 'pointer',
}}
onClick={() => {
setPackageModal(true)
setPackPage(1);
getPickList(1, '')
}}
>
<img src={pack} width={19} height={19} alt="" />
<div style={{
fontSize: 14,
marginLeft: 5,
color: 'var(--color-kefu)',
}}></div>
</div>
<div style={{
display: 'flex',
alignItems: 'center',
marginTop: 5
}}>
<div>
<span style={{
fontSize: 12,
color: 'var(--color-pickfont)',
}}> </span>
<span
style={{
fontSize: 16,
color: 'var(--color-picknum)',
fontWeight: 700,
}}
>{packNum.ALL}</span>
<span style={{
fontSize: 12,
color: 'var(--color-pickfont)',
}}> </span>
</div>
<div style={{
marginLeft: 15
}}>
<span style={{
fontSize: 12,
color: 'var(--color-pickfont)',
}}> </span>
<span
style={{
fontSize: 16,
color: 'var(--color-picknum)',
fontWeight: 700,
}}
>{packNum.MATERIAL}</span>
<span style={{
fontSize: 12,
color: 'var(--color-pickfont)',
}}> </span>
</div>
</div>
</div>
<div className='headLine'></div>
{/* <div className='head-nav' onClick={() => {
window.open('https://www.aimzhu.com/operator/route/agreementportal/view?agreementId=c0c5683a-bef3-40c3-8395-900a362ea234&title=系统操作流程')
}}>
<QuestionCircleOutlined />
</div> */}
{/* <div className='headLine'></div> */}
<BalanceHead />
{/* <div className='headLine'></div> */}
<RechargeHead />
<div className='headLine'></div>
{/* <Dropdown
menu={{ items: packItems }}
>
<div className='kfText' style={{
fontSize: 16,
color: '#FF9F08',
fontWeight: 700,
cursor: 'pointer'
}}
// onClick={() => {
// setPackageModal(true)
// setPackPage(1);
// getPickList(1,packageType)
// }}
>套餐包</div>
</Dropdown> */}
{/* <div className='headLine'></div> */}
<div className='invitationButton' onClick={() => {
setinvitationModal(true)
getIc()
}}
>
</div>
<div className='headLine'></div>
<div className='head-nav' title='系统操作流程' onClick={() => {
// window.open('https://www.aimzhu.com/operator/route/agreementportal/view?agreementId=c0c5683a-bef3-40c3-8395-900a362ea234&title=系统操作流程')
getUseUrl()
}}>
<QuestionCircleOutlined />
</div>
<div className='headLine'></div>
<div className='head-notice' onClick={() => {
setNoticeModal(true)
}}>
<BellOutlined />
<div className='noticeNum' style={{ display: unRead == 0 ? 'none' : 'block' }}>{unRead}</div>
</div>
<div className='headLine'></div>
{/*<MessageHead/>*/}
<div style={{ display: 'flex', alignContent: 'center', padding: '0', cursor: 'pointer' }}>
{/* <div style={{ width: '50px', height: '50px', borderRadius: '25px', marginLeft: '', marginRight: '10px' }} >
<img src={userImg} alt="" width={50} height={50} />
</div> */}
<Dropdown menu={{
items: items
}}>
<Space>
{/* 您好:{globalContext.user.nickname} */}
<span style={{
color: 'var(--color-kefu)',
}}> </span>
<DownOutlined style={{
color: 'var(--color-kefu)',
}} />
</Space>
</Dropdown>
</div>
</div>
</div>
</div>
<Modal open={isSelfModalOpen && !phoneModal}
centered
zIndex={100}
destroyOnClose={true}
title="个人信息"
footer={false}
onCancel={() => {
if (!globalContext.user.hasUserInfo) {
messageApi.info('请完善个人信息');
return;
}
setIsSelfModalOpen(false)
// console.log('用户信息',globalContext.user.hasUserInfo);
}}>
<UserEdit handleConfirm={(data) => {
modal.confirm({
title: '提示',
content: '确定保存吗?',
okText: '确认',
cancelText: '取消',
centered: true,
okButtonProps: {
style: {
backgroundColor: 'var(--color-primary)'
}
},
onOk: () => {
setIsSelfModalOpen(false);
put({
messageApi,
url: '/api/user-info/update-self',
body: data,
onBefore() {
setLoading(true);
},
onSuccess() {
messageApi.success('修改成功');
},
onFinally() {
setLoading(false);
}
})
}
});
}}
isUnbindPhone={isUnbindPhone}
/>
</Modal>
<Modal open={isPasswordModalOpen}
centered
title="修改密码"
footer={false}
onCancel={() => {
setIsPasswordModalOpen(false)
}}>
<PasswordChange handleConfirm={(data) => {
modal.confirm({
title: '提示',
content: '确定修改吗?',
okText: '确认',
cancelText: '取消',
okButtonProps: {
style: {
backgroundColor: 'var(--color-primary)'
}
},
onOk: () => {
put({
messageApi,
url: '/api/user/update-password',
body: data,
onBefore() {
setLoading(true);
},
onSuccess() {
setIsPasswordModalOpen(false);
messageApi.success('修改成功,重新登录生效');
},
onFinally() {
setLoading(false);
}
})
}
});
}} />
</Modal>
<Modal open={isInvoiceModalOpen}
centered
title="发票管理"
width={1300}
footer={false}
onCancel={() => setIsInvoiceModalOpen(false)}
destroyOnClose
>
<InvoiceList />
</Modal>
<Modal title="知识产权所属者"
destroyOnClose
centered
open={belongModal}
width={1200}
footer={null}
onCancel={() => {
upBelongArray()
// getNewLength()
setBelongModal(false)
}}>
<BelongPeople closeModal={() => { setBelongModal(false) }} setBelongPeopleInfo={setBelongPeopleInfo} belongPeopleInfo={belongPeopleInfo} setValue={setValue} isShow={false} ></BelongPeople>
</Modal>
<Modal title="知识产权联系人"
destroyOnClose
centered
open={contactModal}
width={1200}
footer={null}
onCancel={() => {
setContactModal(false)
}}>
<ContactPeople isShow={false} closeModal={() => { setContactModal(false) }} setConcatPeopleInfo={setConcatPeopleInfo} concatPeopleInfo={concatPeopleInfo} setConcatValue={setConcatValue}></ContactPeople>
</Modal>
<Modal title="套餐包"
destroyOnClose
centered
open={packageModal}
width={1000}
footer={null}
onCancel={() => {
setPackageModal(false)
setPackPage(1);
}}>
<Spin tip="加载中..." spinning={packloading} >
<Table
columns={packColumns}
dataSource={packList}
pagination={{
defaultPageSize: 10, // 设置默认一页显示 5 条数据,
current: packPage,
total: packTotal,
onChange: (page: number) => {
setPackPage(page);
getPickList(page, '')
// console.log(page);
}
}}
rowKey="packageOrderId"
/>
</Spin>
</Modal>
<Modal title="邀请码"
destroyOnClose
centered
open={invitationModal}
width={578}
footer={null}
onCancel={() => {
// getNewLength()
setinvitationModal(false)
// setInvNum('')
setInInvNum('')
}}>
<Spin tip="加载中..." spinning={isLoading}>
{/* <div className='invitation-box'> */}
{/* <div className='invBox-top'>
<div className='invBox-title'>
我的邀请码
</div>
<div className='invBox-line'></div>
<div className='invBox-btn' onClick={() => {
getInvNum()
}} style={{ display: invNum || icStatus ? 'none' : 'block' }}>
点击申请
</div>
<div className='invBox-btnTwo' style={{ display: icStatus == 'PENDING' ? 'block' : 'none' }}>
正在申请中
</div>
<div className='invBox-btnthree' style={{ display: icStatus == 'REJECTED' ? 'block' : 'none' }}>
<div className='errorBox'>
<div className='errorBox-title'> 申请失败!</div>
<div className='errorBox-btn' onClick={() => {
getInvNum()
}}>重新申请</div>
</div>
</div>
<div className='invBox-Num' style={{ display: invNum ? 'block' : 'none' }}>
<div className='invNum-box'>
<div className='invNum'>
{invNum}
</div>
<div className='copyBtn' onClick={() => {
copyInvNum()
}}>
复制
</div>
</div>
</div>
</div> */}
{/* <div className='invBox-top'>
<div className='invBox-titleTop'
>
<span
onClick={() => {
getMyIcList()
setMyInvModal(true)
}}
style={{
cursor: 'pointer'
}}>查看我的邀请码</span>
</div>
<div className='invBox-lineTop'></div>
<div className='createInv'>
<span
onClick={() => {
getIcLimit()
}}
style={{
cursor: 'pointer'
}}>创建邀请码</span>
</div>
</div> */}
{/* <div className='invBox-bot'>
<div className='invBox-tips' >
{icRebateRatio ?
(<div>
<div> 邀请码分享给他人,即可获得{icRebateRatio}%佣金</div>
</div>
)
: (<>邀请码分享给他人,即可获得佣金</>)}
</div>
</div> */}
{/* </div> */}
<div className='invitation-box'>
<div className='invBox-top'>
<div className='invBox-title' style={{
fontSize: '24px',
width: bindingInvNum ? 264 : 362,
}}>
</div>
<div className='invBox-line'></div>
<div className='invBox-input' style={{ display: bindingInvNum ? 'none' : 'block' }}>
<div className='invInput'>
<Input value={inInvNum} style={{ width: 261, height: 60, borderRadius: 25, fontSize: 24, textAlign: 'center' }} onChange={(e) => {
setInInvNum(e.target.value)
}} />
<div className='invImg' onClick={() => {
postInvNum()
}}>
<img src={inv} alt="" style={{ width: 31, height: 30 }} />
</div>
</div>
</div>
<div className='invBox-inputl' style={{ display: bindingInvNum ? 'block' : 'none' }}>
<div className='invInputl'>
<div className='invNum-box'>
<div className='invNum' >
{bindingInvNum}
</div>
{/* <div className='relieveBtn' onClick={() => {
setRelieveModal(true)
}}>
解绑
</div> */}
</div>
</div>
</div>
</div>
<div className='invBox-bot'>
<div className='invBox-tips' >
{bindingInvNum ? '已绑定邀请码' : '输入他人的邀请码,即可获得相应优惠'}
</div>
</div>
</div>
</Spin>
</Modal>
{/* <Modal title="提示"
okText="确认"
cancelText="取消"
destroyOnClose
open={relieveModal}
onOk={() => {
setBindingInvNum('')
setInInvNum('')
setRelieveModal(false)
}}
onCancel={() => {
setRelieveModal(false)
}}>
<div>
确定解绑当前邀请码吗?
</div>
</Modal> */}
<Modal title="我的订单"
footer={null}
centered
// okText="确认"
// cancelText="取消"
destroyOnClose
open={myorderModal}
// onOk={() => {
// setBindingInvNum('')
// setInInvNum('')
// setRelieveModal(false)
// }}
width={1500}
onCancel={() => {
setMyorderModal(false)
}}>
<MyOrder></MyOrder>
</Modal>
<Modal title="消息通知"
footer={null}
centered
destroyOnClose
open={noticeModal}
width={1200}
onCancel={() => {
setNoticeModal(false)
getUnRead()
// setUnRead(0)
}}>
<NoticeModal></NoticeModal>
</Modal>
<Modal title="在线客服"
footer={null}
destroyOnClose
open={kfModal}
centered
width={450}
onCancel={() => {
setkfModal(false)
}}>
<div className='kfBox'>
<div className='kfTitle'></div>
<div className='kfImg'>
<img src={kfImg} width={300} alt="" />
</div>
<div className='kfHttp' >
<span></span><span className='kfHttpText' onClick={
() => {
if (THEME == 'mzw') {
window.open('https://work.weixin.qq.com/kfid/kfc599f9d40b65ac392')
} else {
if (THEME == 'fzkj') {
window.open('https://work.weixin.qq.com/kfid/kfc2ea0c81bfb1a956c')
}
}
}
}></span>
</div>
</div>
</Modal>
{/* <Modal
title="绑定手机号"
okText="确认"
cancelText="取消"
destroyOnClose={true}
footer={null}
open={isUpdateWxUsernamePhone}
onCancel={() => {
setIsUpdateWxUsernamePhone(false);
dispath({
type: 'changePhoneModal',
val: false
})
getUserData()
}}
width={500}
centered
>
<div className='phoneBox'>
<Form name="Form"
form={form}
onFinish={onFinish}
initialValues={{ softWare: '' }}
>
<div className='phoneBoxInput'>
<div className='phoneBoxTitle'>手机号<span style={{ color: 'red' }}>*</span></div>
<Form.Item name="phone" label="" rules={[{ required: true, message: '请输入手机号' },
{
pattern: /^1[3-9]\d{9}$/,
message: '请输入有效的手机号'
}
]}>
<Input style={{
width: '300px',
height: '42px',
}} placeholder="请输入手机号" />
</Form.Item>
</div>
<div className='phoneBoxInput' style={{
position: 'relative',
}}>
<div className='phoneBoxTitle'>验证码<span style={{ color: 'red' }}>*</span></div>
<Form.Item name="smsCode" label="" rules={[{ required: true, message: '请输入验证码' }]}>
<Input style={{
width: '300px',
height: '42px',
}} placeholder="请输入验证码" />
</Form.Item>
{countdown === 0 ? (
<div
style={{
position: 'absolute',
right: '0',
top: '0',
width: '90px',
height: '42px',
justifyContent: 'center',
alignItems: 'center',
display: 'flex',
cursor: 'pointer',
color: '#929292',
paddingRight: 10,
}}
onClick={sendCode}
>
发送验证码
</div>
) : (
<div
style={{
position: 'absolute',
right: '0',
top: '0',
width: '90px',
height: '42px',
justifyContent: 'center',
alignItems: 'center',
display: 'flex',
color: '#929292',
paddingRight: 10,
}}
>
倒计时 {countdown} 秒
</div>
)}
</div>
<div>
<Form.Item>
<Button type="primary" htmlType="submit">
提交
</Button>
</Form.Item>
</div>
</Form>
</div>
</Modal> */}
{/* 绑定手机号 */}
<div style={{
display: isUpdateWxUsernamePhone ? 'block' : 'none',
position: 'fixed', // 固定定位
top: 0,
left: 0,
width: '100vw', // 宽度占满视口
height: '100vh', // 高度占满视口
backgroundColor: 'rgba(0, 0, 0, 0.5)', // 半透明黑色背景
zIndex: 100, // 确保在其他元素之上
}}>
<div style={{
width: '100%',
height: '100%',
// background:'pink'
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
}}>
{/* <Spin tip="正在绑定..." spinning={phoneloading} style={{
zIndex: 101,
}}> */}
<div className='phoneMaskBox'>
<div className='phoneBoxLeft'>
<div
style={{
marginTop: 79,
marginLeft: 43
}}
>
<img src={title} alt="" width={79} height={27} />
</div>
<div
style={{
marginTop: 16,
marginLeft: 43
}}
>
<img src={titleB} alt="" width={109} height={17} />
</div>
<div
style={{
marginTop: 10,
marginLeft: 38,
}}
>
<img src={line} alt="" width={180} height={19} />
</div>
</div>
<div className='phoneBoxRight'>
<div style={{
width: '100%',
fontSize: 20,
display: 'flex',
justifyContent: 'flex-end',
// height: 21,
// background: 'pink'
}}>
{/* <div style={{ cursor: 'pointer' }} onClick={() => {
setIsUpdateWxUsernamePhone(false);
dispath({
type: 'changePhoneModal',
val: false
})
getUserData()
}}>
<CloseOutlined />
</div> */}
</div>
<div style={{
// background:'pink',
width: '100%',
height: '100%',
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center'
}}>
<div className='phoneTitle'></div>
<div className='phoneTitleB'></div>
<div style={{
marginTop: 30
}}>
<Form name="Form"
form={form}
onFinish={onFinish}
initialValues={{ softWare: '' }}
// style={{ maxWidth: 600 }}
>
<div className='phoneBoxInput'>
<Form.Item name="phone" label="" rules={[{ required: true, message: '请输入手机号' },
{
pattern: /^1[3-9]\d{9}$/,
message: '请输入有效的手机号'
}
]}>
<Input style={{
width: '300px',
height: '42px',
fontSize: 16,
background: '#F7F7F7',
}} placeholder="请输入手机号"
/>
</Form.Item>
</div>
<div className='phoneBoxInput' style={{
}}>
<Form.Item name="smsCode" label="" rules={[{ required: true, message: '请输入验证码' }]}>
<Input style={{
width: '200px',
height: '42px',
fontSize: 16,
background: '#F7F7F7',
}} placeholder="请输入验证码" />
</Form.Item>
{countdown === 0 ? (
<div
className='sendCode'
onClick={sendCode}
>
</div>
) : (
<div
className='sendCode'
style={{
cursor: 'unset',
}}
>
{countdown}
</div>
)}
</div>
<div>
<Form.Item>
<Button style={{
width: 300,
height: 42,
background: '#3B2C0D',
color: '#fff',
fontSize: 16,
borderRadius: 10,
marginTop: 20,
}}
type="primary" htmlType="submit"
disabled={phoneloading}
>
{phoneloading ? '正在绑定...' : '绑定'}
</Button>
</Form.Item>
</div>
</Form>
</div>
{/* <div className='closeTitle' onClick={() => {
setIsUpdateWxUsernamePhone(false);
dispath({
type: 'changePhoneModal',
val: false
})
getUserData()
}}>跳过,下次再说</div> */}
{/* <div style={{
display: 'none'
}}>
<form ref={formRef}
action={operatorBaseUrl + '/operator/oauth/wx/update/phone'} method='post'
>
<input name="userId" defaultValue={userId} />
<input name="phone" defaultValue={form.getFieldValue('phone') || ''} />
<input name="smsCode" defaultValue={form.getFieldValue('smsCode') || ''} />
<input name="errorRedirectUrl" defaultValue={encodeURI(currentUrl)} />
</form>
</div> */}
</div>
</div>
</div>
{/* </Spin> */}
</div>
</div>
{/* <Modal title="优惠券"
footer={null}
destroyOnClose
open={couponModal}
width={809}
onCancel={() => {
// setCouponModal(false)
// setUnRead(0)
}}>
<HeadCouponModal closeModal={() => {
// setCouponModal(false)
}}></HeadCouponModal>
</Modal> */}
{/* <Modal title="我的邀请码"
// footer={null}
centered
destroyOnClose
open={myInvModal}
footer={null}
width={1000}
onCancel={() => {
setMyInvModal(false)
}}>
<Spin tip="加载中..." spinning={icListLoading}>
<div>
<Table columns={columns} dataSource={myIcList}
pagination={false}
bordered
key="usericId"
rowKey="usericId"
locale={{
emptyText: () => {
return (
<div style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
height: 300,
}}>
<Empty description="暂无邀请码" />
</div>
)
},
}}
/>
</div>
</Spin>
</Modal> */}
{/* <Modal title="创建邀请码"
// footer={null}
centered
destroyOnClose
open={createInvModal}
footer={null}
width={400}
onCancel={() => {
setCreateInvModal(false)
}}>
<div style={{
paddingTop: 20,
}}>
<Spin tip="加载中..." spinning={icListLoading}>
<Form
name="basic"
// labelCol={{ span: 8 }}
// wrapperCol={{ span: 16 }}
// style={{ maxWidth: 600 }}
initialValues={{ remember: true }}
onFinish={onFinish}
// onFinishFailed={onFinishFailed}
autoComplete="off"
> <div style={{
display: 'flex',
// alignItems:'center',
justifyContent: "center"
}}>
<div style={{ fontSize: 16, height: 40, lineHeight: "40px", marginRight: 5, textWrap: "nowrap" }}> <span style={{ color: 'red' }}>*</span> 全托管价格</div>
<Form.Item<FieldType>
// label={
// <div style={{ fontSize: 16 }}>全托管价格</div>
// }
name="icPriceAll"
rules={[
{ required: true, message: '请输入写全托管价格' },
{
validator: (_, value) => {
if (value && Number(value) < minAllPrice) {
return Promise.reject(new Error(`全托管价格不能小于${minAllPrice}`));
}
return Promise.resolve();
},
},
]}
>
<InputNumber
size="large"
// min={minAllPrice}
style={{ width: 250 }}
placeholder={`全托管价格不能小于${minAllPrice}元`}
/>
</Form.Item>
</div>
<div style={{
display: 'flex',
// alignItems:'center',
justifyContent: "center"
}}>
<div style={{ fontSize: 16, height: 40, lineHeight: "40px", marginRight: 5, textWrap: "nowrap" }}> <span style={{ color: 'red' }}>*</span> 写材料价格</div>
<Form.Item<FieldType>
// label={
// <div style={{ fontSize: 16 }}>写材料价格</div>
// }
name="icPriceMaterial"
rules={[
{ required: true, message: '请输入写材料价格' },
{
validator: (_, value) => {
if (value && Number(value) < minMaterialPrice) {
return Promise.reject(new Error(`写材料价格不能小于${minMaterialPrice}`));
}
return Promise.resolve();
},
},
]}
>
<InputNumber
// min={minMaterialPrice}
size="large"
placeholder={`写材料价格不能小于${minMaterialPrice}元`}
style={{ width: 250 }} />
</Form.Item>
</div>
<Form.Item label={null}>
<div style={{
// background:'pink',
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
marginTop: 20,
}}>
<Button type="primary" htmlType="submit" block size={'large'} >
创建邀请码
</Button>
</div>
</Form.Item>
</Form>
</Spin>
</div>
</Modal> */}
{/* <Modal title={`邀请码${selectIc}使用用户`}
// footer={null}
centered
destroyOnClose
open={icModal}
footer={null}
width={1000}
onCancel={() => {
setIcModal(false)
}}>
<Spin tip="加载中..." spinning={icListLoading}>
<Table columns={icColumns} dataSource={icList}
pagination={
{
pageSize: 10,
total: total,
onChange: (currentPage) => {
setPage(currentPage);
getIcUserInfo(selectIc, currentPage)
},
showSizeChanger: false,
current: page
}
}
bordered
key="userInfoId"
rowKey="userInfoId"
locale={{
emptyText: () => {
return (
<div style={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
height: 300,
}}>
<Empty description="暂无使用用户" />
</div>
)
},
}}
/>
</Spin>
</Modal> */}
<Spin tip="正在提交..." spinning={loading} fullscreen />
{contextHolder}
{modalHolder}
</>
)
}