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