商城测试版v8

This commit is contained in:
czm 2022-07-28 20:37:43 +08:00
parent 84bc43fbb9
commit d30fdd28a8
19 changed files with 138 additions and 399 deletions

View File

@ -4,8 +4,7 @@ import { Provider } from 'react-redux'
import configStore from './store' import configStore from './store'
import './app.scss' import './app.scss'
import Taro, { useDidShow} from '@tarojs/taro' import Taro, { useDidShow} from '@tarojs/taro'
import { analysisShortCodeApi } from './common/shortCode' import { shareShop } from './common/util'
import { IMG_CND_Prefix } from './common/constant'
const store = configStore() const store = configStore()
const App:FC = (params) => { const App:FC = (params) => {
@ -14,38 +13,8 @@ const App:FC = (params) => {
withShareTicket: true withShareTicket: true
}) })
useDidShow(() => { //分享
console.log('params:',params) shareShop()
})
const page = Taro.getCurrentInstance().page
console.log('res:::', page)
if(page && page.onShareAppMessage) {
//当有分享参数时,绑定上下级
if(page.options?.share) {
analysisShortCodeApi(page.options.share)
}
page.onShareAppMessage = (res) => {
let path = ''
let title = ''
let imageUrl = ''
let sortCode = Taro.getStorageSync('sort_code')?JSON.parse(Taro.getStorageSync('sort_code')):''
if(res.from === 'button') {
path = `/pages/details/index?share=${sortCode.shareShortDetail.code}`
title = sortCode.shareShortDetail.title
imageUrl = sortCode.shareShortDetail.img
} else {
path = `/pages/index/index?share=${sortCode.shareShortPage.code}`
title = sortCode.shareShortPage.title
imageUrl = sortCode.shareShortPage.img
}
return {
title,
path,
imageUrl,
}
}
}
return ( return (
<ContextBlueTooth> <ContextBlueTooth>

View File

@ -109,16 +109,24 @@ export const retrieval = (data: any, rules?: Object, message: string="请填写
title,icon: "error" title,icon: "error"
}) })
}, },
loading(title: string){ loading(title: string, mask: true|false = false){
Taro.showToast({ Taro.showToast({
title,icon: "loading" title,icon: "loading",
mask
}) })
}, },
none(title: string){ none(title: string){
Taro.showToast({ Taro.showToast({
title,icon: "none" title,icon: "none"
}) })
}, },
showLoading(title: string, mask: true|false = true) {
Taro.showLoading({title, mask})
},
hideLoading() {
Taro.hideLoading()
}
} }
// 金额千位分割符 // 金额千位分割符

View File

@ -4,7 +4,7 @@
// export const BASE_URL = `http://10.0.0.5:50001/lymarket` // export const BASE_URL = `http://10.0.0.5:50001/lymarket`
// export const BASE_URL = `http://192.168.0.89:40001/lymarket` // export const BASE_URL = `http://192.168.0.89:40001/lymarket`
// export const BASE_URL = `http://192.168.1.165:40001/lymarket` // 王霞 // export const BASE_URL = `http://192.168.1.165:40001/lymarket` // 王霞
// export const BASE_URL = `https://test.zzfzyc.com/lymarket` // 测试环境 export const BASE_URL = `https://test.zzfzyc.com/lymarket` // 测试环境
// export const BASE_URL = `http://192.168.1.9:40001/lymarket` // 发 // export const BASE_URL = `http://192.168.1.9:40001/lymarket` // 发
// export const BASE_URL = `http://192.168.1.9:50005/lymarket` // 发 // export const BASE_URL = `http://192.168.1.9:50005/lymarket` // 发
// export const BASE_URL = `http://192.168.1.30:50001/lymarket` // 发 // export const BASE_URL = `http://192.168.1.30:50001/lymarket` // 发
@ -12,7 +12,7 @@
// export const BASE_URL = `https://www.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.5:40001/lymarket` // 王霞
// export const BASE_URL = `http://192.168.1.7:50002/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.42:50001/lymarket` // 杰
// CDN // CDN
// 生成密钥 // 生成密钥

View File

