Commit 814acebb authored by 前端-钟卫鹏's avatar 前端-钟卫鹏
parents fe38862f ed5f0b49
......@@ -70,6 +70,10 @@ export enum FILTER_TYPE {
*/
category = 'category',
/**
* 会员品类
*/
customerCategory = 'customerCategory',
/**
* 分类和属性
*/
categoryAndAttr = 'categoryAndAttr',
......
......@@ -15,6 +15,7 @@ import styles from './index.less'
import { GetTemplateChannelFindChannelResponse } from '@/services/TemplateApi'
import { isEmpty } from '@formily/antd/esm/shared'
import { GlobalConfig } from '@/global/config'
import { getAuth } from '@/utils/auth'
interface ShopInfoPropsType {
SiteStore: {
......@@ -46,8 +47,11 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
// 根据站点获取商城信息
const fetchAllShop = () => {
//@ts-ignore
PublicApi.getManageShopFindShopsBySiteId({ siteId, type: 2 }).then(res => {
const param: any = {
siteId,
type: 2
}
PublicApi.getManageShopFindShopsBySiteId(param).then(res => {
if (res.code === 1000) {
setAllMallList(res.data)
}
......@@ -58,7 +62,11 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
* 获取渠道信息
*/
const fetchShopInfo = () => {
PublicApi.getTemplateChannelFindChannel().then(res => {
const { memberId } = getAuth() || {}
const param: any = {
memberId
}
PublicApi.getTemplateChannelFindChannel(param).then(res => {
const data = res.data
if (res.code === 1000) {
setShopInfo(data)
......@@ -92,7 +100,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
}
const handleAddNewCitySelect = (item: any) => {
let temp = [...selectCityData]
const temp = [...selectCityData]
temp.push(item)
setSelectCityData(temp)
form.setFieldsValue({
......@@ -136,7 +144,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
const handleSave = (e: any) => {
e.preventDefault()
form.validateFields().then(value => {
form.validateFields().then((value: any) => {
if (!checkmemberChannelAreas(value.memberChannelAreas)) {
return
}
......@@ -147,7 +155,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
value.storeUrl = storeUrl || `${siteUrl}/${GlobalConfig.channelRootRoute}`
value.shopId = shopId
setConfirmLoading(true)
//@ts-ignore
PublicApi.postTemplateChannelSaveChannel(value).then(res => {
if (res.code === 1000) {
fetchShopInfo()
......@@ -215,7 +223,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
return
}
if (shopInfo.shopId && shopInfo.memberId) {
let resUrl = getMallItemAndSetUrl(mallId)
const resUrl = getMallItemAndSetUrl(mallId)
setStoreUrl(resUrl)
} else {
setStoreUrl(null)
......@@ -225,7 +233,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
const getMallItemAndSetUrl = (mallId) => {
let result = ""
let mallItem = allMallList.filter(item => item.id === mallId)[0]
const mallItem = allMallList.filter(item => item.id === mallId)[0]
if (!mallItem) {
return ""
}
......@@ -261,7 +269,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
return null
}
if (shopId && shopInfo.shopId && shopInfo.memberId) {
let resUrl = getMallItemAndSetUrl(shopId)
const resUrl = getMallItemAndSetUrl(shopId)
return resUrl ? (
<div className={styles.shop_url}>
<span>当前店铺链接:</span>
......@@ -396,7 +404,7 @@ const ChannelInfo: React.FC<ShopInfoPropsType> = (props) => {
labelAlign="left"
name="customerUrl"
label={<RequireItem label="客服链接" />}
rules={[{ pattern: /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/, message: '请输入正确的客服链接' }]}
rules={[{ pattern: /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?/, message: '请输入正确的客服链接' }]}
>
<Input allowClear className={styles.form_item} />
</Form.Item>
......
......@@ -5,7 +5,7 @@ import SettingList from '../../../../components/SettingList'
import GoodsItem from './GoodsItem'
import SettingPanel from '../../../../components/SettingPanel'
import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'
import { GetTemplatePlatformFindGoodsListResponseDetail } from '@/services'
import { GetTemplatePlatformFindGoodsListResponseDetail } from '@/services/TemplateApi'
import { PublicApi } from '@/services/api'
import { filterProps } from '../../../../utils'
import styles from './index.less'
......@@ -44,7 +44,6 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
const [totalCount, setTotalCount] = useState<number>(0)
const [filterParam, setFilterParam] = useState()
const [spinLoading, setSpinLoading] = useState<boolean>(false)
const [newProps, setNewProps] = useState(props)
const [categoryResponseList, setCategoryResponseList] = useState<any>([])
const [noSelectBrands, setNoSelectBrands] = useState<any[]>([])
......@@ -59,8 +58,7 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
categoryId: categoryid,
templateId: templateid
}
PublicApi.getTemplatePlatformFindCategoryList(param).then(res => {
PublicApi.getTemplateShopFindCategoryList(param).then(res => {
if (res.code === 1000) {
const data = res.data
setCategoryResponseList(data.categoryBOList || [])
......@@ -283,7 +281,10 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
</Button>
) : (
<Button
onClick={() => setOprationType('list')}
onClick={() => {
setOprationType('list')
setIsHighSearch(false)
}}
>
查看已选择商品({selectGoodsList.length})
</Button>
......
......@@ -270,7 +270,6 @@ const Add: React.FC<{}> = () => {
* 提交表单
*/
const handleSubmit = (values: any) => {
console.log(values)
const SELF_MENTION = 2; // 自提
const {
deliveryDate,
......@@ -340,7 +339,6 @@ const Add: React.FC<{}> = () => {
delete postData.receiverAddressId
}
console.log(postData);
// return ;
PublicApi.postEnhanceSupplierToBeAddAdd(postData)
.then(data => {
setSubmitLoading(false);
......
......@@ -5,8 +5,7 @@ import classnames from 'classnames';
import {FileList, UploadFile} from '../../components/UploadFile';
import NiceForm from '@/components/NiceForm';
import { createFormActions } from '@formily/antd'
import {useScroll, useDebounceFn } from '@umijs/hooks';
import { min } from 'lodash';
import {useScroll } from '@umijs/hooks';
const actions = createFormActions();
const schema = {
......@@ -64,7 +63,6 @@ interface Iprops {
const Content: React.FC<Iprops> = React.forwardRef((props, conftentRef) => {
const { id, name, category, brand, unitName, files, productProps, quantity, processUnitPrice } = props;
const [active, setActive] = useState<string>("基本信息");
const [menu, setMenu] = useState([])
// const ref = useRef(null);
const [scroll, ref] = useScroll<HTMLDivElement>();
......
......@@ -60,10 +60,23 @@
margin-right: 12px;
border-radius: 50%;
// background-color: red;
overflow: hidden;
img {
width: 100%;
height: 100%;
}
.randomLogo {
width: 100%;
height: 100%;
background: linear-gradient(135deg, #4981CC 0%, #1A4F97 100%) #255BA3;
border-radius: 50%;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
font-size: 18px;
}
}
.wrapper {
......
......@@ -16,7 +16,7 @@ const WEEKDAYS = ["天", "一","二", "三", "四", "五","六"];
const LEVEL_IMAGE = [level1, level2, level3, level4];
const EDIT_USER_URL = '/memberCenter/memberAbility/query';
const USER_CENTER_URL = '/memberCenter/memberAbility/manage/maintain'
const STATUS_COLOR = ["default", "processing", "error", "success"]
const STATUS_COLOR: ("default" | "processing" | "error" | "success")[] = ["default", "processing", "error", "success"]
const UserCenter: React.FC<Iprops> = () => {
const today = moment();
......@@ -46,11 +46,12 @@ const UserCenter: React.FC<Iprops> = () => {
<div className={styles.content}>
<Row className={styles.row}>
<Col span={11} className={styles.user}>
{/* http://10.0.0.25:4000/project/15/interface/api/38926 上传用户头像 */}
<div className={styles.pic} >
{
userAuth.logo
? <img src={userAuth.logo || ''} />
: <div></div>
: <div className={styles.randomLogo}>H</div>
}
</div>
......
......@@ -371,7 +371,13 @@ const CommodityDetail = (props) => {
postFn = PublicApi.postSearchShopPurchaseSaveOrUpdatePurchase
break;
}
PublicApi.postOrderDirectPayment({ productId: selectCommodityId, memberId }).then(res => {
const directParam: any = {
productId: selectCommodityId,
memberId,
shopId
}
PublicApi.postOrderDirectPayment(directParam).then(res => {
if (res.code === 1000) {
message.destroy()
postFn && postFn(param).then(res => {
......@@ -483,8 +489,12 @@ const CommodityDetail = (props) => {
if (clickFlag) {
clickFlag = false
PublicApi.postOrderDirectPayment({ productId: selectCommodityId, memberId }).then(res => {
const param: any = {
productId: selectCommodityId,
memberId,
shopId
}
PublicApi.postOrderDirectPayment(param).then(res => {
if (res.code === 1000) {
message.destroy()
const buyCommodityInfo = {
......
......@@ -6,6 +6,7 @@ import { LAYOUT_TYPE, FILTER_TYPE } from '@/constants'
import { PublicApi } from '@/services/api'
import isEmpty from 'lodash/isEmpty'
import styles from './index.less'
import { Layout } from '@formily/antd'
const CheckboxGroup = Checkbox.Group
......@@ -29,6 +30,7 @@ const Category: React.FC<CategoryPropsType> = (props) => {
const [initSelectAttributeList, setInitSelectAttributeList] = useState<any>([])
useEffect(() => {
console.log(JSON.stringify(filterList))
if (isEmpty(filterList)) {
setSelectedKeys([])
setLastCategoryId(null)
......@@ -39,6 +41,8 @@ const Category: React.FC<CategoryPropsType> = (props) => {
for (const item of filterList) {
if (item.type === FILTER_TYPE.category) {
initKeys.push(String(item.key))
} else if(item.type === FILTER_TYPE.customerCategory) {
initKeys.push(String(item.key))
}
if (item.type === FILTER_TYPE.attribute) {
setInitSelectAttributeList(item.key)
......@@ -186,7 +190,6 @@ const Category: React.FC<CategoryPropsType> = (props) => {
}
const handleSelect = (selectedKeys, info) => {
console.log(info)
const { title, children, name } = info.node
setSelectedKeys(selectedKeys)
if (children.length === 0) {
......@@ -196,17 +199,31 @@ const Category: React.FC<CategoryPropsType> = (props) => {
} else {
setLastCategoryId(null)
setAttributeList([])
if(filterList.some(item => item.type === FILTER_TYPE.attribute)) {
onFilter({
type: FILTER_TYPE.attribute,
key: null,
title: ``
})
}
}
switch(layoutType) {
case LAYOUT_TYPE.mall:
onFilter({
type: FILTER_TYPE.category,
key: selectedKeys,
title: typeof title === 'string' ? title : name
})
break
default:
onFilter({
type: FILTER_TYPE.customerCategory,
key: selectedKeys,
title: typeof title === 'string' ? title : name
})
break
}
}
const handleExpand = (expandedKeys) => {
......
......@@ -35,7 +35,7 @@ const LXChannelLayout: React.FC<LXChannelLayoutPropsType> = (props) => {
const [loading, setLoading] = useState<boolean>(true)
const getMenuRouter = (routes: any, pathname: any) => {
let list = routes.filter((item: any) => pathname.indexOf(item.key) > -1)
const list = routes.filter((item: any) => pathname.indexOf(item.key) > -1)
return list[0] || {}
}
......@@ -61,7 +61,7 @@ const LXChannelLayout: React.FC<LXChannelLayoutPropsType> = (props) => {
}, [query])
const fetchShopInfo = (memberId) => {
//@ts-ignore
PublicApi.getTemplateChannelFindChannel({ memberId }).then(res => {
if (res.code === 1000) {
setShopInfo(res.data)
......@@ -73,7 +73,7 @@ const LXChannelLayout: React.FC<LXChannelLayoutPropsType> = (props) => {
}
useEffect(() => {
let body = document.getElementsByTagName('body')[0];
const body = document.getElementsByTagName('body')[0];
if (shopInfo) {
body.className = shopInfo.channelShopTemplateFileName ? `theme-channel-${shopInfo.channelShopTemplateFileName}` : templateName;
} else {
......
......@@ -35,7 +35,7 @@ const LXIChannelLayout: React.FC<LXIChannelLayoutPropsType> = (props) => {
const [loading, setLoading] = useState<boolean>(true)
const getMenuRouter = (routes: any, pathname: any) => {
let list = routes.filter((item: any) => pathname.indexOf(item.key) > -1)
const list = routes.filter((item: any) => pathname.indexOf(item.key) > -1)
return list[0] || {}
}
const { formatMessage } = useIntl();
......@@ -61,7 +61,7 @@ const LXIChannelLayout: React.FC<LXIChannelLayoutPropsType> = (props) => {
}, [query])
const fetchShopInfo = (memberId) => {
//@ts-ignore
PublicApi.getTemplateChannelFindChannel({ memberId }).then(res => {
if (res.code === 1000) {
setShopInfo(res.data)
......@@ -73,7 +73,7 @@ const LXIChannelLayout: React.FC<LXIChannelLayoutPropsType> = (props) => {
}
useEffect(() => {
let body = document.getElementsByTagName('body')[0];
const body = document.getElementsByTagName('body')[0];
if (shopInfo) {
body.className = shopInfo.channelOwnShopTemplateFileName ? `theme-channel-${shopInfo.channelOwnShopTemplateFileName}` : templateName;
} else {
......
......@@ -32,7 +32,7 @@ const LXMallLayout: React.FC<LXMallLayoutPropsType> = (props) => {
const [mallInfo, setMallInfo] = useState<any>({})
const getMenuRouter = (routes: any, pathname: any) => {
let list = routes.filter((item: any) => pathname.indexOf(item.key) > -1)
const list = routes.filter((item: any) => pathname.indexOf(item.key) > -1)
return list[0] || {}
}
......@@ -50,12 +50,12 @@ const LXMallLayout: React.FC<LXMallLayoutPropsType> = (props) => {
const getWebMallInfo = () => {
const shopInfo = GlobalConfig.web.shopInfo
let webMallInfo = shopInfo.filter(item => item.environment === 1 && item.type === 1)[0]
const webMallInfo = shopInfo.filter(item => item.environment === 1 && item.type === 1)[0]
setMallInfo(webMallInfo)
}
useEffect(() => {
let body = document.getElementsByTagName('body')[0];
const body = document.getElementsByTagName('body')[0];
if (!isEmpty(mallTemplateInfo)) {
body.className = mallTemplateInfo.fileName ? `theme-mall-${mallTemplateInfo.fileName}` : templateName;
} else {
......
......@@ -25,12 +25,13 @@ interface OrderPropsType {
mallInfo: any;
layoutType: LAYOUT_TYPE;
shopUrlParam: string;
shopId: number;
}
const Order: React.FC<OrderPropsType> = (props) => {
let checkoutCount = 0
const userInfo = getAuth()
const { shopInfo, mallInfo, layoutType, shopUrlParam } = props
const { shopInfo, mallInfo, layoutType, shopUrlParam, shopId } = props
const { query: { type = COMMODITY_TYPE.prompt } } = props.location
const [signModalVisible, setSignModalVisible] = useState<boolean>(false)
const { spam_id } = props.location.query
......@@ -266,6 +267,7 @@ const Order: React.FC<OrderPropsType> = (props) => {
const params: any = {
orderModel: getOrderMode(), // 下单模式
needTheInvoice: needTheInvoice ? 1 : 0,
shopId
}
if (orderInfo.logistics.deliveryType === 1 && !!selectAddressInfo) {
......
......@@ -16,5 +16,6 @@
font-weight: 500;
// color: #303133;
display: inline-block;
cursor: pointer;
}
}
......@@ -3,13 +3,11 @@ import { history } from 'umi';
import { Card, List, Avatar } from 'antd';
import styles from './index.less'
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { PlusOutlined } from '@ant-design/icons';
import StatusTag from '@/components/StatusTag';
import { PublicApi } from '@/services/api';
import moment from 'moment';
import msg_system from '@/assets/imgs/msg_system.png'
import msg_platform from '@/assets/imgs/msg_platform.png';
import cx from 'classnames';
const Message: React.FC<{}> = () => {
const [dataSource, setDataSource] = useState<any>([])
......@@ -41,7 +39,6 @@ const Message: React.FC<{}> = () => {
}
const handlePaginationChange = (page, pageSize) => {
console.log(page,pageSize);
getList({page, pageSize})
.then((data) => {
console.log(data);
......@@ -51,12 +48,15 @@ const Message: React.FC<{}> = () => {
const handleRead = (id, url: string) => {
console.log(url);
// /report/message/member/read
PublicApi.getReportMessageMemberRead({id: id})
.then((data) => {
if(url) {
if(/http/.test(url)) {
location.href = url
} else {
history.push(url);
}
}
})
}
......
......@@ -138,6 +138,9 @@ class FilterStore {
case FILTER_TYPE.category:
tempFilterParam.categoryId = Number(filterItem.key[0])
break
case FILTER_TYPE.customerCategory:
tempFilterParam.customerCategoryId = Number(filterItem.key[0])
break
case FILTER_TYPE.commodityType:
tempFilterParam.priceTypeList = [filterItem.key]
break
......@@ -202,6 +205,10 @@ class FilterStore {
tempFilterParam.customerCategoryId = filterItem.key[0]
tempFilterParam.customerCategoryName = filterItem.title
break
case FILTER_TYPE.customerCategory:
tempFilterParam.customerCategoryId = filterItem.key[0]
tempFilterParam.customerCategoryName = filterItem.title
break
case FILTER_TYPE.brand:
tempFilterParam.brandId = filterItem.key
tempFilterParam.brandName = filterItem.title
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment