Browse Source

Merge branch 'dev' of http://10.2.1.24:10244/bpa/BPA.KitChen.Web into dev

tags/小炒逻辑变更前
txb 2 years ago
parent
commit
ce0f2d82e5
10 changed files with 375 additions and 24 deletions
  1. +1
    -2
      src/pages/card/gate/index.jsx
  2. +24
    -1
      src/pages/card/machine/index.jsx
  3. +52
    -11
      src/pages/card/memberAccount/index.jsx
  4. +8
    -8
      src/pages/card/storedValueCard/index.jsx
  5. +208
    -0
      src/pages/quickStart/components/ConfirmConfig/index.jsx
  6. +11
    -0
      src/pages/quickStart/components/DeviceConfig/index.jsx
  7. +11
    -0
      src/pages/quickStart/components/FoodMenuConfig/index.jsx
  8. +11
    -0
      src/pages/quickStart/components/StoreConfig/index.jsx
  9. +3
    -2
      src/pages/quickStart/index.jsx
  10. +46
    -0
      src/pages/quickStart/index.less

+ 1
- 2
src/pages/card/gate/index.jsx View File

@@ -66,7 +66,6 @@ const Gate = () => {
// 及时销毁 editor ,重要!
useEffect(() => {
if (editor == null) return;
console.log('销毁');
editor.destroy()
setEditor(null)
setHtml('');
@@ -237,7 +236,7 @@ const Gate = () => {
onChange: (page) => setCurrent(page),
}}
dateFormatter="string"
headerTitle="储值卡账户管理"
headerTitle="档口管理"
toolBarRender={() => [
<div className={styles.table_search_item}>
<div>


+ 24
- 1
src/pages/card/machine/index.jsx View File

@@ -89,6 +89,11 @@ const Machine = () => {
</div>
}
},
{
title: '设备地址',
dataIndex: 'address',
ellipsis: true,
},
{
title: '状态',
dataIndex: 'status',
@@ -192,7 +197,7 @@ const Machine = () => {
onChange: (page) => setCurrent(page)
}}
dateFormatter="string"
headerTitle="储值卡账户管理"
headerTitle="刷卡机管理"
toolBarRender={() => [
<div className={styles.table_search_item}>
<div>
@@ -245,6 +250,7 @@ const Machine = () => {
<Input />
</Form.Item>


<Form.Item
label="设备名称"
name="name"
@@ -311,6 +317,23 @@ const Machine = () => {
<Input defaultValue={10} />
</Form.Item>

<Form.Item
label="设备地址"
name="address"
rules={[
{
required: true,
message: '请输入档口名称!',
},
{
pattern: new RegExp(/[0-9A-Fa-f]{2}/, 'g'),
message: '请输入16进制!'
}
]}
>
<Input />
</Form.Item>

<Form.Item>
<Button type="primary" htmlType="submit">
确定


+ 52
- 11
src/pages/card/memberAccount/index.jsx View File

@@ -1,4 +1,4 @@
import React, { useRef, useState } from "react";
import React, { useRef, useState, useEffect } from "react";
import styles from "./index.less";
import { PageContainer } from '@ant-design/pro-layout';
import { PlusOutlined, UserOutlined } from '@ant-design/icons';
@@ -13,7 +13,11 @@ import cardAPI from "../service";
const memberAccount = () => {
const actionRef = useRef();
const [isModalOpen, setIsModalOpen] = useState(false);
const [currentOption, setCurrentOption] = useState();
const [currentOption, setCurrentOption] = useState({
functionName: '',
record: {},
type: 0
});
const [current, setCurrent] = useState(1);
const [pageSize, setPageSize] = useState(10);
const [total, setTotal] = useState(0);
@@ -37,6 +41,11 @@ const memberAccount = () => {
"type": type
}
const response = await cardAPI.GetMemberAccountCardConsRecord(jsonData);
setCurrentOption({
functionName: 'onFetchAccountConsRecord',
record: JSON.parse(JSON.stringify(record)),
type
});
if (response.statusCode === 200) {
setConsList(response.data.data);
setConsTotal(response.data.total);
@@ -59,6 +68,11 @@ const memberAccount = () => {
"type": type
}
const response = await cardAPI.GetMemberAccountCardConsRecord(jsonData);
setCurrentOption({
functionName: 'onFetchCardConsRecord',
record: JSON.parse(JSON.stringify(record)),
type
});
if (response.statusCode === 200) {
setConsList(response.data.data);
setConsTotal(response.data.total);
@@ -141,15 +155,15 @@ const memberAccount = () => {
dataIndex: 'type',
valueType: 'select',
valueEnum: {
0: {
1: {
text: '人脸',
status: 'Success',
},
1: {
2: {
text: '实体卡',
status: 'Success',
},
2: {
3: {
text: '指纹',
status: 'Success',
}
@@ -170,6 +184,11 @@ const memberAccount = () => {

//消费列表
const consColumns = [
{
title: '时间',
dataIndex: 'createAt',
width: 200
},
{
title: '类型',
dataIndex: 'type',
@@ -182,21 +201,43 @@ const memberAccount = () => {
</div>
}
},
{
title: '消费金额',
dataIndex: 'money',
},
{
title: '之前余额',
dataIndex: 'beforeMoney',
render: (_, record) => {
return <div style={{ color: 'green' }}>
{record.beforeMoney}
</div>
}
},
{
title: '消费金额',
dataIndex: 'money',
render: (_, record) => {
return <div style={{ color: 'red' }}>
{record.money}
</div>
}
},
{
title: '之后余额',
dataIndex: 'afterMoney',
render: (_, record) => {
return <div style={{ color: 'blue' }}>
{record.afterMoney}
</div>
}
}
];


useEffect(() => {
if (consCurrent === 1) return;
if (currentOption.functionName === 'onFetchAccountConsRecord') {
onFetchAccountConsRecord(currentOption.record, currentOption.type);
} else if (currentOption.functionName === 'onFetchCardConsRecord') {
onFetchCardConsRecord(currentOption.record, currentOption.type);
}
}, [consCurrent])

return (
<PageContainer>
@@ -239,7 +280,7 @@ const memberAccount = () => {
dateFormatter="string"
headerTitle="储值卡账户管理"
/>
<Modal width={800} title='消费记录' visible={isModalOpen} footer={false} onCancel={() => setIsModalOpen(false)}>
<Modal width={800} title='消费记录' visible={isModalOpen} footer={false} onCancel={() => {setIsModalOpen(false); setConsCurrent(1)}}>
<Table columns={consColumns} dataSource={consList} pagination={{
current: consCurrent,
pageSize: consPageSize,


+ 8
- 8
src/pages/card/storedValueCard/index.jsx View File

@@ -70,7 +70,7 @@ const storedValueCard = () => {
"memberCardId": currentOption.id
});
if (response.data === true) {
message.error('绑定成功');
message.success('绑定成功');
actionRef.current.reload();
setBindMemberDrawer(false);
} else {
@@ -172,15 +172,15 @@ const storedValueCard = () => {
dataIndex: 'type',
valueType: 'select',
valueEnum: {
0: {
1: {
text: '人脸',
status: 'Success',
},
1: {
2: {
text: '实体卡',
status: 'Success',
},
2: {
3: {
text: '指纹',
status: 'Success',
}
@@ -265,7 +265,7 @@ const storedValueCard = () => {
onChange: (page) => setCurrent(page),
}}
dateFormatter="string"
headerTitle="储值卡账户管理"
headerTitle="储值卡管理"
toolBarRender={() => [
<Button key="button" icon={<PlusOutlined />} type="primary" onClick={onCreateTableRow}>
新建
@@ -324,9 +324,9 @@ const storedValueCard = () => {
]}
>
<Select>
<Select.Option value={0}>人脸</Select.Option>
<Select.Option value={1}>实体卡</Select.Option>
<Select.Option value={2}>指纹</Select.Option>
<Select.Option value={1}>人脸</Select.Option>
<Select.Option value={2}>实体卡</Select.Option>
<Select.Option value={3}>指纹</Select.Option>
</Select>
</Form.Item>



+ 208
- 0
src/pages/quickStart/components/ConfirmConfig/index.jsx View File

@@ -0,0 +1,208 @@
import React, { useState, useEffect, useRef } from 'react';
import quickAPI from "../../service";
import indexStyles from "../../index.less";
import StepsButton from "../StepsButton";
import { message } from 'antd';

/**
* 确认配置
* @returns
*/
const ConfirmConfig = (props) => {
/**
* 1.组织配置
*/
//组织树
const [orgTree, setOrgTree] = useState([]);
//支付方式列表
const [payTypeList, setPayTypeList] = useState([]);
//获取组织树
const onFetchOrgTree = async () => {
const response = await await quickAPI.getpage({
current: 1,
pageSize: 1000
});
if (response.data.success) {
setOrgTree(response.data.data);
} else {
message.error(response.errors || '获取组织架构出错');
}
}

//获取支付配置
const getPayTemplateList = async () => {
const response = await quickAPI.getPayTemplateList();
if (response.statusCode === 200) {
setPayTypeList(response.data.data);
} else {
message.error(response.errors || '获取获取支付方式出错');
}
}

useEffect(() => {
onFetchOrgTree();
getPayTemplateList();
}, []);

return <>
{/* 1.组织配置 */}
<table style={{ width: '50%', marginBottom: '10px' }}>
<tbody>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_title}>
组织配置
</th>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
ID
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.storeConfig.id}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
编码
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.storeConfig.code}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
名称
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.storeConfig.name}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
上级组织
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{(() => {
const pid = props.quickStartObj.storeConfig.pid;
const find = orgTree.find(item => item.id === pid);
if (find) {
return find.name;
} else {
return "无上级组织"
}
})()}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
组织类型
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.storeConfig.type}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
支付方式
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{(() => {
const payTemplateId = props.quickStartObj.storeConfig.payTemplateId;
const find = payTypeList.find(item => item.id === payTemplateId);
if (find) {
return find.name;
} else {
return "无支付方式"
}
})()}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
店铺地址
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.storeConfig.store_Addr}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
店铺坐标
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.storeConfig.store_Loc}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
联系电话
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.storeConfig.tel}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
门店排序
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.storeConfig.sort}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
备注
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.storeConfig.remark}
</td>
</tr>
</tbody>
</table>
{/* 2.设备配置 */}
<table style={{ width: '50%', marginBottom: '10px' }}>
<tbody>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_title}>
设备配置
</th>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
ID
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.deviceConfig.id}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
设备名称
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.deviceConfig.deviceName}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
设备类型
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.deviceConfig.deviceTypeKey}
</td>
</tr>
<tr className={indexStyles.ant_descriptions_row}>
<th className={indexStyles.ant_descriptions_item_label}>
设备类型
</th>
<td className={indexStyles.ant_descriptions_item_content}>
{props.quickStartObj.deviceConfig.deviceTypeKey}
</td>
</tr>
</tbody>
</table>
<StepsButton current={props.current} steps={props.steps} prev={props.prev}></StepsButton>
</>
}

export default ConfirmConfig;

+ 11
- 0
src/pages/quickStart/components/DeviceConfig/index.jsx View File

@@ -130,6 +130,9 @@ const DeviceConfig = (props) => {
}
];

const [currentPage, setCurrentPage] = useState(0);
const [pageSize, setPageSize] = useState(5);

const optionsWithDisabled = [
{
label: '新建设备',
@@ -285,6 +288,14 @@ const DeviceConfig = (props) => {
search={{
labelWidth: 120,
}}
pagination={{
current: currentPage,
pageSize: pageSize,
onChange: (page, pageSize) => {
setCurrentPage(page);
setPageSize(pageSize);
}
}}
request={async (params) => {
let data = [];
let total = 0;


+ 11
- 0
src/pages/quickStart/components/FoodMenuConfig/index.jsx View File

@@ -67,6 +67,9 @@ const FoodMenuConfig = (props) => {
}
]

const [currentPage, setCurrentPage] = useState(0);
const [pageSize, setPageSize] = useState(5);

return <>
<div className={indexStyles.choose_change_state}>
<Radio.Group
@@ -108,6 +111,14 @@ const FoodMenuConfig = (props) => {
search={{
labelWidth: 120,
}}
pagination={{
current: currentPage,
pageSize: pageSize,
onChange: (page, pageSize) => {
setCurrentPage(page);
setPageSize(pageSize);
}
}}
request={async (params) => {
let data = [];
let total = 0;


+ 11
- 0
src/pages/quickStart/components/StoreConfig/index.jsx View File

@@ -7,6 +7,9 @@ import styles from "./index.less";

const StoreConfig = (props) => {

const [currentPage, setCurrentPage] = useState(0);
const [pageSize, setPageSize] = useState(5);

const { TextArea } = Input;
const { Option, OptGroup } = Select;
const [storeForm] = Form.useForm();
@@ -288,6 +291,14 @@ const StoreConfig = (props) => {
};
}}
columns={columns}
pagination={{
current: currentPage,
pageSize: pageSize,
onChange: (page, pageSize) => {
setCurrentPage(page);
setPageSize(pageSize);
}
}}
/>
}
</div>


+ 3
- 2
src/pages/quickStart/index.jsx View File

@@ -8,6 +8,7 @@ import FoodMenuConfig from './components/FoodMenuConfig';
import GoodsConfig from './components/GoodsConfig';
import BomConfig from './components/BomConfig';
import MaterialConfig from './components/MaterialConfig';
import ConfirmConfig from './components/ConfirmConfig';

const { Step } = Steps;

@@ -112,11 +113,11 @@ const QuickStart = () => {
<GoodsConfig goodsConfig={quickStartObj.goodsConfig} current={current} steps={stepsText} onFinishForm={onFinishForm} prev={prev}></GoodsConfig>,
<BomConfig bomConfig={quickStartObj.bomConfig} current={current} steps={stepsText} onFinishForm={onFinishForm} prev={prev}></BomConfig>,
<MaterialConfig materialConfig={quickStartObj.materialConfig} current={current} steps={stepsText} onFinishForm={onFinishForm} prev={prev}></MaterialConfig>,
<h1>确认配置</h1>
<ConfirmConfig quickStartObj={quickStartObj} current={current} steps={stepsText} onFinishForm={onFinishForm} prev={prev}></ConfirmConfig>
];

useEffect(() => {
console.log('对象更新啦', quickStartObj);
console.log('对象更新啦', quickStartObj, JSON.stringify(quickStartObj));
}, [quickStartObj]);

return <PageContainer>


+ 46
- 0
src/pages/quickStart/index.less View File

@@ -25,4 +25,50 @@
top: 50%;
transform: translateY(-50%);
right: 0px
}

.ant_descriptions_row {
display: flex;
border-bottom: 1px solid rgba(0,0,0,.06);
}

.ant_descriptions_row:first-child {
border-top: 1px solid rgba(0,0,0,.06);
border-right: 1px solid rgba(0,0,0,.06);
}

.ant_descriptions_item_title {
color: rgba(0,0,0,.85);
font-weight: 600;
font-size: 18px;
line-height: 1.5715;
text-align: start;
padding: 16px 24px;
border-left: 1px solid rgba(0,0,0,.06);
}

.ant_descriptions_item_label {
flex-shrink: 0;
width: 20%;
color: rgba(0,0,0,.85);
font-weight: 400;
font-size: 14px;
line-height: 1.5715;
text-align: start;
background-color: #fafafa;
padding: 16px 24px;
border-left: 1px solid rgba(0,0,0,.06);
border-right: 1px solid rgba(0,0,0,.06);
}

.ant_descriptions_item_content {
border-right: 1px solid rgba(0,0,0,.06);
padding: 16px 24px;
display: table-cell;
flex: 1 1;
color: rgba(0,0,0,.85);
font-size: 14px;
line-height: 1.5715;
word-break: break-word;
overflow-wrap: break-word;
}

Loading…
Cancel
Save