Procházet zdrojové kódy

Merge branch 'v2' of http://git.ycjcjy.com/yunzhi/crm_pc into v2

fangmingyue před 1 rokem
rodič
revize
26483333a0

+ 11
- 6
src/components/Page/LeftIcon.jsx Zobrazit soubor

@@ -18,16 +18,13 @@ const IconStyle = {
18 18
 };
19 19
 
20 20
 export default (props) => {
21
-  const { children, back } = props;
21
+  const { children, back, navigatenum } = props;
22 22
   const navigate = useNavigate();
23 23
   const goBack = (e) => {
24
- 
25
-    const router = useRoute();
26
-    console.log(router);
27 24
     e.preventDefault();
28 25
     e.stopPropagation();
29 26
 
30
-    navigate(-1);
27
+    navigate(navigatenum);
31 28
   };
32 29
   return (
33 30
     <Typography.Title
@@ -35,7 +32,15 @@ export default (props) => {
35 32
       style={{ fontWeight: 400, flex: "none", margin: "0" }}
36 33
     >
37 34
       <div style={titleStyle}>
38
-        {back ? <LeftCircleFilled onClick={goBack} style={IconStyle} /> : ""}
35
+        {back ? (
36
+          <LeftCircleFilled
37
+            onClick={goBack}
38
+            style={IconStyle}
39
+            navigatenum={navigatenum}
40
+          />
41
+        ) : (
42
+          ""
43
+        )}
39 44
         {children}
40 45
       </div>
41 46
     </Typography.Title>

+ 4
- 2
src/components/Page/index.jsx Zobrazit soubor

@@ -9,8 +9,8 @@ const pageStyle = {
9 9
   minHeight: "calc(100% - 24px)",
10 10
 };
11 11
 
12
-
13 12
 export default (props) => {
13
+  const { back = false, navigatenum = -1 } = props;
14 14
   const { meta = {} } = useRoute() || {};
15 15
   const style = meta.noLayout ? { height: "100%" } : pageStyle;
16 16
 
@@ -19,7 +19,9 @@ export default (props) => {
19 19
   return (
20 20
     <div style={style}>
21 21
       {title && !meta.noLayout && (
22
-        <LeftIcon back={props?.back}> {title}</LeftIcon>
22
+        <LeftIcon back={back} navigatenum={navigatenum}>
23
+          {title}
24
+        </LeftIcon>
23 25
       )}
24 26
       {props.children}
25 27
     </div>

+ 9
- 5
src/main.jsx Zobrazit soubor

@@ -7,12 +7,16 @@ import { Provider } from "./store";
7 7
 import { initTokenIfExists } from "./utils/sso";
8 8
 import { renderToPipeableStream } from "react-dom/server";
9 9
 import { hydrateRoot } from "react-dom/client";
10
-
10
+import { ConfigProvider } from "antd";
11
+import zhCN from "antd/es/locale/zh_CN";
12
+import "moment/dist/locale/zh-cn";
11 13
 initTokenIfExists();
12 14
 
13 15
 ReactDOM.createRoot(document.getElementById("root")).render(
14
-  <Provider>
15
-    {/* <Background /> */}
16
-    <Router />
17
-  </Provider>
16
+  <ConfigProvider locale={zhCN}>
17
+    <Provider>
18
+      {/* <Background /> */}
19
+      <Router />
20
+    </Provider>
21
+  </ConfigProvider>
18 22
 );

+ 1
- 1
src/pages/finance/index.jsx Zobrazit soubor

@@ -2,7 +2,7 @@ import List from '@/components/Page/List'
2 2
 import React, { useRef } from 'react'
3 3
 import { getTfFinance, deleteTfFinance } from '@/services/tfFinance'
4 4
 import { queryDict } from '@/utils/request'
5
-import { Button, ConfigProvider } from 'antd'
5
+import { Button } from 'antd'
6 6
 import { ProFormDateTimeRangePicker } from '@ant-design/pro-components'
7 7
 import { useNavigate } from 'react-router-dom'
8 8
 

+ 1
- 1
src/pages/financeItem/index.jsx Zobrazit soubor

@@ -2,7 +2,7 @@ import List from '@/components/Page/List'
2 2
 import React, { useRef } from 'react'
3 3
 import { getTfItemFinance, deleteTfItemFinance } from '@/services/tfFinanceItem'
4 4
 import { queryDict } from '@/utils/request'
5
-import { Button, ConfigProvider } from 'antd'
5
+import { Button } from 'antd'
6 6
 import { ProFormDateTimeRangePicker } from '@ant-design/pro-components'
7 7
 import { useNavigate } from 'react-router-dom'
8 8
 

+ 9
- 2
src/pages/member/components/ModalNewCard.jsx Zobrazit soubor

@@ -13,7 +13,13 @@ import React from "react";
13 13
 import SelectPackageModal from "./SelectPackageModal";
14 14
 import SelectCardModal from "./SelectCardModal";
15 15
 export default (props) => {
16
-  const { isModalOpen, setIsModalOpen, modalTitle, modalObj } = props;
16
+  const {
17
+    isModalOpen,
18
+    setIsModalOpen,
19
+    modalTitle,
20
+    modalObj,
21
+    reload,
22
+  } = props;
17 23
   const formRef = React.useRef();
18 24
 
19 25
   const handleOk = () => {
@@ -41,10 +47,11 @@ export default (props) => {
41 47
           .then((result) => {
42 48
             setIsModalOpen(false);
43 49
           })
44
-          .catch((err) => { });
50
+          .catch((err) => {});
45 51
       } else {
46 52
         // 开卡
47 53
         postTaMemberCardIdActive(x).then((res) => {
54
+          reload();
48 55
           setIsModalOpen(false);
49 56
         });
50 57
       }

+ 9
- 3
src/pages/member/index.jsx Zobrazit soubor

@@ -1,4 +1,4 @@
1
-import React from "react";
1
+import React, { useRef } from "react";
2 2
 import { getTaMember } from "@/services/taMember";
3 3
 import List from "@/components/Page/List";
4 4
 import moment from "moment";
@@ -76,11 +76,16 @@ export default (props) => {
76 76
   const onWrite = (id) => {
77 77
     // putTaMemberCardIdWrite().then((res) => {});
78 78
   };
79
+const actionRef=useRef()
80
+
81
+const reload=()=>{
82
+  return actionRef?.current?.reload()
83
+}
79 84
 
80 85
   return (
81 86
     <>
82 87
       <List
83
-        // actionRef={actionRef}
88
+        actionRef={actionRef}
84 89
         rowKey="memberId"
85 90
         // onEdit={(record) => navigate(`/member/edit?id=${record.memberId}`)}
86 91
         columnOptionRender={(_, record) => {
@@ -128,7 +133,8 @@ export default (props) => {
128 133
         setIsModalOpen={setIsModalOpen}
129 134
         modalTitle={modalTitle}
130 135
         modalObj={modalObj}
131
-      />
136
+        reload={reload}
137
+      /> 
132 138
     </>
133 139
   );
134 140
 };

+ 23
- 23
src/pages/project/Edit.jsx Zobrazit soubor

@@ -1,49 +1,49 @@
1
-import React, { useState, useEffect } from 'react'
2
-import Page from '@/components/Page'
3
-import { useNavigate, useSearchParams } from 'react-router-dom'
4
-import ProjectMessage from './components/ProjectMessage'
5
-import ProjectDeploy from './components/ProjectDeploy'
6
-import { Card } from 'antd'
1
+import React, { useState, useEffect } from "react";
2
+import Page from "@/components/Page";
3
+import { useNavigate, useSearchParams } from "react-router-dom";
4
+import ProjectMessage from "./components/ProjectMessage";
5
+import ProjectDeploy from "./components/ProjectDeploy";
6
+import { Card } from "antd";
7 7
 
8 8
 export default (props) => {
9
-  const [activeTabKey, setActiveTabKey] = useState('tab1')
10
-  const navigate = useNavigate()
9
+  const [activeTabKey, setActiveTabKey] = useState("tab1");
10
+  const navigate = useNavigate();
11 11
 
12
-  const [params] = useSearchParams()
13
-  const tab = params.get('tab')
12
+  const [params] = useSearchParams();
13
+  const tab = params.get("tab");
14 14
 
15 15
   useEffect(() => {
16 16
     if (tab) {
17
-      setActiveTabKey(tab)
17
+      setActiveTabKey(tab);
18 18
     }
19
-  }, [tab])
19
+  }, [tab]);
20 20
 
21 21
   const tabList = [
22 22
     {
23
-      key: 'tab1',
24
-      tab: '项目信息',
23
+      key: "tab1",
24
+      tab: "项目信息",
25 25
     },
26 26
     {
27
-      key: 'tab2',
28
-      tab: '部署信息',
27
+      key: "tab2",
28
+      tab: "部署信息",
29 29
     },
30
-  ]
30
+  ];
31 31
 
32 32
   const contentList = {
33 33
     tab1: <ProjectMessage />,
34 34
     tab2: <ProjectDeploy />,
35
-  }
35
+  };
36 36
 
37 37
   return (
38
-    <Page back>
38
+    <Page back navigatenum={"/project/project"}>
39 39
       <Card
40
-        style={{ backgroundColor: '#F0F2F5' }}
40
+        style={{ backgroundColor: "#F0F2F5" }}
41 41
         tabList={tabList}
42 42
         activeTabKey={activeTabKey}
43
-        onTabChange={(key) => navigate(`?tab=${key}`)}
43
+        onTabChange={setActiveTabKey}
44 44
       >
45 45
         {contentList[activeTabKey]}
46 46
       </Card>
47 47
     </Page>
48
-  )
49
-}
48
+  );
49
+};

+ 1
- 8
src/pages/project/components/Custom.jsx Zobrazit soubor

@@ -1,13 +1,6 @@
1 1
 import React, { useState } from 'react'
2 2
 import { Button, Card, Form, Input, Select, Row, Col, Descriptions } from 'antd'
3
-import {
4
-  ProForm,
5
-  ProFormDateTimeRangePicker,
6
-  ProFormMoney,
7
-  ProFormSelect,
8
-  ProFormText,
9
-  ProFormRadio,
10
-} from '@ant-design/pro-components'
3
+
11 4
 import Page from '@/components/Page'
12 5
 import { postTaCustom, putTaCustom, getTaCustomId } from '@/services/taCustom'
13 6
 const { Option } = Select

+ 78
- 81
src/pages/project/index.jsx Zobrazit soubor

@@ -1,108 +1,107 @@
1
-import List from '@/components/Page/List'
2
-import React, { useRef } from 'react'
3
-import { getTaProject, deleteTaProject } from '@/services/taProject'
4
-import { getTaCustom } from '@/services/taCustom'
5
-import { queryDict } from '@/utils/request'
6
-import { Button, ConfigProvider } from 'antd'
7
-import zhCN from 'antd/es/locale/zh_CN'
8
-import { ProFormDateTimeRangePicker } from '@ant-design/pro-components'
9
-import { useNavigate } from 'react-router-dom'
10
-import moment from 'moment'
11
-import './zh-cn.js'
1
+import List from "@/components/Page/List";
2
+import React, { useRef } from "react";
3
+import { getTaProject, deleteTaProject } from "@/services/taProject";
4
+import { getTaCustom } from "@/services/taCustom";
5
+import { queryDict } from "@/utils/request";
6
+import { Button } from "antd";
7
+
8
+import { ProFormDateTimeRangePicker } from "@ant-design/pro-components";
9
+import { useNavigate } from "react-router-dom";
10
+import moment from "moment";
12 11
 
13 12
 export default (props) => {
14
-  const navigate = useNavigate()
13
+  const navigate = useNavigate();
15 14
   const queryCustom = queryDict(getTaCustom, {
16
-    labelKey: 'customName',
17
-    valueKey: 'customId',
18
-  })
15
+    labelKey: "customName",
16
+    valueKey: "customId",
17
+  });
19 18
 
20 19
   const columns = [
21 20
     {
22
-      title: '项目日期',
23
-      dataIndex: 'startTime1',
21
+      title: "项目日期",
22
+      dataIndex: "startTime1",
24 23
       search: {
25 24
         transform: (value) => {
26 25
           return {
27 26
             startTime: value[0],
28 27
             endTime: value[1],
29
-          }
28
+          };
30 29
         },
31 30
       },
32
-      valueType: 'dateRange',
31
+      valueType: "dateRange",
33 32
       hideInTable: true,
34 33
     },
35 34
     {
36
-      title: '甲方',
37
-      dataIndex: 'partyA',
35
+      title: "甲方",
36
+      dataIndex: "partyA",
38 37
       search: false,
39 38
     },
40 39
     {
41
-      title: '甲方名称',
42
-      dataIndex: 'partyAName',
40
+      title: "甲方名称",
41
+      dataIndex: "partyAName",
43 42
     },
44 43
     {
45
-      title: '乙方',
46
-      dataIndex: 'partyB',
44
+      title: "乙方",
45
+      dataIndex: "partyB",
47 46
       search: false,
48 47
     },
49 48
     {
50
-      title: '乙方名称',
51
-      dataIndex: 'partyBName',
49
+      title: "乙方名称",
50
+      dataIndex: "partyBName",
52 51
     },
53 52
     {
54
-      title: '项目名称',
55
-      dataIndex: 'projectName',
53
+      title: "项目名称",
54
+      dataIndex: "projectName",
56 55
     },
57 56
     {
58
-      title: '项目简介',
59
-      dataIndex: 'introduction',
57
+      title: "项目简介",
58
+      dataIndex: "introduction",
60 59
       search: false,
61 60
       ellipsis: true,
62 61
     },
63 62
     {
64
-      title: '项目开始日期',
65
-      dataIndex: 'startTime',
66
-      render: (t) => moment(t).format('YYYY-MM-DD'),
63
+      title: "项目开始日期",
64
+      dataIndex: "startTime",
65
+      render: (t) => moment(t).format("YYYY-MM-DD"),
67 66
       search: false,
68 67
     },
69 68
     {
70
-      title: '项目结束日期',
71
-      dataIndex: 'endTime',
72
-      render: (t) => moment(t).format('YYYY-MM-DD'),
69
+      title: "项目结束日期",
70
+      dataIndex: "endTime",
71
+      render: (t) => moment(t).format("YYYY-MM-DD"),
73 72
       search: false,
74 73
     },
75 74
     {
76
-      title: '合同报价',
77
-      dataIndex: 'quotation',
75
+      title: "合同报价",
76
+      dataIndex: "quotation",
78 77
       search: false,
79 78
     },
80 79
     {
81
-      title: '已收款',
82
-      dataIndex: 'receivedMoney',
80
+      title: "已收款",
81
+      dataIndex: "receivedMoney",
83 82
       search: false,
84 83
     },
85 84
     {
86
-      title: '已开票额',
87
-      dataIndex: 'invoicedMoney',
85
+      title: "已开票额",
86
+      dataIndex: "invoicedMoney",
88 87
       search: false,
89 88
     },
90 89
     {
91
-      title: '阶段名称',
92
-      dataIndex: 'stageName',
90
+      title: "阶段名称",
91
+      dataIndex: "stageName",
93 92
       search: false,
94 93
       valueEnum: {
95
-        0: '未开始',
96
-        1: '处理中',
97
-        2: '已完成',
94
+        0: "未开始",
95
+        1: "处理中",
96
+        2: "已完成",
98 97
       },
99 98
     },
100 99
     {
101
-      title: '状态',
102
-      dataIndex: 'status',
100
+      title: "状态",
101
+      dataIndex: "status",
103 102
       valueEnum: {
104
-        0: '禁用',
105
-        1: '正常',
103
+        0: "禁用",
104
+        1: "正常",
106 105
       },
107 106
       search: false,
108 107
     },
@@ -117,9 +116,9 @@ export default (props) => {
117 116
     //   search: false,
118 117
     // },
119 118
     {
120
-      title: '所属客户',
121
-      dataIndex: 'customId',
122
-      valueType: 'select',
119
+      title: "所属客户",
120
+      dataIndex: "customId",
121
+      valueType: "select",
123 122
       request: queryCustom,
124 123
       search: false,
125 124
     },
@@ -139,32 +138,30 @@ export default (props) => {
139 138
     //   title: '更新时间',
140 139
     //   dataIndex: 'updatedAt',
141 140
     // }
142
-  ]
141
+  ];
143 142
 
144
-  const actionRef = useRef()
143
+  const actionRef = useRef();
145 144
   const onAdd = () => {
146
-    navigate('/project/project/edit')
147
-  }
145
+    navigate("/project/project/edit");
146
+  };
148 147
   return (
149
-    <ConfigProvider locale={zhCN}>
150
-      <List
151
-        scroll={{ x: 1800 }}
152
-        actionRef={actionRef}
153
-        rowKey="projectId"
154
-        onEdit={(record) => navigate(`/project/project/edit?id=${record.projectId}`)}
155
-        onDelete={(record) =>
156
-          deleteTaProject(record.projectId).then(() =>
157
-            actionRef.current.reload()
158
-          )
159
-        }
160
-        toolBarRender={() => [
161
-          <Button key="1" type="primary" onClick={onAdd}>
162
-            新增
163
-          </Button>,
164
-        ]}
165
-        request={getTaProject}
166
-        columns={columns}
167
-      />
168
-    </ConfigProvider>
169
-  )
170
-}
148
+    <List
149
+      scroll={{ x: 1800 }}
150
+      actionRef={actionRef}
151
+      rowKey="projectId"
152
+      onEdit={(record) =>
153
+        navigate(`/project/project/edit?id=${record.projectId}`)
154
+      }
155
+      onDelete={(record) =>
156
+        deleteTaProject(record.projectId).then(() => actionRef.current.reload())
157
+      }
158
+      toolBarRender={() => [
159
+        <Button key="1" type="primary" onClick={onAdd}>
160
+          新增
161
+        </Button>,
162
+      ]}
163
+      request={getTaProject}
164
+      columns={columns}
165
+    />
166
+  );
167
+};

