提交 68834497 作者: 18928357778

Merge branch 'master' of ssh://git.mmcuav.cn:8222/root/sharefly-web-nextjs into caoyun

......@@ -8,9 +8,34 @@ export interface RegionResp {
pid: number;
}
export interface UserInfoParams {
userAccountId: number;
}
export interface UserInfoResp {
id: number;
accountType: number;
uid: string;
phoneNum: string;
userName: string;
nickName: string;
userImg: string;
userSex: number;
email: string;
source: number;
accountStatus: number;
remark: string;
portType: number;
createTime: string;
}
export default {
//获取区域数据
region: (): Promise<Response<Array<RegionResp>>> => {
return request("/pms/webDevice/getSecondDistrictInfo");
},
//获取用户基本信息
userInfo: (params: UserInfoParams): Promise<Response<UserInfoResp>> => {
return request("/userapp/user-account/info", "get", params, {});
},
};
......@@ -78,8 +78,4 @@
background: none;
}
.headImg {
width: 48px;
height: 48px;
background: #ffffff;
}
......@@ -6,6 +6,7 @@ import { useRouter } from "next/router";
import LoginModal from "~/components/loginModal";
import { useUser } from "~/lib/hooks";
import PublishModal from "./publishModal";
import JoinModal from "./joinModal";
const items: TabsProps["items"] = [
{
......@@ -40,15 +41,14 @@ const items: TabsProps["items"] = [
export default function NavHeader() {
const router = useRouter();
const [currentPath, setCurrentPath] = useState('');
const [currentPath, setCurrentPath] = useState("");
const user = useUser();
useEffect(() => {
setCurrentPath(router.route);
console.log("currentHash", currentPath);
}, [router.asPath])
}, [router.route]);
const onChange = (key: string) => {
router.push(key);
};
......@@ -64,6 +64,8 @@ export default function NavHeader() {
setPpenLoginModal(false);
};
const [openJoinModal, setOpenJoinModal] = useState(false); //加盟modal
return (
<div className={styles.navHeader}>
<div className={styles.nav}>
......@@ -82,11 +84,16 @@ export default function NavHeader() {
>
+ 发布需求
</Button>
<Button className={styles.btn2}>加盟入驻</Button>
<Button
className={styles.btn2}
onClick={() => setOpenJoinModal(true)}
>
加盟入驻
</Button>
</Space>
{user ? (
<div className={styles.haedImg}>
<Avatar size={48} style={{ background: "#fff" }}></Avatar>
<Avatar size={36} style={{ background: "#bdbdbd" }}></Avatar>
</div>
) : (
<Button
......@@ -99,7 +106,18 @@ export default function NavHeader() {
)}
</div>
<LoginModal open={openLoginModal} onCancel={handleCancel}></LoginModal>
<PublishModal open={openPublishModal} onCancel={() => {setOpenPublishModal(false)}}></PublishModal>
<PublishModal
open={openPublishModal}
onCancel={() => {
setOpenPublishModal(false);
}}
></PublishModal>
<JoinModal
open={openJoinModal}
onCancel={() => {
setOpenJoinModal(false);
}}
></JoinModal>
</div>
);
}
import request, { Response } from "~/api/request"
export interface ListTagResp {
id: number;
tagName: string;
tagImg?: string;
tagDescription: string;
createTime: string;
}
export default {
//加盟标签列表
listTag: (): Promise<Response<Array<ListTagResp>>> => {
return request('/userapp/cooperation/listTag')
}
}
\ No newline at end of file
.identityBtn {
box-sizing: border-box;
padding: 0 5px;
position: absolute;
bottom: 0;
left: 50%;
transform:translate(-50%, 0);
min-width: 100%;
height: 24px;
background: #e26329;
border-radius: 6px;
opacity: 0.95;
display: flex;
justify-content: center;
align-items: center;
font-size: 12px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #fff;
white-space: nowrap;
}
.modal {
:global .ant-modal-content {
border-radius: 6px;
.ant-modal-title{
text-align: center;
}
}
}
import { Col, Modal, Row } from "antd";
import Image from "next/image";
import styles from "./index.module.scss";
import img from "./assets/img.png";
import { useEffect, useState } from "react";
import api, { ListTagResp } from "./api";
type Props = {
open?: boolean;
onOk?: () => void;
onCancel?: () => void;
};
export default function JoinModal(props: Props) {
const test = [
{
name: '飞手培训机构',
id: 0
}
];
const [tagList, setTagList] = useState<ListTagResp[]>([]);
useEffect(() => {
api.listTag().then(res => {
setTagList(res.result || []);
})
}, [])
return (
<Modal
title="申请合作加盟"
open={props.open}
onOk={props.onOk}
onCancel={props.onCancel}
className={styles.modal}
width={460}
footer={null}
>
<Row style={{ padding: "22px 16px 20px 16px", gap: "16px 40px" }}>
{tagList.map((item) => {
return (
<Col
key={item.id}
style={{ cursor: "pointer", height: 100, padding: 0 }}
>
<Image src={img} width={100} height={100} alt=""></Image>
<div className={styles.identityBtn}>{item.tagName}{">"}</div>
</Col>
);
})}
</Row>
</Modal>
);
}
.modal {
width: 460px;
:global .ant-modal-content {
border-radius: 0;
.ant-modal-title{
text-align: center;
}
}
}
import React, { useState } from "react";
import { Modal } from "antd";
import React, { useEffect, useState } from "react";
import { AutoComplete, Modal } from "antd";
import Image from "next/image";
type Props = {
open: boolean;
onCancel: () => void;
};
export default function loginModal(props: Props) {
export default function LoginModal(props: Props) {
useEffect(() => {
if (props.open) {
var obj = new window.WxLogin({
self_redirect: true,
id: "login_container",
appid: "wx18b7883acd204278",
scope: "snsapi_login",
redirect_uri: encodeURIComponent("https://iuav.mmcuav.cn/"),
state: "",
style: "",
href: "",
});
}
}, [props.open]);
return (
<>
<Modal
......@@ -30,16 +44,13 @@ export default function loginModal(props: Props) {
>
欢迎来到云享飞
</div>
<Image
alt=""
src=""
width={160}
height={160}
style={{ margin: "auto", display: "block" }}
></Image>
<div
id="login_container"
style={{ margin: "auto", display: "table" }}
></div>
<div
style={{
marginTop: 39,
marginTop: -120,
marginBottom: 52,
fontSize: 14,
fontFamily: "MicrosoftYaHei",
......
/* import { useEffect } from "react";
import Router from "next/router";
import request from '~/api/request';
import useSWR, { SWRResponse } from "swr"; */
import { useEffect, useState } from "react";
import api, { UserInfoResp } from "~/api";
/*
const fetcher = (url) =>
fetch(url)
......@@ -10,24 +8,18 @@ const fetcher = (url) =>
return { user: data?.user || null };
}); */
export function useUser({ redirectTo, redirectIfFound } = {}) {
return {};
/* const { data, error } = useSWR("/api/user", request);
const user = data?.user;
const finished = Boolean(data);
const hasUser = Boolean(user);
export function useUser() {
const [user, setUser] = useState(null);
useEffect(() => {
if (!redirectTo || !finished) return;
if (
// If redirectTo is set, redirect if the user was not found.
(redirectTo && !redirectIfFound && !hasUser) ||
// If redirectIfFound is also set, redirect if the user was found
(redirectIfFound && hasUser)
) {
Router.push(redirectTo);
}
}, [redirectTo, redirectIfFound, finished, hasUser]);
api
.userInfo({
userAccountId: 0,
})
.then((res) => {
setUser(res.result);
});
}, []);
return error ? null : user; */
return user;
}
......@@ -4,6 +4,8 @@ import type { AppProps } from 'next/app';
import withTheme from '../theme';
import { message } from 'antd';
import { useEffect } from 'react';
import Head from "next/head";
import Script from 'next/script';
export default function App({ Component, pageProps }: AppProps) {
const [messageApi, contextHolder] = message.useMessage();
......@@ -14,6 +16,13 @@ export default function App({ Component, pageProps }: AppProps) {
return withTheme(
<>
<Head>
<meta
name="viewport"
content="width=device-width,initial-scale=1"
></meta>
</Head>
<Script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></Script>
{contextHolder}
<Component {...pageProps} />
</>
......
......@@ -2,7 +2,7 @@ import React, { Component, useEffect, useState } from "react";
import { message } from 'antd';
import { Box } from "./styled";
import api from "./api";
import icon from './assets/icon.png'
import icon from './assets/img.png'
let MAP :any ;
let Amap:any;
......
......@@ -33,6 +33,7 @@
flex-wrap: wrap;
gap: 12px;
height: 565px;
align-content: start;
.item {
cursor: pointer;
......
......@@ -133,6 +133,7 @@ export default function Mall(props: Props) {
showSizeChanger={false}
showQuickJumper
total={count}
pageSize={pageParams.pageSize}
onChange={onPageChange}
hideOnSinglePage={true}
style={{ marginTop: 20 }}
......
......@@ -3,5 +3,6 @@ import { MessageInstance } from 'antd/es/message/interface';
declare global {
interface Window {
messageApi: MessageInstance;
WxLogin: any;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论