feat(完成码单):

This commit is contained in:
czm 2022-12-30 16:03:05 +08:00
parent c5cbf0d196
commit 3e688d7893
9 changed files with 225 additions and 182 deletions

View File

@ -65,3 +65,14 @@ export const CustomPrintCalculationApi = () => {
method: 'post', method: 'post',
}) })
} }
/**
*
* @returns
*/
export const DeleteCustomCodeApi = () => {
return useRequest({
url: '/v1/mall/customPrint',
method: 'delete',
})
}

View File

@ -21,4 +21,8 @@
margin-right: 24px; margin-right: 24px;
} }
} }
.del_btn {
color: #e9546aff;
border: 1px solid #e9546aff;
}
} }

View File

@ -1,15 +1,17 @@
import { View } from '@tarojs/components' import { View } from '@tarojs/components'
import classNames from 'classnames'
import styles from './index.module.scss' import styles from './index.module.scss'
export type BottomItem = 'del'|'preview'|'save' export type BottomItem = 'del'|'preview'|'save'
interface Param { interface Param {
onClick?: (val: BottomItem) => void onClick?: (val: BottomItem) => void
delStatus: boolean
} }
export default (props: Param) => { export default (props: Param) => {
const { onClick } = props const { onClick, delStatus } = props
return <View> return <View>
<View className={styles.bottom_btn}> <View className={styles.bottom_btn}>
<View className={styles.bottom_btn_item} onClick={() => onClick?.('del')}></View> {delStatus && <View className={classNames(styles.bottom_btn_item, styles.del_btn)} onClick={() => onClick?.('del')}></View>}
<View className={styles.bottom_btn_item} onClick={() => onClick?.('preview')}></View> <View className={styles.bottom_btn_item} onClick={() => onClick?.('preview')}></View>
<View className={styles.bottom_btn_item} onClick={() => onClick?.('save')}></View> <View className={styles.bottom_btn_item} onClick={() => onClick?.('save')}></View>
</View> </View>

View File

@ -73,7 +73,7 @@ const Index = memo((props: IndexParam) => {
} }
}, [colorInfo]) }, [colorInfo])
return <View className={styles['product_list__item--con']}> return <View className={styles['product_list__item--con']}>
<ProductItem codeItem={colorInfo} /> <ProductItem codeItem={colorInfo} settingColorStatus />
<SettingNumber sale_mode={colorInfo.sale_mode} onNumber={getNumber} defaultValue={defaultNum} /> <SettingNumber sale_mode={colorInfo.sale_mode} onNumber={getNumber} defaultValue={defaultNum} />
</View> </View>
}) })

View File

@ -18,7 +18,7 @@
.product_title { .product_title {
margin-right: 8px; margin-right: 8px;
@include common_ellipsis(); @include common_ellipsis();
width: 380px; max-width: 380px;
} }
.mode_status { .mode_status {
width: 60px; width: 60px;

View File

@ -1,5 +1,5 @@
import { Text, View } from '@tarojs/components' import { Text, View } from '@tarojs/components'
import { useDidShow, useRouter } from '@tarojs/taro' import Taro, { useDidShow, useRouter } from '@tarojs/taro'
import { useCallback, useEffect, useMemo, useRef, useState, useTransition } from 'react' import { useCallback, useEffect, useMemo, useRef, useState, useTransition } from 'react'
import PayeeHead from '../payeeHead' import PayeeHead from '../payeeHead'
import type { CompanyItem } from '../payeeHead' import type { CompanyItem } from '../payeeHead'
@ -10,7 +10,7 @@ import ProductSetting from '../productSetting'
import ColorSetting from '../colorSetting' import ColorSetting from '../colorSetting'
import styles from './index.module.scss' import styles from './index.module.scss'
import SelectList from '@/components/selectList' import SelectList from '@/components/selectList'
import { CreateCustomCodeApi, CustomPrintCalculationApi, GetCustomCodeDetailApi, GetCustomCodeInitApi, UpdateCustomCodeApi } from '@/api/codeManage' import { CreateCustomCodeApi, CustomPrintCalculationApi, DeleteCustomCodeApi, GetCustomCodeDetailApi, GetCustomCodeInitApi, UpdateCustomCodeApi } from '@/api/codeManage'
import { formatPriceDiv, formatWeightDiv } from '@/common/fotmat' import { formatPriceDiv, formatWeightDiv } from '@/common/fotmat'
import { useCurrenCode } from '@/context/ContextCodeSetting' import { useCurrenCode } from '@/context/ContextCodeSetting'
import { alert } from '@/common/common' import { alert } from '@/common/common'
@ -125,6 +125,9 @@ export default () => {
alert.success('保存成功!') alert.success('保存成功!')
} }
} }
else if (type === 'del') {
deleteCode()
}
})() })()
} }
@ -155,6 +158,26 @@ export default () => {
} }
} }
// 删除码单
const { fetchData: delFetchData } = DeleteCustomCodeApi()
const deleteCode = async() => {
Taro.showModal({
title: '确定删除该码单?',
async success(res) {
if (res.confirm) {
const res = await delFetchData({ id: submit_ids.current.custom_print_id })
if (res.success) {
alert.success('删除成功')
Taro.navigateBack()
}
}
else if (res.cancel) {
console.log('用户点击取消')
}
},
})
}
return <View className={styles.code_list__main}> return <View className={styles.code_list__main}>
<View className={styles.code_list__head}> <View className={styles.code_list__head}>
<PayeeHead defaultValue={company} onSelect={getCompany} /> <PayeeHead defaultValue={company} onSelect={getCompany} />
@ -203,7 +226,7 @@ export default () => {
</View> </View>
</View> </View>
</View>} </View>}
<BottomBtn onClick={onBottomClick} /> <BottomBtn delStatus={!!productData.custom_print_id} onClick={onBottomClick} />
<View className="common_safe_area_y"></View> <View className="common_safe_area_y"></View>
</View> </View>
} }