@ -1,36 +0,0 @@
import Taro from "@tarojs/taro";
import { useStore } from "vuex";
import { computed } from "@vue/runtime-core";
/**
*
* @param {String} token
*/
export const setToken = (token) => {
Taro.setStorageSync('token', token)
}
/**
*
* @param {Object} userinfo
*/
export const setUserInfo = (userinfo) => {
Taro.setStorageSync('userInfo', userinfo)
}
/**
* 检查登录
*/
export const checkLogin = () => {
const store = useStore()
const token = computed(() => store.state.token)
console.log('checklogin token', token);
// 本地调试屏蔽
if (token == '') {
Taro.redirectTo({
url: '/pages/login/index',
})
}
}

View File

@ -1,3 +1,7 @@
import { formatImgUrl } from "./fotmat";
import { analysisShortCodeApi } from "./shortCode";
import Taro from '@tarojs/taro'
/** /**
* *
* @param {*} fn * @param {*} fn
@ -103,3 +107,35 @@ export const throttle = (fn, delay) => {
return 3 return 3
} }
} }
//全局分享监听
export const shareShop = () => {
const page = Taro.getCurrentInstance().page
//当有分享参数时,绑定上下级
if(page && page.options?.share) {
analysisShortCodeApi(page.options.share)
}
if(page && page.onShareAppMessage) {
page.onShareAppMessage = (res) => {
let path = ''
let title = ''
let imageUrl = ''
let sortCode = Taro.getStorageSync('sort_code')?JSON.parse(Taro.getStorageSync('sort_code')):''
let pageInfo:any = page
if(res.from === 'button') {
path = `/pages/details/index?share=${sortCode.shareShortDetail.code}`
title = sortCode.shareShortDetail.title
imageUrl = sortCode.shareShortDetail.img
} else {
path = `/pages/index/index?share=${sortCode.shareShortPage.code}`
title = sortCode.shareShortPage.title
imageUrl = (pageInfo.route === 'pages/user/index')?formatImgUrl('/mall/share_img_02.png') : sortCode.shareShortPage.img
}
return {
title,
path,
imageUrl,
}
}
}
}

View File

@ -1,130 +0,0 @@
import { GetProductKindListApi } from "@/api/material";
import Popup, {Params as PopuParams} from "@/components/popup"
import { Input, ScrollView, Text, Textarea, View } from "@tarojs/components"
import { useDidShow } from "@tarojs/taro";
import classnames from "classnames";
import { useEffect, useState } from "react";
import styles from './index.module.scss'
type params = {
onFiltr?: (val:object) => void
} & PopuParams
export default ({onClose, onFiltr, show = false}:params) => {
//搜索条件
const [filterObj, setFilterObj] = useState({
seriesId: '',
minWidth: '',
maxWidth: '',
minWeight: '',
maxWeight: '',
element: ''
})
//获取系列
const {fetchData: kindFetchData} = GetProductKindListApi()
const [kindList, setKindList] = useState<any[]>([])
const getCategoryList = async () => {
let {data} = await kindFetchData()
setKindList(data.list)
}
useEffect(() => {
show&&getCategoryList()
}, [show])
//切换系列
const changeKind = (e) => {
setFilterObj({...filterObj, seriesId:e.id})
}
const onCloseEven = () => {
onClose?.()
}
const onRest = () => {
console.log('12123')
setFilterObj({
seriesId: '',
minWidth: '',
maxWidth: '',
minWeight: '',
maxWeight: '',
element: ''
})
}
useEffect(() => {
console.log(filterObj)
}, [filterObj])
const onVerify = () => {
console.log(filterObj)
onFiltr?.(filterObj)
}
const setNumber = (e, field) => {
console.log(e)
let num = parseFloat(e.detail.value)
if(isNaN(num)) {
filterObj[field] = null
} else {
filterObj[field] = parseFloat(num.toFixed(2))
}
setFilterObj({...filterObj})
}
const setElement = (e) => {
let res = e.detail.value
setFilterObj({...filterObj, element:res})
}
return (
<Popup position="right" show={show} showTitle={false} onClose={() => onCloseEven()} showIconButton={true}>
<View className={styles.popup_main}>
<View className={styles.popup_title}></View>
<ScrollView scrollY className={styles.scroll}>
<View className={styles.popup_filter}>
<View className={styles.popup_filter_item}>
<View className={styles.title}></View>
<View className={styles.btn_list}>
{kindList.map(item => <View key={item.id} onClick={() => changeKind(item)} className={classnames(styles.btn_item, (filterObj.seriesId == item.id)&&styles.select_btn_item)}>{item.name}</View>)}
</View>
</View>
<View className={styles.popup_filter_item}>
<View className={styles.title}></View>
<View className={styles.btn_list_input}>
<View className={styles.btn_width}><Input value={filterObj.minWidth} type="digit" onBlur={(e) => setNumber(e,'minWidth')} placeholder="自定义最低值" placeholderStyle="font-size: 26rpx"/></View>
<Text></Text>
<View className={styles.btn_width}><Input value={filterObj.maxWidth} type="digit" onBlur={(e) => setNumber(e,'maxWidth')} placeholder="自定义最高值" placeholderStyle="font-size: 26rpx"/></View>
<View className={styles.unit}>cm</View>
</View>
</View>
<View className={styles.popup_filter_item}>
<View className={styles.title}></View>
<View className={styles.btn_list_input}>
<View className={styles.btn_width}><Input type="digit" value={filterObj.minWeight} onBlur={(e) => setNumber(e,'minWeight')} placeholder="自定义最低值" placeholderStyle="font-size: 26rpx"/></View>
<Text></Text>
<View className={styles.btn_width}><Input type="digit" value={filterObj.maxWeight} onBlur={(e) => setNumber(e,'maxWeight')} placeholder="自定义最高值" placeholderStyle="font-size: 26rpx"/></View>
<View className={styles.unit}>g</View>
</View>
</View>
<View className={styles.popup_filter_item}>
<View className={styles.title}></View>
<View className={styles.btn_list_element}>
<Textarea placeholder="请输入" cursorSpacing={60} value={filterObj.element} onInput={(e) => setElement(e)}/>
</View>
</View>
<View className="common_safe_area_y"></View>
</View>
</ScrollView>
<View className={styles.btns_con}>
<View className={styles.btns_two}>
<View className={styles.rest_btn} onClick={() => onRest()}></View>
<View className={styles.verify_btn } onClick={() => onVerify()}></View>
</View>
</View>
</View>
</Popup>
)
}

View File

@ -235,6 +235,7 @@ export default memo(({orderInfo, showStatus = 'detail', onClick}:Param) => {
title: '确定收货?', title: '确定收货?',
success: async function (res) { success: async function (res) {
if (res.confirm) { if (res.confirm) {
alert.showLoading('收货中', true)
let res = await receiveOrderFetchData({sale_order_id: orderInfo?.orderId}) let res = await receiveOrderFetchData({sale_order_id: orderInfo?.orderId})
if(res.success){ if(res.success){
onClick?.(6) onClick?.(6)
@ -242,6 +243,7 @@ export default memo(({orderInfo, showStatus = 'detail', onClick}:Param) => {
} else { } else {
alert.error('收货失败') alert.error('收货失败')
} }
alert.hideLoading()
} else if (res.cancel) { } else if (res.cancel) {
console.log('用户点击取消') console.log('用户点击取消')
} }
@ -257,12 +259,14 @@ export default memo(({orderInfo, showStatus = 'detail', onClick}:Param) => {
success: async function async (res) { success: async function async (res) {
if(res.confirm) { if(res.confirm) {
await openSubscriptionMessage({orderId: orderInfo?.orderId, scenes: ApplyGoods.value}) await openSubscriptionMessage({orderId: orderInfo?.orderId, scenes: ApplyGoods.value})
alert.showLoading('申请中', true)
let res = await fetchDataApplyRefund({sale_order_id: orderInfo?.orderId}) let res = await fetchDataApplyRefund({sale_order_id: orderInfo?.orderId})
if(res.success) { if(res.success) {
alert.success('申请成功') alert.success('申请成功')
} else { } else {
alert.error('申请失败') alert.error('申请失败')
} }
alert.hideLoading()
onClick?.(8) onClick?.(8)
} else if (res.cancel) { } else if (res.cancel) {
console.log('用户点击取消') console.log('用户点击取消')
@ -279,7 +283,6 @@ export default memo(({orderInfo, showStatus = 'detail', onClick}:Param) => {
goLink('/pages/applyAfterSales/index',{id:orderInfo?.orderId}) goLink('/pages/applyAfterSales/index',{id:orderInfo?.orderId})
} }
//显示更多按钮 //显示更多按钮
const [showMore, setShowMore] = useState(false) const [showMore, setShowMore] = useState(false)
const styleTop = useMemo(() => { const styleTop = useMemo(() => {
@ -299,7 +302,6 @@ export default memo(({orderInfo, showStatus = 'detail', onClick}:Param) => {
{/* <View className={styles.more_bg} catchMove onClick={() => setShowMore(false)}></View> */} {/* <View className={styles.more_bg} catchMove onClick={() => setShowMore(false)}></View> */}
</View>} </View>}
</View>} </View>}
<View className={styles.list_scroll}> <View className={styles.list_scroll}>
{orderBtnsShowList.map((item, index) => {orderBtnsShowList.map((item, index) =>
((orderBtnsShowList.length - 3) <= index)&&<View key={item.id} className={classnames(styles.btns_item)} onClick={() => submitBtns(item.id, index)}>{item.label}</View> ((orderBtnsShowList.length - 3) <= index)&&<View key={item.id} className={classnames(styles.btns_item)} onClick={() => submitBtns(item.id, index)}>{item.label}</View>

View File

@ -1,163 +0,0 @@
import { EditSaleOrderAddressApi, EditSaleOrderShipmentModeApi } from "@/api/order";
import { alert } from "@/common/common";
import { ORDER_STATUS } from "@/common/enum";
import { debounce } from "@/common/util";
import AddressList from "@/components/AddressList";
import Popup from "@/components/popup";
import { Text, View } from "@tarojs/components"
import classnames from "classnames";
import { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useState } from "react";
import styles from './index.module.scss'
export type AddressInfoParam = {
province_name: string,
city_name: string,
district_name: string,
address_detail: string,
id?: number,
name: string,
phone: string,
}
type Param = {
onSelect?: (val:any) => void, //选择地址
defaultValue?: AddressInfoParam|null, //默认值
disabled?: false|true, //true禁用后只用于展示
onChangeShipmentMode?: (val: number) => void, //返回收货方式
status?: 1|2, //1确认订单时使用 2订单流程
orderInfo?: {
orderId: number //订单id
shipment_mode: 1|2, //1自提 2物流
status: number //订单状态
}
}
export default memo(forwardRef(({onSelect, onChangeShipmentMode, defaultValue = null, orderInfo, status = 2}: Param, ref) => {
const [showAddressList, setShowAddressList] = useState(false)
useEffect(() => {
setUserInfo(() => defaultValue)
}, [defaultValue])
const [userInfo, setUserInfo] = useState<any>()
//地址格式
const formatAddress = useMemo(() => {
if(userInfo)
return userInfo.province_name + userInfo.city_name + userInfo.district_name + userInfo.address_detail
}, [userInfo])
const changeShow = () => {
if(receivingStatus == 2 && !logisticsShow)
setShowAddressList(() => true)
}
useEffect(() => {
if(orderInfo)
setReceivingStatus(() => orderInfo.shipment_mode||2)
}, [orderInfo])
//把内部方法提供给外部
useImperativeHandle(ref, () => ({
changeShow
}))
//收货方法,1:自提2物流
const [receivingStatus, setReceivingStatus] = useState(2)
const {fetchData: shipmentModeFetchData} = EditSaleOrderShipmentModeApi()
const onReceivingStatus = (value, e) => {
e.stopPropagation()
changeReceivingStatus(value)
}
const changeReceivingStatus = debounce(async (value) => {
if(!orderInfo) return false
if(status == 1) {
onChangeShipmentMode?.(value)
setReceivingStatus(value)
return false
}
alert.loading('正在修改')
const res = await shipmentModeFetchData({id: orderInfo.orderId, shipment_mode:value})
if(res.success) {
alert.success('收货方式修改成功')
onChangeShipmentMode?.(value)
setReceivingStatus(value)
} else {
alert.none(res.msg)
}
}, 10)
//修改地址
const [addressId, setAddressId] = useState(0)
const {fetchData: addressFetchData} = EditSaleOrderAddressApi()
const getAddress = async (value) => {
if(!orderInfo) return false
if(status == 1) {
setShowAddressList(() => false)
setAddressId(value.id)
setUserInfo(() => value)
return false
}
alert.loading('正在修改')
const res = await addressFetchData({id: orderInfo.orderId, address_id: value.id})
if(res.success) {
alert.success('地址修改成功')
onSelect?.(value)
setShowAddressList(() => false)
setAddressId(value.id)
setUserInfo(() => value)
} else {
alert.none(res.msg)
}
}
//订单状态
const {
SaleOrderStatusWaitingReceipt,
SaleOrderStatusAlreadyReceipt,
SaleOrderStatusComplete,
SaleOrderStatusRefund,
SaleOrderStatusCancel
} = ORDER_STATUS
//根据订单状态判断是否显示物流
const logisticsShowList = [SaleOrderStatusWaitingReceipt.value, SaleOrderStatusAlreadyReceipt.value, SaleOrderStatusComplete.value, SaleOrderStatusRefund.value, SaleOrderStatusCancel.value]
const logisticsShow = useMemo(() => {
return logisticsShowList.includes(orderInfo?.status as number)
}, [orderInfo])
return (
<View>
<View className={styles.order_address} onClick={() => changeShow()}>
<View className={classnames(styles.order_address_icon, 'iconfont', receivingStatus == 2?'icon-daohang':'icon-fahuo')}></View>
<View className={styles.order_address_text_con}>
<View className={styles.order_address_text_title}>
<Text className={styles.address_text}>{formatAddress}</Text>
{(receivingStatus == 2 && !logisticsShow)&&<Text className={classnames(styles.moreIconfont,'iconfont icon-a-moreback')}></Text>}
</View>
<View className={styles.order_address_text_name}>
<Text>{userInfo?.name}</Text>
<Text>{userInfo?.phone}</Text>
</View>
</View>
{!logisticsShow&&<View className={styles.updateBtn}>
<View className={styles.updateBtn_list}>
<View className={classnames(styles.updateBtn_item, receivingStatus==1&&styles.updateBtn_item_select)} onClick={(e) => onReceivingStatus(1,e)}></View>
<View className={classnames(styles.updateBtn_item, receivingStatus==2&&styles.updateBtn_item_select)} onClick={(e) => onReceivingStatus(2,e)}></View>
</View>
<View style={{transform: receivingStatus==1?'translateX(0)':'translateX(100%)'}} className={classnames(styles.updateBtn_select)}></View>
</View>||
<View className={styles.logisticsBtn}>
</View>}
</View>
<Popup show={showAddressList} showTitle={false} onClose={() => setShowAddressList(false)}>
<View className={styles.order_address_list}>
<View className={styles.order_address_title}></View>
<View className={styles.addressList_con}>
<AddressList onSelect={getAddress} id={addressId}/>
</View>
</View>
</Popup>
</View>
)
}))

View File

@ -98,16 +98,17 @@
width: 152px; width: 152px;
height: 72px; height: 72px;
background: #ffffff; background: #ffffff;
border: 2px solid #dddddd; border: 2px solid #007AFF;
border-radius: 38px; border-radius: 38px;
position: absolute; position: absolute;
bottom: 10px; bottom: 10px;
right: 10px; right: 10px;
z-index: 999; z-index: 999;
font-size: 28px; font-size: 28px;
color: #707070; color: #007AFF;
text-align: center; text-align: center;
line-height: 72px; line-height: 72px;
} }
.order_address_text_no{ .order_address_text_no{
flex: 1; flex: 1;

View File

@ -119,7 +119,7 @@ export default memo(({show = false, onClose, orderInfo, onSubmitSuccess}:Param)
if((submitData.payment_method == PaymentMethodAccountPeriod.value || orderInfo?.status == SaleorderstatusWaitingPrePayment.value)&& orderInfo?.sale_mode != 1) { if((submitData.payment_method == PaymentMethodAccountPeriod.value || orderInfo?.status == SaleorderstatusWaitingPrePayment.value)&& orderInfo?.sale_mode != 1) {
await openSubscriptionMessage({orderId: orderInfo?.id, scenes: ToPay.value}) await openSubscriptionMessage({orderId: orderInfo?.id, scenes: ToPay.value})
} }
alert.loading('正在支付') alert.showLoading('正在支付')
let res:any = null let res:any = null
if(orderInfo?.should_collect_order_id) { if(orderInfo?.should_collect_order_id) {
res = await submitFetchData(submitData) res = await submitFetchData(submitData)
@ -132,6 +132,7 @@ export default memo(({show = false, onClose, orderInfo, onSubmitSuccess}:Param)
} else { } else {
alert.none(res.msg) alert.none(res.msg)
} }
alert.hideLoading()
}, 800) }, 800)
//预付款 //预付款

View File

@ -27,7 +27,8 @@ type ListParam = {
weight: string, weight: string,
length: string, length: string,
sale_price: string, sale_price: string,
total_price: string total_price: string,
weight_error: string
} }
export default memo(({show = true, onClose, company, orderInfo}:Param) => { export default memo(({show = true, onClose, company, orderInfo}:Param) => {
const [detail, setDetail] = useState<any>() const [detail, setDetail] = useState<any>()
@ -53,6 +54,7 @@ export default memo(({show = true, onClose, company, orderInfo}:Param) => {
weight: formatWeightDiv(citem.actual_weight||citem.estimate_weight).toString(), weight: formatWeightDiv(citem.actual_weight||citem.estimate_weight).toString(),
sale_price: formatPriceDiv(citem.sale_price).toString(), sale_price: formatPriceDiv(citem.sale_price).toString(),
total_price: formatPriceDiv(citem.total_sale_price||citem.estimate_amount).toString(), total_price: formatPriceDiv(citem.total_sale_price||citem.estimate_amount).toString(),
weight_error: formatWeightDiv(citem.weight_error).toString()
}) })
}) })
}) })
@ -90,7 +92,7 @@ export default memo(({show = true, onClose, company, orderInfo}:Param) => {
show_actual_amount: orderInfo.actual_amount > 0, show_actual_amount: orderInfo.actual_amount > 0,
wait_pay_amount: formatPriceDiv(orderInfo.wait_pay_amount).toString(), wait_pay_amount: formatPriceDiv(orderInfo.wait_pay_amount).toString(),
show_wait_pay_amount: orderInfo.wait_pay_amount > 0, show_wait_pay_amount: orderInfo.wait_pay_amount > 0,
show_barcode: true show_barcode: true,
})) }))
} }
}, [orderInfo]) }, [orderInfo])

