电子商城测试版v3

This commit is contained in:
czm 2022-06-30 20:31:51 +08:00
parent d0d4219413
commit 4ac7890915
22 changed files with 452 additions and 107 deletions

View File

@ -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",
})
}

View File

@ -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",
})
}

View File

@ -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",
})
}

View File

@ -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
// 生成密钥

View 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;
}
}
}

View 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>
)
})

View File

@ -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>

View File

@ -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)

View File

@ -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])
//预览图片

View File

@ -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;
}
}
}
}

View 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

View File

@ -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>)}

View File

@ -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>

View File

@ -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>

View File

@ -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>
)
}

View File

@ -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>
)

View File

@ -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}/>
</>
)
})

View File

@ -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>

View File

@ -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 = [

View File

@ -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}/>

View File

@ -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")} />

View File

@ -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