View File

@ -11,6 +11,7 @@ import type { adjustType } from '@/common/enum'
interface Param { interface Param {
codeItem: any codeItem: any
settingColorStatus?: boolean
} }
type IndexParam = { type IndexParam = {
@ -20,7 +21,7 @@ type IndexParam = {
} & Param } & Param
export default (props: Param) => { export default (props: Param) => {
const { codeItem } = props const { codeItem, settingColorStatus = false } = props
const { dispatch, productData } = useCurrenCode() const { dispatch, productData } = useCurrenCode()
const index = codeItem.index_str.split('_') const index = codeItem.index_str.split('_')
const getNewName = useCallback((name) => { const getNewName = useCallback((name) => {
@ -36,9 +37,7 @@ export default (props: Param) => {
dispatch({ type: 'updateColorData', data: { ...productData.color_item_data } }) dispatch({ type: 'updateColorData', data: { ...productData.color_item_data } })
} }
}, [codeItem]) }, [codeItem])
const settingColorStatus = useMemo(() => {
return !!productData.color_item_data
}, [productData.color_item_data])
return <> return <>
<Index codeItem={codeItem} onChange={getNewName} adjust_type={productData.adjust_type} settingColorStatus={settingColorStatus} /> <Index codeItem={codeItem} onChange={getNewName} adjust_type={productData.adjust_type} settingColorStatus={settingColorStatus} />
</> </>

View File

@ -1,184 +1,182 @@
.order_item{ .order_item {
background-color: #fff; background-color: #fff;
border-radius: 20px; border-radius: 20px;
padding: 20px; padding: 20px;
box-sizing: border-box; box-sizing: border-box;
.header{ .header {
display: flex;
align-items: center;
.user {
display: flex;
align-items: center;
.name {
color: #000;
font-weight: 700;
margin-left: 15px;
font-size: $font_size;
width: 100px;
@include common_ellipsis();
}
image {
width: 70px;
height: 70px;
border-radius: 50%;
}
}
.order_con {
padding-left: 15px;
width: 100%;
.name {
color: #000;
font-weight: 700;
font-size: $font_size;
}
.order_num {
flex: 1;
font-size: $font_size_medium;
color: $color_font_one;
padding-right: 10px;
display: flex; display: flex;
justify-content: flex-start;
align-items: center; align-items: center;
.user{ .order_num_con {
display: flex; flex: 1;
align-items: center;
.name {
color: #000;
font-weight: 700;
margin-left: 15px;
font-size: $font_size;
width: 100px;
@include common_ellipsis();
}
image{
width: 70px;
height: 70px;
border-radius: 50%;
}
} }
.order_con { .miconfont {
padding-left: 15px; font-size: 20px;
width: 100%;
.name {
color: #000;
font-weight: 700;
font-size: $font_size;
}
.order_num {
flex: 1;
font-size: $font_size_medium;
color: $color_font_one;
padding-right: 10px;
display: flex;
justify-content: flex-start;
align-items: center;
.order_num_con{
flex:1;
}
.miconfont {
font-size: 20px;
}
}
}
.tag{
font-size: $font_size_min;
padding: 5px 15px;
background-color: $color_main;
color: #fff;
border-radius: 0px 20px 0px 20px;
} }
}
} }
.product_title{ .tag {
display: flex; font-size: $font_size_min;
align-items: center; padding: 5px 15px;
padding: 35px 0; background-color: $color_main;
.product_tag{ color: #fff;
background-color: #CDE5FF; border-radius: 0px 20px 0px 20px;
font-size: $font_size_min;
padding: 5px 10px;
color: $color_main;
border-radius: 6px;
}
.product_name{
flex:1;
font-size: $font_size;
font-weight: 700;
padding: 0 20px;
@include common_ellipsis()
}
.product_status{
font-size: $font_size;
color: $color_main;
}
} }
.product_list{ }
display: flex; .product_title {
.image{ display: flex;
width: 126px; align-items: center;
height: 126px; padding: 35px 0;
border-radius: 20px ; .product_tag {
position: relative; background-color: #cde5ff;
image{ font-size: $font_size_min;
width: 100%; padding: 5px 10px;
height: 100%; color: $color_main;
border-radius: 20px ; border-radius: 6px;
}
.color_num {
background: rgba(0,0,0, 0.5);
border-radius: 36px 0px 20px 0px;
font-size: $font_size_min;
color: #fff;
position: absolute;
right:0;
bottom:0;
padding: 5px 10px 5px 15px;
box-sizing: border-box;
}
}
.color_list{
flex:1;
padding-left: 30px;
.color_item{
display: flex;
justify-content: space-between;
font-size: $font_size_min;
color: $color_font_three;
align-items: center;
margin-bottom: 20px;
.color_title{
font-weight: 700;
font-size: $font_size;
color: #000;
}
.color_more{
color: $color_font_three;
}
}
}
} }
.color_count_num{ .product_name {
flex: 1;
font-size: $font_size;
font-weight: 700;
padding: 0 20px;
@include common_ellipsis();
}
.product_status {
font-size: $font_size;
color: $color_main;
}
}
.product_list {
display: flex;
.image {
width: 126px;
height: 126px;
border-radius: 20px;
position: relative;
image {
width: 100%;
height: 100%;
border-radius: 20px;
}
.color_num {
background: rgba(0, 0, 0, 0.5);
border-radius: 36px 0px 20px 0px;
font-size: $font_size_min; font-size: $font_size_min;
color: $color_font_two; color: #fff;
background-color: #F6F6F6; position: absolute;
border-radius: 10px; right: 0;
padding: 10px 22px; bottom: 0;
margin-top: 20px; padding: 5px 10px 5px 15px;
box-sizing: border-box;
}
}
.color_list {
flex: 1;
padding-left: 30px;
.color_item {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.refund_amount{ font-size: $font_size_min;
font-size: 30rpx; color: $color_font_three;
color: #007AFF;
text{
&:nth-child(1) {
font-size: 23px;
}
}
}
}
.order_number{
display: flex;
background-color: #F6F6F6;
padding: 20px;
margin: 20px 0;
align-items: center; align-items: center;
font-size: $font_size_medium; margin-bottom: 20px;
border-radius: 10px; .color_title {
text{ font-weight: 700;
&:nth-child(1) { font-size: $font_size;
color: #000;
font-weight: 700;
color: $color_font_three;
border-right: 2px solid #CCCCCC;
padding-right: 20px;
}
&:nth-child(2) {
padding-left: 20px;
color: $color_font_one;
}
} }
} .color_more {
.inspection{ color: $color_font_three;
height: 82px;
background-color: #F6F6F6;
border-radius: 10px;
padding: 0 20px;
box-sizing: border-box;
color: #007AFF;
display: flex;
align-items: center;
margin: 20px 0;
font-size: 28px;
.miconfont{
font-size: 50px;
margin-right: 20px;
} }
}
} }
}
.color_count_num {
font-size: $font_size_min;
color: $color_font_two;
background-color: #f6f6f6;
border-radius: 10px;
padding: 10px 22px;
margin-top: 20px;
display: flex;
justify-content: space-between;
.refund_amount {
font-size: 30rpx;
color: #007aff;
text {
&:nth-child(1) {
font-size: 23px;
}
}
}
}
.order_number {
display: flex;
background-color: #f6f6f6;
padding: 20px;
margin: 20px 0;
align-items: center;
font-size: $font_size_medium;
border-radius: 10px;
text {
&:nth-child(1) {
font-weight: 700;
color: $color_font_three;
border-right: 2px solid #cccccc;
padding-right: 20px;
}
&:nth-child(2) {
padding-left: 20px;
color: $color_font_one;
}
}
}
.inspection {
height: 82px;
background-color: #f6f6f6;
border-radius: 10px;
padding: 0 20px;
box-sizing: border-box;
color: #007aff;
display: flex;
align-items: center;
margin: 20px 0;
font-size: 28px;
.miconfont {
font-size: 50px;
margin-right: 20px;
}
}
} }

View File

@ -72,7 +72,7 @@ export default function counter(state = INIT_USER, action: Action) {
case 'setColorData': case 'setColorData':
return { ...state, color_item_data: JSON.parse(JSON.stringify(data)) } return { ...state, color_item_data: JSON.parse(JSON.stringify(data)) }
case 'updateColorData': case 'updateColorData':
return { ...state, color_item_data: data } return onUpdateColorData(state, action)
case 'setPurchaserFormTitle': case 'setPurchaserFormTitle':
return onUpdatePurchaserFormTitle(state, action) return onUpdatePurchaserFormTitle(state, action)
default: default:
@ -203,3 +203,9 @@ const onUpdatePurchaserFormTitle = (state, action) => {
state.admin_data.purchaser_form_title_id = data.id state.admin_data.purchaser_form_title_id = data.id
return { ...state, purchaser_form_title: data } return { ...state, purchaser_form_title: data }
} }
// 修改颜色数据
const onUpdateColorData = (state, action: Action) => {
const { data, update_status } = action
return { ...state, color_item_data: data, update_status }
}