Yansen 2 years ago
parent
commit
ace9246e0a

+ 12
- 3
src/app.jsx View File

@@ -43,11 +43,20 @@ export const layout = ({ initialState, setInitialState }) => {
43 43
     token: {
44 44
       sider: {
45 45
         colorMenuBackground: '#001529',
46
-        colorTextMenuTitle: '#fff',
47
-        colorTextMenu: 'hsla(0,0%,100%,.65);',
48 46
         colorBgMenuItemHover: '#fff',
49 47
         colorBgMenuItemSelected: '#1890ff',
48
+        colorTextMenuActive: '#fff',
50 49
         colorTextMenuSelected: '#fff',
50
+        colorTextMenuTitle: '#fff',
51
+        colorTextMenu: 'hsla(0,0%,100%,.65);',
52
+        
53
+        // colorTextMenuTitle: string,
54
+        // colorTextCollapsedButtonHover: string,
55
+        // colorTextCollapsedButton: string,
56
+        // colorTextMenuSecondary: string,
57
+        // colorTextSubMenuSelected: string,
58
+        // colorBgMenuItemCollapsedHover: string,
59
+        // colorBgMenuItemCollapsedSelected: string,
51 60
       },
52 61
     },
53 62
     // waterMarkProps: {
@@ -96,7 +105,7 @@ export const layout = ({ initialState, setInitialState }) => {
96 105
       );
97 106
     },
98 107
 
99
-    settings: initialState?.settings,
108
+    ...initialState?.settings,
100 109
   };
101 110
 
102 111
   console.log(cfg)

+ 5
- 0
src/global.less View File

@@ -52,3 +52,8 @@ ol {
52 52
     }
53 53
   }
54 54
 }
55
+
56
+.ant-page-header {
57
+  background-color: #fff !important;
58
+  // box-shadow: 0 2px 2px rgba(0, 0, 0, 0.04);
59
+}

+ 65
- 10
src/pages/package/DishList.jsx View File

@@ -1,5 +1,8 @@
1
-import React, { useState } from 'react';
2
-import { List, Popconfirm, Select } from 'antd';
1
+import React, { useEffect, useState, useRef } from 'react';
2
+import { Button, List, Popconfirm, Select } from 'antd';
3
+import classNames from 'classnames';
4
+import { getPackageDetailList, addPackageDetail, deletePackageDetail } from '@/services/api/package';
5
+import { getDishList } from '@/services/api/dish';
3 6
 
4 7
 const { Option } = Select;
5 8
 
@@ -10,7 +13,9 @@ const Header = props => {
10 13
 
11 14
   const handleSearch = (newValue) => {
12 15
     if (newValue) {
13
-      // fetch(newValue, setData);
16
+      getDishList({ name: newValue, pageNum: 1, pageSize: 100 }).then(res => {
17
+        setData(res.records || []);
18
+      });
14 19
     } else {
15 20
       setData([]);
16 21
     }
@@ -25,9 +30,20 @@ const Header = props => {
25 30
 
26 31
   const options = data.map(d => <Option key={d.id} value={d.id}>{d.name}</Option>);
27 32
 
33
+  const initList = () => {
34
+    getDishList({ pageNum: 1, pageSize: 10 }).then(res => {
35
+      setData(res.records || []);
36
+    });
37
+  }
38
+
39
+  useEffect(() => {
40
+    initList();
41
+  }, [])
42
+
28 43
   return (
29 44
     <Select
30 45
       style={{ width: '100%' }}
46
+      allowClear
31 47
       showSearch
32 48
       value={value}
33 49
       placeholder='请选择菜肴'
@@ -37,6 +53,7 @@ const Header = props => {
37 53
       onSearch={handleSearch}
38 54
       onChange={handleChange}
39 55
       notFoundContent={null}
56
+      onClear={initList}
40 57
     >
41 58
       {options}
42 59
     </Select>
@@ -45,28 +62,66 @@ const Header = props => {
45 62
 
46 63
 
47 64
 export default (props) => {
65
+  const { current, setCurrent } = props;
66
+
67
+  const packageId = (current || {}).id;
68
+
69
+  const [loading, setLoading] = useState(false);
48 70
   const [list, setList] = useState([]);
71
+  const [detail, setDetail] = useState({});
72
+  const listRef = useRef();
73
+  listRef.current = list;
49 74
 
50 75
   const onAdd = item => {
51
-    const origin = list.filter(x => x.id !== item.id)[0];
52
-    if (!origin) {
53
-      setList([...list, item]);
54
-    }
76
+    setLoading(true);
77
+    addPackageDetail({ packageId, dishId: item.id }).then(res => {
78
+      setLoading(false);
79
+      const newList = listRef.current.concat(res);
80
+      setList(newList);
81
+    }).catch(() => {
82
+      setLoading(false);
83
+    });
55 84
   }
56 85
 
86
+  const onDelete = item => {
87
+    setLoading(true);
88
+    deletePackageDetail({ packageId, dishId: item.id }).then(res => {
89
+      setLoading(false);
90
+      const newList = listRef.current.filter(x => x.id !== item.id);
91
+      setList(newList);
92
+    }).catch(() => {
93
+      setLoading(false);
94
+    });
95
+  }
96
+
97
+  useEffect(() => {
98
+    if (!packageId) return;
99
+
100
+    setLoading(true);
101
+    getPackageDetailList({ packageId, pageNum: 1, pageSize: 500 }).then(res => {
102
+      setLoading(false);
103
+      setList(res.records || []);
104
+      setDetail((res.records || [])[0] || {});
105
+    }).catch(() => {
106
+      setLoading(false);
107
+    });
108
+
109
+  }, [packageId]);
110
+
57 111
   return (
58 112
     <List
113
+      style={{ minHeight: '300px' }}
59 114
       header={<Header onChange={onAdd} />}
60 115
       bordered
116
+      loading={loading}
61 117
       dataSource={list}
62 118
       renderItem={item => (
63 119
         <List.Item
64
-          className={classNames({ active: current.id === item.id })}
65
-          onClick={() => setCurrent(item)}
120
+          className={classNames({ active: detail.id === item.id })}
66 121
           actions={[
67 122
             <Popconfirm
68 123
               key="delete"
69
-              title="确认删除套餐?"
124
+              title="确认删除?"
70 125
               onConfirm={() => onDelete(item)}
71 126
               >
72 127
               <a href="#">删除</a>

+ 2
- 1
src/pages/package/List.jsx View File

@@ -97,6 +97,7 @@ export default (props) => {
97 97
 
98 98
   return (
99 99
     <List
100
+      style={{ minHeight: '600px' }}
100 101
       bordered
101 102
       header={
102 103
         <Input.Group compact>
@@ -114,7 +115,7 @@ export default (props) => {
114 115
           actions={[
115 116
             <Popconfirm
116 117
               key="delete"
117
-              title="确认删除套餐?"
118
+              title="确认删除?"
118 119
               onConfirm={() => onDelete(item)}
119 120
               >
120 121
               <a href="#">删除</a>

+ 1
- 1
src/pages/package/index.jsx View File

@@ -20,7 +20,7 @@ export default (props) => {
20 20
           <Col span={8}>
21 21
             <BasicForm current={current} onChange={it => setCurrent(it)} />
22 22
             <div style={{ marginTop: '100px' }}>
23
-              <DishList />
23
+              <DishList current={current} />
24 24
             </div>
25 25
           </Col>
26 26
         </Row>

+ 1
- 1
src/services/api/dish.js View File

@@ -5,7 +5,7 @@ import { request } from '@umijs/max';
5 5
  * @param {*} params
6 6
  * @returns
7 7
  */
8
-export const getDishList = (params) => request('/dish', { params });
8
+export const getDishList = (params) => request('/dishes', { params });
9 9
 
10 10
 
11 11
 /**

+ 25
- 1
src/services/api/package.js View File

@@ -28,4 +28,28 @@ export const updataPackage = (data, id) => request(`/package/${id}`, { method: '
28 28
  *  @param {*} id
29 29
  * @returns
30 30
  */
31
-export const deletePackage = id => request(`/package/${id}`, { method: 'delete' });
31
+export const deletePackage = id => request(`/package/${id}`, { method: 'delete' });
32
+
33
+
34
+/**
35
+ * 获取明细
36
+ * @param {*} params 
37
+ * @returns 
38
+ */
39
+export const getPackageDetailList = params => request('/packageDetail', { params });
40
+
41
+
42
+/**
43
+ * 新增明细
44
+ * @param {*} data 
45
+ * @returns 
46
+ */
47
+ export const addPackageDetail = data => request('/packageDetail', { method: 'post', data });
48
+ 
49
+
50
+/**
51
+ * 删除明细
52
+ * @param {*} params 
53
+ * @returns 
54
+ */
55
+ export const deletePackageDetail = params => request('/packageDetail', { method: 'delete', params });