电子商城测试版v3
This commit is contained in:
parent
d0d4219413
commit
4ac7890915
@ -33,4 +33,26 @@ export const DelFavoriteApi = () => {
|
||||
url: `/v1/mall/favorite`,
|
||||
method: "delete",
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新收藏夹
|
||||
* @returns
|
||||
*/
|
||||
export const UpdateFavoriteApi = () => {
|
||||
return useRequest({
|
||||
url: `/v1/mall/favorite`,
|
||||
method: "put",
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 加入收藏夹
|
||||
* @returns
|
||||
*/
|
||||
export const AddFavoriteApi = () => {
|
||||
return useRequest({
|
||||
url: `/v1/mall/favorite/product`,
|
||||
method: "post",
|
||||
})
|
||||
}
|
@ -99,4 +99,14 @@ export const GetSaleOrderListApi = () => {
|
||||
url: `/v1/mall/enum/filterReturnStage`,
|
||||
method: "get",
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款说明
|
||||
*/
|
||||
export const RefundExplainApi = () => {
|
||||
return useRequest({
|
||||
url: `/v1/mall/enum/refundExplain`,
|
||||
method: "get",
|
||||
})
|
||||
}
|
@ -68,4 +68,14 @@ import { useRequest } from "@/use/useHttp"
|
||||
url: `/v1/mall/user/binding/company`,
|
||||
method: "put",
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请下单权限
|
||||
*/
|
||||
export const ApplyOrderAccessApi = () => {
|
||||
return useRequest({
|
||||
url: `/v1/mall/orderAccess/apply`,
|
||||
method: "post",
|
||||
})
|
||||
}
|
@ -10,8 +10,8 @@
|
||||
// export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境
|
||||
// export const BASE_URL = `https://www.zzfzyc.com/lymarket` // 正式环境
|
||||
// export const BASE_URL = `http://192.168.1.5:40001/lymarket` // 王霞
|
||||
// export const BASE_URL = `http://192.168.1.7:50002/lymarket` // 添
|
||||
export const BASE_URL = `http://192.168.1.42:50001/lymarket` // 杰
|
||||
export const BASE_URL = `http://192.168.1.7:50002/lymarket` // 添
|
||||
// export const BASE_URL = `http://192.168.1.42:50001/lymarket` // 杰
|
||||
|
||||
// CDN
|
||||
// 生成密钥
|
||||
|
47
src/components/addCollection/index.module.scss
Normal file
47
src/components/addCollection/index.module.scss
Normal file
@ -0,0 +1,47 @@
|
||||
|
||||
.collection_con{
|
||||
padding: 20px ;
|
||||
.header{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
.title{
|
||||
font-size: 30px;
|
||||
font-weight: 700;
|
||||
}
|
||||
.miconfont_con{
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 0;
|
||||
font-size: 26px;
|
||||
color: #007AFF;
|
||||
.miconfont{
|
||||
font-size: 30px;
|
||||
color: #007AFF;
|
||||
border: 1px solid #007AFF;
|
||||
border-radius: 50%;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.scrollView{
|
||||
height: 60vh;
|
||||
}
|
||||
.collection_item{
|
||||
padding: 30px 0 15px 0;
|
||||
border-bottom: 1px solid #F3F3F3;
|
||||
.name{
|
||||
font-size: 26px;
|
||||
font-weight: 700;
|
||||
text{
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
.desc{
|
||||
font-size: 22px;
|
||||
color: #707070;
|
||||
padding-left: 10px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
}
|
49
src/components/addCollection/index.tsx
Normal file
49
src/components/addCollection/index.tsx
Normal file
@ -0,0 +1,49 @@
|
||||
import Popup from "@/components/popup";
|
||||
import { Input, ScrollView, Text, View } from "@tarojs/components";
|
||||
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||
import classnames from "classnames";
|
||||
import styles from './index.module.scss'
|
||||
import TextareaEnhance from "@/components/textareaEnhance";
|
||||
import { CreateFavoriteApi, FavoriteListApi } from "@/api/favorite";
|
||||
import { alert, goLink } from "@/common/common";
|
||||
import { getFilterData } from "@/common/util";
|
||||
|
||||
//原因选择
|
||||
type ReasonInfoParam = {
|
||||
show?: boolean, //显示
|
||||
onClose?: () => void, //关闭
|
||||
onAdd?: (val: any) => void
|
||||
|
||||
}
|
||||
export default memo(({show = false, onClose, onAdd}: ReasonInfoParam) => {
|
||||
//获取列表
|
||||
const [list, setList] = useState([])
|
||||
const {fetchData: fetchDataList} = FavoriteListApi()
|
||||
const getFavoriteList = async () => {
|
||||
let res = await fetchDataList(getFilterData())
|
||||
setList(() => res.data.list)
|
||||
}
|
||||
useEffect(() => {
|
||||
if(show) getFavoriteList()
|
||||
}, [show])
|
||||
|
||||
return (
|
||||
<Popup show={show} onClose={onClose} showTitle={false} >
|
||||
<View className={styles.collection_con}>
|
||||
<View className={styles.header}>
|
||||
<Text className={styles.title}>选择文件夹</Text>
|
||||
<View className={styles.miconfont_con} >
|
||||
<Text className={classnames(styles.miconfont, 'iconfont icon-jia')}></Text>
|
||||
<Text onClick={() => goLink('/pages/collection/index')}>新建</Text>
|
||||
</View>
|
||||
</View>
|
||||
<ScrollView scrollY className={styles.scrollView}>
|
||||
{list?.map((item: any) => <View onClick={() => onAdd?.(item)} className={styles.collection_item}>
|
||||
<View className={styles.name}>{item.name}<Text>({item.product_color_list?.length||0})</Text></View>
|
||||
<View className={styles.desc}>{item.remark}</View>
|
||||
</View>)}
|
||||
</ScrollView>
|
||||
</View>
|
||||
</Popup>
|
||||
)
|
||||
})
|
@ -13,6 +13,7 @@ import { formatHashTag, formatImgUrl, formatPriceDiv } from "@/common/fotmat";
|
||||
import { setParam } from "@/common/system";
|
||||
import { debounce } from "@/common/util";
|
||||
import Counter from "../counter";
|
||||
import { ApplyOrderAccessApi, GetAdminUserInfoApi } from "@/api/user";
|
||||
|
||||
type param = {
|
||||
show?: true|false,
|
||||
@ -211,7 +212,25 @@ export default ({show = false, onClose}: param) => {
|
||||
|
||||
|
||||
//去结算
|
||||
const orderDetail = debounce(() => {
|
||||
const {fetchData: useFetchData} = GetAdminUserInfoApi()
|
||||
const orderDetail = debounce( async () => {
|
||||
let res = await useFetchData()
|
||||
if(res.data.order_access_status !== 3) {
|
||||
Taro.showModal({
|
||||
title: '提示',
|
||||
content: '暂未开通下单权限功能,稍后有客服联系您,请注意接受电话。',
|
||||
cancelText: '联系客服',
|
||||
confirmText: '我知道',
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消')
|
||||
}
|
||||
}
|
||||
})
|
||||
return false
|
||||
}
|
||||
getSelectId()
|
||||
if(selectIds.current.length == 0) {
|
||||
alert.error('请选择面料')
|
||||
@ -223,6 +242,7 @@ export default ({show = false, onClose}: param) => {
|
||||
}
|
||||
}, 500)
|
||||
|
||||
|
||||
//计数组件-当后端修改完成才修改前端显示
|
||||
const {fetchData: fetchDataUpdateShoppingCart} = UpdateShoppingCartApi()
|
||||
const [UpdateShoppingCartLoading, setUpdateShoppingCartLoading] = useState(false)
|
||||
@ -241,7 +261,7 @@ export default ({show = false, onClose}: param) => {
|
||||
<View className={styles.shop_cart_main}>
|
||||
<Popup showTitle={false} show={showPopup} onClose={() => closePopup()} >
|
||||
<View className={styles.popup_con}>
|
||||
<View className={styles.header}>
|
||||
<View className={styles.header}>
|
||||
<View onClick={selectAll}>{!selectStatus?'全选':'反选'}</View>
|
||||
<View onClick={delSelect}>
|
||||
<text className={classnames('iconfont', 'icon-shanchu', styles.miconfont)}></text>
|
||||
|
@ -17,7 +17,7 @@ export default memo(({onChange, title = '', placeholder = '请输入', defaultVa
|
||||
count: 200,
|
||||
show: false
|
||||
})
|
||||
const getDesc = (value) => {
|
||||
const getDesc = (value = '') => {
|
||||
let res = value
|
||||
if(value.length > descData.count) {
|
||||
res = value.slice(0, descData.count)
|
||||
|
@ -11,14 +11,14 @@ type ImageParam = {
|
||||
onChange?:(val: string[]) => void,
|
||||
defaultList?: string[]
|
||||
}
|
||||
const PictureItem:FC<ImageParam> = memo(({onChange, defaultList = []}) => {
|
||||
const PictureItem:FC<ImageParam> = memo(({onChange, defaultList}) => {
|
||||
const {getWxPhoto} = useUploadCDNImg()
|
||||
const [imageList, setImageLise] = useState<string[]>([])
|
||||
|
||||
useEffect(() => {
|
||||
setImageLise(defaultList)
|
||||
setImageLise(defaultList||[])
|
||||
}, [defaultList])
|
||||
|
||||
|
||||
//上传图片
|
||||
const uploadImage = async () => {
|
||||
let res:any = await getWxPhoto('after-sale')
|
||||
@ -33,7 +33,7 @@ const PictureItem:FC<ImageParam> = memo(({onChange, defaultList = []}) => {
|
||||
}
|
||||
//监听上传的图片变化
|
||||
useEffect(() => {
|
||||
onChange?.(imageList||[])
|
||||
onChange?.(imageList)
|
||||
}, [imageList])
|
||||
|
||||
//预览图片
|
||||
|
@ -0,0 +1,64 @@
|
||||
.apply_after_sales_list{
|
||||
padding: 0 20px;
|
||||
.apply_after_sales_item{
|
||||
margin-bottom: 50px;
|
||||
.apply_after_sales_title{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.tag{
|
||||
font-size: $font_size_min;
|
||||
background-color: #CDE5FF;
|
||||
padding: 5px 10px;
|
||||
border-radius: 6px;
|
||||
color: $color_main;
|
||||
}
|
||||
.title{
|
||||
font-weight: 700;
|
||||
font-size: $font_size;
|
||||
margin-left: 20px;
|
||||
flex:1;
|
||||
}
|
||||
}
|
||||
.color_list {
|
||||
.color_item{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 30px 0;
|
||||
}
|
||||
.image{
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
image{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
.name_and_number{
|
||||
padding-left: 30px;
|
||||
flex:1;
|
||||
text{
|
||||
&:nth-child(1) {
|
||||
font-weight: 700;
|
||||
font-size: $font_size;
|
||||
}
|
||||
&:nth-child(2) {
|
||||
color: $color_font_two;
|
||||
font-size: $font_size;
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.btn_count{
|
||||
width: 216px;
|
||||
height: 64px;
|
||||
background-color: #ECF5FF;
|
||||
border-radius: 40px 0px 16px 0px;
|
||||
padding: 0 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
69
src/pages/applyAfterSales/components/cutKindList/index.tsx
Normal file
69
src/pages/applyAfterSales/components/cutKindList/index.tsx
Normal file
@ -0,0 +1,69 @@
|
||||
import { formatHashTag, formatImgUrl } from "@/common/fotmat";
|
||||
import Counter from "@/components/counter";
|
||||
import MCheckbox from "@/components/checkbox";
|
||||
import { Image, Text, View } from "@tarojs/components";
|
||||
import { FC, memo, useCallback } from "react";
|
||||
import styles from './index.module.scss'
|
||||
|
||||
type OrderParam = {
|
||||
list?: any[],
|
||||
sale_mode?: number,
|
||||
sale_mode_name?: string,
|
||||
unit?: string,
|
||||
total_colors?: number,
|
||||
total_fabrics?: number,
|
||||
total_number?: number,
|
||||
status?: number, //订单状态
|
||||
}
|
||||
|
||||
type Param = {
|
||||
order: OrderParam,
|
||||
onSelectChange?: (val: {color_id:number, length: number, status: true|false, sale_order_detail_id:number}) => void
|
||||
}
|
||||
|
||||
const kindeList:FC<Param> = memo(({order, onSelectChange}) => {
|
||||
//对应数量
|
||||
const formatCount = useCallback((item) => {
|
||||
return (order?.sale_mode == 0? item.roll : Number(item.length / 100)) + order?.unit
|
||||
}, [order])
|
||||
|
||||
|
||||
//checkbox选中回调
|
||||
const selectCallBack = (colorItem) => {
|
||||
console.log('colorItem::',colorItem)
|
||||
onSelectChange?.({color_id:colorItem.id, length:colorItem.length, sale_order_detail_id:colorItem.sale_order_detail_id, status: true})
|
||||
}
|
||||
|
||||
//checkbox关闭回调
|
||||
const colseCallBack = (colorItem) => {
|
||||
onSelectChange?.({color_id:colorItem.id, length:colorItem.length, status: false, sale_order_detail_id:colorItem.sale_order_detail_id,})
|
||||
}
|
||||
|
||||
//判断该面料下的颜色都退完了
|
||||
const colorNum = (item) => {
|
||||
let res = item.product_colors.some(val => {
|
||||
return val.return_roll == 0
|
||||
})
|
||||
return res
|
||||
}
|
||||
|
||||
return (
|
||||
<View className={styles.apply_after_sales_list}>
|
||||
{order?.list?.map(item => colorNum(item)&&<View className={styles.apply_after_sales_item} >
|
||||
<View className={styles.apply_after_sales_title}>
|
||||
<View className={styles.tag}>{order.sale_mode_name}</View>
|
||||
<View className={styles.title}>{formatHashTag(item.code, item.name)}</View>
|
||||
</View>
|
||||
<View className={styles.color_list}>
|
||||
{item.product_colors.map(colorItem => (colorItem.return_roll == 0)&&<View className={styles.color_item}>
|
||||
<View className={styles.image}><Image src={formatImgUrl('')}/></View>
|
||||
<View className={styles.name_and_number}><Text>{colorItem.code + ' ' + colorItem.name}</Text><Text>x {formatCount(colorItem)}</Text></View>
|
||||
<MCheckbox status={item.select} onSelect={() => selectCallBack(colorItem)} onClose={() => colseCallBack(colorItem)}/>
|
||||
</View>)}
|
||||
</View>
|
||||
</View>)}
|
||||
</View>
|
||||
)
|
||||
})
|
||||
|
||||
export default kindeList
|
@ -19,13 +19,12 @@ type OrderParam = {
|
||||
type Param = {
|
||||
order: OrderParam,
|
||||
onNumChange?: (val:any) => void
|
||||
onSelectChange?: (val: {color_id:number, length: number, status: true|false}) => void
|
||||
}
|
||||
|
||||
const kindeList:FC<Param> = memo(({order, onNumChange, onSelectChange}) => {
|
||||
const kindeList:FC<Param> = memo(({order, onNumChange}) => {
|
||||
//对应数量
|
||||
const formatCount = useCallback((item) => {
|
||||
return (order?.sale_mode == 0? item.roll : Number(item.length / 100)) + order?.unit
|
||||
return (item.roll - item.return_roll) + order?.unit!
|
||||
}, [order])
|
||||
|
||||
//计步器失返回值
|
||||
@ -35,32 +34,28 @@ const kindeList:FC<Param> = memo(({order, onNumChange, onSelectChange}) => {
|
||||
}
|
||||
}, [])
|
||||
|
||||
//checkbox选中回调
|
||||
const selectCallBack = (colorItem) => {
|
||||
console.log('colorItem::',colorItem)
|
||||
onSelectChange?.({color_id:colorItem.id, length:colorItem.length, status: true})
|
||||
}
|
||||
|
||||
//checkbox关闭回调
|
||||
const colseCallBack = (colorItem) => {
|
||||
onSelectChange?.({color_id:colorItem.id, length:colorItem.length, status: false})
|
||||
//判断该面料下的颜色都退完了
|
||||
const colorNum = (item) => {
|
||||
let res = item.product_colors.some(val => {
|
||||
return val.return_roll < val.roll
|
||||
})
|
||||
return res
|
||||
}
|
||||
|
||||
return (
|
||||
<View className={styles.apply_after_sales_list}>
|
||||
{order?.list?.map(item => <View className={styles.apply_after_sales_item}>
|
||||
{order?.list?.map(item => (colorNum(item))&&<View className={styles.apply_after_sales_item}>
|
||||
<View className={styles.apply_after_sales_title}>
|
||||
<View className={styles.tag}>{order.sale_mode_name}</View>
|
||||
<View className={styles.title}>{formatHashTag(item.code, item.name)}</View>
|
||||
</View>
|
||||
<View className={styles.color_list}>
|
||||
{item.product_colors.map(colorItem => <View className={styles.color_item}>
|
||||
{item.product_colors.map(colorItem => (colorItem.return_roll < colorItem.roll)&&<View className={styles.color_item}>
|
||||
<View className={styles.image}><Image src={formatImgUrl('')}/></View>
|
||||
<View className={styles.name_and_number}><Text>{colorItem.code + ' ' + colorItem.name}</Text><Text>x {formatCount(colorItem)}</Text></View>
|
||||
{(order.sale_mode == 0)&&<View className={styles.btn_count}>
|
||||
<Counter maxNum={colorItem.roll} onChange={getCounterChange(colorItem)}/>
|
||||
</View>||
|
||||
<MCheckbox status={item.select} onSelect={() => selectCallBack(colorItem)} onClose={() => colseCallBack(colorItem)}/>}
|
||||
<View className={styles.btn_count}>
|
||||
<Counter maxNum={colorItem.roll - colorItem.return_roll} onChange={getCounterChange(colorItem)}/>
|
||||
</View>
|
||||
</View>)}
|
||||
</View>
|
||||
</View>)}
|
||||
|
@ -6,6 +6,7 @@ import ReasonPopup from "./components/reasonPopup";
|
||||
import { useDidShow, useRouter } from "@tarojs/taro";
|
||||
import { GetSaleOrderDetailApi } from "@/api/order";
|
||||
import KindList from "./components/kindList"
|
||||
import CutKindList from "./components/cutkindList"
|
||||
import { ReturnApplyOrderApi, ReturnExplainApi, ReturnGoodsStatusApi, ReturnReasonApi } from "@/api/salesAfterOrder";
|
||||
import { alert, goLink } from "@/common/common";
|
||||
import UploadImage from "@/components/uploadImage"
|
||||
@ -67,7 +68,6 @@ export default () => {
|
||||
unit: orderDetail.sale_mode == 0?'条':'m', //单位
|
||||
list: orderDetail.product_list,
|
||||
status: orderDetail.status, //订单状态
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
@ -101,7 +101,7 @@ export default () => {
|
||||
//散剪和剪板
|
||||
const getSelectChange = useCallback((val) => {
|
||||
if(val.status) {
|
||||
roll_list.current[val.color_id] = {product_color_id: val.color_id, product_roll: val.length}
|
||||
roll_list.current[val.color_id] = {product_color_id: val.color_id, product_roll: val.length, sale_order_detail_id: val.sale_order_detail_id}
|
||||
} else {
|
||||
delete roll_list.current[val.color_id]
|
||||
}
|
||||
@ -126,6 +126,7 @@ export default () => {
|
||||
const {fetchData: fetchDataReturnApply} = ReturnApplyOrderApi()
|
||||
const onSubmitData = async () => {
|
||||
if(submitData.roll_list.length <= 0) return alert.error('请选择退货颜色')
|
||||
console.log('submitData::',submitData)
|
||||
let res = await fetchDataReturnApply(submitData)
|
||||
if(res.success) {
|
||||
alert.success('申请成功')
|
||||
@ -157,6 +158,8 @@ export default () => {
|
||||
setShowReason(true)
|
||||
}
|
||||
|
||||
console.log('aaa:', 123456789)
|
||||
|
||||
//请求获取到的数据
|
||||
const [returnGoodsInfo, setReturnGoodsInfo] = useState<{title:string, list: any[], status: 1|2|3}>({title:'', list:[], status: returnStatus.goods_status})
|
||||
//售后货物状况
|
||||
@ -202,7 +205,8 @@ export default () => {
|
||||
<View className={styles.kind_number}><Text>{dataCount}</Text></View>
|
||||
<ScrollView scrollY className={styles.scroll}>
|
||||
<View className={styles.scroll_con}>
|
||||
<KindList order={formatDetailOrder} onNumChange={getNumChange} onSelectChange={getSelectChange}/>
|
||||
{(orderDetail?.sale_mode == 0)&&<KindList order={formatDetailOrder} onNumChange={getNumChange} />||
|
||||
<CutKindList order={formatDetailOrder} onSelectChange={getSelectChange}/>}
|
||||
<View className={styles.returnSaleInput}>
|
||||
<View className={styles.returnSaleInput_item}>
|
||||
<View className={styles.title}>退货原因</View>
|
||||
|
@ -1,6 +1,6 @@
|
||||
import Popup from "@/components/popup";
|
||||
import { Input, ScrollView, Text, View } from "@tarojs/components";
|
||||
import { memo, useCallback, useMemo, useRef } from "react";
|
||||
import { memo, useCallback, useEffect, useMemo, useRef } from "react";
|
||||
import classnames from "classnames";
|
||||
import styles from './index.module.scss'
|
||||
import TextareaEnhance from "@/components/textareaEnhance";
|
||||
@ -11,7 +11,7 @@ import { alert } from "@/common/common";
|
||||
type ReasonInfoParam = {
|
||||
show?: boolean, //显示
|
||||
onClose?: () => void, //关闭
|
||||
onSuccess?: () => void, //成功
|
||||
onSuccess?: (val:any) => void, //成功
|
||||
defaultValue?: {
|
||||
remark: string,
|
||||
name: string
|
||||
@ -24,40 +24,34 @@ export default memo(({show = false, onClose, onSuccess, defaultValue}: ReasonInf
|
||||
"remark": ''
|
||||
})
|
||||
|
||||
const getOtherReason = useCallback((val) => {
|
||||
const getOtherReason = (val) => {
|
||||
submitData.current.remark = val
|
||||
}, [])
|
||||
|
||||
const changeInput = useCallback((val) => {
|
||||
submitData.current.name = val.detail.value
|
||||
}, [])
|
||||
|
||||
//创建
|
||||
const {fetchData} = CreateFavoriteApi()
|
||||
const onSubmit = async () => {
|
||||
if(!submitData.current.name) return alert.none('请输入收藏夹名称!')
|
||||
let res = await fetchData(submitData.current)
|
||||
if(res.success) {
|
||||
alert.success('创建成功')
|
||||
onSuccess?.()
|
||||
} else {
|
||||
alert.error('创建失败')
|
||||
}
|
||||
onClose?.()
|
||||
}
|
||||
|
||||
const changeInput = (val) => {
|
||||
submitData.current.name = val.detail.value
|
||||
}
|
||||
|
||||
const onSubmit = () => {
|
||||
onSuccess?.(submitData.current)
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
submitData.current = {name: defaultValue?.name!, remark: defaultValue?.remark!}
|
||||
}, [defaultValue])
|
||||
return (
|
||||
<Popup show={show} title="新建收藏夹" onClose={onClose} >
|
||||
<View className={styles.collection_con}>
|
||||
<View className={styles.title_item}>
|
||||
<View className={styles.title}>名称</View>
|
||||
<View className={styles.select}>
|
||||
<Input placeholder="请输入文件夹名称" className={styles.input} onInput={changeInput} value={defaultValue?.remark}/>
|
||||
<Input placeholder="请输入文件夹名称" className={styles.input} onInput={changeInput} value={defaultValue?.name}/>
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.desc_item}>
|
||||
<View className={styles.title}>简介</View>
|
||||
<View className={styles.desc}>
|
||||
<TextareaEnhance onChange={getOtherReason} placeholder="请输入简介" />
|
||||
<TextareaEnhance defaultValue={defaultValue?.remark} onChange={getOtherReason} placeholder="请输入简介" />
|
||||
</View>
|
||||
</View>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DelFavoriteApi, FavoriteListApi } from "@/api/favorite";
|
||||
import { CreateFavoriteApi, DelFavoriteApi, FavoriteListApi, UpdateFavoriteApi } from "@/api/favorite";
|
||||
import { alert } from "@/common/common";
|
||||
import { getFilterData } from "@/common/util";
|
||||
import Product from "@/components/product";
|
||||
@ -32,9 +32,6 @@ export default () => {
|
||||
let res = await fetchDataList(getFilterData({name: searchData}))
|
||||
setList(() => res.data.list)
|
||||
}
|
||||
useEffect(() => {
|
||||
getFavoriteList()
|
||||
}, [])
|
||||
|
||||
//创建收藏夹
|
||||
const [collectioinShow, setCollectioinShow] = useState(false)
|
||||
@ -42,12 +39,31 @@ export default () => {
|
||||
setCollectioinShow(false)
|
||||
}, [])
|
||||
|
||||
//创建成功
|
||||
const onCreatSuccess = useCallback(() => {
|
||||
getFavoriteList()
|
||||
}, [])
|
||||
const creatShow = () => {
|
||||
setCollectioinShow(true)
|
||||
setInitData(() => ({ remark: '',name: '', id:0}))
|
||||
}
|
||||
|
||||
|
||||
//新增
|
||||
const {fetchData} = CreateFavoriteApi()
|
||||
const onCreate = async (submitData) => {
|
||||
if(!submitData.name) return alert.none('请输入收藏夹名称!')
|
||||
let res = await fetchData({...submitData})
|
||||
if(res.success) {
|
||||
alert.success('创建成功')
|
||||
getFavoriteList()
|
||||
} else {
|
||||
alert.error('创建失败')
|
||||
}
|
||||
}
|
||||
|
||||
//更多编辑
|
||||
const [initData, setInitData] = useState({
|
||||
remark: '',
|
||||
name: '',
|
||||
id:0
|
||||
})
|
||||
const selectInfo = useRef<any>(null)
|
||||
const [updateShow, setUpdateShow] = useState(false)
|
||||
const closeUpdate = useCallback(() => {
|
||||
@ -56,6 +72,8 @@ export default () => {
|
||||
const moreUpdate = (item,e) => {
|
||||
e.stopPropagation()
|
||||
selectInfo.current = item
|
||||
console.log('item:::', item)
|
||||
setInitData((e) =>({ ...e, remark:item.remark , name: item.name, id: item.id}))
|
||||
setUpdateShow(true)
|
||||
}
|
||||
|
||||
@ -84,15 +102,37 @@ export default () => {
|
||||
}, [])
|
||||
|
||||
//编辑
|
||||
const onUpdate = useCallback(() => {
|
||||
|
||||
const {fetchData: updateFavoriteFetchData} = UpdateFavoriteApi()
|
||||
const onUpdateShow = useCallback(() => {
|
||||
setCollectioinShow(true)
|
||||
}, [])
|
||||
const onUpdate = async (submitData) => {
|
||||
if(!submitData.name) return alert.none('请输入收藏夹名称!')
|
||||
let res = await updateFavoriteFetchData({...submitData})
|
||||
if(res.success) {
|
||||
alert.success('编辑成功')
|
||||
getFavoriteList()
|
||||
} else {
|
||||
alert.error('编辑失败')
|
||||
}
|
||||
}
|
||||
|
||||
//操作文件夹
|
||||
const onCreatSuccess = (submitData) => {
|
||||
if (!initData.id) {
|
||||
onCreate(submitData)
|
||||
} else {
|
||||
onUpdate({...submitData, id: initData.id})
|
||||
}
|
||||
setCollectioinShow(false)
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
<View className={styles.collection_main}>
|
||||
<View className={styles.search}>
|
||||
<Search style={{width: '100%'}} debounceTime={300} changeOnSearch={onSearch} placeholder="请输入面料关键词" />
|
||||
<View className={styles.miconfont_con} onClick={() => setCollectioinShow(true)}><Text className={classnames(styles.miconfont, 'iconfont icon-jia')}></Text></View>
|
||||
<View className={styles.miconfont_con} onClick={creatShow}><Text className={classnames(styles.miconfont, 'iconfont icon-jia')}></Text></View>
|
||||
</View>
|
||||
<View className={styles.class_list}>
|
||||
{list?.map((item:any) => <View className={styles.class_item}>
|
||||
@ -104,12 +144,12 @@ export default () => {
|
||||
<View className={styles.more} onClick={(e) => moreUpdate(item,e)}>更多</View>
|
||||
</View>
|
||||
<View className={styles.class_con} style={item.openStatus?{maxHeight: 10*260 + 'rpx'}:{maxHeight: 0}} >
|
||||
<Product productList={new Array(10).fill('')}/>
|
||||
<Product productList={item.product_color_list}/>
|
||||
</View>
|
||||
</View>)}
|
||||
</View>
|
||||
<CreatePopup show={collectioinShow} onClose={closeCollection} onSuccess={onCreatSuccess}/>
|
||||
<UpdatePopup show={updateShow} onClose={closeUpdate} onDelete={onDeleteCollect} onUpdate={onUpdate}/>
|
||||
<UpdatePopup show={updateShow} onClose={closeUpdate} onDelete={onDeleteCollect} onUpdate={onUpdateShow}/>
|
||||
<CreatePopup defaultValue={initData} show={collectioinShow} onClose={closeCollection} onSuccess={onCreatSuccess}/>
|
||||
</View>
|
||||
)
|
||||
}
|
@ -7,7 +7,7 @@ import OrderCount from './components/orderCount';
|
||||
import ShopCart from '@/components/shopCart';
|
||||
import Preview,{colorItem} from './components/preview';
|
||||
import styles from './index.module.scss'
|
||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
||||
import {formatHashTag, formatImgUrl} from '@/common/fotmat'
|
||||
import {GetProductDetailApi} from '@/api/material'
|
||||
import useLogin from '@/use/useLogin';
|
||||
@ -16,6 +16,8 @@ import { SHARE_SCENE } from '@/common/enum';
|
||||
import useUserInfo from '@/use/useUserInfo';
|
||||
import LabAndImg from '@/components/LabAndImg';
|
||||
import { alert } from '@/common/common';
|
||||
import AddCollection from '@/components/addCollection';
|
||||
import { AddFavoriteApi } from '@/api/favorite';
|
||||
|
||||
type item = {title:string, img:string, url:string, id:number}
|
||||
|
||||
@ -100,11 +102,7 @@ export default (props:Params) => {
|
||||
const [collectStatus, setCollectStatus] = useState(false)
|
||||
const changeCollect = () => {
|
||||
setCollectStatus(!collectStatus)
|
||||
Taro.showToast({
|
||||
title: '收藏成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
setCollectionShow(true)
|
||||
}
|
||||
|
||||
const {setSortCode, userInfo : userObj } = useUserInfo()
|
||||
@ -134,6 +132,19 @@ export default (props:Params) => {
|
||||
setShowOrderCount(true)
|
||||
}
|
||||
|
||||
//加入收藏夹
|
||||
const [collectionShow, setCollectionShow] = useState(false)
|
||||
const {fetchData: addFavoritefetchData} = AddFavoriteApi()
|
||||
const onAdd = useCallback(async (val) => {
|
||||
let res = await addFavoritefetchData({favorite_id: val.id, product_id: Number(params.id)})
|
||||
if(res.success) {
|
||||
alert.success('添加成功')
|
||||
} else {
|
||||
alert.none(res.msg)
|
||||
}
|
||||
setCollectionShow(false)
|
||||
}, [params])
|
||||
|
||||
|
||||
//页面下拉刷新
|
||||
usePullDownRefresh(() => {
|
||||
@ -202,6 +213,7 @@ export default (props:Params) => {
|
||||
</CustomWrapper>
|
||||
<ShopCart show={showCart} onClose={() => setShowCart(false)}/>
|
||||
<Preview value={colorInfo} show={showPreview} onClose={() => setShowPreview(false)}/>
|
||||
<AddCollection show={collectionShow} onAdd={onAdd}/>
|
||||
<View className='common_safe_area_y'></View>
|
||||
</View>
|
||||
)
|
||||
|
@ -5,7 +5,7 @@ import { memo, useCallback, useEffect, useRef, useState } from "react";
|
||||
import ReasonPopup from "../reasonPopup";
|
||||
import styles from './index.module.scss'
|
||||
import classnames from "classnames";
|
||||
import { ApplyRefundApi } from "@/api/salesAfterOrder";
|
||||
import { ApplyRefundApi, RefundExplainApi } from "@/api/salesAfterOrder";
|
||||
import { alert } from "@/common/common";
|
||||
|
||||
type Param = {
|
||||
@ -17,21 +17,24 @@ export default memo(({show, onClose, orderId}:Param) => {
|
||||
|
||||
//提交的数据
|
||||
const submitData = useRef({
|
||||
return_explain: 1,
|
||||
return_explain: 0,
|
||||
sale_order_id: 0,
|
||||
reason_describe: ''
|
||||
})
|
||||
|
||||
useEffect(() => {
|
||||
if(orderId)
|
||||
if(orderId) {
|
||||
submitData.current.sale_order_id = orderId
|
||||
refundExplain()
|
||||
}
|
||||
|
||||
}, [orderId])
|
||||
|
||||
//申请退款
|
||||
const {fetchData} = ApplyRefundApi()
|
||||
const getApplyRefund = async () => {
|
||||
let res = await fetchData(submitData.current)
|
||||
if(!submitData.current.return_explain) return alert.error('请选择说明原因')
|
||||
let res = await fetchData(submitData.current)
|
||||
if(res.success) {
|
||||
alert.error('申请成功')
|
||||
} else {
|
||||
@ -42,6 +45,17 @@ export default memo(({show, onClose, orderId}:Param) => {
|
||||
|
||||
//获取说明数据
|
||||
const [list, setList] = useState<any[]>([])
|
||||
const {fetchData: refundExplainFetchdata} = RefundExplainApi()
|
||||
const refundExplain = async () => {
|
||||
let res = await refundExplainFetchdata()
|
||||
setList(res.data.list)
|
||||
}
|
||||
const [reason, setReason] = useState({id:0, name:''})
|
||||
const reasonSelect = useCallback((e) => {
|
||||
setReason({...reason, name:e.name, id:e.id})
|
||||
submitData.current.return_explain = e.id
|
||||
closeReason()
|
||||
}, [])
|
||||
|
||||
|
||||
//备注
|
||||
@ -71,8 +85,6 @@ export default memo(({show, onClose, orderId}:Param) => {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
<Popup show={show} title="申请退款" onClose={onClose} >
|
||||
@ -80,7 +92,7 @@ export default memo(({show, onClose, orderId}:Param) => {
|
||||
<View className={styles.returnSaleInput_item}>
|
||||
<View className={styles.title}>退款说明</View>
|
||||
<View className={styles.select} onClick={() => setShowReason(true)}>
|
||||
<Text>请选择</Text>
|
||||
<Text>{reason.name||'请选择'}</Text>
|
||||
<Text className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></Text>
|
||||
</View>
|
||||
</View>
|
||||
@ -93,7 +105,7 @@ export default memo(({show, onClose, orderId}:Param) => {
|
||||
</View>
|
||||
</View>
|
||||
</Popup>
|
||||
<ReasonPopup show={showReason} onClose={closeReason} list={list} title="退款说明"/>
|
||||
<ReasonPopup defaultValue={reason.id} show={showReason} onClose={closeReason} list={list} title="退款说明" onSelect={reasonSelect}/>
|
||||
</>
|
||||
)
|
||||
})
|
@ -268,9 +268,9 @@ import styles from './index.module.scss'
|
||||
<SearchInput showBorder={false} title='下单时间' height={50}>
|
||||
<Text>{formatDateTime(orderDetail?.create_time)}</Text>
|
||||
</SearchInput>
|
||||
<SearchInput showBorder={false} title='付款时间' height={50}>
|
||||
<Text>{formatDateTime(orderDetail?.create_time)}</Text>
|
||||
</SearchInput>
|
||||
{(orderDetail?.payment_time)&&<SearchInput showBorder={false} title='付款时间' height={50}>
|
||||
<Text>{formatDateTime(orderDetail?.payment_time)}</Text>
|
||||
</SearchInput>}
|
||||
</View>
|
||||
<View className={styles.order_desc} onClick={() => setShowDesc(true)}>
|
||||
<View className={styles.order_desc_con}>订单备注</View>
|
||||
|
@ -45,18 +45,7 @@ export default memo(({order, comfirm = false}:Param) => {
|
||||
return `${order?.total_fabrics}种面料,${order?.total_colors}种颜色,共${order?.total_number}${order?.unit}`
|
||||
}, [order])
|
||||
|
||||
// const {
|
||||
// SaleOrderStatusBooking, // 待接单
|
||||
// SaleOrderStatusArranging, // 配布中
|
||||
// SaleOrderStatusArranged, // 已配布
|
||||
// SaleOrderStatusWaitingPayment, // 待付款
|
||||
// SaleOrderStatusWaitingDelivery, // 待发货
|
||||
// SaleOrderStatusWaitingReceipt, // 待收货
|
||||
// SaleOrderStatusAlreadyReceipt, // 已收货
|
||||
// SaleOrderStatusComplete, // 已完成
|
||||
// SaleOrderStatusRefund, // 已退款
|
||||
// SaleOrderStatusCancel, // 已取消
|
||||
// } = ORDER_STATUS
|
||||
|
||||
|
||||
//金额列表枚举
|
||||
const priceList = [
|
||||
|
@ -1,14 +1,8 @@
|
||||
import {
|
||||
GetSaleOrderDetailApi,
|
||||
EditSaleOrderRemarkApi,
|
||||
} from "@/api/order";
|
||||
import { GetOrderPayApi } from "@/api/orderPay";
|
||||
|
||||
import { SaleOrderOrderDetailApi } from "@/api/salesAfterOrder";
|
||||
import { alert, goLink } from "@/common/common";
|
||||
import { AFTER_ORDER_STATUS, ORDER_STATUS } from "@/common/enum";
|
||||
import { formatDateTime, formatImgUrl, formatPriceDiv } from "@/common/fotmat";
|
||||
import AfterOrderBtns from "@/components/afterOrderBtns";
|
||||
import OrderBtns from "@/components/orderBtns";
|
||||
import SearchInput from "@/components/searchInput";
|
||||
import { Image, Text, Textarea, View } from "@tarojs/components"
|
||||
import Taro, {useDidShow, usePullDownRefresh, useRouter } from "@tarojs/taro";
|
||||
@ -121,7 +115,6 @@ import styles from './index.module.scss'
|
||||
}, [])
|
||||
//物流成功上传
|
||||
const logisticsSuccess = useCallback(() => {
|
||||
console.log('12312132121113')
|
||||
setLogisticsShow(false)
|
||||
getSaleOrderPreView()
|
||||
}, [])
|
||||
@ -129,8 +122,6 @@ import styles from './index.module.scss'
|
||||
//显示生气记录
|
||||
const [applyRecord, setApplyRecord] = useState(false)
|
||||
|
||||
//货
|
||||
|
||||
return (
|
||||
<View className={styles.order_main}>
|
||||
<OrderState orderInfo={orderDetail}/>
|
||||
|
@ -12,6 +12,7 @@ import useLogin from "@/use/useLogin";
|
||||
import { useSelector } from "@/reducers/hooks";
|
||||
import useUploadCDNImg from "@/use/useUploadImage";
|
||||
import { IMG_CND_Prefix } from "@/common/constant";
|
||||
import useUserInfo from "@/use/useUserInfo";
|
||||
|
||||
export default () => {
|
||||
const { getPhoneNumber, getAdminUserInfo } = useLogin();
|
||||
@ -141,6 +142,14 @@ export default () => {
|
||||
}
|
||||
}
|
||||
|
||||
const {removeToken, removeSessionKey, removeUserInfo} = useUserInfo()
|
||||
const outLogin = () => {
|
||||
removeToken()
|
||||
removeSessionKey()
|
||||
removeUserInfo()
|
||||
goLink('/pages/index/index',{}, 'switchTab')
|
||||
}
|
||||
|
||||
return (
|
||||
<View className="user-edit">
|
||||
<View onClick={handleSelectRortrait} className="user-edit-portrait">
|
||||
@ -174,7 +183,7 @@ export default () => {
|
||||
</UserEditList>
|
||||
<UserEditList label="创建人" data={(formData as any)?.founder_user_name} placeholder="完善公司/组织信息" icon="" useIcon="true" />
|
||||
</View>
|
||||
{/* <Button hoverClass="none" className="user-edit-logout">退出当前账号</Button> */}
|
||||
<Button hoverClass="none" className="user-edit-logout" onClick={outLogin}>退出当前账号</Button>
|
||||
|
||||
<ModifyModal title="修改昵称" ref={ModifyIcknameEl} value={(formData as any)?.user_name} save={(value) => handleTextareaSave(value, "Ickname")} />
|
||||
<ModifyModal title="修改名称" ref={ModifyCompanyNameEl} value={(formData as any)?.company_name} save={(value) => handleTextareaSave(value, "companyName")} />
|
||||
|
@ -171,6 +171,13 @@ export const useRequest = (options:option = {
|
||||
stateRef.current.msg = msg
|
||||
stateRef.current.data = data
|
||||
stateRef.current.total = data?.list ? data?.total : 0
|
||||
if(code !== 0) {
|
||||
Taro.showToast({
|
||||
title: `${msg}`,
|
||||
icon: 'none'
|
||||
})
|
||||
console.log('错误::',msg)
|
||||
}
|
||||
}else{
|
||||
if (statusCode === 401) {
|
||||
removeToken()
|
||||
@ -189,6 +196,7 @@ export const useRequest = (options:option = {
|
||||
stateRef.current.success = false
|
||||
stateRef.current.error = true
|
||||
stateRef.current.msg = e.errMsg
|
||||
console.log('后台错误信息::',e.errMsg)
|
||||
|
||||
}
|
||||
stateRef.current.error = false
|
||||
|
Loading…
x
Reference in New Issue
Block a user