Explorar el Código

员工店铺

tags/小炒逻辑变更前
gwbvipvip hace 2 años
padre
commit
bc61e6e1ea
Se han modificado 5 ficheros con 354 adiciones y 0 borrados
  1. +7
    -0
      config/routes.js
  2. +7
    -0
      src/app.jsx
  3. +56
    -0
      src/pages/store/storeStaff/components/CreateForm.jsx
  4. +246
    -0
      src/pages/store/storeStaff/index.jsx
  5. +38
    -0
      src/pages/store/storeStaff/services.js

+ 7
- 0
config/routes.js Ver fichero

@@ -266,6 +266,13 @@ export default [
component: './store/storeType',
access: 'k12',
},
{
name: '店铺员工',
icon: 'smile',
path: '/store/storeStaff',
component: './store/storeStaff',
access: 'k12',
},
{
name: '店铺小票打印机',
icon: 'smile',


+ 7
- 0
src/app.jsx Ver fichero

@@ -351,6 +351,13 @@ export async function getInitialState() {
component: './store/storeDesktopNumber',
access: 'k12',
},
{
name: '店铺员工',
icon: 'smile',
path: '/store/storeStaff',
component: './store/storeStaff',
access: 'k12',
},
{
code: 'Printer',
name: '店铺小票打印机',


+ 56
- 0
src/pages/store/storeStaff/components/CreateForm.jsx Ver fichero

@@ -0,0 +1,56 @@
import React, { useState, useEffect } from 'react';
import { Modal, Form, Input, Button, Select } from 'antd';

const CreateForm = (props) => {
const { Option, OptGroup } = Select;
return (
<Modal
title={props.values.id ? '编辑' : '新建'}
width={640}
visible={props.createModalVisible}
bodyStyle={{ padding: '32px 40px 48px' }}
footer={null}
onCancel={() => {
props.onCancel();
}}
destroyOnClose
>
<Form
preserve={false}
initialValues={props.values}
onFinish={props.onFinish} >
<Form.Item name="id" hidden={true}>
<Input />
</Form.Item>
<Form.Item label={"名称"} name="name" rules={[{ required: true}]} >
<Input />
</Form.Item>
<Form.Item label={"电话"} name="phone" rules={[{ required: true}]} >
<Input />
</Form.Item>
<Form.Item label={"工号"} name="number" rules={[{ required: true}]} >
<Input />
</Form.Item>


<Form.Item name="status" label="状态"
rules={[{ required: true, message: '请选择状态' }]} >
<Select placeholder="请选择状态">
<OptGroup>
<Select.Option value={0}>正常</Select.Option>
<Select.Option value={1}>停用</Select.Option>
<Select.Option value={2}>删除</Select.Option>
</OptGroup>
</Select>
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">
保存
</Button>
</Form.Item>
</Form>
</Modal>
);
};

export default CreateForm;

+ 246
- 0
src/pages/store/storeStaff/index.jsx Ver fichero

@@ -0,0 +1,246 @@
import { PlusOutlined } from '@ant-design/icons';
import { Modal,Button, message, Input, Drawer } from 'antd';
import React, { useState, useRef } from 'react';
import { PageContainer, FooterToolbar } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import QRCode from 'qrcode.react';
import ProDescriptions from '@ant-design/pro-descriptions';
import CreateForm from './components/CreateForm';
import { Getstorestaffpage, Addstorestaff, Updatestorestaff, Delstorestaff, } from "./services"

const key = 'message';

//添加
const handleAdd = async (fields) => {
try {
message.loading('正在添加', key);
await Addstorestaff(JSON.stringify(fields)).then((r) => {
message.destroy(key);
if (r.data) {
message.success('添加成功');
return true;
} else {
message.error('添加失败');
return false;
}
});
} catch (error) {
message.error('添加失败请重试!');
return false;
}
};


//修改
const handleUpdate = async (fields) => {
try {
message.loading('正在修改', key);
message.destroy(key);
await Updatestorestaff(JSON.stringify(fields)).then((r) => {
message.destroy(key);
if (r.data) {
message.success('修改成功',);
return true;
} else {
message.error('修改失败');
return false;
}
});
} catch (error) {
message.error('修改失败请重试!');
return false;
}
};


//删除
const handleRemove = async (selectedRows) => {
try {
message.loading('正在删除');
let ids = [];
selectedRows.forEach((item) => {
ids.push(item.id);
});
await Delstorestaff(ids).then((r) => {
if (r.data) {
message.success('删除成功');
return true;
} else {
message.error('删除失败');
return false;
}
});
} catch (error) {
message.error('删除失败请重试!');
return false;
}
};

const GoodsTypeManage = () => {
/** 新建/更新窗口的弹窗 */
const [createModalVisible, handleModalVisible] = useState(false);
/** 分布更新窗口的弹窗 */

const [showDetail, setShowDetail] = useState(false);
const actionRef = useRef();
const [currentRow, setCurrentRow] = useState();
const [selectedRowsState, setSelectedRows] = useState([]);
/** 国际化配置 */

const columns = [
{
title: '主键',
dataIndex: 'id',
hideInSearch: true,
hideInTable: true,
tip: '规则名称是唯一的 key'
},
{
title: '名称',
dataIndex: 'name',
valueType: 'textarea',
search: false,

},
{
title: '电话',
dataIndex: 'phone',
valueType: 'textarea',
search: false,
},
{
title: '职工编号',
dataIndex: 'number',
valueType: 'textarea',
search: false,
},
{
title: '状态',
dataIndex: 'status',
hideInForm: true,
search: false,
valueEnum: {
0: { text: '正常', status: 'Processing' },
1: { text: '停用', status: 'Success' },
2: { text: '删除', status: 'Error' },
},
},
{
title: '创建时间',
dataIndex: 'createAt',
hideInForm: true,
search: false,
},
{
title: '操作',
dataIndex: 'option',
valueType: 'option',
render: (_, record) => [
<a
key="config"
onClick={() => {
handleModalVisible(true);
setCurrentRow(record);
}} > 更新</a>
],
},
];

return (
<PageContainer>
<ProTable
headerTitle="店铺类型"
actionRef={actionRef}
rowKey="id"
search={{
labelWidth: 120,
}}
toolBarRender={() => [
<Button
type="primary"
key="primary"
onClick={() => {
handleModalVisible(true);
}} >
<PlusOutlined /> 新建
</Button>,
]}
request={async (params) => {
var data = [];
var total = 0;
await Getstorestaffpage(params).then((r) => {
data = r.data.data;
total = r.data.total;
});
return {
data: data,
success: true,
total: total,
};
}}
columns={columns}
rowSelection={{
onChange: (_, selectedRows) => {
setSelectedRows(selectedRows);
},
}}
/>
{selectedRowsState?.length > 0 && (
<FooterToolbar
extra={
<div>
已选择{' '}
<a
style={{
fontWeight: 600,
}}
>
{selectedRowsState.length}
</a>{' '}
项 &nbsp;&nbsp;
{/* <span>
服务调用次数总计 {selectedRowsState.reduce((pre, item) => pre + item.id, 0)} 万
</span> */}
</div>
}
>
<Button
onClick={async () => {
await handleRemove(selectedRowsState);
setSelectedRows([]);
actionRef.current?.reloadAndRest?.();
}}
>
删除
</Button>
{/* <Button type="primary">批量审批</Button> */}
</FooterToolbar>
)}

<CreateForm
onFinish={async (value) => {
var success = false;
if (value.id) {
success = handleUpdate(value);
} else {
success = handleAdd(value);
}
if (success) {
handleModalVisible(false);
setCurrentRow(undefined);
actionRef.current.reload();
}
}}
onCancel={() => {
handleModalVisible(false);
setCurrentRow(undefined);
}}
createModalVisible={createModalVisible}
values={currentRow || {}}
/>
</PageContainer>
);
};

export default GoodsTypeManage;

+ 38
- 0
src/pages/store/storeStaff/services.js Ver fichero

@@ -0,0 +1,38 @@
import { request } from 'umi';

/** 获取 */
export async function Getstorestaffpage(data) {
return request(`/kitchen/api/store-staff/store-staff-page`, {
method: 'POST',
data: data,
});
}

/** 新增 */
export async function Addstorestaff(data) {
return request(`/kitchen/api/store-staff/store-staff`, {
method: 'POST',
data: data,
});
}

/** 修改 */
export async function Updatestorestaff(data) {
return request(`/kitchen​/api/store-staff/store-staff`, {
method: 'put',
data: data,
// params: { ...params },
// ...(options || {}),
});
}

/** 删除 */
export async function Delstorestaff(data) {
return request(`​/kitchen/api/store-staff/del-store-staff`, {
method: 'POST',
data: data,
// params: { ...params },

// ...(options || {}),
});
}

Cargando…
Cancelar
Guardar