View File

@ -230,6 +230,7 @@ import styles from './index.module.scss'
const list = orderDetail?.delivery_appendix_url?.map(item => { const list = orderDetail?.delivery_appendix_url?.map(item => {
return formatImgUrl(item, '!w800') return formatImgUrl(item, '!w800')
}) })
if(list?.length <= 0) return alert.error('暂无图片')
Taro.previewImage({ Taro.previewImage({
current: list[0], // 当前显示 current: list[0], // 当前显示
urls: list // 需要预览的图片http链接列表 urls: list // 需要预览的图片http链接列表

View File

@ -62,10 +62,12 @@ export default memo(({show, onClose, onSubmit, id}:Param) => {
const formatCount = useCallback((item) => { const formatCount = useCallback((item) => {
return formatDetailOrder?.sale_mode == 0? item.roll : Number(item.length / 100) return formatDetailOrder?.sale_mode == 0? item.roll : Number(item.length / 100)
}, [formatDetailOrder]) }, [formatDetailOrder])
//对应单价 //对应单价
const standardPrice = useCallback(price => { const standardPrice = useCallback(price => {
return formatPriceDiv(price).toLocaleString() + '/' + (formatDetailOrder?.sale_mode == 1?'m':'kg') return formatPriceDiv(price).toLocaleString() + '/' + (formatDetailOrder?.sale_mode == 1?'m':'kg')
}, [formatDetailOrder]) }, [formatDetailOrder])
//数量格式 //数量格式
const numText = useMemo(() => { const numText = useMemo(() => {
if(formatDetailOrder) { if(formatDetailOrder) {

View File

@ -81,7 +81,8 @@ export default memo(({value, onClickBtn}: Param) => {
//获取面料数组 //获取面料数组
const list = useMemo(() => { const list = useMemo(() => {
return value?.is_quality_check?value?.quality_check_pass_product:value?.product_list let res = value?.is_quality_check? value?.quality_check_pass_product : value?.product_list
return res || []
}, [value]) }, [value])
@ -140,7 +141,7 @@ export default memo(({value, onClickBtn}: Param) => {
<Text>{value?.order_no}</Text> <Text>{value?.order_no}</Text>
</View> </View>
</View>} </View>}
{(list?.length <= 0 && value?.is_quality_check) && <View className={styles.inspection}> {(list?.length <= 0 && value?.is_quality_check) && <View className={styles.inspection} onClick={() => goLink('/pages/salesAfter/index', {id: value?.id})}>
<Text className={classnames('iconfont icon-zhuyi', styles.miconfont)}></Text> <Text className={classnames('iconfont icon-zhuyi', styles.miconfont)}></Text>
退 退
</View>} </View>}

View File

@ -139,13 +139,15 @@
padding: 0 5px 15px; padding: 0 5px 15px;
box-sizing: border-box; box-sizing: border-box;
.card_main_title_order{ .card_main_title_order{
flex:1 flex:1;
font-size: 28px;
font-weight: 700;
} }
.order_more{ .order_more{
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
font-size: 26px; font-size: 25px;
color: #707070; color: #707070;
text{ text{
width: auto; width: auto;
@ -254,6 +256,7 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
height: 90px; height: 90px;
position: relative;
} }
.card-main-list-content-item-left { .card-main-list-content-item-left {
@ -263,8 +266,14 @@
color: #707070; color: #707070;
display: flex; display: flex;
align-items: center; align-items: center;
min-width: 260px;
}
.card-main-list-content-item .label {
width: 100%;
text-align: right;
padding-right: 10px;
font-size: 26px;
} }
.card-main-list-content-item-left text { .card-main-list-content-item-left text {
margin-right: 35px; margin-right: 35px;
font-size: 56px; font-size: 56px;
@ -274,6 +283,12 @@
.card-main-list-content-item-right text { .card-main-list-content-item-right text {
font-size: 30px; font-size: 30px;
} }
.card-main-list-content-item .customer {
position: absolute;
opacity: 0;
width: 100%;
height: 100%;
}
.auth { .auth {
margin-top: 115px; margin-top: 115px;

View File

@ -6,7 +6,7 @@ import { useSelector } from "@/reducers/hooks";
import { alert, goLink } from "@/common/common"; import { alert, goLink } from "@/common/common";
import useLogin from '@/use/useLogin' import useLogin from '@/use/useLogin'
import { BASE_URL } from '@/common/constant' import { BASE_URL } from '@/common/constant'
import Taro from "@tarojs/taro"; import Taro, { useShareAppMessage } from "@tarojs/taro";
import { userassets, userorderStatistics } from "@/api/mine" import { userassets, userorderStatistics } from "@/api/mine"
import { formatPriceDiv } from "@/common/fotmat" import { formatPriceDiv } from "@/common/fotmat"
import { useDidShow, } from '@tarojs/taro' import { useDidShow, } from '@tarojs/taro'
@ -23,11 +23,18 @@ export default () => {
const [current_githash,setCurrent_githash] = useState(CURRENT_GITHASH) const [current_githash,setCurrent_githash] = useState(CURRENT_GITHASH)
const [current_env,setCurrent_env] = useState(CURRENT_ENV) const [current_env,setCurrent_env] = useState(CURRENT_ENV)
useEffect(() => { //分享
// getSelfUserInfo().then().catch(() => { useShareAppMessage(res => {
// alert.none("授权失败,请授权后再使用"); if (res.from !== 'button') {
// }); // 来自页面内转发按钮
}, []); console.log('点击个德')
}
return {
title: '转发啦',
path: '/page/user?id=123'
}
})
const handleAuth = async () => { const handleAuth = async () => {
console.log('授权面版') console.log('授权面版')
getSelfUserInfo().then().catch(() => { getSelfUserInfo().then().catch(() => {
@ -121,7 +128,8 @@ const Header = memo((props: any) => {
} }
const navTo = () => { const navTo = () => {
Taro.navigateTo({ Taro.navigateTo({
url: '/pages/certification/index' // url: '/pages/certification/index'
url: '/pages/userEdit/index'
}) })
} }
return ( return (
@ -321,28 +329,34 @@ const Assets = (props: any) => {
// 功能 // 功能
const Main = memo(() => { const Main = memo(() => {
let menu = [ let menu = [
{ text: "地址管理", icon: "icon-daohang", url: "/pages/addressManager/index" }, { text: "我的客服", icon: "icon-wodekefu", type: 'customer', label:'(0757) 8270 6695'},
{ text: "码单管理", icon: "icon-a-yuanmadanmadanguanli", url: "/pages/weightList/index" }, { text: "地址管理", icon: "icon-daohang", url: "/pages/addressManager/index", type: 'url' },
{ text: "我的收藏", icon: "icon-shoucang", url: "/pages/collection/index" }, { text: "码单管理", icon: "icon-a-yuanmadanmadanguanli", url: "/pages/weightList/index", type: 'url' },
{ text: "颜色对比", icon: "icon-yanseduibi", url: "/pages/sampleComparison/index" }, { text: "我的收藏", icon: "icon-shoucang", url: "/pages/collection/index", type: 'url' },
{ text: "颜色对比", icon: "icon-yanseduibi", url: "/pages/sampleComparison/index", type: 'url' },
// { text: "分享推广", icon: "icon-fenxiang" }, // { text: "分享推广", icon: "icon-fenxiang" },
{ text: "邀请码", icon: "icon-yaoqingtuandui", url: "/pages/bindSalesman/index" } { text: "邀请码", icon: "icon-yaoqingma", url: "/pages/bindSalesman/index", type: 'url' },
] ]
const navigation = (item) => {
if(item.type === 'url') goLink(item.url)
}
return ( return (
<View className={`${styles.crad} ${styles['card-main']} ${styles['card-feature']}`}> <View className={`${styles.crad} ${styles['card-main']} ${styles['card-feature']}`}>
<View className={styles['card-main-list-content']}> <View className={styles['card-main-list-content']}>
{ {
menu.map((item, index) => { menu.map((item, index) => {
return ( return (
<Navigator hoverClass="none" url={item.url} key={index} className={styles['card-main-list-content-item']}> <View hoverClass="none" onClick={() => navigation(item)} key={index} className={styles['card-main-list-content-item']}>
<View className={styles['card-main-list-content-item-left']}> <View className={styles['card-main-list-content-item-left']}>
<Text className={`iconfont ${item.icon}`}></Text> <Text className={`iconfont ${item.icon}`}></Text>
<View>{item.text}</View> <View>{item.text}</View>
</View> </View>
<View className={styles.label}>{item.label}</View>
<View className={styles['card-main-list-content-item-right']}> <View className={styles['card-main-list-content-item-right']}>
<Text className="iconfont icon-a-moreback"></Text> <Text className="iconfont icon-a-moreback"></Text>
</View> </View>
</Navigator> {item.type === 'customer' && <Button openType="contact" className={styles.customer}></Button>}
</View>
) )
}) })
} }

View File

@ -180,13 +180,13 @@ export default () => {
</View> </View>
<View className="user-edit-content"> <View className="user-edit-content">
<View className="user-edit-content-title"><Text /> </View> <View className="user-edit-content-title"><Text /> </View>
<UserEditList onClick={() => (ModifyCompanyNameEl.current as any).setModalShow(true)} data={(formData as any)?.company_name} label="名称" placeholder="待绑定" icon="" /> <UserEditList onClick={() => (ModifyCompanyNameEl.current as any).setModalShow(true)} data={(formData as any)?.company_name} label="组织名称" placeholder="待绑定" icon="" />
<UserEditList label="类型" placeholder="完善公司/组织信息" icon=""> <UserEditList label="组织类型" placeholder="完善公司/组织信息" icon="">
<Picker mode="selector" range={comanyTypeDataFormat as any} rangeKey="name" value={(formData as any)?.purchaser_type} onChange={handleCompanyType}> <Picker mode="selector" range={comanyTypeDataFormat as any} rangeKey="name" value={(formData as any)?.purchaser_type} onChange={handleCompanyType}>
{formData?.purchaser_type_name} {formData?.purchaser_type_name}
</Picker> </Picker>
</UserEditList> </UserEditList>
<UserEditList onClick={() => onNavigate("/pages/certification/index")} label="我的认证" placeholder="待绑定" icon=""> <UserEditList label="我的认证" placeholder="待绑定" icon="" useIcon="true">
<View className={`user-edit-content-company ${(formData as any)?.authentication_status == 4 && "user-edit-content-company-adopt"}`}> <View className={`user-edit-content-company ${(formData as any)?.authentication_status == 4 && "user-edit-content-company-adopt"}`}>
<Text className="iconfont " /> {(formData as any)?.authentication_status == 4 ? "已认证" : "未认证"} <Text className="iconfont " /> {(formData as any)?.authentication_status == 4 ? "已认证" : "未认证"}
</View> </View>

View File

@ -1,6 +1,6 @@
@font-face { @font-face {
font-family: "iconfont"; /* Project id 2987621 */ font-family: "iconfont"; /* Project id 2987621 */
src: url('iconfont.ttf?t=1657712890419') format('truetype'); src: url('iconfont.ttf?t=1658997423433') format('truetype');
} }
.iconfont { .iconfont {
@ -11,6 +11,22 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.icon-wodekefu:before {
content: "\e67a";
}
.icon-yaoqingma:before {
content: "\e679";
}
.icon-gengduo:before {
content: "\e677";
}
.icon-shanchu-2:before {
content: "\e678";
}
.icon-shangchuanzhaopian:before { .icon-shangchuanzhaopian:before {
content: "\e676"; content: "\e676";
} }

Binary file not shown.