Commit 2d0f3253 authored by Bill's avatar Bill

Merge branch 'dev' of 10.0.0.22:lingxi/lingxi-business-system into dev

parents a8c71b5f ba0ef87b
......@@ -31,26 +31,6 @@ const router = {
hideInMenu: true,
component: '@/pages/systemManage/sensitiveWords/template',
},{
// 汇率列表
path: '/system/exchangeRate',
name: 'exchangeRate',
hidePageHeader: true,
component: '@/pages/systemManage/exchangeRate',
},{
// 汇率列表 - 新增
path: '/system/exchangeRate/add',
name: 'exchangeRateAdd',
hidePageHeader: true,
hideInMenu: true,
component: '@/pages/systemManage/exchangeRate/template',
},{
// 汇率列表 - 编辑
path: '/system/exchangeRate/edit',
name: 'exchangeRateEdit',
hidePageHeader: true,
hideInMenu: true,
component: '@/pages/systemManage/exchangeRate/template',
},{
// 单位列表
path: '/system/unit',
name: 'unit',
......
......@@ -220,7 +220,7 @@ export default {
'menu.system.unit': '单位',
'menu.system.unitAdd': '新建单位',
'menu.system.unitEdit': '编辑单位',
'menu.system.platformArg': '平参数',
'menu.system.platformArg': '平参数',
'menu.productionNotice': '生产通知单管理',
'menu.productionNotice.query': '生产通知单查询',
......
......@@ -142,7 +142,10 @@ const EvaluationList = props => {
</div>
<div className="goodInfo-right">
<div className="goodInfo-title">{item.good.productName}</div>
<div className="goodInfo-desc">{item.good.purchaseCount || ''}</div>
<div className="goodInfo-desc">
X {item.good.purchaseCount || ''}
{item.good.unit || ''}
</div>
<div className="goodInfo-price">{`¥ ${item.good.price}`}</div>
</div>
</div>
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-23 11:02:03
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-26 09:52:13
* @LastEditTime: 2020-12-04 11:21:50
* @Description:
*/
import React, { useState, useEffect } from 'react';
......@@ -51,7 +51,7 @@ const CommentManageDetailed: React.FC = () => {
}
return {
created: data.dealTime,
orderNo: data.remark,
orderNo: data.orderNo,
};
};
......@@ -136,7 +136,7 @@ const CommentManageDetailed: React.FC = () => {
}}
editable={false}
expressionScope={{
UploadTip,
UploadTip: null,
beforeUpload,
}}
onSubmit={() => { }}
......
......@@ -215,7 +215,7 @@ const CommentManage: React.FC = () => {
useStateFilterSearchLinkageEffect(
$,
actions,
'keyword',
'product',
FORM_FILTER_PATH,
);
useAsyncInitSelect(
......
......@@ -22,12 +22,12 @@ export const listSearchSchema: ISchema = {
children: '{{controllerBtns}}',
},
},
keyword: {
product: {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '搜索',
tip: '输入 订单号、交易商品 进行搜索',
tip: '输入 交易商品 进行搜索',
},
},
},
......
......@@ -142,7 +142,10 @@ const EvaluationList = props => {
</div>
<div className="goodInfo-right">
<div className="goodInfo-title">{item.good.productName}</div>
<div className="goodInfo-desc">X {item.good.purchaseCount || ''}</div>
<div className="goodInfo-desc">
X {item.good.purchaseCount || ''}
{item.good.unit || ''}
</div>
<div className="goodInfo-price">{`¥ ${item.good.price}`}</div>
</div>
</div>
......
......@@ -155,17 +155,16 @@ const CommentDetailed: React.FC = () => {
const { data, totalCount } = res.data;
resolve({
data: data.map(item => {
const product = isJSONStr(item.product) || {};
return {
id: item.id,
star: item.star,
comment: item.comment,
productName: product.productName || '',
price: product.price,
quantity: product.purchaseCount,
productName: item.product || '',
price: item.price,
quantity: item.purchaseCount,
created: item.createTime,
target: item.byMemberName,
orderId: product.orderId,
orderId: item.orderId,
};
}),
totalCount,
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-10-20 11:43:12
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-30 14:11:06
* @LastEditTime: 2020-12-04 14:35:12
* @Description:
*/
import { normalizeFiledata, FileData, isJSONStr } from '@/utils';
......@@ -27,13 +27,13 @@ export function normalizeUnevaluatedList(arr: any): Unevaluated[] {
return ret;
}
arr.forEach(item => {
const product = isJSONStr(item.product) || {};
const atom = {
good: {
pic: product.pic,
productName: product.productName,
pic: item.productImgUrl,
productName: item.product,
price: item.price,
purchaseCount: item.dealCount, // 采购数量
purchaseCount: item.purchaseCount, // 采购数量
unit: item.unit,
},
star: item.star, // 评分星星
comment: item.comment, // 评价
......
......@@ -108,6 +108,7 @@ export const baseOrderListColumns: any[] = [
align: 'center',
dataIndex: 'sumPrice',
key: 'sumPrice',
render: (t, r) => (r.type === 7 || r.type === 8) ? t : '¥' + t
},
{
title: '订单类型',
......
......@@ -6,6 +6,7 @@ import { PayOutWorkState } from '@/constants'
import { PublicApi } from '@/services/api'
import { history, Link } from 'umi'
import OverflowText from '@/components/OverflowText'
import { useHttpRequest } from '@/hooks/useHttpRequest'
export interface OrderPayResultModalProps {
type: 'default' | 'preview',
......@@ -16,7 +17,9 @@ const OrderPayResultModal:React.FC<OrderPayResultModalProps> = ({type, currentRe
const { data } = useContext(OrderDetailContext)
const { id } = usePageStatus()
const [visible, setVisible] = useState(false)
const [isReady, setIsReady] = useState()
const canCtlData = data.paymentInformationResponses.find(v => v.externalState === PayOutWorkState.READY_CONFIRM_RESULT) || {}
const { run, loading } = useHttpRequest(PublicApi.postOrderPlatformConfirmedPaymentResultsOrder)
const transData = canCtlData.payOrderUrls?.split(',') || []
useEffect(() => {
......@@ -33,14 +36,15 @@ const OrderPayResultModal:React.FC<OrderPayResultModalProps> = ({type, currentRe
}
const handleConfirm = async (isReady) => {
setIsReady(isReady)
const params = {
state: isReady,
id: Number(id),
paymentInformationId: canCtlData.id
}
const { code } = await PublicApi.postOrderPlatformConfirmedPaymentResultsOrder(params)
if (code === 1000) {
const res = await run(params)
if (res && res.code === 1000) {
history.goBack()
}
}
......@@ -52,8 +56,8 @@ const OrderPayResultModal:React.FC<OrderPayResultModalProps> = ({type, currentRe
onCancel={handleCancel}
footer={(type === 'default' && transData) ? <Space>
<Button onClick={handleCancel}>取消</Button>
<Button onClick={() => handleConfirm(0)} type='dashed'>确认未到账</Button>
<Button onClick={() => handleConfirm(1)} type='primary'>确认到账</Button>
<Button loading={isReady === 0 && loading} onClick={() => handleConfirm(0)} type='dashed'>确认未到账</Button>
<Button loading={isReady === 1 && loading} onClick={() => handleConfirm(1)} type='primary'>确认到账</Button>
</Space> : null}
>
<List
......
......@@ -84,10 +84,10 @@ const warehouseColumns: any[] = [
const modalPriceActions = createFormActions()
// 总计金额联动框
export const MoneyTotalBox = ({ dataSource, isEditData }) => {
const { orderProductRequests = [], receiverAddressId, orderModel } = dataSource || {}
const { orderProductRequests = [], receiverAddressId, orderModel, sumPrice, amount, freight } = dataSource || {}
const creditsCommodity = (orderModel === 24 || orderModel === 25) // 积分或渠道积分下单模式
const sum = orderProductRequests.reduce((prev, next) => prev + Number((next.price || 0)), 0)
const sum = amount || orderProductRequests.reduce((prev, next) => prev + Number((next.price || 0)), 0)
const modelRef = useRef<any>({})
const [freePrice, setFreePrice] = useState<number>(0)
const handleSetting = () => {
......@@ -126,11 +126,11 @@ export const MoneyTotalBox = ({ dataSource, isEditData }) => {
</Col>
<Col span={2}>
<div>运费 { isEditData && <SettingOutlined style={{marginLeft: 8}} onClick={handleSetting}/>}</div>
<div>{freePrice}</div>
<div>{freight || freePrice}</div>
</Col>
<Col span={2}>
<div>{creditsCommodity ? '总计所需积分' : '总计金额'}</div>
<div>{sum + freePrice}</div>
<div>{sumPrice || sum + freePrice}</div>
</Col>
<ModalForm
modalTitle='设置运费'
......@@ -365,7 +365,7 @@ const OrderProductTable:React.FC<OrderProductTableProps> = (props) => {
dataIndex: 'memberPrice',
align: 'center',
key: 'memberPrice',
render: (text, record) => record.isMemberPrice ? (text + '%') : null
render: (text, record) => record.isMemberPrice ? (text * 100 + '%') : null
},
{
title: creditsCommodity ? '兑换数量' : '采购数量',
......@@ -382,9 +382,9 @@ const OrderProductTable:React.FC<OrderProductTableProps> = (props) => {
},
{
title: creditsCommodity ? '所需积分小计' : '金额',
dataIndex: 'price',
dataIndex: 'money',
align: 'center',
key: 'price',
key: 'money',
},
// 接口调用
{
......
......@@ -65,7 +65,9 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
const fetchCategoryList = () => {
const param: any = {
categoryId: categoryid,
templateId: templateid
templateId: templateid,
current: 1,
pageSize: 100
}
PublicApi.getTemplatePlatformFindCategoryList(param).then(res => {
......@@ -78,7 +80,7 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
const fetchBrandsList = () => {
const param: any = {
type: 0,
type: 2,
templateId: templateid,
categoryId: categoryid,
current: 1,
......@@ -273,7 +275,10 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
</Button>
) : (
<Button
onClick={() => setOprationType('list')}
onClick={() => {
setOprationType('list')
setIsHighSearch(false)
}}
>
查看已选择商品({selectGoodsList.length})
</Button>
......@@ -326,7 +331,7 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
name="twoCategoryId"
className={styles.mar_bot_0}
>
<Select placeholder="品类" style={{ width: 180 }} onChange={handleSearch}>
<Select placeholder="品类" allowClear style={{ width: 180 }} onChange={handleSearch}>
{
categoryResponseList.map((item, index) => <Select.Option key={`select_category_item_${index}`} value={item.categoryId}>{item.categoryName}</Select.Option>)
}
......@@ -338,7 +343,7 @@ const GoodsSetting: React.FC<GoodsSettingPropsType> = (props) => {
name="brandId"
className={styles.mar_bot_0}
>
<Select placeholder="品牌" style={{ width: 180 }} onChange={handleSearch}>
<Select placeholder="品牌" allowClear style={{ width: 180 }} onChange={handleSearch}>
{
noSelectBrands.map((item, index) => (<Select.Option key={`select_brand_item_${index}`} value={item.brandId}>{item.brandName}</Select.Option>))
}
......
......@@ -49,8 +49,10 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
}, [])
const fetchDetail = () => {
//@ts-ignore
PublicApi.getTemplatePlatformFindTemplateDetails({ id }).then(res => {
const param: any = {
id
}
PublicApi.getTemplatePlatformFindTemplateDetails(param).then(res => {
if (res.code === 1000) {
setDetailInfo(res.data)
}
......@@ -85,11 +87,10 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
const confirmShelfShop = (shelf: number) => {
return new Promise((resolve) => {
let param = {
const param = {
id,
shelf
}
//@ts-ignore
PublicApi.postTemplatePlatformShelfTemplate(param).then(res => {
fetchDetail()
resolve()
......@@ -99,10 +100,9 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
const confirmUseTemplate = () => {
return new Promise((resolve) => {
let param = {
const param: any = {
id: Number(id),
}
//@ts-ignore
PublicApi.postTemplatePlatformUseTemplate(param).then(res => {
fetchDetail()
resolve()
......@@ -145,7 +145,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
<div className={styles.template_detail}>
<div className={styles.template_info_wrap}>
<div className={styles.template_img_box}>
<div className={cx(styles.type_tag)}>PC</div>
<div className={cx(styles.type_tag)}>{detailInfo?.environment && Environment_Status[detailInfo?.environment].name}</div>
<img src={detailInfo?.templatePicUrl} />
</div>
<div className={styles.template_info}>
......@@ -219,7 +219,7 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
<UseModal
title="使用商场模板"
visible={useModalVisible}
onOk={() => { }}
onOk={() => { console.log() }}
type={type}
onCancel={() => setUseModalVisible(false)}
/>
......
......@@ -373,66 +373,55 @@ const PaySetting: React.FC<{}> = () => {
// 整体表单提交
const handleSubmit = (values: any) => {
let baseList: any = GlobalConfig.payConfig.payInitializeConfig
console.log('values:', values, 'baseList:', baseList)
let list: any = []
baseList.forEach((item: any, index: number) => {
let payWayIds = `payWayIds-${index}`, ruleConfigurationId = `ruleConfigurationId-${index}`, _id = `id-${index}`
let v = [values[payWayIds], item.payWayResponses.filter((v => v.value == values[payWayIds])).map(v => v.label)]
let _payWays: any[] = []
if (v.length === 2) {
let obj: any = {}
// if(v[0] &&v[0].length > 0){
v[0].forEach(item => {
obj.id = item
});
// }
// if(v[1] &&v[1].length > 0 ){
v[1].forEach(item => {
obj.way = item
});
// }
_payWays.push(obj)
const baseList: any = GlobalConfig.payConfig.payInitializeConfig
const paymentPolicyPayWayRequests: any = []
baseList.forEach((item: any, idx: number) => {
const payWays: any = [];
item.payWayResponses.forEach((items: any) => {
const ids = values[`payWayIds-${idx}`];
ids.forEach((id: number) => {
if (id === items.value) {
payWays.push({
id: items.value,
way: items.label,
payType: items.payType,
isPitchOn: 1
})
}
list.push({
id: values[_id],
})
})
paymentPolicyPayWayRequests.push({
payType: item.payType,
['payWays']: [..._payWays],
// ['payWayIds']: values[payWayIds],
// ['payWays']:{
// id: values[payWayIds],
// way: item.payWayResponses.filter((v=> v.value == values[payWayIds])).map(v => v.label)
// },
['ruleConfigurationId']: values[ruleConfigurationId]
payWays,
ruleConfigurationId: values[`ruleConfigurationId-${idx}`]
})
});
let params: any = {
})
// 提交用到的query
const param: any = {
paymentPolicyName: values.paymentPolicyName,
paymentPolicyPayWayRequests: list,
isSelected: values.isSelected,
paymentPolicyPayWayRequests,
memberIdRoleIds: []
}
if (values.isSelected === 0) {
let memberIdRoleIds: any = []
if (memberRowCtl.selectRow.length > 0) {
const memberIdRoleId: any = [];
memberRowCtl.selectRow.forEach((v => {
memberIdRoleIds.push({
memberIdRoleId.push({
memberId: v.memberId,
roleId: v.roleId
})
}))
params.memberIdRoleIds = memberIdRoleIds
param.memberIdRoleIds = memberIdRoleId
}
}
//新增
if (params.memberIdRoleIds.length === 0 && values.isSelected === 0) {
if (param.memberIdRoleIds.length === 0 && values.isSelected === 0) {
message.error('请选择指定的会员');
return
}
if (!usePageStatus().id) {
console.log('params', params)
PublicApi.postPayPayMemberTacticsAdd({ ...params }).then(res => {
PublicApi.postPayPayMemberTacticsAdd({ ...param }).then(res => {
if (res.code === 1000) {
setTimeout(() => {
history.goBack()
......@@ -440,8 +429,8 @@ const PaySetting: React.FC<{}> = () => {
}
})
} else {
params.paymentPolicyId = usePageStatus().id
PublicApi.postPayPayMemberTacticsUpdate({ ...params }).then(res => {
param.paymentPolicyId = usePageStatus().id
PublicApi.postPayPayMemberTacticsUpdate({ ...param }).then(res => {
if (res.code === 1000) {
setTimeout(() => {
history.goBack()
......@@ -449,7 +438,6 @@ const PaySetting: React.FC<{}> = () => {
}
})
}
}
return (
......
import React, { useRef } from 'react';
import { Card, Row, Col, Space, Button } from 'antd';
import { PlusOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
const SensitiveWords: React.FC<{}> = () => {
const ref = useRef<any>({});
const columns: ColumnType<any>[] = [
{
title: 'ID',
key: 'id',
dataIndex: 'id',
}, {
title: '外币英文简称',
key: 'name',
dataIndex: 'name',
}, {
title: '本地英文简称',
key: 'remarks',
dataIndex: 'remarks',
}, {
title: '汇率',
key: 'hui',
dataIndex: 'hui',
}, {
title: '有效期起',
key: 'qi',
dataIndex: 'qi',
},{
title: '有效期止',
key: 'zhi',
dataIndex: 'zhi',
},{
title: '状态',
key: 'status',
dataIndex: 'status',
},{
title: '操作',
key: 'options',
dataIndex: 'options',
},
]
const controllerBtns = <Row>
<Col span={24}>
<Space direction="horizontal" size={16}>
<Button type="primary" icon={<PlusOutlined />}>新建</Button>
</Space>
</Col>
</Row>
return (
<PageHeaderWrapper>
<Card>
<StandardTable
currentRef={ref}
columns={columns}
tableProps={{ rowKew: 'id' }}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
layouts: {
order: 1,
span: 4
},
ctx: {
inline: false,
schema: {
type: 'object',
properties: {
megaLayout0: {
type: 'object',
'x-component': 'mega-layout',
"x-component-props": {
grid: true,
columns: 1,
},
properties: {
name: {
type: 'string',
'x-component-props': {
placeholder: '属性名称',
},
'x-component': 'Search'
}
}
}
}
}
}
}}
formilyChilds={{
layouts: {
order: 0
},
children: (
<>
{controllerBtns}
</>
)
}}
/>
</Card>
</PageHeaderWrapper>
)
}
export default SensitiveWords;
\ No newline at end of file
import React from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import ReutrnEle from '@/components/ReturnEle';
import { Card, Form, Input, Button, Space, Select, DatePicker } from 'antd';
import moment from 'moment'
const layout: any = {
colon: false,
labelCol: { style: { width: '174px' } },
wrapperCol: { span: 9 },
labelAlign: "left"
};
const tailLayout = {
wrapperCol: { style: { marginLeft: '174px' } },
};
const { Option } = Select;
const Template:React.FC<{}> = () => {
// 只能选当天和之后的日期
const disabledDate = (current) => {
return current && current < moment().startOf('day');
}
return(
<PageHeaderWrapper
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />}
>
<Card>
<Form
{...layout}
>
<Form.Item label='外币英文简称' name='name' rules={[{ required: true, message: '请输入单位名称' }]}>
<Input />
</Form.Item>
<Form.Item label='本币英文简称' name='enName' rules={[{ required: true, message: '请输入英文简称' }]}>
<Input />
</Form.Item>
<Form.Item label='汇率' name='enName' rules={[{ required: true, message: '请输入英文简称' }]}>
<Input />
</Form.Item>
<Form.Item label='有效期起' name='enName' rules={[{ required: true, message: '请输入英文简称' }]}>
<DatePicker
disabledDate={disabledDate}
/>
</Form.Item>
<Form.Item label='有效期止' name='enName' rules={[{ required: true, message: '请输入英文简称' }]}>
<DatePicker
disabledDate={disabledDate}
/>
</Form.Item>
<Form.Item {...tailLayout}>
<Space size={24}>
<Button type='primary'>保存</Button>
<Button>取消</Button>
</Space>
</Form.Item>
</Form>
</Card>
</PageHeaderWrapper>
)
}
export default Template;
\ No newline at end of file
......@@ -19,7 +19,6 @@ const Template:React.FC<{}> = () => {
const [form] = Form.useForm();
const { pathname, query } = history.location;
const type = pathname.split('/')[pathname.split('/').length - 1];
const [value, setvalue] = useState<Object>({})
const onFinish = (values: any) => {
if(type === 'add') {
PublicApi.postManageSensitiveWordAdd(values).then(res => {
......@@ -30,7 +29,8 @@ const Template:React.FC<{}> = () => {
})
}
else {
PublicApi.postManageSensitiveWordUpdate(value).then(res => {
values.id = query.id;
PublicApi.postManageSensitiveWordUpdate(values).then(res => {
if(res.code === 1000) {
history.goBack();
message.success('修改敏感词成功')
......@@ -45,8 +45,7 @@ const Template:React.FC<{}> = () => {
useEffect(() => {
try {
const data: {id: string, name: string, remark: string} = {
id: query.id,
const data: {name: string, remark: string} = {
name: decodeURIComponent(atob(query.name)),
remark: decodeURIComponent(atob(query.remark)),
}
......@@ -54,7 +53,6 @@ const Template:React.FC<{}> = () => {
name: data.name,
remark: data.remark
})
setvalue(data)
}catch(error) {
console.log(error)
}
......
......@@ -4,6 +4,7 @@ import { PlusOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { StandardTable } from 'god';
import { ColumnType } from 'antd/lib/table/interface';
import { PublicApi } from '@/services/api';
const SensitiveWords: React.FC<{}> = () => {
const ref = useRef<any>({});
const columns: ColumnType<any>[] = [
......@@ -36,6 +37,18 @@ const SensitiveWords: React.FC<{}> = () => {
</Space>
</Col>
</Row>
/**获取单位列表数据 */
// const fetchdata = (params: any) => {
// return new Promise(resolve => {
// PublicApi.getManageUnitGetUnitList({ ...params }).then(res => {
// if (res.code === 1000) {
// resolve(res.data)
// }
// })
// })
// }
return (
<PageHeaderWrapper>
<Card>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment