Yansen 2 年前
父节点
当前提交
ace9246e0a
共有 7 个文件被更改,包括 111 次插入17 次删除
  1. 12
    3
      src/app.jsx
  2. 5
    0
      src/global.less
  3. 65
    10
      src/pages/package/DishList.jsx
  4. 2
    1
      src/pages/package/List.jsx
  5. 1
    1
      src/pages/package/index.jsx
  6. 1
    1
      src/services/api/dish.js
  7. 25
    1
      src/services/api/package.js

+ 12
- 3
src/app.jsx 查看文件

43
     token: {
43
     token: {
44
       sider: {
44
       sider: {
45
         colorMenuBackground: '#001529',
45
         colorMenuBackground: '#001529',
46
-        colorTextMenuTitle: '#fff',
47
-        colorTextMenu: 'hsla(0,0%,100%,.65);',
48
         colorBgMenuItemHover: '#fff',
46
         colorBgMenuItemHover: '#fff',
49
         colorBgMenuItemSelected: '#1890ff',
47
         colorBgMenuItemSelected: '#1890ff',
48
+        colorTextMenuActive: '#fff',
50
         colorTextMenuSelected: '#fff',
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
     // waterMarkProps: {
62
     // waterMarkProps: {
96
       );
105
       );
97
     },
106
     },
98
 
107
 
99
-    settings: initialState?.settings,
108
+    ...initialState?.settings,
100
   };
109
   };
101
 
110
 
102
   console.log(cfg)
111
   console.log(cfg)

+ 5
- 0
src/global.less 查看文件

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 查看文件

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
 const { Option } = Select;
7
 const { Option } = Select;
5
 
8
 
10
 
13
 
11
   const handleSearch = (newValue) => {
14
   const handleSearch = (newValue) => {
12
     if (newValue) {
15
     if (newValue) {
13
-      // fetch(newValue, setData);
16
+      getDishList({ name: newValue, pageNum: 1, pageSize: 100 }).then(res => {
17
+        setData(res.records || []);
18
+      });
14
     } else {
19
     } else {
15
       setData([]);
20
       setData([]);
16
     }
21
     }
25
 
30
 
26
   const options = data.map(d => <Option key={d.id} value={d.id}>{d.name}</Option>);
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
   return (
43
   return (
29
     <Select
44
     <Select
30
       style={{ width: '100%' }}
45
       style={{ width: '100%' }}
46
+      allowClear
31
       showSearch
47
       showSearch
32
       value={value}
48
       value={value}
33
       placeholder='请选择菜肴'
49
       placeholder='请选择菜肴'
37
       onSearch={handleSearch}
53
       onSearch={handleSearch}
38
       onChange={handleChange}
54
       onChange={handleChange}
39
       notFoundContent={null}
55
       notFoundContent={null}
56
+      onClear={initList}
40
     >
57
     >
41
       {options}
58
       {options}
42
     </Select>
59
     </Select>
45
 
62
 
46
 
63
 
47
 export default (props) => {
64
 export default (props) => {
65
+  const { current, setCurrent } = props;
66
+
67
+  const packageId = (current || {}).id;
68
+
69
+  const [loading, setLoading] = useState(false);
48
   const [list, setList] = useState([]);
70
   const [list, setList] = useState([]);
71
+  const [detail, setDetail] = useState({});
72
+  const listRef = useRef();
73
+  listRef.current = list;
49
 
74
 
50
   const onAdd = item => {
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
   return (
111
   return (
58
     <List
112
     <List
113
+      style={{ minHeight: '300px' }}
59
       header={<Header onChange={onAdd} />}
114
       header={<Header onChange={onAdd} />}
60
       bordered
115
       bordered
116
+      loading={loading}
61
       dataSource={list}
117
       dataSource={list}
62
       renderItem={item => (
118
       renderItem={item => (
63
         <List.Item
119
         <List.Item
64
-          className={classNames({ active: current.id === item.id })}
65
-          onClick={() => setCurrent(item)}
120
+          className={classNames({ active: detail.id === item.id })}
66
           actions={[
121
           actions={[
67
             <Popconfirm
122
             <Popconfirm
68
               key="delete"
123
               key="delete"
69
-              title="确认删除套餐?"
124
+              title="确认删除?"
70
               onConfirm={() => onDelete(item)}
125
               onConfirm={() => onDelete(item)}
71
               >
126
               >
72
               <a href="#">删除</a>
127
               <a href="#">删除</a>

+ 2
- 1
src/pages/package/List.jsx 查看文件

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

+ 1
- 1
src/pages/package/index.jsx 查看文件

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

+ 1
- 1
src/services/api/dish.js 查看文件

5
  * @param {*} params
5
  * @param {*} params
6
  * @returns
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 查看文件

28
  *  @param {*} id
28
  *  @param {*} id
29
  * @returns
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 });