+ 0
- 113
src/pages/project/zh-cn.js Zobrazit soubor

@@ -1,113 +0,0 @@
1
-import moment from 'moment'
2
-moment.defineLocale('zh-cn', {
3
-  months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
4
-  monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
5
-  weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
6
-  weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
7
-  weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
8
-  longDateFormat: {
9
-    LT: 'Ah点mm分',
10
-    LTS: 'Ah点m分s秒',
11
-    L: 'YYYY-MM-DD',
12
-    LL: 'YYYY年MMMD日',
13
-    LLL: 'YYYY年MMMD日Ah点mm分',
14
-    LLLL: 'YYYY年MMMD日ddddAh点mm分',
15
-    l: 'YYYY-MM-DD',
16
-    ll: 'YYYY年MMMD日',
17
-    lll: 'YYYY年MMMD日Ah点mm分',
18
-    llll: 'YYYY年MMMD日ddddAh点mm分'
19
-  },
20
-  meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
21
-  meridiemHour: function (hour, meridiem) {
22
-    if (hour === 12) {
23
-      hour = 0;
24
-    }
25
-    if (meridiem === '凌晨' || meridiem === '早上' ||
26
-      meridiem === '上午') {
27
-      return hour;
28
-    } else if (meridiem === '下午' || meridiem === '晚上') {
29
-      return hour + 12;
30
-    } else {
31
-      // '中午'
32
-      return hour >= 11 ? hour : hour + 12;
33
-    }
34
-  },
35
-  meridiem: function (hour, minute, isLower) {
36
-    var hm = hour * 100 + minute;
37
-    if (hm < 600) {
38
-      return '凌晨';
39
-    } else if (hm < 900) {
40
-      return '早上';
41
-    } else if (hm < 1130) {
42
-      return '上午';
43
-    } else if (hm < 1230) {
44
-      return '中午';
45
-    } else if (hm < 1800) {
46
-      return '下午';
47
-    } else {
48
-      return '晚上';
49
-    }
50
-  },
51
-  calendar: {
52
-    sameDay: function () {
53
-      return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
54
-    },
55
-    nextDay: function () {
56
-      return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
57
-    },
58
-    lastDay: function () {
59
-      return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
60
-    },
61
-    nextWeek: function () {
62
-      var startOfWeek, prefix;
63
-      startOfWeek = moment().startOf('week');
64
-      prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';
65
-      return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
66
-    },
67
-    lastWeek: function () {
68
-      var startOfWeek, prefix;
69
-      startOfWeek = moment().startOf('week');
70
-      prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
71
-      return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
72
-    },
73
-    sameElse: 'LL'
74
-  },
75
-  ordinalParse: /\d{1,2}(日|月|周)/,
76
-  ordinal: function (number, period) {
77
-    switch (period) {
78
-      case 'd':
79
-      case 'D':
80
-      case 'DDD':
81
-        return number + '日';
82
-      case 'M':
83
-        return number + '月';
84
-      case 'w':
85
-      case 'W':
86
-        return number + '周';
87
-      default:
88
-        return number;
89
-    }
90
-  },
91
-  relativeTime: {
92
-    future: '%s内',
93
-    past: '%s前',
94
-    s: '几秒',
95
-    m: '1 分钟',
96
-    mm: '%d 分钟',
97
-    h: '1 小时',
98
-    hh: '%d 小时',
99
-    d: '1 天',
100
-    dd: '%d 天',
101
-    M: '1 个月',
102
-    MM: '%d 个月',
103
-    y: '1 年',
104
-    yy: '%d 年'
105
-  },
106
-  week: {
107
-    // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
108
-    dow: 1, // Monday is the first day of the week.
109
-    doy: 4  // The week that contains Jan 4th is the first week of the year.
110
-  }
111
-
112
-}
113
-);