提交 3f2825d3 作者: 龚洪江

修复:eslint --fix

上级 8a0b3cab
...@@ -23,23 +23,19 @@ ...@@ -23,23 +23,19 @@
"@types/react-dom": "^18.0.10", "@types/react-dom": "^18.0.10",
"@typescript-eslint/eslint-plugin": "^5.10.1", "@typescript-eslint/eslint-plugin": "^5.10.1",
"@typescript-eslint/parser": "^5.10.1", "@typescript-eslint/parser": "^5.10.1",
"antd": "^5.1.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^8.42.0", "eslint": "^8.42.0",
"eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^16.1.0", "eslint-config-airbnb-typescript": "^16.1.0",
"eslint-config-next": "^13.1.1",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.25.4", "eslint-plugin-import": "^2.25.4",
"eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.28.0", "eslint-plugin-react": "^7.28.0",
"eslint-plugin-react-hooks": "^4.3.0", "eslint-plugin-react-hooks": "^4.3.0",
"eslint-plugin-unused-imports": "^2.0.0", "eslint-plugin-unused-imports": "^2.0.0",
"eslint-config-next": "^13.1.1",
"eslint-plugin-prettier": "^4.2.1",
"next": "^13.1.1",
"prettier": "^2.8.8", "prettier": "^2.8.8",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.62.1", "sass": "^1.62.1",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"tslib": "^2.5.0", "tslib": "^2.5.0",
...@@ -50,6 +46,7 @@ ...@@ -50,6 +46,7 @@
"@ant-design/icons": "^5.0.1", "@ant-design/icons": "^5.0.1",
"@hapi/iron": "^7.0.1", "@hapi/iron": "^7.0.1",
"@types/styled-components": "^5.1.26", "@types/styled-components": "^5.1.26",
"antd": "^5.6.4",
"babel-plugin-styled-components": "^2.1.1", "babel-plugin-styled-components": "^2.1.1",
"babel-plugin-styled-components-px2rem": "^1.5.5", "babel-plugin-styled-components-px2rem": "^1.5.5",
"cookie": "^0.5.0", "cookie": "^0.5.0",
...@@ -62,8 +59,11 @@ ...@@ -62,8 +59,11 @@
"postcss-pxtorem": "^6.0.0", "postcss-pxtorem": "^6.0.0",
"react-infinite-scroll-component": "^6.1.0", "react-infinite-scroll-component": "^6.1.0",
"styled-components": "^6.0.0-rc.1", "styled-components": "^6.0.0-rc.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"swiper": "^9.3.2", "swiper": "^9.3.2",
"swr": "^2.1.5", "swr": "^2.1.5",
"uuid": "^9.0.0" "uuid": "^9.0.0",
"next": "^13.1.1"
} }
} }
...@@ -18,11 +18,11 @@ export interface GetTagIdResp { ...@@ -18,11 +18,11 @@ export interface GetTagIdResp {
} }
export default { export default {
//申请加盟 // 申请加盟
cooperationApply(params: CooperationApplyParams): Promise<Response<string>> { cooperationApply(params: CooperationApplyParams): Promise<Response<string>> {
return request('/userapp/cooperation/apply', 'post', params); return request('/userapp/cooperation/apply', 'post', params);
}, },
//加盟标签相关内容 // 加盟标签相关内容
getTagById(params: { id: number }): Promise<Response<GetTagIdResp>> { getTagById(params: { id: number }): Promise<Response<GetTagIdResp>> {
return request('/userapp/cooperation/getTagById', 'get', params); return request('/userapp/cooperation/getTagById', 'get', params);
}, },
......
import { useEffect, useState } from 'react';
import { Button, Col, Divider, Form, Input, message, Row } from 'antd'; import { Button, Col, Divider, Form, Input, message, Row } from 'antd';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import LayoutView from '~/components/layout'; import LayoutView from '~/components/layout';
import { Uploader } from '~/components/uploader';
import api from './api'; import api from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import { Uploader } from '~/components/uploader';
export default function JoinPolicy() { export default function JoinPolicy() {
const [form] = Form.useForm(); const [form] = Form.useForm();
const router = useRouter(); const router = useRouter();
const [content, setContent] = useState(''); //福利内容 const [content, setContent] = useState(''); // 福利内容
const [tagId, setTagId] = useState<number>(-1); const [tagId, setTagId] = useState<number>(-1);
useEffect(() => { useEffect(() => {
if (router.query.tagId) { if (router.query.tagId) {
...@@ -23,7 +26,7 @@ export default function JoinPolicy() { ...@@ -23,7 +26,7 @@ export default function JoinPolicy() {
}); });
} }
}, [router.query.tagId]); }, [router.query.tagId]);
//提交 // 提交
const submitApply = () => { const submitApply = () => {
form form
.validateFields() .validateFields()
...@@ -47,9 +50,9 @@ export default function JoinPolicy() { ...@@ -47,9 +50,9 @@ export default function JoinPolicy() {
message.warning(err.errorFields[0].errors[0]); message.warning(err.errorFields[0].errors[0]);
}); });
}; };
//上传变更 // 上传变更
const uploadChange = (value: any) => { const uploadChange = (value: any) => {
let attachmentList = value.map((v: any) => ({ const attachmentList = value.map((v: any) => ({
type: v.type.includes('image') ? 0 : 1, type: v.type.includes('image') ? 0 : 1,
url: v.url, url: v.url,
})); }));
......
import '../public/antd.min.css'; import '../public/antd.min.css';
import '../styles/index.scss'; import '../styles/index.scss';
import type { AppProps } from 'next/app';
import withTheme from '../theme';
import { message } from 'antd';
import { useEffect } from 'react'; import { useEffect } from 'react';
import { message } from 'antd';
import type { AppProps } from 'next/app';
import Head from 'next/head'; import Head from 'next/head';
import Script from 'next/script'; import Script from 'next/script';
import UserProvider from '~/lib/userProvider';
import CommonProvider from '~/lib/commonProvider'; import CommonProvider from '~/lib/commonProvider';
import UserProvider from '~/lib/userProvider';
import withTheme from '../theme';
export default function App({ Component, pageProps }: AppProps) { export default function App({ Component, pageProps }: AppProps) {
const [messageApi, contextHolder] = message.useMessage(); const [messageApi, contextHolder] = message.useMessage();
useEffect(() => { useEffect(() => {
//全局消息提示 // 全局消息提示
window.messageApi = messageApi; window.messageApi = messageApi;
//@ts-ignore // @ts-ignore
window.onresize = function () { window.onresize = function () {
// window.document.querySelector('html')!.style.fontSize = (window.innerWidth / 1920) + 'PX'; // window.document.querySelector('html')!.style.fontSize = (window.innerWidth / 1920) + 'PX';
}; };
......
import Document, { Html, Head, Main, NextScript, DocumentContext } from 'next/document'; import Document, { Html, Head, Main, NextScript, DocumentContext } from 'next/document';
import { ServerStyleSheet } from 'styled-components'; import { ServerStyleSheet } from 'styled-components';
export default class MyDocument extends Document { export default class MyDocument extends Document {
static async getInitialProps(ctx: DocumentContext) { static async getInitialProps(ctx: DocumentContext) {
const sheet = new ServerStyleSheet(); const sheet = new ServerStyleSheet();
......
...@@ -36,12 +36,12 @@ export interface Paging { ...@@ -36,12 +36,12 @@ export interface Paging {
} }
export default { export default {
//提交企业认证 // 提交企业认证
companyAuth(params: CompanyAuthParams): Promise<Response<string>> { companyAuth(params: CompanyAuthParams): Promise<Response<string>> {
return request('/userapp/company-auth/add', 'post', params); return request('/userapp/company-auth/add', 'post', params);
}, },
//企业工商模糊搜索 // 企业工商模糊搜索
fuzzyQueryCompany(params: { searchKey: string }): Promise<Response<FuzzyQueryCompanyResp>> { fuzzyQueryCompany(params: { searchKey: string }): Promise<Response<FuzzyQueryCompanyResp>> {
return request('/userapp/company-auth/fuzzyQueryCompany', 'get', params); return request('/userapp/company-auth/fuzzyQueryCompany', 'get', params);
}, },
......
import { useContext, useEffect, useState } from 'react';
import { LoadingOutlined, PlusOutlined } from '@ant-design/icons'; import { LoadingOutlined, PlusOutlined } from '@ant-design/icons';
import { Col, Form, Input, Row, Upload, message, Button, Image, AutoComplete } from 'antd'; import { Col, Form, Input, Row, Upload, message, Button, Image, AutoComplete } from 'antd';
import type { UploadChangeParam } from 'antd/es/upload'; import type { UploadChangeParam } from 'antd/es/upload';
import type { RcFile, UploadFile, UploadProps } from 'antd/es/upload/interface'; import type { RcFile, UploadFile, UploadProps } from 'antd/es/upload/interface';
import { useContext, useEffect, useState } from 'react'; import Router from 'next/router';
import gApi from '~/api';
import Layout from '~/components/layout'; import Layout from '~/components/layout';
import { UserContext } from '~/lib/userProvider';
import api from './api'; import api from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import gApi from '~/api';
import Router from 'next/router';
import { UserContext } from '~/lib/userProvider';
const beforeUpload = (file: RcFile) => { const beforeUpload = (file: RcFile) => {
const isJpgOrPng = const isJpgOrPng =
...@@ -19,7 +22,7 @@ const beforeUpload = (file: RcFile) => { ...@@ -19,7 +22,7 @@ const beforeUpload = (file: RcFile) => {
if (!isJpgOrPng) { if (!isJpgOrPng) {
message.error('请上传10M以内的JPG、JPEG、BMP、GIF、PNG格式图片'); message.error('请上传10M以内的JPG、JPEG、BMP、GIF、PNG格式图片');
} }
//限制上传10M // 限制上传10M
const isLt2M = file.size / 1024 / 1024 < 10; const isLt2M = file.size / 1024 / 1024 < 10;
if (!isLt2M) { if (!isLt2M) {
message.error('请上传10M以内的JPG、JPEG、BMP、GIF、PNG格式图片'); message.error('请上传10M以内的JPG、JPEG、BMP、GIF、PNG格式图片');
...@@ -53,7 +56,7 @@ export default function Certification() { ...@@ -53,7 +56,7 @@ export default function Certification() {
setToken(window.localStorage.getItem('token') || ''); setToken(window.localStorage.getItem('token') || '');
}, []); }, []);
//上传change事件 // 上传change事件
const handleChange: UploadProps['onChange'] = (info: UploadChangeParam<UploadFile>) => { const handleChange: UploadProps['onChange'] = (info: UploadChangeParam<UploadFile>) => {
console.log('uploadChange', info); console.log('uploadChange', info);
if (info.file.status === 'uploading') { if (info.file.status === 'uploading') {
...@@ -67,7 +70,7 @@ export default function Certification() { ...@@ -67,7 +70,7 @@ export default function Certification() {
} }
}; };
//提交 // 提交
const onFinish = (values: any) => { const onFinish = (values: any) => {
console.log(values); console.log(values);
api api
...@@ -97,7 +100,7 @@ export default function Certification() { ...@@ -97,7 +100,7 @@ export default function Certification() {
}; };
let handle: NodeJS.Timeout; let handle: NodeJS.Timeout;
//搜索企业 // 搜索企业
const onSearchEnterprise = (text: string) => { const onSearchEnterprise = (text: string) => {
if (handle) { if (handle) {
clearTimeout(handle); clearTimeout(handle);
...@@ -125,7 +128,7 @@ export default function Certification() { ...@@ -125,7 +128,7 @@ export default function Certification() {
}, 500); }, 500);
}; };
//选择的企业 // 选择的企业
const onSelectEnterprise = (value: string, option: EnterpriseOption) => { const onSelectEnterprise = (value: string, option: EnterpriseOption) => {
form.setFieldValue('creditCode', option.creditCode); form.setFieldValue('creditCode', option.creditCode);
}; };
...@@ -201,7 +204,7 @@ export default function Certification() { ...@@ -201,7 +204,7 @@ export default function Certification() {
beforeUpload={beforeUpload} beforeUpload={beforeUpload}
onChange={handleChange} onChange={handleChange}
maxCount={1} maxCount={1}
headers={{ token: token }} headers={{ token }}
> >
{imageUrl ? ( {imageUrl ? (
<Image <Image
......
...@@ -27,7 +27,7 @@ export interface ListPageDeviceInfoResp { ...@@ -27,7 +27,7 @@ export interface ListPageDeviceInfoResp {
} }
export default { export default {
//web-设备租赁-分页 // web-设备租赁-分页
listPageDeviceInfo: ( listPageDeviceInfo: (
params: ListPageDeviceInfoParams, params: ListPageDeviceInfoParams,
options = {}, options = {},
......
import React, { useEffect, useState, useContext } from 'react'; import React, { useEffect, useState, useContext } from 'react';
import { useRouter } from 'next/router';
import Layout from '~/components/layout';
import { Box } from './styled';
import ImagePreview from './components/picture-preview';
import OrderForGoods from './components/orderForGoods';
import moment from 'moment';
import { import {
Button, Button,
Image as AImage, Image as AImage,
...@@ -18,12 +13,20 @@ import { ...@@ -18,12 +13,20 @@ import {
InputNumber, InputNumber,
DatePicker, DatePicker,
} from 'antd'; } from 'antd';
import { RangePickerProps } from 'antd/es/date-picker';
import moment from 'moment';
import Image from 'next/image'; import Image from 'next/image';
import errImg from '~/assets/errImg'; import { useRouter } from 'next/router';
import api, { GetWebDeviceDetailResult, GetWebDeviceWareSkuById, GetLeaseGoodsResult } from './api';
import Layout from '~/components/layout';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import api, { GetWebDeviceDetailResult, GetWebDeviceWareSkuById, GetLeaseGoodsResult } from './api';
import flowPat from './assets/flow-path.png'; import flowPat from './assets/flow-path.png';
import { RangePickerProps } from 'antd/es/date-picker'; import OrderForGoods from './components/orderForGoods';
import ImagePreview from './components/picture-preview';
import { Box } from './styled';
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const { CheckableTag } = Tag; const { CheckableTag } = Tag;
...@@ -63,7 +66,7 @@ export default function EquipmentLeasingDetail() { ...@@ -63,7 +66,7 @@ export default function EquipmentLeasingDetail() {
} }
}, [id]); }, [id]);
//租赁弹框 // 租赁弹框
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
const [isModalDateOpen, setIsModalDateOpen] = useState(false); const [isModalDateOpen, setIsModalDateOpen] = useState(false);
......
...@@ -5,7 +5,7 @@ export interface GetWebDeviceDetailParams { ...@@ -5,7 +5,7 @@ export interface GetWebDeviceDetailParams {
type: 1; type: 1;
} }
export interface GetLeaseGoodsParams { export interface GetLeaseGoodsParams {
leaseTerm: number; //租赁时限:(输入0:1-7天、输入1:8-15天、输入2:16-30天、输入3:30天以上) leaseTerm: number; // 租赁时限:(输入0:1-7天、输入1:8-15天、输入2:16-30天、输入3:30天以上)
productSpecId: number; productSpecId: number;
} }
...@@ -91,17 +91,17 @@ export interface WebDeviceUpdateParams { ...@@ -91,17 +91,17 @@ export interface WebDeviceUpdateParams {
} }
export default { export default {
//web-设备租赁-详情 // web-设备租赁-详情
listDetailDeviceInfo: ( listDetailDeviceInfo: (
params: GetWebDeviceDetailParams, params: GetWebDeviceDetailParams,
): Promise<Response<GetWebDeviceDetailResult>> => { ): Promise<Response<GetWebDeviceDetailResult>> => {
return request('/pms/product/mall/getLeaseGoodsDetail', 'get', params); return request('/pms/product/mall/getLeaseGoodsDetail', 'get', params);
}, },
//web-设备租赁-立即租赁 // web-设备租赁-立即租赁
listWareSkuUpdate: (params: WebDeviceUpdateParams): Promise<Response<number>> => { listWareSkuUpdate: (params: WebDeviceUpdateParams): Promise<Response<number>> => {
return request('/pms/appDevice/update', 'post', params); return request('/pms/appDevice/update', 'post', params);
}, },
//web-设备租赁-详情-获取设备商品规格价格详情 // web-设备租赁-详情-获取设备商品规格价格详情
GoodsPriceDetail: (params: GetLeaseGoodsParams): Promise<Response<GetLeaseGoodsResult>> => { GoodsPriceDetail: (params: GetLeaseGoodsParams): Promise<Response<GetLeaseGoodsResult>> => {
return request('/pms/product/mall/getLeaseGoodsPriceDetail', 'get', params); return request('/pms/product/mall/getLeaseGoodsPriceDetail', 'get', params);
}, },
......
...@@ -47,15 +47,15 @@ export interface GetOrderForGoods { ...@@ -47,15 +47,15 @@ export interface GetOrderForGoods {
} }
export default { export default {
//web-地址管理-查询用户地址列表-条件查询 // web-地址管理-查询用户地址列表-条件查询
listUserAddress: (params: {}): Promise<Response<UserAddress[]>> => { listUserAddress: (params: {}): Promise<Response<UserAddress[]>> => {
return request('/oms/user-address/selectList', 'POST', params); return request('/oms/user-address/selectList', 'POST', params);
}, },
//web-设备租赁-下单 // web-设备租赁-下单
FeignAddLease: (params: GetWebDeviceDetailParams): Promise<Response<GetOrderForGoods>> => { FeignAddLease: (params: GetWebDeviceDetailParams): Promise<Response<GetOrderForGoods>> => {
return request('/oms/RentalOrders/feignAddLease', 'post', params); return request('/oms/RentalOrders/feignAddLease', 'post', params);
}, },
//web-设备租赁-订单支付 // web-设备租赁-订单支付
OrderPayment: (params: { orderNo: string }): Promise<Response<GetOrderForGoods>> => { OrderPayment: (params: { orderNo: string }): Promise<Response<GetOrderForGoods>> => {
return request(`/payment/repocash/orderPayment`, 'get', params); return request(`/payment/repocash/orderPayment`, 'get', params);
}, },
......
import React, { useContext, useEffect, useState } from 'react'; import React, { useContext, useEffect, useState } from 'react';
import { OrderForGoodsBox } from './styled';
import type { RadioChangeEvent } from 'antd'; import type { RadioChangeEvent } from 'antd';
import { Button, Radio, Space, Input, message, Modal, Image } from 'antd'; import { Button, Radio, Space, Input, message, Modal, Image } from 'antd';
import api, { UserAddress, GetOrderForGoods } from './api';
import moment from 'moment'; import moment from 'moment';
import { UserContext } from '~/lib/userProvider';
import api, { UserAddress, GetOrderForGoods } from './api';
import { OrderForGoodsBox } from './styled';
import { ShopDetail } from '../../[id].page'; import { ShopDetail } from '../../[id].page';
import { GetWebDeviceDetailResult, GetWebDeviceWareSkuById, GetLeaseGoodsResult } from '../../api'; import { GetWebDeviceDetailResult, GetWebDeviceWareSkuById, GetLeaseGoodsResult } from '../../api';
import { UserContext } from '~/lib/userProvider';
const { TextArea } = Input; const { TextArea } = Input;
interface PropsBox { interface PropsBox {
setIsorderForGoods: (boolean: boolean) => void; setIsorderForGoods: (boolean: boolean) => void;
...@@ -81,7 +85,7 @@ export default function OrderForGoods(props: PropsBox) { ...@@ -81,7 +85,7 @@ export default function OrderForGoods(props: PropsBox) {
.then((res) => { .then((res) => {
console.log(res); console.log(res);
setList(res.result); setList(res.result);
let index: number = res.result?.findIndex((item) => item.type === 0) as number; const index: number = res.result?.findIndex((item) => item.type === 0) as number;
setValue(index); setValue(index);
}) })
.catch((err) => { .catch((err) => {
...@@ -92,10 +96,10 @@ export default function OrderForGoods(props: PropsBox) { ...@@ -92,10 +96,10 @@ export default function OrderForGoods(props: PropsBox) {
} }
}, []); }, []);
//图片预览 // 图片预览
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
//付款 // 付款
const { userInfo } = useContext(UserContext); const { userInfo } = useContext(UserContext);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [isPaymentOpen, setIsPaymentOpen] = useState(false); const [isPaymentOpen, setIsPaymentOpen] = useState(false);
...@@ -123,7 +127,7 @@ export default function OrderForGoods(props: PropsBox) { ...@@ -123,7 +127,7 @@ export default function OrderForGoods(props: PropsBox) {
} }
}; };
//扫码管理地址 // 扫码管理地址
const [isAddAddressOpen, setIsAddAddressOpen] = useState(false); const [isAddAddressOpen, setIsAddAddressOpen] = useState(false);
const [addressVisible, setAddressVisible] = useState(false); const [addressVisible, setAddressVisible] = useState(false);
......
import React, { useState, useRef } from 'react'; import React, { useState, useRef } from 'react';
import { Box } from './styled';
import { LeftOutlined, RightOutlined } from '@ant-design/icons'; import { LeftOutlined, RightOutlined } from '@ant-design/icons';
import { Box } from './styled';
import { WareImgsType } from '../../api'; import { WareImgsType } from '../../api';
interface ImagesType { interface ImagesType {
...@@ -31,7 +33,7 @@ export default function PicturePreview(props: ImagesType) { ...@@ -31,7 +33,7 @@ export default function PicturePreview(props: ImagesType) {
}; };
// 移动缩略图 // 移动缩略图
const handleSlide = (direction: string) => { const handleSlide = (direction: string) => {
//左侧按钮 // 左侧按钮
if (direction == 'left') { if (direction == 'left') {
moveLeft == 0 ? setMoveLeft(0) : setMoveLeft((props) => props - 1); moveLeft == 0 ? setMoveLeft(0) : setMoveLeft((props) => props - 1);
} else { } else {
...@@ -50,17 +52,17 @@ export default function PicturePreview(props: ImagesType) { ...@@ -50,17 +52,17 @@ export default function PicturePreview(props: ImagesType) {
// 最右侧和最下侧的临界值 // 最右侧和最下侧的临界值
const maxLeft = moveBox.current.offsetWidth - mask.current.offsetWidth; const maxLeft = moveBox.current.offsetWidth - mask.current.offsetWidth;
const maxTop = moveBox.current.offsetHeight - mask.current.offsetHeight; const maxTop = moveBox.current.offsetHeight - mask.current.offsetHeight;
//约束范围 // 约束范围
if (left <= 0) left = 0; if (left <= 0) left = 0;
if (left >= maxLeft) left = maxLeft; if (left >= maxLeft) left = maxLeft;
if (top <= 0) top = 0; if (top <= 0) top = 0;
if (top >= maxTop) top = maxTop; if (top >= maxTop) top = maxTop;
// 设置放大范围遮罩层位置 // 设置放大范围遮罩层位置
mask.current.style.left = left + 'px'; mask.current.style.left = `${left}px`;
mask.current.style.top = top + 'px'; mask.current.style.top = `${top}px`;
// 设置大图图片位置,可以用background代替这个方案,有兴趣可以尝试 // 设置大图图片位置,可以用background代替这个方案,有兴趣可以尝试
big.current.style.left = -3 * left + 'px'; // 3这个值是 大图除以小图算出来的比例 这里大图是900px 小图是300px big.current.style.left = `${-3 * left}px`; // 3这个值是 大图除以小图算出来的比例 这里大图是900px 小图是300px
big.current.style.top = -3 * top + 'px'; big.current.style.top = `${-3 * top}px`;
}; };
return ( return (
<Box> <Box>
...@@ -83,7 +85,7 @@ export default function PicturePreview(props: ImagesType) { ...@@ -83,7 +85,7 @@ export default function PicturePreview(props: ImagesType) {
<LeftOutlined className='el-icon-arrow-left' onClick={() => handleSlide('left')} /> <LeftOutlined className='el-icon-arrow-left' onClick={() => handleSlide('left')} />
)} )}
<div className='img_list_content'> <div className='img_list_content'>
<div className='img_list' style={{ marginLeft: -moveLeft * 25 + '%' }}> <div className='img_list' style={{ marginLeft: `${-moveLeft * 25}%` }}>
{imgList?.map((item, index) => ( {imgList?.map((item, index) => (
<img <img
onMouseOver={() => handleChangeImg(index)} onMouseOver={() => handleChangeImg(index)}
......
import { useContext, useEffect, useState } from 'react';
import { Pagination, Image as AntdImage } from 'antd'; import { Pagination, Image as AntdImage } from 'antd';
import Image from 'next/image'; import Image from 'next/image';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useContext, useEffect, useRef, useState } from 'react';
import commonApi from '~/api';
import ContentBox from '~/components/contentBox'; import ContentBox from '~/components/contentBox';
import Filter, { AdapterResult, FilterResult } from '~/components/filter'; import Filter, { AdapterResult, FilterResult } from '~/components/filter';
import Layout from '~/components/layout'; import Layout from '~/components/layout';
import { UserContext } from '~/lib/userProvider';
import api, { Device } from './api'; import api, { Device } from './api';
import { Box } from './styled'; import { Box } from './styled';
import { UserContext } from '~/lib/userProvider';
import commonApi from '~/api';
// 此函数在构建时被调用 // 此函数在构建时被调用
export async function getStaticProps() { export async function getStaticProps() {
//获取筛选数据,进行静态渲染 // 获取筛选数据,进行静态渲染
return { return {
props: {}, props: {},
}; };
...@@ -54,14 +57,14 @@ export default function EquipmentLeasing(props: Props) { ...@@ -54,14 +57,14 @@ export default function EquipmentLeasing(props: Props) {
); );
}; };
const [filterResult, setFilterResult] = useState<AdapterResult>({}); //筛选结果 const [filterResult, setFilterResult] = useState<AdapterResult>({}); // 筛选结果
const [count, setCount] = useState(0); //商品总数 const [count, setCount] = useState(0); // 商品总数
const [abort, setAbort] = useState<AbortController | null>(null); //请求中断 const [abort, setAbort] = useState<AbortController | null>(null); // 请求中断
const [pageParams, setPageParams] = useState({ const [pageParams, setPageParams] = useState({
type: 1, type: 1,
pageNo: 1, pageNo: 1,
pageSize: 15, pageSize: 15,
}); //分页器对象 }); // 分页器对象
const onPageChange = (page: number, pageSize: number) => { const onPageChange = (page: number, pageSize: number) => {
setPageParams({ setPageParams({
...@@ -71,17 +74,17 @@ export default function EquipmentLeasing(props: Props) { ...@@ -71,17 +74,17 @@ export default function EquipmentLeasing(props: Props) {
}; };
useEffect(() => { useEffect(() => {
//中断前一次列表请求 // 中断前一次列表请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [filterResult, pageParams]); }, [filterResult, pageParams]);
//端口列表请求 // 端口列表请求
useEffect(() => { useEffect(() => {
let queryVal = JSON.parse(JSON.stringify(router.query)); const queryVal = JSON.parse(JSON.stringify(router.query));
let rs; let rs;
if (Object.keys(queryVal).length) { if (Object.keys(queryVal).length) {
rs = { categoryId: [Number(queryVal['categoryId'])] }; rs = { categoryId: [Number(queryVal.categoryId)] };
} }
api api
.listPageDeviceInfo( .listPageDeviceInfo(
...@@ -127,9 +130,9 @@ export default function EquipmentLeasing(props: Props) { ...@@ -127,9 +130,9 @@ export default function EquipmentLeasing(props: Props) {
}, []); }, []);
useEffect(() => { useEffect(() => {
let queryVal = JSON.parse(JSON.stringify(router.query)); const queryVal = JSON.parse(JSON.stringify(router.query));
if (Object.keys(router.query).length) { if (Object.keys(router.query).length) {
setFilterResult({ categoryId: [Number(queryVal['categoryId'])] }); setFilterResult({ categoryId: [Number(queryVal.categoryId)] });
} }
}, [router]); }, [router]);
......
import request, { Response } from '~/api/request'; import request, { Response } from '~/api/request';
import { TypesResp } from '~/components/filter/api'; import { TypesResp } from '~/components/filter/api';
export interface ListPageFlyingInfoParams { export interface ListPageFlyingInfoParams {
pageNo: number; pageNo: number;
pageSize: number; pageSize: number;
...@@ -55,7 +56,7 @@ export interface PilotRegistrationParams { ...@@ -55,7 +56,7 @@ export interface PilotRegistrationParams {
} }
export default { export default {
//web-飞手培训-分页 // web-飞手培训-分页
listPageJobServicesInfo: ( listPageJobServicesInfo: (
params: ListPageFlyingInfoParams, params: ListPageFlyingInfoParams,
): Promise<Response<ListPageFlyingInfoResp>> => { ): Promise<Response<ListPageFlyingInfoResp>> => {
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import Layout from '~/components/layout';
import { Box } from './styled'; import { Tabs } from 'antd';
import { Button, Tabs } from 'antd';
import { useRouter } from 'next/router';
import { ParsedUrlQuery } from 'querystring';
import type { TabsProps } from 'antd'; import type { TabsProps } from 'antd';
import { useRouter } from 'next/router';
import Layout from '~/components/layout';
import api, { ListPageFlyingInfoResp } from './api'; import api, { ListPageFlyingInfoResp } from './api';
import { Box } from './styled';
const contentStyle: React.CSSProperties = { const contentStyle: React.CSSProperties = {
width: '100%', width: '100%',
......
...@@ -30,7 +30,7 @@ export interface ListPageFlyingInfoResp { ...@@ -30,7 +30,7 @@ export interface ListPageFlyingInfoResp {
} }
export default { export default {
//web-飞手培训-详情 // web-飞手培训-详情
listPageJobServicesInfo: ( listPageJobServicesInfo: (
params: ListPageFlyingInfoParams, params: ListPageFlyingInfoParams,
): Promise<Response<ListPageFlyingInfoResp>> => { ): Promise<Response<ListPageFlyingInfoResp>> => {
......
import React from 'react'; import React from 'react';
import { Tabs } from 'antd';
import type { TabsProps } from 'antd';
import Layout from '~/components/layout'; import Layout from '~/components/layout';
import { Box } from './styled';
import BrushQuestionZone from './components/brushQuestionZone'; import BrushQuestionZone from './components/brushQuestionZone';
import MockExam from './components/mockExam'; import MockExam from './components/mockExam';
import { Tabs } from 'antd'; import { Box } from './styled';
import type { TabsProps } from 'antd';
export default function ExaminationDateil() { export default function ExaminationDateil() {
const onChange = (key: string) => { const onChange = (key: string) => {
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Box } from './styled';
import { Cascader, Select } from 'antd'; import { Cascader, Select } from 'antd';
import api, { Flying, SkillsType, RegionResp } from '../../../api';
import Image from 'next/image'; import Image from 'next/image';
import xt from './assets/xt.png'; import xt from './assets/xt.png';
import { Box } from './styled';
import api, { SkillsType, RegionResp } from '../../../api';
interface BrushQuestionZoneType {} interface BrushQuestionZoneType {}
export default function BrushQuestionZone() { export default function BrushQuestionZone() {
const [secondDistrictInfo, setSecondDistrictInfo] = useState(Array<RegionResp>); const [secondDistrictInfo, setSecondDistrictInfo] = useState(Array<RegionResp>);
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Box } from './styled';
import Image from 'next/image'; import Image from 'next/image';
import kh from './assets/kh.jpg'; import kh from './assets/kh.jpg';
import { Box } from './styled';
interface MockExamType {} interface MockExamType {}
export default function MockExam() { export default function MockExam() {
......
import { useContext, useEffect, useState } from 'react';
import { import {
Button, Button,
Cascader, Cascader,
...@@ -14,15 +16,17 @@ import { ...@@ -14,15 +16,17 @@ import {
import type { CheckboxValueType } from 'antd/es/checkbox/Group'; import type { CheckboxValueType } from 'antd/es/checkbox/Group';
import Image from 'next/image'; import Image from 'next/image';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useContext, useEffect, useState } from 'react';
import commonApi from '~/api';
import ContentBox from '~/components/contentBox'; import ContentBox from '~/components/contentBox';
import { TypesResp } from '~/components/filter/api';
import Layout from '~/components/layout'; import Layout from '~/components/layout';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import { phoneNumber } from '~/lib/validateUtils'; import { phoneNumber } from '~/lib/validateUtils';
import api, { Flying, RegionResp, SkillsType } from './api'; import api, { Flying, RegionResp, SkillsType } from './api';
import { Box } from './styled'; import { Box } from './styled';
import { TypesResp } from '~/components/filter/api';
import commonApi from '~/api';
interface FilterInfoParams { interface FilterInfoParams {
provinceId?: number; provinceId?: number;
categoryId?: any[]; categoryId?: any[];
...@@ -103,12 +107,12 @@ export default function FlyingHandService() { ...@@ -103,12 +107,12 @@ export default function FlyingHandService() {
const [pageParams, setPageParams] = useState({ const [pageParams, setPageParams] = useState({
pageNo: 1, pageNo: 1,
pageSize: 12, pageSize: 12,
}); //分页器对象 }); // 分页器对象
const [filterParams, setFilterParams] = useState<FilterInfoParams>(); const [filterParams, setFilterParams] = useState<FilterInfoParams>();
const [count, setCount] = useState(0); //商品总数 const [count, setCount] = useState(0); // 商品总数
const [abort, setAbort] = useState<AbortController | null>(null); //请求中断 const [abort, setAbort] = useState<AbortController | null>(null); // 请求中断
const onPageChange = (page: number, pageSize: number) => { const onPageChange = (page: number, pageSize: number) => {
setPageParams({ setPageParams({
...@@ -118,16 +122,16 @@ export default function FlyingHandService() { ...@@ -118,16 +122,16 @@ export default function FlyingHandService() {
}; };
useEffect(() => { useEffect(() => {
//中断前一次列表请求 // 中断前一次列表请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [filterParams, pageParams]); }, [filterParams, pageParams]);
//端口列表请求 // 端口列表请求
useEffect(() => { useEffect(() => {
console.log(router); console.log(router);
let queryVal = JSON.parse(JSON.stringify(router.query)); const queryVal = JSON.parse(JSON.stringify(router.query));
for (const key in queryVal) { for (const key in queryVal) {
queryVal[key] = Number(queryVal[key]); queryVal[key] = Number(queryVal[key]);
} }
...@@ -258,7 +262,7 @@ export default function FlyingHandService() { ...@@ -258,7 +262,7 @@ export default function FlyingHandService() {
useEffect(() => { useEffect(() => {
if (Object.keys(router.query).length) { if (Object.keys(router.query).length) {
let queryVal = JSON.parse(JSON.stringify(router.query)); const queryVal = JSON.parse(JSON.stringify(router.query));
for (const key in queryVal) { for (const key in queryVal) {
queryVal[key] = Number(queryVal[key]); queryVal[key] = Number(queryVal[key]);
} }
...@@ -276,7 +280,7 @@ export default function FlyingHandService() { ...@@ -276,7 +280,7 @@ export default function FlyingHandService() {
} }
}, [router]); }, [router]);
//报名 // 报名
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const handleOk = async (values: any) => { const handleOk = async (values: any) => {
......
...@@ -37,9 +37,9 @@ export interface DynamicListResp { ...@@ -37,9 +37,9 @@ export interface DynamicListResp {
} }
export interface CommentParams { export interface CommentParams {
content: string; //评论内容 content: string; // 评论内容
dynamicId: number; //动态id dynamicId: number; // 动态id
parentId?: number; //父级评论 parentId?: number; // 父级评论
rootPath: string; rootPath: string;
} }
...@@ -70,17 +70,17 @@ export default { ...@@ -70,17 +70,17 @@ export default {
return request('/release/dynamic/dynamicList', 'get', params); return request('/release/dynamic/dynamicList', 'get', params);
}, },
//评论 // 评论
comment(params: CommentParams): Promise<Response<null>> { comment(params: CommentParams): Promise<Response<null>> {
return request('/release/dynamic/comment', 'post', params); return request('/release/dynamic/comment', 'post', params);
}, },
//动态详情 // 动态详情
byDynamic(params: { dynamicId: number }): Promise<Response<dynamicDetail>> { byDynamic(params: { dynamicId: number }): Promise<Response<dynamicDetail>> {
return request('/release/dynamic/dynamicDetails', 'get', params); return request('/release/dynamic/dynamicDetails', 'get', params);
}, },
//点赞或取消点赞 // 点赞或取消点赞
likeOrCancel(params: { dynamicId: number }) { likeOrCancel(params: { dynamicId: number }) {
return request('/release/dynamic/likeOrCancel', 'get', params); return request('/release/dynamic/likeOrCancel', 'get', params);
}, },
......
import request, { Response } from '~/api/request'; import request, { Response } from '~/api/request';
export interface PublishParams { export interface PublishParams {
lat?: number; //纬度 lat?: number; // 纬度
lon?: number; //经度 lon?: number; // 经度
description: string; //描述 description: string; // 描述
userId: number; //用户id userId: number; // 用户id
mediaVO: { type: number; url: string }[]; mediaVO: { type: number; url: string }[];
} }
export default { export default {
//动态发布 // 动态发布
publish(params: PublishParams): Promise<Response<null>> { publish(params: PublishParams): Promise<Response<null>> {
return request('/release/dynamic/publish', 'post', params); return request('/release/dynamic/publish', 'post', params);
}, },
......
import { useContext, useState } from 'react';
import { Form, Input, Modal, Image, Button, Row, Col } from 'antd'; import { Form, Input, Modal, Image, Button, Row, Col } from 'antd';
import type { UploadFile } from 'antd/es/upload/interface'; import type { UploadFile } from 'antd/es/upload/interface';
import { useContext, useState } from 'react';
import NImage from 'next/image'; import NImage from 'next/image';
import api from './api';
import deleteIcon from '~/assets/images/delete-icon.png';
import uploadImg from '~/assets/images/upload.png';
import { Uploader } from '~/components/uploader';
import { useGeolocation } from '~/lib/hooks'; import { useGeolocation } from '~/lib/hooks';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import uploadImg from '~/assets/images/upload.png';
import deleteIcon from '~/assets/images/delete-icon.png'; import api from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import { Uploader } from '~/components/uploader';
type Props = { type Props = {
open: boolean; open: boolean;
...@@ -30,25 +33,25 @@ export default function PublishMessage(props: Props) { ...@@ -30,25 +33,25 @@ export default function PublishMessage(props: Props) {
const { userInfo } = useContext(UserContext); const { userInfo } = useContext(UserContext);
const position = useGeolocation(); const position = useGeolocation();
//图片上传 // 图片上传
const fileUploadChange = (value: any) => { const fileUploadChange = (value: any) => {
setFileList([...fileList, ...value]); setFileList([...fileList, ...value]);
}; };
//删除媒体 // 删除媒体
const deleteMedia = (file: UploadFile) => { const deleteMedia = (file: UploadFile) => {
let list = fileList.filter((v) => v.uid !== file.uid); const list = fileList.filter((v) => v.uid !== file.uid);
setFileList(list || []); setFileList(list || []);
}; };
//提交 // 提交
const onFinish = (values: any) => { const onFinish = (values: any) => {
setShowLoad(true); setShowLoad(true);
if (userInfo) { if (userInfo) {
api api
.publish({ .publish({
lat: position?.position?.lat, //纬度 lat: position?.position?.lat, // 纬度
lon: position?.position?.lng, //经度 lon: position?.position?.lng, // 经度
description: values.description, //描述 description: values.description, // 描述
userId: userInfo.id, //用户id userId: userInfo.id, // 用户id
mediaVO: fileList.map((item) => ({ mediaVO: fileList.map((item) => ({
type: item.type?.includes('image') ? 0 : 1, type: item.type?.includes('image') ? 0 : 1,
url: item.url as string, url: item.url as string,
...@@ -68,7 +71,7 @@ export default function PublishMessage(props: Props) { ...@@ -68,7 +71,7 @@ export default function PublishMessage(props: Props) {
}); });
} }
}; };
//取消 // 取消
const handleCancel = () => { const handleCancel = () => {
form.resetFields(); form.resetFields();
setFileList([]); setFileList([]);
......
import { Button, Image, Space, Input, Form, Divider, Skeleton } from 'antd';
import Layout from '~/components/layout';
import styles from './index.module.scss';
import errImg from '~/assets/errImg';
import { RightOutlined } from '@ant-design/icons';
import { useContext, useEffect, useState } from 'react'; import { useContext, useEffect, useState } from 'react';
import PublishMessage from './components/publishMessage';
import api, { ByDynamicResp, Dynamic } from './api'; import { RightOutlined } from '@ant-design/icons';
import { Button, Image, Space, Input, Form, Divider, Skeleton } from 'antd';
import moment from 'moment';
import InfiniteScroll from 'react-infinite-scroll-component'; import InfiniteScroll from 'react-infinite-scroll-component';
import errImg from '~/assets/errImg';
import Layout from '~/components/layout';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import moment from 'moment';
import api, { ByDynamicResp, Dynamic } from './api';
import PublishMessage from './components/publishMessage';
import styles from './index.module.scss';
interface Item extends Dynamic { interface Item extends Dynamic {
openComment?: boolean; //是否开启评论 openComment?: boolean; // 是否开启评论
showCommentAll?: boolean; //是否展示全部评论 showCommentAll?: boolean; // 是否展示全部评论
commentList?: Array<ByDynamicResp>; //评论列表 commentList?: Array<ByDynamicResp>; // 评论列表
} }
export default function Forum() { export default function Forum() {
...@@ -23,9 +26,9 @@ export default function Forum() { ...@@ -23,9 +26,9 @@ export default function Forum() {
pageNo: 1, pageNo: 1,
pageSize: 16, pageSize: 16,
}); });
const [count, setCount] = useState(0); //动态总数 const [count, setCount] = useState(0); // 动态总数
const { userInfo, setNeedLogin } = useContext(UserContext); const { userInfo, setNeedLogin } = useContext(UserContext);
const [form] = Form.useForm(); //评论区的form const [form] = Form.useForm(); // 评论区的form
useEffect(() => { useEffect(() => {
api api
...@@ -73,7 +76,7 @@ export default function Forum() { ...@@ -73,7 +76,7 @@ export default function Forum() {
getCommentList(item); getCommentList(item);
}; };
//获取评论列表 // 获取评论列表
const getCommentList = (item: Item) => { const getCommentList = (item: Item) => {
api api
.byDynamic({ .byDynamic({
...@@ -88,14 +91,14 @@ export default function Forum() { ...@@ -88,14 +91,14 @@ export default function Forum() {
}); });
}; };
//展示所有评论 // 展示所有评论
const showCommentAll = (item: Item) => { const showCommentAll = (item: Item) => {
item.showCommentAll = true; item.showCommentAll = true;
const temp = [...list]; const temp = [...list];
setList(temp); setList(temp);
}; };
//评论内容 // 评论内容
const onComment = (values: any, item: Item) => { const onComment = (values: any, item: Item) => {
if (userInfo) { if (userInfo) {
api api
...@@ -117,7 +120,7 @@ export default function Forum() { ...@@ -117,7 +120,7 @@ export default function Forum() {
} }
}; };
//点赞或取消 // 点赞或取消
const onLike = (item: Item) => { const onLike = (item: Item) => {
if (userInfo) { if (userInfo) {
api api
...@@ -244,10 +247,9 @@ export default function Forum() { ...@@ -244,10 +247,9 @@ export default function Forum() {
?.filter((comment, i) => { ?.filter((comment, i) => {
if (item.showCommentAll) { if (item.showCommentAll) {
return true; return true;
} else { }
if (i < 2) { if (i < 2) {
return true; return true;
}
} }
}) })
.map((comment) => { .map((comment) => {
......
import React from 'react'; import React from 'react';
import { Box } from './styled';
import Layout from '~/components/layout'; import Layout from '~/components/layout';
import { Box } from './styled';
import WaterfallFlowBody from './waterfallFlowBody'; import WaterfallFlowBody from './waterfallFlowBody';
export default function Home() { export default function Home() {
return ( return (
<Layout> <Layout>
......
...@@ -160,17 +160,17 @@ export interface TenderApplyType { ...@@ -160,17 +160,17 @@ export interface TenderApplyType {
} }
export const listNewsApi = { export const listNewsApi = {
//新闻列表 // 新闻列表
listNewsPage: (params: ListPageNewsInfoParams): Promise<Response<ListPageNewsInfoResp>> => { listNewsPage: (params: ListPageNewsInfoParams): Promise<Response<ListPageNewsInfoResp>> => {
return request('/release/industry-news/listNewsPage', 'post', params); return request('/release/industry-news/listNewsPage', 'post', params);
}, },
//招标列表 // 招标列表
listNewTenderInfo: ( listNewTenderInfo: (
params: ListTenderNewsInfoParams, params: ListTenderNewsInfoParams,
): Promise<Response<ListTenderNewsInfoResp>> => { ): Promise<Response<ListTenderNewsInfoResp>> => {
return request('/release/tender/listNewTenderInfo', 'post', params); return request('/release/tender/listNewTenderInfo', 'post', params);
}, },
//web-招标-合作申请提交 // web-招标-合作申请提交
tenderApply: (params: TenderApplyType): Promise<Response<number>> => { tenderApply: (params: TenderApplyType): Promise<Response<number>> => {
return request('/release/tender/apply', 'post', params); return request('/release/tender/apply', 'post', params);
}, },
...@@ -185,7 +185,7 @@ export interface ResHomeCategoriesType { ...@@ -185,7 +185,7 @@ export interface ResHomeCategoriesType {
} }
export default { export default {
//新闻列表 // 新闻列表
HomeCategories: (params: HomeCategoriesType): Promise<Response<ResHomeCategoriesType>> => { HomeCategories: (params: HomeCategoriesType): Promise<Response<ResHomeCategoriesType>> => {
return request('/pms/product/mall/getPageHomeCategories', 'get', params); return request('/pms/product/mall/getPageHomeCategories', 'get', params);
}, },
......
...@@ -46,23 +46,23 @@ export interface BitmapInfo<T> { ...@@ -46,23 +46,23 @@ export interface BitmapInfo<T> {
} }
export default { export default {
//web-首页-地图-全国点位 // web-首页-地图-全国点位
listPositioningInfo: ( listPositioningInfo: (
params: PositioningInfoParams, params: PositioningInfoParams,
): Promise<Response<BitmapInfo<ListPageJobInfoType>>> => { ): Promise<Response<BitmapInfo<ListPageJobInfoType>>> => {
return request('/release/website/getWebsiteList', 'get', params); return request('/release/website/getWebsiteList', 'get', params);
}, },
//web-首页-地图-全国飞手 // web-首页-地图-全国飞手
listFlyerBitmap: ( listFlyerBitmap: (
params: PositioningInfoParams, params: PositioningInfoParams,
): Promise<Response<BitmapInfo<FlyerBitmapEntiy>>> => { ): Promise<Response<BitmapInfo<FlyerBitmapEntiy>>> => {
return request('/release/website/flyer/bitmap', 'get', params); return request('/release/website/flyer/bitmap', 'get', params);
}, },
//web-首页-地图-全国无人机 // web-首页-地图-全国无人机
listUavBitmap: (params: PositioningInfoParams): Promise<Response<BitmapInfo<UavBitmapEntiy>>> => { listUavBitmap: (params: PositioningInfoParams): Promise<Response<BitmapInfo<UavBitmapEntiy>>> => {
return request('/release/website/uav/bitmap', 'get', params); return request('/release/website/uav/bitmap', 'get', params);
}, },
//web-首页-地图-全国维修-海点数据 // web-首页-地图-全国维修-海点数据
listMaintainBitmap: ( listMaintainBitmap: (
params: PositioningInfoParams, params: PositioningInfoParams,
): Promise<Response<BitmapInfo<ListPageJobInfoType>>> => { ): Promise<Response<BitmapInfo<ListPageJobInfoType>>> => {
......
import React, { Component, useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { message } from 'antd';
import { Box } from './styled'; import { useRouter } from 'next/router';
import api from './api'; import api from './api';
import icon from './assets/img.png'; import icon from './assets/img.png';
import { useRouter } from 'next/router'; import { Box } from './styled';
let MAP: any; let MAP: any;
let Amap: any; let Amap: any;
...@@ -19,7 +21,7 @@ export default function MapComponent() { ...@@ -19,7 +21,7 @@ export default function MapComponent() {
const [mapItem, setMapItem] = useState(0); const [mapItem, setMapItem] = useState(0);
const [userPositioning, setUserPositioning] = useState<UserInfoType>(); const [userPositioning, setUserPositioning] = useState<UserInfoType>();
const [markerCol, setMarkerCol] = useState<any>([]); const [markerCol, setMarkerCol] = useState<any>([]);
//初始化地图 // 初始化地图
const init = async () => { const init = async () => {
try { try {
const AMapLoader = await import(/* webpackChunkName: "amap" */ '@amap/amap-jsapi-loader'); const AMapLoader = await import(/* webpackChunkName: "amap" */ '@amap/amap-jsapi-loader');
...@@ -36,14 +38,14 @@ export default function MapComponent() { ...@@ -36,14 +38,14 @@ export default function MapComponent() {
zoom: 9, // 初始化地图级别 zoom: 9, // 初始化地图级别
center: [113.93029, 22.53291], // 初始化地图中心点位置 center: [113.93029, 22.53291], // 初始化地图中心点位置
}); });
//用户定位 // 用户定位
AMap.plugin('AMap.Geolocation', function () { AMap.plugin('AMap.Geolocation', function () {
const geolocation = new AMap.Geolocation({ const geolocation = new AMap.Geolocation({
enableHighAccuracy: true, //是否使用高精度定位,默认:true enableHighAccuracy: true, // 是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:5s timeout: 10000, // 超过10秒后停止定位,默认:5s
position: 'RB', //定位按钮的停靠位置 position: 'RB', // 定位按钮的停靠位置
offset: [10, 20], //定位按钮与设置的停靠位置的偏移量,默认:[10, 20] offset: [10, 20], // 定位按钮与设置的停靠位置的偏移量,默认:[10, 20]
zoomToAccuracy: true, //定位成功后是否自动调整地图视野到定位点 zoomToAccuracy: true, // 定位成功后是否自动调整地图视野到定位点
}); });
MAP.addControl(geolocation); MAP.addControl(geolocation);
geolocation.getCurrentPosition(function (status: string, result: any) { geolocation.getCurrentPosition(function (status: string, result: any) {
...@@ -54,13 +56,13 @@ export default function MapComponent() { ...@@ -54,13 +56,13 @@ export default function MapComponent() {
} }
}); });
}); });
//解析定位结果 // 解析定位结果
async function onComplete(data: any) { async function onComplete(data: any) {
console.log('定位成功'); console.log('定位成功');
setUserPositioning(data.position); setUserPositioning(data.position);
// return await mapEntiy(0,data.position); // return await mapEntiy(0,data.position);
} }
//解析定位错误信息 // 解析定位错误信息
async function onError(data: any) { async function onError(data: any) {
// message.error(`定位失败 // message.error(`定位失败
// 失败原因排查信息:${data.message} // 失败原因排查信息:${data.message}
...@@ -93,7 +95,7 @@ export default function MapComponent() { ...@@ -93,7 +95,7 @@ export default function MapComponent() {
if (markerList.length) MAP?.add(markerList); if (markerList.length) MAP?.add(markerList);
setMarkerCol([...markerList]); setMarkerCol([...markerList]);
} }
//自适应显示多个点位 // 自适应显示多个点位
MAP?.setFitView(); MAP?.setFitView();
}; };
const showFlyerBitmap = async (index: number, data?: UserInfoType, pageSize?: number) => { const showFlyerBitmap = async (index: number, data?: UserInfoType, pageSize?: number) => {
...@@ -113,7 +115,7 @@ export default function MapComponent() { ...@@ -113,7 +115,7 @@ export default function MapComponent() {
if (markerList.length) MAP?.add(markerList); if (markerList.length) MAP?.add(markerList);
setMarkerCol(markerList); setMarkerCol(markerList);
} }
//自适应显示多个点位 // 自适应显示多个点位
MAP?.setFitView(); MAP?.setFitView();
}; };
const showUavBitmap = async (index: number, data?: UserInfoType) => { const showUavBitmap = async (index: number, data?: UserInfoType) => {
...@@ -133,10 +135,10 @@ export default function MapComponent() { ...@@ -133,10 +135,10 @@ export default function MapComponent() {
if (markerList.length) MAP?.add(markerList); if (markerList.length) MAP?.add(markerList);
setMarkerCol(markerList); setMarkerCol(markerList);
} }
//自适应显示多个点位 // 自适应显示多个点位
MAP?.setFitView(); MAP?.setFitView();
}; };
//添加点位 // 添加点位
const mapEntiy = async (index: number, data?: UserInfoType) => { const mapEntiy = async (index: number, data?: UserInfoType) => {
MAP?.remove(markerCol); MAP?.remove(markerCol);
if (index === 0) { if (index === 0) {
......
import { message } from 'antd';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { message } from 'antd';
import Layout from '~/components/layout'; import Layout from '~/components/layout';
import { Box } from './styled';
import api from '../api'; import api from '../api';
import icon from '../assets/img.png'; import icon from '../assets/img.png';
import { Box } from './styled';
let MAP: any; let MAP: any;
let Amap: any; let Amap: any;
...@@ -19,7 +23,7 @@ export default function MoreServicePoints() { ...@@ -19,7 +23,7 @@ export default function MoreServicePoints() {
const [userPositioning, setUserPositioning] = useState<UserInfoType>(); const [userPositioning, setUserPositioning] = useState<UserInfoType>();
const [markerCol, setMarkerCol] = useState<any>([]); const [markerCol, setMarkerCol] = useState<any>([]);
const [servicePoints, setServicePoints] = useState<any>([]); const [servicePoints, setServicePoints] = useState<any>([]);
//初始化地图 // 初始化地图
const init = async () => { const init = async () => {
try { try {
const AMapLoader = await import(/* webpackChunkName: "amap" */ '@amap/amap-jsapi-loader'); const AMapLoader = await import(/* webpackChunkName: "amap" */ '@amap/amap-jsapi-loader');
...@@ -36,14 +40,14 @@ export default function MoreServicePoints() { ...@@ -36,14 +40,14 @@ export default function MoreServicePoints() {
zoom: 9, // 初始化地图级别 zoom: 9, // 初始化地图级别
center: [113.93029, 22.53291], // 初始化地图中心点位置 center: [113.93029, 22.53291], // 初始化地图中心点位置
}); });
//用户定位 // 用户定位
AMap.plugin('AMap.Geolocation', function () { AMap.plugin('AMap.Geolocation', function () {
const geolocation = new AMap.Geolocation({ const geolocation = new AMap.Geolocation({
enableHighAccuracy: true, //是否使用高精度定位,默认:true enableHighAccuracy: true, // 是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:5s timeout: 10000, // 超过10秒后停止定位,默认:5s
position: 'RB', //定位按钮的停靠位置 position: 'RB', // 定位按钮的停靠位置
offset: [10, 20], //定位按钮与设置的停靠位置的偏移量,默认:[10, 20] offset: [10, 20], // 定位按钮与设置的停靠位置的偏移量,默认:[10, 20]
zoomToAccuracy: true, //定位成功后是否自动调整地图视野到定位点 zoomToAccuracy: true, // 定位成功后是否自动调整地图视野到定位点
}); });
MAP.addControl(geolocation); MAP.addControl(geolocation);
geolocation.getCurrentPosition(function (status: string, result: any) { geolocation.getCurrentPosition(function (status: string, result: any) {
...@@ -56,13 +60,13 @@ export default function MoreServicePoints() { ...@@ -56,13 +60,13 @@ export default function MoreServicePoints() {
} }
}); });
}); });
//解析定位结果 // 解析定位结果
async function onComplete(data: any) { async function onComplete(data: any) {
console.log('定位成功'); console.log('定位成功');
setUserPositioning(data.position); setUserPositioning(data.position);
// return await mapEntiy(0,data.position); // return await mapEntiy(0,data.position);
} }
//解析定位错误信息 // 解析定位错误信息
async function onError(data: any) { async function onError(data: any) {
// message.error(`定位失败 // message.error(`定位失败
// 失败原因排查信息:${data.message} // 失败原因排查信息:${data.message}
...@@ -96,7 +100,7 @@ export default function MoreServicePoints() { ...@@ -96,7 +100,7 @@ export default function MoreServicePoints() {
if (markerList.length) MAP?.add(markerList); if (markerList.length) MAP?.add(markerList);
setMarkerCol([...markerList]); setMarkerCol([...markerList]);
} }
//自适应显示多个点位 // 自适应显示多个点位
MAP?.setFitView(); MAP?.setFitView();
}; };
const showFlyerBitmap = async (index: number, data?: UserInfoType, pageSize?: number) => { const showFlyerBitmap = async (index: number, data?: UserInfoType, pageSize?: number) => {
...@@ -117,7 +121,7 @@ export default function MoreServicePoints() { ...@@ -117,7 +121,7 @@ export default function MoreServicePoints() {
if (markerList.length) MAP?.add(markerList); if (markerList.length) MAP?.add(markerList);
setMarkerCol(markerList); setMarkerCol(markerList);
} }
//自适应显示多个点位 // 自适应显示多个点位
MAP?.setFitView(); MAP?.setFitView();
}; };
const showMaintainBitmap = async (index: number, data?: UserInfoType, pageSize?: number) => { const showMaintainBitmap = async (index: number, data?: UserInfoType, pageSize?: number) => {
...@@ -138,7 +142,7 @@ export default function MoreServicePoints() { ...@@ -138,7 +142,7 @@ export default function MoreServicePoints() {
if (markerList.length) MAP?.add(markerList); if (markerList.length) MAP?.add(markerList);
setMarkerCol(markerList); setMarkerCol(markerList);
} }
//自适应显示多个点位 // 自适应显示多个点位
MAP?.setFitView(); MAP?.setFitView();
}; };
const showUavBitmap = async (index: number, data?: UserInfoType) => { const showUavBitmap = async (index: number, data?: UserInfoType) => {
...@@ -159,10 +163,10 @@ export default function MoreServicePoints() { ...@@ -159,10 +163,10 @@ export default function MoreServicePoints() {
if (markerList.length) MAP?.add(markerList); if (markerList.length) MAP?.add(markerList);
setMarkerCol(markerList); setMarkerCol(markerList);
} }
//自适应显示多个点位 // 自适应显示多个点位
MAP?.setFitView(); MAP?.setFitView();
}; };
//添加点位 // 添加点位
const mapEntiy = async (index: number, data?: UserInfoType) => { const mapEntiy = async (index: number, data?: UserInfoType) => {
MAP?.remove(markerCol); MAP?.remove(markerCol);
if (userPositioning) { if (userPositioning) {
...@@ -199,7 +203,7 @@ export default function MoreServicePoints() { ...@@ -199,7 +203,7 @@ export default function MoreServicePoints() {
const moveTo = (item: any, index: number) => { const moveTo = (item: any, index: number) => {
const p = markerCol[index].getPosition(); const p = markerCol[index].getPosition();
var infoWindow = new Amap.InfoWindow({ const infoWindow = new Amap.InfoWindow({
position: p, position: p,
offset: new Amap.Pixel(20, -10), offset: new Amap.Pixel(20, -10),
content: item.dizhi || item.flyerName || item.uavName || item.name, content: item.dizhi || item.flyerName || item.uavName || item.name,
...@@ -207,7 +211,8 @@ export default function MoreServicePoints() { ...@@ -207,7 +211,8 @@ export default function MoreServicePoints() {
infoWindow.open(MAP); infoWindow.open(MAP);
if (item.dizhi) { if (item.dizhi) {
return MAP?.setCenter([item.jd, item.wd]); return MAP?.setCenter([item.jd, item.wd]);
} else if (item.flyerName || item.uavName || item.name) { }
if (item.flyerName || item.uavName || item.name) {
return MAP?.setCenter([item.lon, item.lat]); return MAP?.setCenter([item.lon, item.lat]);
} }
return message.warning('暂无位置信息'); return message.warning('暂无位置信息');
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Carousel } from 'antd'; import { Carousel } from 'antd';
import { Box } from './styled';
import Image from 'next/image'; import Image from 'next/image';
import commonApi from '~/api'; import commonApi from '~/api';
import { Box } from './styled';
export default function RotationChart() { export default function RotationChart() {
const [bannerList, setBannerList] = useState<string[]>([]); const [bannerList, setBannerList] = useState<string[]>([]);
const getPropagandaCenter = () => { const getPropagandaCenter = () => {
......
import { Select, Space, message } from 'antd'; import React, { useEffect, useState } from 'react';
import { Select, Space } from 'antd';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import React, { useContext, useEffect, useState } from 'react';
import ContentBox from '~/components/contentBox'; import ContentBox from '~/components/contentBox';
import WxCodeModal from '~/components/wxCodeModal';
import { bigNumberTransform } from '~/utils/money';
import api, { AllType, NewsPageType, NewsTenderType, listNewsApi } from './api';
import Map from './components/map'; import Map from './components/map';
import RotationChart from './components/rotationChart'; import RotationChart from './components/rotationChart';
import { Box } from './styled'; import { Box } from './styled';
import { UserContext } from '~/lib/userProvider';
import api, {
AllType,
NewsPageType,
NewsTenderType,
equipmentLeasingApi,
flightSkillsApi,
jobServicesApi,
listNewsApi,
mallApi,
} from './api';
import { bigNumberTransform } from '~/utils/money';
import WxCodeModal from '~/components/wxCodeModal';
interface ColumnsType { interface ColumnsType {
title: string; title: string;
router: string; router: string;
...@@ -109,10 +101,10 @@ export default function WaterfallFlowBody() { ...@@ -109,10 +101,10 @@ export default function WaterfallFlowBody() {
useEffect(() => { useEffect(() => {
(async () => { (async () => {
const res2 = await api.HomeCategories({ type: 2 }); //无人机培训 const res2 = await api.HomeCategories({ type: 2 }); // 无人机培训
const res4 = await api.HomeCategories({ type: 4 }); //无人机销售 const res4 = await api.HomeCategories({ type: 4 }); // 无人机销售
const res1 = await api.HomeCategories({ type: 1 }); //无人机出租 const res1 = await api.HomeCategories({ type: 1 }); // 无人机出租
const res3 = await api.HomeCategories({ type: 3 }); //无人机服务 const res3 = await api.HomeCategories({ type: 3 }); // 无人机服务
console.log(res1, res2, res3, res4); console.log(res1, res2, res3, res4);
const listOption = JSON.parse(JSON.stringify(list)).map((item: string, index: number) => { const listOption = JSON.parse(JSON.stringify(list)).map((item: string, index: number) => {
return { id: index, categoryName: item, value: index }; return { id: index, categoryName: item, value: index };
...@@ -143,8 +135,8 @@ export default function WaterfallFlowBody() { ...@@ -143,8 +135,8 @@ export default function WaterfallFlowBody() {
}; };
}), }),
); );
let res7 = await listNewsApi.listNewsPage({ pageNo: 1, pageSize: 5 }); const res7 = await listNewsApi.listNewsPage({ pageNo: 1, pageSize: 5 });
let res8 = await listNewsApi.listNewTenderInfo({ const res8 = await listNewsApi.listNewTenderInfo({
pageNo: 1, pageNo: 1,
pageSize: 6, pageSize: 6,
}); });
...@@ -341,7 +333,7 @@ export default function WaterfallFlowBody() { ...@@ -341,7 +333,7 @@ export default function WaterfallFlowBody() {
return ( return (
<Box> <Box>
<ContentBox <ContentBox
boxIndex={1} //分为左右两列,每列一个,从上而下 boxIndex={1} // 分为左右两列,每列一个,从上而下
leftcontentstyle={{ leftcontentstyle={{
width: '806px', width: '806px',
margin: { top: 0, right: '10px', bottom: '10px', left: 0 }, margin: { top: 0, right: '10px', bottom: '10px', left: 0 },
......
import styled from 'styled-components'; import styled from 'styled-components';
import button from './assets/button.png'; import button from './assets/button.png';
import xwbg from './assets/xwbg.png'; import xwbg from './assets/xwbg.png';
......
...@@ -28,7 +28,7 @@ export interface ListPageJobInfoResp { ...@@ -28,7 +28,7 @@ export interface ListPageJobInfoResp {
} }
export default { export default {
//web-作业服务-分页 // web-作业服务-分页
listPageJobServicesInfo: ( listPageJobServicesInfo: (
params: ListPageJobInfoParams, params: ListPageJobInfoParams,
option: {}, option: {},
......
import React, { useContext, useEffect, useState } from 'react'; import React, { useContext, useEffect, useState } from 'react';
import Layout from '~/components/layout';
import { Box } from './styled';
import moment from 'moment';
import { Tabs, Modal, Button, Form, message, DatePicker, Image as AImage, Input } from 'antd'; import { Tabs, Modal, Button, Form, message, DatePicker, Image as AImage, Input } from 'antd';
import { RangePickerProps } from 'antd/es/date-picker';
import type { TabsProps } from 'antd'; import type { TabsProps } from 'antd';
import Evaluate from './components/evaluate'; import { RangePickerProps } from 'antd/es/date-picker';
import { useRouter } from 'next/router'; import moment from 'moment';
import api, { ListPageJobInfoResp } from './api';
import Image from 'next/image'; import Image from 'next/image';
import { useRouter } from 'next/router';
import { RegionResp } from '~/components/filter/api'; import { RegionResp } from '~/components/filter/api';
import AddressMap from './components/map'; import Layout from '~/components/layout';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import api, { ListPageJobInfoResp } from './api';
import Evaluate from './components/evaluate';
import AddressMap from './components/map';
import { Box } from './styled';
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const { TextArea } = Input; const { TextArea } = Input;
export default function JobServicesDetail() { export default function JobServicesDetail() {
...@@ -66,7 +70,7 @@ export default function JobServicesDetail() { ...@@ -66,7 +70,7 @@ export default function JobServicesDetail() {
setSale((Math.floor(Math.random() * 901) + 100).toFixed(0)); setSale((Math.floor(Math.random() * 901) + 100).toFixed(0));
}, []); }, []);
//预约弹框 // 预约弹框
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
const [formDate] = Form.useForm(); const [formDate] = Form.useForm();
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
...@@ -87,11 +91,11 @@ export default function JobServicesDetail() { ...@@ -87,11 +91,11 @@ export default function JobServicesDetail() {
return current && current < moment().endOf('day'); return current && current < moment().endOf('day');
}; };
useEffect(() => { useEffect(() => {
//选择地点后重新验证 // 选择地点后重新验证
formDate.setFieldValue('latitudeAndLongitude', addressContent); formDate.setFieldValue('latitudeAndLongitude', addressContent);
formDate.validateFields(); formDate.validateFields();
}, [addressContent]); }, [addressContent]);
//立即预约 // 立即预约
const appointmentNow = () => { const appointmentNow = () => {
if (userInfo) { if (userInfo) {
setIsModalOpen(true); setIsModalOpen(true);
......
import request, { Response } from '~/api/request'; import request, { Response } from '~/api/request';
import { RegionResp } from '~/components/filter/api'; import { RegionResp } from '~/components/filter/api';
export interface ListPageJobInfoParams { export interface ListPageJobInfoParams {
pageNo: number; pageNo: number;
pageSize: number; pageSize: number;
...@@ -52,17 +53,17 @@ export interface GetOrderTaskParams { ...@@ -52,17 +53,17 @@ export interface GetOrderTaskParams {
} }
export default { export default {
//web-作业服务-详情 // web-作业服务-详情
listDetailJobServicesInfo: ( listDetailJobServicesInfo: (
params: GetJobServicesDetailParams, params: GetJobServicesDetailParams,
): Promise<Response<ListPageJobInfoResp>> => { ): Promise<Response<ListPageJobInfoResp>> => {
return request('/pms/backstage/work/queryWorkService', 'get', params); return request('/pms/backstage/work/queryWorkService', 'get', params);
}, },
//web-作业服务-详情-立即预约 // web-作业服务-详情-立即预约
insertOrderTask: (params: GetOrderTaskParams): Promise<Response<null>> => { insertOrderTask: (params: GetOrderTaskParams): Promise<Response<null>> => {
return request('/oms/serviceOrderTask/insertOrderTask', 'post', params); return request('/oms/serviceOrderTask/insertOrderTask', 'post', params);
}, },
//区域 // 区域
region: (): Promise<Response<Array<RegionResp>>> => { region: (): Promise<Response<Array<RegionResp>>> => {
return request('/pms/webDevice/getSecondDistrictInfo'); return request('/pms/webDevice/getSecondDistrictInfo');
}, },
......
import React, { useEffect } from 'react'; import React from 'react';
import { Box } from './styled';
import { Rate } from 'antd'; import { Rate } from 'antd';
import Moment from 'moment';
import Image from 'next/image'; import Image from 'next/image';
import { JobDetail } from '../../api';
import pic1 from './assets/1.webp'; import pic1 from './assets/1.webp';
import pic2 from './assets/2.webp'; import pic2 from './assets/2.webp';
import pic3 from './assets/3.webp'; import pic3 from './assets/3.webp';
...@@ -12,7 +13,8 @@ import pic6 from './assets/6.webp'; ...@@ -12,7 +13,8 @@ import pic6 from './assets/6.webp';
import pic7 from './assets/7.webp'; import pic7 from './assets/7.webp';
import pic8 from './assets/8.webp'; import pic8 from './assets/8.webp';
import pic9 from './assets/9.webp'; import pic9 from './assets/9.webp';
import Moment from 'moment'; import { Box } from './styled';
import { JobDetail } from '../../api';
const imgList = [pic1, pic2, pic3, pic4, pic5, pic6, pic7, pic8, pic9]; const imgList = [pic1, pic2, pic3, pic4, pic5, pic6, pic7, pic8, pic9];
...@@ -37,7 +39,7 @@ interface EvaluateType { ...@@ -37,7 +39,7 @@ interface EvaluateType {
export default function Evaluate(props: EvaluateType) { export default function Evaluate(props: EvaluateType) {
const { evaluateInfo } = props; const { evaluateInfo } = props;
let listVal: Array<JobDetail> = JSON.parse(JSON.stringify(evaluateInfo)); const listVal: Array<JobDetail> = JSON.parse(JSON.stringify(evaluateInfo));
listVal.map((item, index) => { listVal.map((item, index) => {
item.img = imgList[Math.floor(Math.random() * 9)]?.src; item.img = imgList[Math.floor(Math.random() * 9)]?.src;
item.name = name[Math.floor(Math.random() * 12)]; item.name = name[Math.floor(Math.random() * 12)];
......
import React, { Component, Dispatch, SetStateAction, useEffect, useState } from 'react'; import React, { Dispatch, SetStateAction, useEffect, useState } from 'react';
import { message } from 'antd';
import { Box } from './styled';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { Box } from './styled';
let MAP: any; let MAP: any;
let Amap: any; let Amap: any;
...@@ -22,7 +24,7 @@ export default function MapComponent(props: BoxProps) { ...@@ -22,7 +24,7 @@ export default function MapComponent(props: BoxProps) {
const [mapItem, setMapItem] = useState(0); const [mapItem, setMapItem] = useState(0);
const [userPositioning, setUserPositioning] = useState<UserInfoType>(); const [userPositioning, setUserPositioning] = useState<UserInfoType>();
const [markerCol, setMarkerCol] = useState<any>([]); const [markerCol, setMarkerCol] = useState<any>([]);
//初始化地图 // 初始化地图
const init = async () => { const init = async () => {
try { try {
const AMapLoader = await import(/* webpackChunkName: "amap" */ '@amap/amap-jsapi-loader'); const AMapLoader = await import(/* webpackChunkName: "amap" */ '@amap/amap-jsapi-loader');
...@@ -39,14 +41,14 @@ export default function MapComponent(props: BoxProps) { ...@@ -39,14 +41,14 @@ export default function MapComponent(props: BoxProps) {
zoom: 9, // 初始化地图级别 zoom: 9, // 初始化地图级别
center: [113.93029, 22.53291], // 初始化地图中心点位置 center: [113.93029, 22.53291], // 初始化地图中心点位置
}); });
//用户定位 // 用户定位
AMap.plugin('AMap.Geolocation', function () { AMap.plugin('AMap.Geolocation', function () {
const geolocation = new AMap.Geolocation({ const geolocation = new AMap.Geolocation({
enableHighAccuracy: true, //是否使用高精度定位,默认:true enableHighAccuracy: true, // 是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:5s timeout: 10000, // 超过10秒后停止定位,默认:5s
position: 'RB', //定位按钮的停靠位置 position: 'RB', // 定位按钮的停靠位置
offset: [10, 20], //定位按钮与设置的停靠位置的偏移量,默认:[10, 20] offset: [10, 20], // 定位按钮与设置的停靠位置的偏移量,默认:[10, 20]
zoomToAccuracy: true, //定位成功后是否自动调整地图视野到定位点 zoomToAccuracy: true, // 定位成功后是否自动调整地图视野到定位点
}); });
MAP.addControl(geolocation); MAP.addControl(geolocation);
geolocation.getCurrentPosition(function (status: string, result: any) { geolocation.getCurrentPosition(function (status: string, result: any) {
...@@ -57,13 +59,13 @@ export default function MapComponent(props: BoxProps) { ...@@ -57,13 +59,13 @@ export default function MapComponent(props: BoxProps) {
} }
}); });
}); });
//解析定位结果 // 解析定位结果
async function onComplete(data: any) { async function onComplete(data: any) {
console.log('定位成功'); console.log('定位成功');
setUserPositioning(data.position); setUserPositioning(data.position);
// return await mapEntiy(0,data.position); // return await mapEntiy(0,data.position);
} }
//解析定位错误信息 // 解析定位错误信息
async function onError(data: any) { async function onError(data: any) {
// message.error(`定位失败 // message.error(`定位失败
// 失败原因排查信息:${data.message} // 失败原因排查信息:${data.message}
...@@ -80,7 +82,7 @@ export default function MapComponent(props: BoxProps) { ...@@ -80,7 +82,7 @@ export default function MapComponent(props: BoxProps) {
} }
}; };
//选择点位 // 选择点位
const mapEntiy = async (index: number, data?: UserInfoType) => { const mapEntiy = async (index: number, data?: UserInfoType) => {
MAP.on('click', mapGet); MAP.on('click', mapGet);
setMapItem(index); setMapItem(index);
...@@ -88,7 +90,7 @@ export default function MapComponent(props: BoxProps) { ...@@ -88,7 +90,7 @@ export default function MapComponent(props: BoxProps) {
const mapGet = (e: any) => { const mapGet = (e: any) => {
console.log(e); console.log(e);
// 在这里获取点位信息 // 在这里获取点位信息
const lnglat = e.lnglat; const { lnglat } = e;
console.log(lnglat); console.log(lnglat);
const geocoder = new Amap.Geocoder({ const geocoder = new Amap.Geocoder({
......
import React, { useEffect, useState, useRef } from 'react'; import React, { useEffect, useState } from 'react';
import { Box } from './styled';
import { Pagination, Image } from 'antd'; import { Pagination, Image } from 'antd';
import Layout from '~/components/layout';
import ContentBox from '~/components/contentBox';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import commonApi from '~/api';
import ContentBox from '~/components/contentBox';
import Filter, { FilterResult, AdapterResult } from '~/components/filter'; import Filter, { FilterResult, AdapterResult } from '~/components/filter';
import Layout from '~/components/layout';
import api, { Job } from './api'; import api, { Job } from './api';
import commonApi from '~/api'; import { Box } from './styled';
// 此函数在构建时被调用 // 此函数在构建时被调用
export async function getServerSideProps() { export async function getServerSideProps() {
return { return {
...@@ -38,7 +41,7 @@ export default function JobServices() { ...@@ -38,7 +41,7 @@ export default function JobServices() {
<div className='item-bottom'> <div className='item-bottom'>
<div className='bottom-left'>{item.inspComtAmount}条评价</div> <div className='bottom-left'>{item.inspComtAmount}条评价</div>
<div className='bottom-right'>{item.companyName}</div> <div className='bottom-right'>{item.companyName}</div>
{/*<div className='com'>{item.teamName}</div>*/} {/* <div className='com'>{item.teamName}</div> */}
</div> </div>
</div> </div>
); );
...@@ -52,15 +55,15 @@ export default function JobServices() { ...@@ -52,15 +55,15 @@ export default function JobServices() {
); );
}; };
const [filterResult, setFilterResult] = useState<AdapterResult>({}); //筛选结果 const [filterResult, setFilterResult] = useState<AdapterResult>({}); // 筛选结果
const [pageParams, setPageParams] = useState({ const [pageParams, setPageParams] = useState({
pageNo: 1, pageNo: 1,
pageSize: 14, pageSize: 14,
}); //分页器对象 }); // 分页器对象
const [count, setCount] = useState(0); //商品总数 const [count, setCount] = useState(0); // 商品总数
const [abort, setAbort] = useState<AbortController | null>(null); //请求中断 const [abort, setAbort] = useState<AbortController | null>(null); // 请求中断
const onPageChange = (page: number, pageSize: number) => { const onPageChange = (page: number, pageSize: number) => {
setPageParams({ setPageParams({
...@@ -78,17 +81,17 @@ export default function JobServices() { ...@@ -78,17 +81,17 @@ export default function JobServices() {
}); });
}; };
useEffect(() => { useEffect(() => {
//中断前一次列表请求 // 中断前一次列表请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [filterResult, pageParams]); }, [filterResult, pageParams]);
//端口列表请求 // 端口列表请求
useEffect(() => { useEffect(() => {
let queryVal = JSON.parse(JSON.stringify(router.query)); const queryVal = JSON.parse(JSON.stringify(router.query));
let rs; let rs;
if (Object.keys(queryVal).length) { if (Object.keys(queryVal).length) {
rs = { categoryId: [Number(queryVal['categoryId'])] }; rs = { categoryId: [Number(queryVal.categoryId)] };
} }
api api
.listPageJobServicesInfo( .listPageJobServicesInfo(
...@@ -125,9 +128,9 @@ export default function JobServices() { ...@@ -125,9 +128,9 @@ export default function JobServices() {
}, []); }, []);
useEffect(() => { useEffect(() => {
let queryVal = JSON.parse(JSON.stringify(router.query)); const queryVal = JSON.parse(JSON.stringify(router.query));
if (Object.keys(router.query).length) { if (Object.keys(router.query).length) {
setFilterResult({ categoryId: [Number(queryVal['categoryId'])] }); setFilterResult({ categoryId: [Number(queryVal.categoryId)] });
} }
}, [router]); }, [router]);
......
...@@ -29,11 +29,11 @@ export interface Ad { ...@@ -29,11 +29,11 @@ export interface Ad {
} }
export default { export default {
//web-商品信息-分页 // web-商品信息-分页
deviceList: (params: DeviceListParams, options = {}): Promise<Response<DeviceListResp>> => { deviceList: (params: DeviceListParams, options = {}): Promise<Response<DeviceListResp>> => {
return request('/pms/product/mall/deviceList', 'post', params, options); return request('/pms/product/mall/deviceList', 'post', params, options);
}, },
//产品商城广告位 // 产品商城广告位
listBannerImg: () => { listBannerImg: () => {
return request('/release/module/listBannerImg', 'get', { return request('/release/module/listBannerImg', 'get', {
moduleCode: 'PRODUCT_MARKETP', moduleCode: 'PRODUCT_MARKETP',
......
import styles from './index.module.scss'; import styles from './index.module.scss';
import Layout from '~/components/layout';
import { Space, Image as AImage, Row, Col, Button, Divider, Badge } from 'antd';
import { useContext, useEffect, useState } from 'react'; import { useContext, useEffect, useState } from 'react';
import { DownOutlined, RightOutlined } from '@ant-design/icons';
import { DownOutlined } from '@ant-design/icons';
import { Space, Image as AImage, Row, Col, Button, Divider, Badge } from 'antd';
import Image from 'next/image'; import Image from 'next/image';
import errImg from '~/assets/errImg';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
// Import Swiper React components // Import Swiper React components
import { Swiper, SwiperSlide } from 'swiper/react';
import { Navigation } from 'swiper'; import { Navigation } from 'swiper';
import { Swiper, SwiperSlide } from 'swiper/react';
import errImg from '~/assets/errImg';
import Layout from '~/components/layout';
import OrderForGoods from './components/orderForGoods'; import OrderForGoods from './components/orderForGoods';
// Import Swiper styles // Import Swiper styles
import 'swiper/css'; import 'swiper/css';
import 'swiper/css/navigation'; import 'swiper/css/navigation';
import { UserContext } from '~/lib/userProvider';
import api, { GetLeaseGoodsDetailResp } from './api'; import api, { GetLeaseGoodsDetailResp } from './api';
import IntentionModal from './components/intentionModal'; import IntentionModal from './components/intentionModal';
import { UserContext } from '~/lib/userProvider';
export default function MallDetail() { export default function MallDetail() {
const { userInfo, setNeedLogin } = useContext(UserContext); const { userInfo, setNeedLogin } = useContext(UserContext);
const [visible, setVisible] = useState(false); //商品图预览 const [visible, setVisible] = useState(false); // 商品图预览
const router = useRouter(); const router = useRouter();
const [id, setId] = useState<number | null>(null); const [id, setId] = useState<number | null>(null);
const [detail, setDetail] = useState<GetLeaseGoodsDetailResp | null>(null); //详情数据 const [detail, setDetail] = useState<GetLeaseGoodsDetailResp | null>(null); // 详情数据
const [intentionModalOpen, setIntentionModalOpen] = useState(false); //意向弹窗 const [intentionModalOpen, setIntentionModalOpen] = useState(false); // 意向弹窗
const [productImg, setProductImg] = useState(''); //展示的商品图 const [productImg, setProductImg] = useState(''); // 展示的商品图
//打开意向modal // 打开意向modal
const openIntentionModal = () => { const openIntentionModal = () => {
if (userInfo) { if (userInfo) {
setIntentionModalOpen(true); setIntentionModalOpen(true);
...@@ -36,7 +41,7 @@ export default function MallDetail() { ...@@ -36,7 +41,7 @@ export default function MallDetail() {
} }
}; };
//提交意向 // 提交意向
const handleIntentionOk = () => { const handleIntentionOk = () => {
setIntentionModalOpen(false); setIntentionModalOpen(false);
}; };
...@@ -68,7 +73,7 @@ export default function MallDetail() { ...@@ -68,7 +73,7 @@ export default function MallDetail() {
} }
}, [id]); }, [id]);
//订单弹框 // 订单弹框
const [isorderForGoods, setIsorderForGoods] = useState(false); const [isorderForGoods, setIsorderForGoods] = useState(false);
const [wareSkuList, setWareSkuList] = useState<any>(); const [wareSkuList, setWareSkuList] = useState<any>();
const [mallDetail, setMallDetail] = useState<any>(); const [mallDetail, setMallDetail] = useState<any>();
...@@ -239,7 +244,7 @@ export default function MallDetail() { ...@@ -239,7 +244,7 @@ export default function MallDetail() {
</div> </div>
</div> </div>
) : ( ) : (
//订单 // 订单
<OrderForGoods <OrderForGoods
setIsorderForGoods={setIsorderForGoods} setIsorderForGoods={setIsorderForGoods}
detailData={detail} detailData={detail}
......
...@@ -2,7 +2,7 @@ import request, { Response } from '~/api/request'; ...@@ -2,7 +2,7 @@ import request, { Response } from '~/api/request';
export interface GetLeaseGoodsDetailParams { export interface GetLeaseGoodsDetailParams {
goodsId: number; goodsId: number;
type: 1 | 0; //租赁:1 销售商品:0 type: 1 | 0; // 租赁:1 销售商品:0
} }
export interface GetLeaseGoodsDetailResp { export interface GetLeaseGoodsDetailResp {
...@@ -88,13 +88,13 @@ interface CommitMallOrderParams { ...@@ -88,13 +88,13 @@ interface CommitMallOrderParams {
} }
export default { export default {
//web-获取商品详细信息--共多少种选择 // web-获取商品详细信息--共多少种选择
getLeaseGoodsDetail( getLeaseGoodsDetail(
params: GetLeaseGoodsDetailParams, params: GetLeaseGoodsDetailParams,
): Promise<Response<GetLeaseGoodsDetailResp>> { ): Promise<Response<GetLeaseGoodsDetailResp>> {
return request('/pms/product/mall/getLeaseGoodsDetail', 'get', params); return request('/pms/product/mall/getLeaseGoodsDetail', 'get', params);
}, },
//提交订单V1.0.0 // 提交订单V1.0.0
commitMallOrder(params: CommitMallOrderParams) { commitMallOrder(params: CommitMallOrderParams) {
return request('/oms/app-order/commitMallOrder', 'post', params); return request('/oms/app-order/commitMallOrder', 'post', params);
}, },
......
...@@ -10,7 +10,7 @@ interface CommitMallOrderParams { ...@@ -10,7 +10,7 @@ interface CommitMallOrderParams {
} }
export default { export default {
//提交订单V1.0.0 // 提交订单V1.0.0
commitMallOrder(params: CommitMallOrderParams) { commitMallOrder(params: CommitMallOrderParams) {
return request('/oms/app-order/confirmMallOrder', 'post', params); return request('/oms/app-order/confirmMallOrder', 'post', params);
}, },
......
import { Button, Col, Image, message, Modal, Row, Space, InputNumber } from 'antd';
import { Dispatch, SetStateAction, useEffect, useState } from 'react'; import { Dispatch, SetStateAction, useEffect, useState } from 'react';
import { Button, Col, Image, message, Modal, Row, Space, InputNumber } from 'antd';
import errImg from '~/assets/errImg'; import errImg from '~/assets/errImg';
import { GetLeaseGoodsDetailResp, ProductSpecList } from '../../api';
import styles from './index.module.scss';
import api from './api'; import api from './api';
import Item from 'antd/es/list/Item'; import styles from './index.module.scss';
import { GetLeaseGoodsDetailResp, ProductSpecList } from '../../api';
type Props = { type Props = {
open?: boolean; open?: boolean;
...@@ -15,17 +17,17 @@ type Props = { ...@@ -15,17 +17,17 @@ type Props = {
setMallDetail: Dispatch<SetStateAction<any>>; setMallDetail: Dispatch<SetStateAction<any>>;
}; };
export default function IntentionModal(props: Props) { export default function IntentionModal(props: Props) {
const [checkedMap, setCheckedMap] = useState<{ string?: boolean }>({}); //通过索引记录选中的产品规格 例: {'1,1': true|false} props.detail?.goodsSpec[1].productSpecList[1] const [checkedMap, setCheckedMap] = useState<{ string?: boolean }>({}); // 通过索引记录选中的产品规格 例: {'1,1': true|false} props.detail?.goodsSpec[1].productSpecList[1]
const [checkItems, setCheckItems] = useState<ProductSpecList[]>([]); //选中的规格 const [checkItems, setCheckItems] = useState<ProductSpecList[]>([]); // 选中的规格
const [loading, setLoading] = useState(false); //下单中 const [loading, setLoading] = useState(false); // 下单中
const [numValue, setNumValue] = useState<number | null>(1); //数量 const [numValue, setNumValue] = useState<number | null>(1); // 数量
useEffect(() => { useEffect(() => {
let list: ProductSpecList[] = []; const list: ProductSpecList[] = [];
Object.keys(checkedMap).forEach((key) => { Object.keys(checkedMap).forEach((key) => {
if (checkedMap[key as keyof typeof checkedMap]) { if (checkedMap[key as keyof typeof checkedMap]) {
let arr = key.split(','); const arr = key.split(',');
let item = props.detail?.goodsSpec[Number(arr[0])].productSpecList[Number(arr[1])]; const item = props.detail?.goodsSpec[Number(arr[0])].productSpecList[Number(arr[1])];
if (item) { if (item) {
list.push(item); list.push(item);
} }
...@@ -36,7 +38,7 @@ export default function IntentionModal(props: Props) { ...@@ -36,7 +38,7 @@ export default function IntentionModal(props: Props) {
}, [checkedMap]); }, [checkedMap]);
useEffect(() => { useEffect(() => {
let items = props.detail?.goodsSpec const items = props.detail?.goodsSpec
.filter((item) => item.must === 1) .filter((item) => item.must === 1)
.map((item) => item.productSpecList) .map((item) => item.productSpecList)
.flat(); .flat();
...@@ -52,35 +54,35 @@ export default function IntentionModal(props: Props) { ...@@ -52,35 +54,35 @@ export default function IntentionModal(props: Props) {
} }
}, [props.detail]); }, [props.detail]);
//添加规格到购物车 // 添加规格到购物车
function addProductSpec(goodsSpecIndex: number, productSpecIndex: number, status?: boolean) { function addProductSpec(goodsSpecIndex: number, productSpecIndex: number, status?: boolean) {
if (props.detail?.goodsSpec[goodsSpecIndex].must && !status) if (props.detail?.goodsSpec[goodsSpecIndex].must && !status)
return message.warning('该项为必选项,无法取消选中'); return message.warning('该项为必选项,无法取消选中');
let temp = {}; const temp = {};
//@ts-ignore // @ts-ignore
temp[`${goodsSpecIndex},${productSpecIndex}`] = temp[`${goodsSpecIndex},${productSpecIndex}`] =
//@ts-ignore // @ts-ignore
!checkedMap[`${goodsSpecIndex},${productSpecIndex}`]; !checkedMap[`${goodsSpecIndex},${productSpecIndex}`];
setCheckedMap({ setCheckedMap({
...checkedMap, ...checkedMap,
...temp, ...temp,
}); });
} }
//数量 // 数量
const onChangeNum = (value: number | null) => { const onChangeNum = (value: number | null) => {
console.log('changed', value); console.log('changed', value);
setNumValue(value); setNumValue(value);
}; };
//提交 // 提交
function onSubmit() { function onSubmit() {
let buyNum = 0; let buyNum = 0;
let mallSpecIds: number[] = []; const mallSpecIds: number[] = [];
Object.keys(checkedMap).forEach((key) => { Object.keys(checkedMap).forEach((key) => {
if (checkedMap[key as keyof typeof checkedMap]) { if (checkedMap[key as keyof typeof checkedMap]) {
buyNum++; buyNum++;
let arr = key.split(','); const arr = key.split(',');
let specId = props.detail?.goodsSpec[Number(arr[0])].productSpecList[Number(arr[1])].id; const specId = props.detail?.goodsSpec[Number(arr[0])].productSpecList[Number(arr[1])].id;
if (specId) { if (specId) {
mallSpecIds.push(specId); mallSpecIds.push(specId);
} }
...@@ -100,8 +102,8 @@ export default function IntentionModal(props: Props) { ...@@ -100,8 +102,8 @@ export default function IntentionModal(props: Props) {
if (res.code == '200') { if (res.code == '200') {
// message.success('提交意向成功') // message.success('提交意向成功')
//重置为未选中 // 重置为未选中
let temp = { const temp = {
...checkedMap, ...checkedMap,
}; };
Object.keys(temp).forEach((key) => { Object.keys(temp).forEach((key) => {
...@@ -196,7 +198,7 @@ export default function IntentionModal(props: Props) { ...@@ -196,7 +198,7 @@ export default function IntentionModal(props: Props) {
wrap={false} wrap={false}
style={{ style={{
borderRadius: 5, borderRadius: 5,
//@ts-ignore // @ts-ignore
border: checkedMap[`${goodsSpecIndex},${productSpecIndex}`] border: checkedMap[`${goodsSpecIndex},${productSpecIndex}`]
? '1px solid #FF552D' ? '1px solid #FF552D'
: '1px solid #d6d6d6', : '1px solid #d6d6d6',
......
...@@ -30,15 +30,15 @@ export interface GetOrderForGoods { ...@@ -30,15 +30,15 @@ export interface GetOrderForGoods {
} }
export default { export default {
//web-地址管理-查询用户地址列表-条件查询 // web-地址管理-查询用户地址列表-条件查询
listUserAddress: (params: {}): Promise<Response<UserAddress[]>> => { listUserAddress: (params: {}): Promise<Response<UserAddress[]>> => {
return request('/oms/user-address/selectList', 'POST', params); return request('/oms/user-address/selectList', 'POST', params);
}, },
//web-产品商城-下单 // web-产品商城-下单
FeignAddLease: (params: GetWebDeviceDetailParams): Promise<Response<GetOrderForGoods>> => { FeignAddLease: (params: GetWebDeviceDetailParams): Promise<Response<GetOrderForGoods>> => {
return request('/oms/app-order/commitMallOrder', 'post', params); return request('/oms/app-order/commitMallOrder', 'post', params);
}, },
//web-产品商城-订单支付 // web-产品商城-订单支付
OrderPayment: (params: { orderNo: string }): Promise<Response<GetOrderForGoods>> => { OrderPayment: (params: { orderNo: string }): Promise<Response<GetOrderForGoods>> => {
return request(`/payment/repocash/orderPayment`, 'get', params); return request(`/payment/repocash/orderPayment`, 'get', params);
}, },
......
import React, { useContext, useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { OrderForGoodsBox } from './styled';
import type { FormInstance, RadioChangeEvent } from 'antd'; import type { RadioChangeEvent } from 'antd';
import { Button, Radio, Space, Input, message, Modal, Image } from 'antd'; import { Button, Radio, Space, Input, message, Modal, Image } from 'antd';
import api, { UserAddress, GetOrderForGoods } from './api';
import moment from 'moment';
// import { ShopDetail } from '../../[id].page' // import { ShopDetail } from '../../[id].page'
// import { // import {
// GetWebDeviceDetailResult, // GetWebDeviceDetailResult,
// GetWebDeviceWareSkuById, // GetWebDeviceWareSkuById,
// GetLeaseGoodsResult, // GetLeaseGoodsResult,
// } from '../../api' // } from '../../api'
import { UserContext } from '~/lib/userProvider'; import api, { UserAddress } from './api';
import { OrderForGoodsBox } from './styled';
const { TextArea } = Input; const { TextArea } = Input;
interface PropsBox { interface PropsBox {
...@@ -77,10 +78,10 @@ export default function OrderForGoods(props: PropsBox) { ...@@ -77,10 +78,10 @@ export default function OrderForGoods(props: PropsBox) {
}); });
}, []); }, []);
//图片预览 // 图片预览
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
//扫码管理地址 // 扫码管理地址
const [isAddAddressOpen, setIsAddAddressOpen] = useState(false); const [isAddAddressOpen, setIsAddAddressOpen] = useState(false);
const [addressVisible, setAddressVisible] = useState(false); const [addressVisible, setAddressVisible] = useState(false);
return ( return (
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Empty, Pagination, Image, Spin } from 'antd'; import { Empty, Pagination, Image, Spin } from 'antd';
import Layout from '~/components/layout';
import styles from './index.module.scss';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import errImg from '~/assets/errImg';
import Filter, { AdapterResult, FilterResult } from '~/components/filter'; import Filter, { AdapterResult, FilterResult } from '~/components/filter';
import Layout from '~/components/layout';
import api, { Ad, Goods } from './api'; import api, { Ad, Goods } from './api';
import errImg from '~/assets/errImg'; import styles from './index.module.scss';
// 此函数在构建时被调用 // 此函数在构建时被调用
export async function getServerSideProps() { export async function getServerSideProps() {
...@@ -18,27 +21,27 @@ type Props = {}; ...@@ -18,27 +21,27 @@ type Props = {};
export default function Mall(props: Props) { export default function Mall(props: Props) {
const router = useRouter(); const router = useRouter();
const [productList, setProductList] = useState<Array<Goods>>([]); //商品列表 const [productList, setProductList] = useState<Array<Goods>>([]); // 商品列表
const [filterResult, setFilterResult] = useState<AdapterResult>({}); //筛选结果 const [filterResult, setFilterResult] = useState<AdapterResult>({}); // 筛选结果
const [pageParams, setPageParams] = useState<{ const [pageParams, setPageParams] = useState<{
pageNo: number; pageNo: number;
pageSize: number; pageSize: number;
}>({ }>({
pageNo: 1, pageNo: 1,
pageSize: 15, pageSize: 15,
}); //分页器对象 }); // 分页器对象
const [count, setCount] = useState(0); //商品总数 const [count, setCount] = useState(0); // 商品总数
const [abort, setAbort] = useState<AbortController | null>(null); //请求中断对象 const [abort, setAbort] = useState<AbortController | null>(null); // 请求中断对象
const [adList, setAdList] = useState<Array<Ad>>([]); //广告列表 const [adList, setAdList] = useState<Array<Ad>>([]); // 广告列表
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
useEffect(() => { useEffect(() => {
//中断前一次列表请求 // 中断前一次列表请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [filterResult, pageParams]); }, [filterResult, pageParams]);
//商品列表请求 // 商品列表请求
useEffect(() => { useEffect(() => {
if (!abort) { if (!abort) {
return; return;
...@@ -62,7 +65,7 @@ export default function Mall(props: Props) { ...@@ -62,7 +65,7 @@ export default function Mall(props: Props) {
}); });
}, [abort]); }, [abort]);
//广告请求 // 广告请求
useEffect(() => { useEffect(() => {
api.listBannerImg().then((res) => { api.listBannerImg().then((res) => {
setAdList(res.result || []); setAdList(res.result || []);
...@@ -99,7 +102,7 @@ export default function Mall(props: Props) { ...@@ -99,7 +102,7 @@ export default function Mall(props: Props) {
<li <li
key={i} key={i}
className={styles.item} className={styles.item}
onClick={() => router.push('/mall/detail/' + item.id)} onClick={() => router.push(`/mall/detail/${item.id}`)}
> >
<div className={styles.imgBox}> <div className={styles.imgBox}>
<Image <Image
......
import LayoutView from '~/components/layout'; import React from 'react';
import React, { useState } from 'react';
import type { MenuProps } from 'antd'; import type { MenuProps } from 'antd';
import { Button, Menu } from 'antd'; import { Menu } from 'antd';
import styles from './index.module.scss';
import Router from 'next/router'; import Router from 'next/router';
import styles from './index.module.scss';
function getItem( function getItem(
label: React.ReactNode, label: React.ReactNode,
key: React.Key, key: React.Key,
......
...@@ -100,7 +100,7 @@ export interface ListTranStatusResp { ...@@ -100,7 +100,7 @@ export interface ListTranStatusResp {
} }
export default { export default {
//订单分页列表 // 订单分页列表
listPageWechatOrder( listPageWechatOrder(
params: ListPageWechatOrderParams, params: ListPageWechatOrderParams,
options?: any, options?: any,
...@@ -108,7 +108,7 @@ export default { ...@@ -108,7 +108,7 @@ export default {
return request('/oms/RentalOrders/listPageWechatOrder', 'post', params, options); return request('/oms/RentalOrders/listPageWechatOrder', 'post', params, options);
}, },
//订单状态-字典 // 订单状态-字典
listTranStatus(): Promise<Response<ListTranStatusResp[]>> { listTranStatus(): Promise<Response<ListTranStatusResp[]>> {
return request('/oms/RentalOrders/listTranStatus', 'get'); return request('/oms/RentalOrders/listTranStatus', 'get');
}, },
......
...@@ -16,8 +16,8 @@ export interface OrderDetailResp { ...@@ -16,8 +16,8 @@ export interface OrderDetailResp {
buyerPhone: string; buyerPhone: string;
unitPrice: number; unitPrice: number;
wareNum: number; wareNum: number;
shouldPay: number; //应付款金额 shouldPay: number; // 应付款金额
actualPay: number; //实收款金额 actualPay: number; // 实收款金额
orderType?: any; orderType?: any;
deposit: number; deposit: number;
rentPrice: number; rentPrice: number;
...@@ -73,7 +73,7 @@ interface Receipt { ...@@ -73,7 +73,7 @@ interface Receipt {
} }
export default { export default {
//订单详情 // 订单详情
orderDetail(params: { orderNo: string }): Promise<Response<OrderDetailResp>> { orderDetail(params: { orderNo: string }): Promise<Response<OrderDetailResp>> {
return request('/oms/RentalOrders/orderDetail', 'get', params); return request('/oms/RentalOrders/orderDetail', 'get', params);
}, },
......
import { Button, Col, Divider, Modal, Row } from 'antd';
import { useContext, useEffect, useState } from 'react'; import { useContext, useEffect, useState } from 'react';
import { Button, Col, Modal, Row } from 'antd';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import api, { OrderDetailResp } from './api'; import api, { OrderDetailResp } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
......
...@@ -16,8 +16,8 @@ export interface OrderDetailResp { ...@@ -16,8 +16,8 @@ export interface OrderDetailResp {
buyerPhone: string; buyerPhone: string;
unitPrice: number; unitPrice: number;
wareNum: number; wareNum: number;
shouldPay: number; //应付款金额 shouldPay: number; // 应付款金额
actualPay: number; //实收款金额 actualPay: number; // 实收款金额
orderType?: any; orderType?: any;
deposit: number; deposit: number;
rentPrice: number; rentPrice: number;
...@@ -87,15 +87,15 @@ export interface UserWalletResp { ...@@ -87,15 +87,15 @@ export interface UserWalletResp {
} }
export default { export default {
//订单详情 // 订单详情
orderDetail(params: { orderNo: string }): Promise<Response<OrderDetailResp>> { orderDetail(params: { orderNo: string }): Promise<Response<OrderDetailResp>> {
return request('/oms/RentalOrders/orderDetail', 'get', params); return request('/oms/RentalOrders/orderDetail', 'get', params);
}, },
//获取用户钱包 // 获取用户钱包
userWallet(): Promise<Response<UserWalletResp>> { userWallet(): Promise<Response<UserWalletResp>> {
return request('/payment/repocash/userWallet'); return request('/payment/repocash/userWallet');
}, },
//租赁——订单支付 // 租赁——订单支付
orderPayment(params: { orderNo: string }) { orderPayment(params: { orderNo: string }) {
return request('/payment/repocash/orderPayment', 'post', params); return request('/payment/repocash/orderPayment', 'post', params);
}, },
......
import { Button, Col, Divider, message, Modal, Row } from 'antd';
import { useContext, useEffect, useState } from 'react'; import { useContext, useEffect, useState } from 'react';
import { Button, Col, message, Modal, Row } from 'antd';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import api, { OrderDetailResp, UserWalletResp } from './api'; import api, { OrderDetailResp, UserWalletResp } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
...@@ -18,8 +21,8 @@ type Props = { ...@@ -18,8 +21,8 @@ type Props = {
export default function PayModal(props: Props) { export default function PayModal(props: Props) {
const [data, setData] = useState<OrderDetailResp | null>(null); const [data, setData] = useState<OrderDetailResp | null>(null);
const { userInfo } = useContext(UserContext); const { userInfo } = useContext(UserContext);
const [wallet, setWallet] = useState<UserWalletResp | null>(null); //钱包 const [wallet, setWallet] = useState<UserWalletResp | null>(null); // 钱包
const [loading, setLoading] = useState(false); //付款按钮loading const [loading, setLoading] = useState(false); // 付款按钮loading
useEffect(() => { useEffect(() => {
if (props.open) { if (props.open) {
......
...@@ -16,8 +16,8 @@ export interface OrderDetailResp { ...@@ -16,8 +16,8 @@ export interface OrderDetailResp {
buyerPhone: string; buyerPhone: string;
unitPrice: number; unitPrice: number;
wareNum: number; wareNum: number;
shouldPay: number; //应付款金额 shouldPay: number; // 应付款金额
actualPay: number; //实收款金额 actualPay: number; // 实收款金额
orderType?: any; orderType?: any;
deposit: number; deposit: number;
rentPrice: number; rentPrice: number;
...@@ -87,15 +87,15 @@ export interface UserWalletResp { ...@@ -87,15 +87,15 @@ export interface UserWalletResp {
} }
export default { export default {
//订单详情 // 订单详情
orderDetail(params: { orderNo: string }): Promise<Response<OrderDetailResp>> { orderDetail(params: { orderNo: string }): Promise<Response<OrderDetailResp>> {
return request('/oms/RentalOrders/orderDetail', 'get', params); return request('/oms/RentalOrders/orderDetail', 'get', params);
}, },
//获取用户钱包 // 获取用户钱包
userWallet(): Promise<Response<UserWalletResp>> { userWallet(): Promise<Response<UserWalletResp>> {
return request('/payment/repocash/userWallet'); return request('/payment/repocash/userWallet');
}, },
//租赁——订单支付 // 租赁——订单支付
orderPayment(params: { orderNo: string }) { orderPayment(params: { orderNo: string }) {
return request('/payment/repocash/orderPayment', 'post', params); return request('/payment/repocash/orderPayment', 'post', params);
}, },
......
import { Button, Col, Divider, message, Modal, Row } from 'antd';
import { useContext, useEffect, useState } from 'react'; import { useContext, useEffect, useState } from 'react';
import { Button, Col, message, Modal, Row } from 'antd';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import api, { OrderDetailResp, UserWalletResp } from './api'; import api, { OrderDetailResp, UserWalletResp } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
...@@ -18,8 +21,8 @@ type Props = { ...@@ -18,8 +21,8 @@ type Props = {
export default function RefundModal(props: Props) { export default function RefundModal(props: Props) {
const [data, setData] = useState<OrderDetailResp | null>(null); const [data, setData] = useState<OrderDetailResp | null>(null);
const { userInfo } = useContext(UserContext); const { userInfo } = useContext(UserContext);
const [wallet, setWallet] = useState<UserWalletResp | null>(null); //钱包 const [wallet, setWallet] = useState<UserWalletResp | null>(null); // 钱包
const [loading, setLoading] = useState(false); //付款按钮loading const [loading, setLoading] = useState(false); // 付款按钮loading
useEffect(() => { useEffect(() => {
if (props.open) { if (props.open) {
......
import { useEffect, useState } from 'react';
import { TabsProps, Tabs, Row, Col, Image, Space, Button, Pagination, Empty, Spin } from 'antd'; import { TabsProps, Tabs, Row, Col, Image, Space, Button, Pagination, Empty, Spin } from 'antd';
import moment from 'moment';
import Moment from 'moment';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import errImg from '~/assets/errImg'; import errImg from '~/assets/errImg';
import LayoutView from '~/components/layout'; import LayoutView from '~/components/layout';
import Sider from '../components/sider';
import styles from './index.module.scss';
import api, { LeasingList, ListTranStatusResp } from './api'; import api, { LeasingList, ListTranStatusResp } from './api';
import moment from 'moment';
import PayModal from './components/payModal'; import PayModal from './components/payModal';
import RefundModal from './components/refundModal'; import RefundModal from './components/refundModal';
import Moment from 'moment'; import styles from './index.module.scss';
import Sider from '../components/sider';
const items: TabsProps['items'] = [ const items: TabsProps['items'] = [
{ {
...@@ -51,18 +54,18 @@ export default function LeasingOrders() { ...@@ -51,18 +54,18 @@ export default function LeasingOrders() {
const [pageParams, setPageParams] = useState({ const [pageParams, setPageParams] = useState({
pageNo: 1, pageNo: 1,
pageSize: 5, pageSize: 5,
}); //分页器对象 }); // 分页器对象
const [total, setTotal] = useState(0); //总数 const [total, setTotal] = useState(0); // 总数
const [abort, setAbort] = useState<AbortController | null>(null); //请求中断对你 const [abort, setAbort] = useState<AbortController | null>(null); // 请求中断对你
const [tabKey, setTabKey] = useState(''); const [tabKey, setTabKey] = useState('');
const [orderList, setOrderList] = useState<LeasingList[]>([]); const [orderList, setOrderList] = useState<LeasingList[]>([]);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [tranStatusMap, setTranStatusMap] = useState<ListTranStatusResp[]>([]); //订单状态字典 const [tranStatusMap, setTranStatusMap] = useState<ListTranStatusResp[]>([]); // 订单状态字典
const [openPayModal, setOpenPayModal] = useState(false); //支付弹窗 const [openPayModal, setOpenPayModal] = useState(false); // 支付弹窗
const [openRefundModal, setOpenRefundModal] = useState(false); //退款弹窗 const [openRefundModal, setOpenRefundModal] = useState(false); // 退款弹窗
const [orderNo, setOrderNo] = useState<string | undefined>(); const [orderNo, setOrderNo] = useState<string | undefined>();
//获取订单状态字典 // 获取订单状态字典
useEffect(() => { useEffect(() => {
api.listTranStatus().then((res) => { api.listTranStatus().then((res) => {
setTranStatusMap(res.result || []); setTranStatusMap(res.result || []);
...@@ -70,12 +73,12 @@ export default function LeasingOrders() { ...@@ -70,12 +73,12 @@ export default function LeasingOrders() {
}, []); }, []);
useEffect(() => { useEffect(() => {
//中断前一次列表请求 // 中断前一次列表请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [pageParams]); }, [pageParams]);
//商品列表请求 // 商品列表请求
useEffect(() => { useEffect(() => {
if (!abort) { if (!abort) {
return; return;
......
...@@ -84,12 +84,12 @@ export interface ListStatusResp { ...@@ -84,12 +84,12 @@ export interface ListStatusResp {
} }
export default { export default {
//v1.0.0订单列表-查询 // v1.0.0订单列表-查询
listPage(params: ListPageParams, options: any): Promise<Response<ListPageResp>> { listPage(params: ListPageParams, options: any): Promise<Response<ListPageResp>> {
return request('/oms/app-order/listPage', 'get', params, options); return request('/oms/app-order/listPage', 'get', params, options);
}, },
//订单状态-字典 // 订单状态-字典
listStatus(): Promise<Response<ListStatusResp[]>> { listStatus(): Promise<Response<ListStatusResp[]>> {
return request('/oms/mallorder/listStatus', 'get'); return request('/oms/mallorder/listStatus', 'get');
}, },
......
import { useEffect, useState } from 'react';
import { TabsProps, Tabs, Row, Col, Image, Space, Button, Spin, Pagination, Empty } from 'antd'; import { TabsProps, Tabs, Row, Col, Image, Space, Button, Spin, Pagination, Empty } from 'antd';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import errImg from '~/assets/errImg'; import errImg from '~/assets/errImg';
import Right from '~/components/contentBox/right';
import LayoutView from '~/components/layout'; import LayoutView from '~/components/layout';
import Sider from '../components/sider';
import api, { OrderList, ListStatusResp } from './api'; import api, { OrderList, ListStatusResp } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import Sider from '../components/sider';
const items: TabsProps['items'] = [ const items: TabsProps['items'] = [
{ {
...@@ -36,16 +38,16 @@ export default function LeasingOrder() { ...@@ -36,16 +38,16 @@ export default function LeasingOrder() {
const [pageParams, setPageParams] = useState({ const [pageParams, setPageParams] = useState({
pageNo: 1, pageNo: 1,
pageSize: 5, pageSize: 5,
}); //分页器对象 }); // 分页器对象
const [total, setTotal] = useState(0); //总数 const [total, setTotal] = useState(0); // 总数
const [abort, setAbort] = useState<AbortController | null>(null); //请求中断对你 const [abort, setAbort] = useState<AbortController | null>(null); // 请求中断对你
const [tabKey, setTabKey] = useState(''); const [tabKey, setTabKey] = useState('');
const [orderList, setOrderList] = useState<OrderList[]>([]); const [orderList, setOrderList] = useState<OrderList[]>([]);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [orderNo, setOrderNo] = useState<string | undefined>(); const [orderNo, setOrderNo] = useState<string | undefined>();
const [tranStatusMap, setTranStatusMap] = useState<ListStatusResp[]>([]); //订单状态字典 const [tranStatusMap, setTranStatusMap] = useState<ListStatusResp[]>([]); // 订单状态字典
//获取订单状态字典 // 获取订单状态字典
useEffect(() => { useEffect(() => {
api.listStatus().then((res) => { api.listStatus().then((res) => {
setTranStatusMap(res.result || []); setTranStatusMap(res.result || []);
...@@ -53,12 +55,12 @@ export default function LeasingOrder() { ...@@ -53,12 +55,12 @@ export default function LeasingOrder() {
}, []); }, []);
useEffect(() => { useEffect(() => {
//中断前一次列表请求 // 中断前一次列表请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [pageParams]); }, [pageParams]);
//商品列表请求 // 商品列表请求
useEffect(() => { useEffect(() => {
if (!abort) { if (!abort) {
return; return;
......
...@@ -42,7 +42,7 @@ export interface GetServiceOrderStatusResp { ...@@ -42,7 +42,7 @@ export interface GetServiceOrderStatusResp {
} }
export default { export default {
//查询服务订单列表 // 查询服务订单列表
queryOrderTaskList( queryOrderTaskList(
params: QueryOrderTaskListParams, params: QueryOrderTaskListParams,
options: any, options: any,
...@@ -50,7 +50,7 @@ export default { ...@@ -50,7 +50,7 @@ export default {
return request('/oms/app/serviceOrderTask/queryOrderTaskList', 'post', params, options); return request('/oms/app/serviceOrderTask/queryOrderTaskList', 'post', params, options);
}, },
//订单状态-字典 // 订单状态-字典
getServiceOrderStatus(): Promise<Response<GetServiceOrderStatusResp[]>> { getServiceOrderStatus(): Promise<Response<GetServiceOrderStatusResp[]>> {
return request('/oms/serviceOrderTask/getServiceOrderStatus', 'POST'); return request('/oms/serviceOrderTask/getServiceOrderStatus', 'POST');
}, },
......
import { useEffect, useState } from 'react';
import { TabsProps, Tabs, Row, Col, Image, Space, Button, Spin, Pagination, Empty } from 'antd'; import { TabsProps, Tabs, Row, Col, Image, Space, Button, Spin, Pagination, Empty } from 'antd';
import Moment from 'moment';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import errImg from '~/assets/errImg'; import errImg from '~/assets/errImg';
import Right from '~/components/contentBox/right';
import LayoutView from '~/components/layout'; import LayoutView from '~/components/layout';
import Sider from '../components/sider';
import api, { OrderList, GetServiceOrderStatusResp } from './api'; import api, { OrderList, GetServiceOrderStatusResp } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import Moment from 'moment'; import Sider from '../components/sider';
const items: TabsProps['items'] = [ const items: TabsProps['items'] = [
{ {
...@@ -37,16 +39,16 @@ export default function ServicesOrder() { ...@@ -37,16 +39,16 @@ export default function ServicesOrder() {
const [pageParams, setPageParams] = useState({ const [pageParams, setPageParams] = useState({
pageNo: 1, pageNo: 1,
pageSize: 5, pageSize: 5,
}); //分页器对象 }); // 分页器对象
const [total, setTotal] = useState(0); //总数 const [total, setTotal] = useState(0); // 总数
const [abort, setAbort] = useState<AbortController | null>(null); //请求中断对你 const [abort, setAbort] = useState<AbortController | null>(null); // 请求中断对你
const [tabKey, setTabKey] = useState(''); const [tabKey, setTabKey] = useState('');
const [orderList, setOrderList] = useState<OrderList[]>([]); const [orderList, setOrderList] = useState<OrderList[]>([]);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [orderNo, setOrderNo] = useState<string | undefined>(); const [orderNo, setOrderNo] = useState<string | undefined>();
const [tranStatusMap, setTranStatusMap] = useState<GetServiceOrderStatusResp[]>([]); //订单状态字典 const [tranStatusMap, setTranStatusMap] = useState<GetServiceOrderStatusResp[]>([]); // 订单状态字典
//获取订单状态字典 // 获取订单状态字典
useEffect(() => { useEffect(() => {
api.getServiceOrderStatus().then((res) => { api.getServiceOrderStatus().then((res) => {
setTranStatusMap(res.result || []); setTranStatusMap(res.result || []);
...@@ -54,12 +56,12 @@ export default function ServicesOrder() { ...@@ -54,12 +56,12 @@ export default function ServicesOrder() {
}, []); }, []);
useEffect(() => { useEffect(() => {
//中断前一次列表请求 // 中断前一次列表请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [pageParams]); }, [pageParams]);
//商品列表请求 // 商品列表请求
useEffect(() => { useEffect(() => {
if (!abort) { if (!abort) {
return; return;
......
...@@ -84,12 +84,12 @@ export interface ListStatusResp { ...@@ -84,12 +84,12 @@ export interface ListStatusResp {
} }
export default { export default {
//v1.0.0订单列表-查询 // v1.0.0订单列表-查询
listPage(params: ListPageParams, options: any): Promise<Response<ListPageResp>> { listPage(params: ListPageParams, options: any): Promise<Response<ListPageResp>> {
return request('/oms/app-order/listPage', 'get', params, options); return request('/oms/app-order/listPage', 'get', params, options);
}, },
//订单状态-字典 // 订单状态-字典
listStatus(): Promise<Response<ListStatusResp[]>> { listStatus(): Promise<Response<ListStatusResp[]>> {
return request('/oms/mallorder/listStatus', 'get'); return request('/oms/mallorder/listStatus', 'get');
}, },
......
import { useEffect, useState } from 'react';
import { TabsProps, Tabs, Row, Col, Image, Space, Button, Spin, Pagination, Empty } from 'antd'; import { TabsProps, Tabs, Row, Col, Image, Space, Button, Spin, Pagination, Empty } from 'antd';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import errImg from '~/assets/errImg'; import errImg from '~/assets/errImg';
import Right from '~/components/contentBox/right';
import LayoutView from '~/components/layout'; import LayoutView from '~/components/layout';
import Sider from '../components/sider';
import api, { OrderList, ListStatusResp } from './api'; import api, { OrderList, ListStatusResp } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import Sider from '../components/sider';
const items: TabsProps['items'] = [ const items: TabsProps['items'] = [
{ {
...@@ -36,16 +38,16 @@ export default function TrainOrder() { ...@@ -36,16 +38,16 @@ export default function TrainOrder() {
const [pageParams, setPageParams] = useState({ const [pageParams, setPageParams] = useState({
pageNo: 1, pageNo: 1,
pageSize: 5, pageSize: 5,
}); //分页器对象 }); // 分页器对象
const [total, setTotal] = useState(0); //总数 const [total, setTotal] = useState(0); // 总数
const [abort, setAbort] = useState<AbortController | null>(null); //请求中断对你 const [abort, setAbort] = useState<AbortController | null>(null); // 请求中断对你
const [tabKey, setTabKey] = useState(''); const [tabKey, setTabKey] = useState('');
const [orderList, setOrderList] = useState<OrderList[]>([]); const [orderList, setOrderList] = useState<OrderList[]>([]);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [orderNo, setOrderNo] = useState<string | undefined>(); const [orderNo, setOrderNo] = useState<string | undefined>();
const [tranStatusMap, setTranStatusMap] = useState<ListStatusResp[]>([]); //订单状态字典 const [tranStatusMap, setTranStatusMap] = useState<ListStatusResp[]>([]); // 订单状态字典
//获取订单状态字典 // 获取订单状态字典
useEffect(() => { useEffect(() => {
api.listStatus().then((res) => { api.listStatus().then((res) => {
setTranStatusMap(res.result || []); setTranStatusMap(res.result || []);
...@@ -53,12 +55,12 @@ export default function TrainOrder() { ...@@ -53,12 +55,12 @@ export default function TrainOrder() {
}, []); }, []);
useEffect(() => { useEffect(() => {
//中断前一次列表请求 // 中断前一次列表请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [pageParams]); }, [pageParams]);
//商品列表请求 // 商品列表请求
useEffect(() => { useEffect(() => {
if (!abort) { if (!abort) {
return; return;
......
import { useEffect, useState } from 'react';
import { RightOutlined } from '@ant-design/icons'; import { RightOutlined } from '@ant-design/icons';
import { Col, Row } from 'antd'; import { Col, Row } from 'antd';
import Moment from 'moment';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import Layout from '~/components/layout'; import Layout from '~/components/layout';
import newsApi, { Item } from '../components/news/api';
import api, { DetailsResp } from './api'; import api, { DetailsResp } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import Moment from 'moment'; import newsApi, { Item } from '../components/news/api';
export default function CaseArticle() { export default function CaseArticle() {
const router = useRouter(); const router = useRouter();
const [data, setData] = useState<DetailsResp | null>(null); const [data, setData] = useState<DetailsResp | null>(null);
const [newsList, setNewList] = useState<Item[]>([]); const [newsList, setNewList] = useState<Item[]>([]);
//获取案例详情 // 获取案例详情
useEffect(() => { useEffect(() => {
const id = Number(router.query.id); const id = Number(router.query.id);
if (id) { if (id) {
...@@ -27,7 +30,7 @@ export default function CaseArticle() { ...@@ -27,7 +30,7 @@ export default function CaseArticle() {
} }
}, [router]); }, [router]);
//获取新闻列表 // 获取新闻列表
useEffect(() => { useEffect(() => {
newsApi newsApi
.listNewsPage({ .listNewsPage({
...@@ -98,7 +101,7 @@ export default function CaseArticle() { ...@@ -98,7 +101,7 @@ export default function CaseArticle() {
align='middle' align='middle'
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => { onClick={() => {
router.push('/projectInfo/newsArticle/' + item.id); router.push(`/projectInfo/newsArticle/${item.id}`);
}} }}
> >
<Col <Col
......
...@@ -16,7 +16,7 @@ export interface DetailsResp { ...@@ -16,7 +16,7 @@ export interface DetailsResp {
} }
export default { export default {
//案例详情 // 案例详情
details(params: DetailsParams): Promise<Response<DetailsResp>> { details(params: DetailsParams): Promise<Response<DetailsResp>> {
return request('/release/industry-case/details', 'get', params); return request('/release/industry-case/details', 'get', params);
}, },
......
...@@ -29,8 +29,8 @@ export interface Item { ...@@ -29,8 +29,8 @@ export interface Item {
} }
export interface ApplyParams { export interface ApplyParams {
tenderInfoId?: number; //招标详情id tenderInfoId?: number; // 招标详情id
tenderNewsId?: number; //招标id tenderNewsId?: number; // 招标id
} }
export default { export default {
...@@ -45,7 +45,7 @@ export default { ...@@ -45,7 +45,7 @@ export default {
): Promise<Response<ListNewTenderInfoResp>> { ): Promise<Response<ListNewTenderInfoResp>> {
return request('/release/tender/listNewTenderInfo', 'post', params, options); return request('/release/tender/listNewTenderInfo', 'post', params, options);
}, },
//合作申请提交 // 合作申请提交
apply(params: ApplyParams) { apply(params: ApplyParams) {
return request('/release/tender/apply', 'post', params); return request('/release/tender/apply', 'post', params);
}, },
......
import { Button, Empty, Pagination, Spin } from 'antd';
import { useState, useEffect, useContext } from 'react'; import { useState, useEffect, useContext } from 'react';
import { Button, Empty, Pagination, Spin } from 'antd';
import { useRouter } from 'next/router';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import { bigNumberTransform } from '~/utils/money';
import api, { Item } from './api'; import api, { Item } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import { bigNumberTransform } from '~/utils/money';
import { useRouter } from 'next/router';
type Props = { type Props = {
params?: { params?: {
cityCode: number; //市编码 cityCode: number; // 市编码
date: string; //时间 2023-05-19 date: string; // 时间 2023-05-19
districtCode: number; //区编码 districtCode: number; // 区编码
provinceCode: number; //省编码 provinceCode: number; // 省编码
}; };
showWxCodeModalEvent: () => void; showWxCodeModalEvent: () => void;
}; };
...@@ -30,7 +33,7 @@ export default function Bids(props: Props) { ...@@ -30,7 +33,7 @@ export default function Bids(props: Props) {
const [reload, setReload] = useState(false); const [reload, setReload] = useState(false);
useEffect(() => { useEffect(() => {
//中断前一次请求 // 中断前一次请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [pageParams, props.params, reload]); }, [pageParams, props.params, reload]);
...@@ -64,7 +67,7 @@ export default function Bids(props: Props) { ...@@ -64,7 +67,7 @@ export default function Bids(props: Props) {
}); });
}; };
//申请合作 // 申请合作
const onApply = (item: Item) => { const onApply = (item: Item) => {
if (userInfo) { if (userInfo) {
api api
...@@ -82,9 +85,9 @@ export default function Bids(props: Props) { ...@@ -82,9 +85,9 @@ export default function Bids(props: Props) {
setNeedLogin(true); setNeedLogin(true);
} }
}; };
//招标项目详情 // 招标项目详情
const toTenderProjectsDetail = (item: Item) => { const toTenderProjectsDetail = (item: Item) => {
router.push('/projectInfo/tenderProjectsDetail/' + item.id); router.push(`/projectInfo/tenderProjectsDetail/${item.id}`);
}; };
return ( return (
......
import { useState, useEffect } from 'react';
import { Button, Empty, Pagination, Spin } from 'antd'; import { Button, Empty, Pagination, Spin } from 'antd';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useState, useEffect } from 'react';
import api, { Item } from './api'; import api, { Item } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import WxCodeModal from '~/components/wxCodeModal';
type Props = { type Props = {
params?: { params?: {
cityCode: number; //市编码 cityCode: number; // 市编码
date: string; //时间 2023-05-19 date: string; // 时间 2023-05-19
districtCode: number; //区编码 districtCode: number; // 区编码
provinceCode: number; //省编码 provinceCode: number; // 省编码
}; };
showWxCodeModalEvent: () => void; showWxCodeModalEvent: () => void;
}; };
...@@ -27,7 +28,7 @@ export default function Cases(props: Props) { ...@@ -27,7 +28,7 @@ export default function Cases(props: Props) {
const Router = useRouter(); const Router = useRouter();
useEffect(() => { useEffect(() => {
//中断前一次请求 // 中断前一次请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [pageParams, props.params]); }, [pageParams, props.params]);
...@@ -71,7 +72,7 @@ export default function Cases(props: Props) { ...@@ -71,7 +72,7 @@ export default function Cases(props: Props) {
<div className={styles.info}> <div className={styles.info}>
<div <div
className={styles.title} className={styles.title}
onClick={() => Router.push('/projectInfo/caseArticle/' + item.id)} onClick={() => Router.push(`/projectInfo/caseArticle/${item.id}`)}
> >
{item.caseTitle} {item.caseTitle}
</div> </div>
......
import { useState, useEffect, useContext } from 'react';
import { Button, Col, Empty, Pagination, Row, Spin } from 'antd'; import { Button, Col, Empty, Pagination, Row, Spin } from 'antd';
import styles from './index.module.scss';
import Image from 'next/image'; import Image from 'next/image';
import { useState, useEffect, useContext } from 'react';
import api, { Item } from './api';
import Router, { useRouter } from 'next/router'; import Router, { useRouter } from 'next/router';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import api, { Item } from './api';
import styles from './index.module.scss';
type Props = { type Props = {
params?: { params?: {
cityCode: number; //市编码 cityCode: number; // 市编码
date: string; //时间 2023-05-19 date: string; // 时间 2023-05-19
districtCode: number; //区编码 districtCode: number; // 区编码
provinceCode: number; //省编码 provinceCode: number; // 省编码
}; };
showWxCodeModalEvent: () => void; showWxCodeModalEvent: () => void;
}; };
...@@ -29,7 +32,7 @@ export default function News(props: Props) { ...@@ -29,7 +32,7 @@ export default function News(props: Props) {
const { userInfo, setNeedLogin } = useContext(UserContext); const { userInfo, setNeedLogin } = useContext(UserContext);
useEffect(() => { useEffect(() => {
//中断前一次请求 // 中断前一次请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [pageParams, props.params]); }, [pageParams, props.params]);
...@@ -63,7 +66,7 @@ export default function News(props: Props) { ...@@ -63,7 +66,7 @@ export default function News(props: Props) {
}); });
}; };
//获取产品信息事件 // 获取产品信息事件
const onGetInfo = () => { const onGetInfo = () => {
if (userInfo) { if (userInfo) {
if (userInfo.companyAuthStatus) { if (userInfo.companyAuthStatus) {
...@@ -74,9 +77,9 @@ export default function News(props: Props) { ...@@ -74,9 +77,9 @@ export default function News(props: Props) {
setNeedLogin(true); setNeedLogin(true);
} }
}; };
//新闻点击 // 新闻点击
const newsClick = (item: Item) => { const newsClick = (item: Item) => {
router.push('/projectInfo/newsArticle/' + item.id); router.push(`/projectInfo/newsArticle/${item.id}`);
}; };
return ( return (
<Spin spinning={loading} delay={500}> <Spin spinning={loading} delay={500}>
......
...@@ -31,7 +31,7 @@ export interface Item { ...@@ -31,7 +31,7 @@ export interface Item {
} }
export interface SolveRequireParams { export interface SolveRequireParams {
requirementsInfoId: number; //需求id requirementsInfoId: number; // 需求id
} }
export default { export default {
......
import { Button, Empty, Pagination, Popconfirm, Spin, Tooltip } from 'antd';
import router from 'next/router';
import React, { useState, useEffect, useContext } from 'react'; import React, { useState, useEffect, useContext } from 'react';
import { Button, Empty, Pagination, Popconfirm, Spin, Tooltip } from 'antd';
import { CommonContext } from '~/lib/commonProvider'; import { CommonContext } from '~/lib/commonProvider';
import { UserContext } from '~/lib/userProvider'; import { UserContext } from '~/lib/userProvider';
import api, { Item } from './api'; import api, { Item } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
type Props = { type Props = {
params?: { params?: {
cityCode: number; //市编码 cityCode: number; // 市编码
date: string; //时间 2023-05-19 date: string; // 时间 2023-05-19
districtCode: number; //区编码 districtCode: number; // 区编码
provinceCode: number; //省编码 provinceCode: number; // 省编码
}; };
}; };
...@@ -29,7 +31,7 @@ export default function Requirements(props: Props) { ...@@ -29,7 +31,7 @@ export default function Requirements(props: Props) {
const { reloadRequirements } = useContext(CommonContext); const { reloadRequirements } = useContext(CommonContext);
useEffect(() => { useEffect(() => {
//中断前一次请求 // 中断前一次请求
abort?.abort(); abort?.abort();
setAbort(new AbortController()); setAbort(new AbortController());
}, [pageParams, props.params, reload, reloadRequirements]); }, [pageParams, props.params, reload, reloadRequirements]);
......
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Tabs, Button, Cascader, Space, DatePicker, DatePickerProps } from 'antd';
import styles from './index.module.scss'; import { Tabs, Cascader, Space, DatePicker, DatePickerProps } from 'antd';
import Layout from '~/components/layout';
import Requirements from './components/requirements'; //项目需求
import Bids from './components/bids'; //招投标项目
import Cases from './components/cases'; //业务案例
import News from './components/news'; //行业新闻
import commonApi, { RegionResp } from '~/api'; import commonApi, { RegionResp } from '~/api';
import Layout from '~/components/layout';
import WxCodeModal from '~/components/wxCodeModal'; import WxCodeModal from '~/components/wxCodeModal';
import Bids from './components/bids'; // 招投标项目
import Cases from './components/cases'; // 业务案例
import News from './components/news'; // 行业新闻
import Requirements from './components/requirements'; // 项目需求
import styles from './index.module.scss';
export interface Params { export interface Params {
cityCode?: number; //市编码 cityCode?: number; // 市编码
date?: string; //时间 2023-05-19 date?: string; // 时间 2023-05-19
districtCode?: number; //区编码 districtCode?: number; // 区编码
provinceCode?: number; //省编码 provinceCode?: number; // 省编码
} }
export default function ProjectInfo() { export default function ProjectInfo() {
...@@ -41,7 +44,7 @@ export default function ProjectInfo() { ...@@ -41,7 +44,7 @@ export default function ProjectInfo() {
return { return {
label: `${value}`, label: `${value}`,
key: value, key: value,
children: children, children,
}; };
}); });
...@@ -52,11 +55,11 @@ export default function ProjectInfo() { ...@@ -52,11 +55,11 @@ export default function ProjectInfo() {
useEffect(() => { useEffect(() => {
window!.document!.querySelector('body')!.style.background = '#fff'; window!.document!.querySelector('body')!.style.background = '#fff';
commonApi.region().then((res) => { commonApi.region().then((res) => {
let temp = res.result || []; const temp = res.result || [];
let temp1: Array<RegionResp> = []; let temp1: Array<RegionResp> = [];
if (res.result) { if (res.result) {
temp1 = temp.map((item) => { temp1 = temp.map((item) => {
let t = { const t = {
...item, ...item,
id: item.id, id: item.id,
}; };
...@@ -69,7 +72,7 @@ export default function ProjectInfo() { ...@@ -69,7 +72,7 @@ export default function ProjectInfo() {
const onRegionChange = (value: Array<string>, list: Array<RegionResp>) => { const onRegionChange = (value: Array<string>, list: Array<RegionResp>) => {
console.log(value); console.log(value);
let params1: Params = { const params1: Params = {
provinceCode: undefined, provinceCode: undefined,
districtCode: undefined, districtCode: undefined,
}; };
...@@ -114,7 +117,7 @@ export default function ProjectInfo() { ...@@ -114,7 +117,7 @@ export default function ProjectInfo() {
{ {
<Cascader <Cascader
options={region} options={region}
//@ts-ignore // @ts-ignore
onChange={onRegionChange} onChange={onRegionChange}
placeholder='选择省市' placeholder='选择省市'
borderRadiusSM={6} borderRadiusSM={6}
......
import { useEffect, useState } from 'react';
import { RightOutlined } from '@ant-design/icons'; import { RightOutlined } from '@ant-design/icons';
import { Col, Row } from 'antd'; import { Col, Row } from 'antd';
import Moment from 'moment';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import Layout from '~/components/layout'; import Layout from '~/components/layout';
import newsApi, { Item } from '../components/news/api';
import api, { DetailsResp } from './api'; import api, { DetailsResp } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import Moment from 'moment'; import newsApi, { Item } from '../components/news/api';
export default function CaseArticle() { export default function CaseArticle() {
const router = useRouter(); const router = useRouter();
const [data, setData] = useState<DetailsResp | null>(null); const [data, setData] = useState<DetailsResp | null>(null);
const [newsList, setNewList] = useState<Item[]>([]); const [newsList, setNewList] = useState<Item[]>([]);
//获取案例详情 // 获取案例详情
useEffect(() => { useEffect(() => {
const id = Number(router.query.id); const id = Number(router.query.id);
if (id) { if (id) {
...@@ -27,7 +30,7 @@ export default function CaseArticle() { ...@@ -27,7 +30,7 @@ export default function CaseArticle() {
} }
}, [router]); }, [router]);
//获取新闻列表 // 获取新闻列表
useEffect(() => { useEffect(() => {
newsApi newsApi
.listNewsPage({ .listNewsPage({
...@@ -98,7 +101,7 @@ export default function CaseArticle() { ...@@ -98,7 +101,7 @@ export default function CaseArticle() {
align='middle' align='middle'
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => { onClick={() => {
router.push('/projectInfo/newsArticle/' + item.id); router.push(`/projectInfo/newsArticle/${item.id}`);
}} }}
> >
<Col <Col
......
...@@ -15,7 +15,7 @@ export interface DetailsResp { ...@@ -15,7 +15,7 @@ export interface DetailsResp {
} }
export default { export default {
//案例详情 // 案例详情
details(params: DetailsParams): Promise<Response<DetailsResp>> { details(params: DetailsParams): Promise<Response<DetailsResp>> {
return request('/release/industry-news/details', 'get', params); return request('/release/industry-news/details', 'get', params);
}, },
......
import { useEffect, useState } from 'react';
import { RightOutlined } from '@ant-design/icons'; import { RightOutlined } from '@ant-design/icons';
import { Col, Row } from 'antd'; import { Col, Row } from 'antd';
import Moment from 'moment';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import Layout from '~/components/layout'; import Layout from '~/components/layout';
import newsApi, { Item } from '../components/news/api';
import api, { DetailsResp } from './api'; import api, { DetailsResp } from './api';
import styles from './index.module.scss'; import styles from './index.module.scss';
import Moment from 'moment'; import newsApi, { Item } from '../components/news/api';
export default function TenderProjectsDetail() { export default function TenderProjectsDetail() {
const router = useRouter(); const router = useRouter();
const [data, setData] = useState<DetailsResp>(); const [data, setData] = useState<DetailsResp>();
const [newsList, setNewList] = useState<Item[]>([]); const [newsList, setNewList] = useState<Item[]>([]);
//获取案例详情 // 获取案例详情
useEffect(() => { useEffect(() => {
const id = Number(router.query.id); const id = Number(router.query.id);
if (id) { if (id) {
...@@ -27,7 +30,7 @@ export default function TenderProjectsDetail() { ...@@ -27,7 +30,7 @@ export default function TenderProjectsDetail() {
} }
}, [router]); }, [router]);
//获取新闻列表 // 获取新闻列表
useEffect(() => { useEffect(() => {
newsApi newsApi
.listNewsPage({ .listNewsPage({
...@@ -97,7 +100,7 @@ export default function TenderProjectsDetail() { ...@@ -97,7 +100,7 @@ export default function TenderProjectsDetail() {
align='middle' align='middle'
style={{ cursor: 'pointer' }} style={{ cursor: 'pointer' }}
onClick={() => { onClick={() => {
router.push('/projectInfo/newsArticle/' + item.id); router.push(`/projectInfo/newsArticle/${item.id}`);
}} }}
> >
<Col <Col
......
import request, { Response } from '~/api/request'; import request, { Response } from '~/api/request';
import { Item } from '~/pages/projectInfo/components/news/api';
export interface DetailsParams { export interface DetailsParams {
id: number; id: number;
...@@ -13,7 +12,7 @@ export interface DetailsResp { ...@@ -13,7 +12,7 @@ export interface DetailsResp {
} }
export default { export default {
//招标详情 // 招标详情
details(params: DetailsParams): Promise<Response<DetailsResp>> { details(params: DetailsParams): Promise<Response<DetailsResp>> {
return request('/release/tender/infoById', 'get', params); return request('/release/tender/infoById', 'get', params);
}, },
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论