李志伟 2 年之前
父節點
當前提交
f445414819

+ 12
- 4
src/pages/invoiceFill/components/BasicInfo.jsx 查看文件

1
 import React, { useState, useRef, useEffect } from 'react';
1
 import React, { useState, useRef, useEffect } from 'react';
2
-import { Form, Input, Popconfirm, Select, Button, Modal, InputNumber, message, Col, Row, Card } from 'antd';
2
+import { Form, Input, Popconfirm, Select, Button, Modal, InputNumber, message, Col, Row, DatePicker } from 'antd';
3
 import { PlusOutlined } from '@ant-design/icons';
3
 import { PlusOutlined } from '@ant-design/icons';
4
+import moment from 'moment';
4
 import { saveInvoiceFill, updateInvoiceFill, getInvoiceFillDetail } from '@/services/invoiceFill'
5
 import { saveInvoiceFill, updateInvoiceFill, getInvoiceFillDetail } from '@/services/invoiceFill'
5
 import { saveInvoiceItemTpl, getInvoiceItemTplList, deleteInvoiceItemTpl } from '@/services/invoiceItemTpl'
6
 import { saveInvoiceItemTpl, getInvoiceItemTplList, deleteInvoiceItemTpl } from '@/services/invoiceItemTpl'
6
 import { history } from 'umi';
7
 import { history } from 'umi';
7
 import PageTable from '@/components/PageTable';
8
 import PageTable from '@/components/PageTable';
9
+import locale from 'antd/es/date-picker/locale/zh_CN';
8
 
10
 
9
 const FormItem = Form.Item;
11
 const FormItem = Form.Item;
10
 const { Option } = Select;
12
 const { Option } = Select;
15
 export default (props) => {
17
 export default (props) => {
16
   const { invoiceId } = props
18
   const { invoiceId } = props
17
   const [form] = Form.useForm();
19
   const [form] = Form.useForm();
20
+  const dateFormat = "YYYY-MM-DD HH:mm:ss";
18
   const [loading, setLoading] = useState(false);
21
   const [loading, setLoading] = useState(false);
19
   const [formModel] = Form.useForm();
22
   const [formModel] = Form.useForm();
20
   const [editModal, setEditModal] = useState(false);
23
   const [editModal, setEditModal] = useState(false);
23
 
26
 
24
   //保存班级
27
   //保存班级
25
   const onSubmit = (data) => {
28
   const onSubmit = (data) => {
26
-    var newData = { ...data };
29
+    var newData = { ...data,endDate:moment(Date(data.endDate)) };
27
     setLoading(true);
30
     setLoading(true);
28
     if (invoiceId) {
31
     if (invoiceId) {
29
       updateInvoiceFill(invoiceId, newData)
32
       updateInvoiceFill(invoiceId, newData)
81
       message.error(err.message || err);
84
       message.error(err.message || err);
82
     });
85
     });
83
   }
86
   }
87
+
84
   const actions = () => [
88
   const actions = () => [
85
     <Button key="add" type="primary" icon={<PlusOutlined />} onClick={showModel}>
89
     <Button key="add" type="primary" icon={<PlusOutlined />} onClick={showModel}>
86
       新增报销项目
90
       新增报销项目
89
   useEffect(() => {
93
   useEffect(() => {
90
     if (invoiceId) {
94
     if (invoiceId) {
91
       getInvoiceFillDetail(invoiceId).then((res) => {
95
       getInvoiceFillDetail(invoiceId).then((res) => {
92
-        form.setFieldsValue(res)
96
+        form.setFieldsValue({...res,endDate:moment(res.endDate)})
93
       }).catch((err) => {
97
       }).catch((err) => {
94
         message.error(err.message || err);
98
         message.error(err.message || err);
95
       });
99
       });
132
             <FormItem label="班级名称" name="name" rules={[{ required: true, message: '请输入班级名称' }]}>
136
             <FormItem label="班级名称" name="name" rules={[{ required: true, message: '请输入班级名称' }]}>
133
               <Input placeholder="请输入班级名称" style={{ width: '350px' }} />
137
               <Input placeholder="请输入班级名称" style={{ width: '350px' }} />
134
             </FormItem>
138
             </FormItem>
139
+            <FormItem label="截止时间" name="endDate" rules={[{ required: true, message: '请选择班级截止时间' }]}>
140
+              <DatePicker locale={locale} showTime style={{width:'350px'}} format={dateFormat} />
141
+            </FormItem>
135
             <FormItem label="状态" name="status" rules={[{ required: true, message: '请选择' }]}>
142
             <FormItem label="状态" name="status" rules={[{ required: true, message: '请选择' }]}>
136
               <Select placeholder="请选择发布状态" style={{ width: '350px' }}>
143
               <Select placeholder="请选择发布状态" style={{ width: '350px' }}>
137
-                <Option value={1}>发布</Option>
144
+                <Option value={1}>进行中</Option>
138
                 <Option value={0}>未发布</Option>
145
                 <Option value={0}>未发布</Option>
146
+                <Option value={2}>已截止</Option>
139
               </Select>
147
               </Select>
140
             </FormItem>
148
             </FormItem>
141
             <FormItem label=" " colon={false}>
149
             <FormItem label=" " colon={false}>

+ 11
- 80
src/pages/invoiceFill/components/InvoiceDetail.jsx 查看文件

1
 import React, { useState, useRef, useImperativeHandle, forwardRef } from 'react';
1
 import React, { useState, useRef, useImperativeHandle, forwardRef } from 'react';
2
-import { Form, Input, Button, Modal, message, Popconfirm } from 'antd';
3
-import { PlusOutlined } from '@ant-design/icons';
4
-import { getInvoiceDetailList, updateInvoiceDetail,deleteInvoiceDetail } from '@/services/invoiceDetail'
5
-import {getExport} from '@/services/invoiceFill'
2
+import { Form, Input, Button, Modal, message, Popconfirm, Radio } from 'antd';
3
+import { getInvoiceDetailList, updateInvoiceDetail, deleteInvoiceDetail } from '@/services/invoiceDetail'
4
+import { getExport } from '@/services/invoiceFill'
6
 import PageTable from '@/components/PageTable';
5
 import PageTable from '@/components/PageTable';
7
 
6
 
8
 const FormItem = Form.Item;
7
 const FormItem = Form.Item;
18
 
17
 
19
   //弹窗保存
18
   //弹窗保存
20
   const Submit = (val) => {
19
   const Submit = (val) => {
21
-    updateInvoiceDetail(invoiceDetail.detailId,invoiceId, { ...invoiceDetail, ...val }).then((res) => {
20
+    updateInvoiceDetail(invoiceId, { ...invoiceDetail, ...val }).then((res) => {
22
       message.success('修改成功')
21
       message.success('修改成功')
23
       setModelLoading(false)
22
       setModelLoading(false)
24
       refrash()
23
       refrash()
36
   }
35
   }
37
 
36
 
38
   const showModel = (value) => {
37
   const showModel = (value) => {
39
-    form.setFieldsValue(value)
40
-    setInvoiceDetail(value)
38
+    form.setFieldsValue({ ...value, name: value.itemName, mergeRemark: value.mergeRemark || 0 })
39
+    setInvoiceDetail({ ...value, name: value.itemName, mergeRemark: value.mergeRemark || 0 })
41
     setEditModal(true);
40
     setEditModal(true);
42
   }
41
   }
43
   const refrash = () => {
42
   const refrash = () => {
60
       dataIndex: 'personName',
59
       dataIndex: 'personName',
61
       key: 'personName',
60
       key: 'personName',
62
     },
61
     },
63
-    {
64
-      title: '开票单位',
65
-      dataIndex: 'orgName',
66
-      key: 'orgName',
67
-    },
68
-    {
69
-      title: '纳税识别号',
70
-      dataIndex: 'taxNo',
71
-      key: 'taxNo',
72
-    },
73
-    {
74
-      title: '地址',
75
-      dataIndex: 'address',
76
-      key: 'address',
77
-      search: false
78
-    },
79
-    {
80
-      title: '电话',
81
-      dataIndex: 'phone',
82
-      key: 'phone',
83
-    },
84
-    {
85
-      title: '开户银行',
86
-      dataIndex: 'bankName',
87
-      key: 'bankName',
88
-    },
89
-    {
90
-      title: '开户行账户',
91
-      dataIndex: 'cardNo',
92
-      key: 'cardNo',
93
-    },
94
     {
62
     {
95
       title: '项目',
63
       title: '项目',
96
       dataIndex: 'itemName',
64
       dataIndex: 'itemName',
102
       key: 'charge',
70
       key: 'charge',
103
       search: false
71
       search: false
104
     },
72
     },
105
-    {
106
-      title: '是否合开',
107
-      dataIndex: 'mergeRemark',
108
-      key: 'mergeRemark',
109
-      search: false
110
-    },
111
-    {
112
-      title: '住宿清单',
113
-      dataIndex: 'stayRemark',
114
-      key: 'stayRemark',
115
-      search: false
116
-    },
117
     {
73
     {
118
       title: '操作',
74
       title: '操作',
119
       valueType: 'option',
75
       valueType: 'option',
146
         request={getInvoiceDetailList}
102
         request={getInvoiceDetailList}
147
         actionRef={actionRef}
103
         actionRef={actionRef}
148
         columns={columns}
104
         columns={columns}
149
-        rowKey="detailId"
105
+        rowKey={(record, index) => (record, index)}
150
         expfunc={getExport}
106
         expfunc={getExport}
151
         invoiceId={invoiceId}
107
         invoiceId={invoiceId}
152
         options={false}
108
         options={false}
153
-        scroll={{ x: 2000 }}
154
         params={{ invoiceId }}
109
         params={{ invoiceId }}
155
       />
110
       />
156
 
111
 
165
         footer={null}
120
         footer={null}
166
       >
121
       >
167
         <Form {...formItemLayout} onFinish={Submit} form={form}>
122
         <Form {...formItemLayout} onFinish={Submit} form={form}>
168
-          <FormItem label="姓名" name="personName" rules={[{ required: true, message: '请输入' }]}>
169
-            <Input placeholder="请输入" />
170
-          </FormItem>
171
-          <FormItem label="开票(单位全称)" name="orgName" rules={[{ required: true, message: '请输入' }]}>
172
-            <Input placeholder="请输入" />
173
-          </FormItem>
174
-          <FormItem label="纳税识别号" name="taxNo" rules={[{ required: true, message: '请输入' }]}>
175
-            <Input placeholder="请输入" />
176
-          </FormItem>
177
-          <FormItem label="地址" name="address" rules={[{ required: true, message: '请输入' }]}>
178
-            <Input placeholder="请输入" />
179
-          </FormItem>
180
-          <FormItem label="电话" name="phone" rules={[{ required: true, message: '请输入' }]}>
181
-            <Input placeholder="请输入" />
123
+          <FormItem label="姓名">
124
+            {invoiceDetail?.personName}
182
           </FormItem>
125
           </FormItem>
183
-          <FormItem label="开户银行" name="bankName" rules={[{ required: true, message: '请输入' }]}>
184
-            <Input placeholder="请输入" />
185
-          </FormItem>
186
-          <FormItem label="开户行账户" name="cardNo" rules={[{ required: true, message: '请输入' }]}>
187
-            <Input placeholder="请输入" />
188
-          </FormItem>
189
-          <FormItem label="项目" name="itemName" rules={[{ required: true, message: '请输入' }]}>
190
-            <Input placeholder="请输入" />
126
+          <FormItem label="项目" name="name">
127
+            {invoiceDetail?.name}
191
           </FormItem>
128
           </FormItem>
192
           <FormItem label="开票金额" name="charge" rules={[{ required: true, message: '请输入' }]}>
129
           <FormItem label="开票金额" name="charge" rules={[{ required: true, message: '请输入' }]}>
193
             <Input placeholder="请输入" />
130
             <Input placeholder="请输入" />
194
           </FormItem>
131
           </FormItem>
195
-          <FormItem label="是否合开" name="mergeRemark" rules={[{ required: true, message: '请输入' }]}>
196
-            <Input placeholder="请输入" />
197
-          </FormItem>
198
-          <FormItem label="住宿清单" name="stayRemark" rules={[{ required: true, message: '请输入' }]}>
199
-            <Input placeholder="请输入" />
200
-          </FormItem>
201
           <FormItem label=" " colon={false}>
132
           <FormItem label=" " colon={false}>
202
             <Button type="default" onClick={onCancel}>
133
             <Button type="default" onClick={onCancel}>
203
               取消
134
               取消

+ 6
- 28
src/pages/invoiceFill/index.jsx 查看文件

19
   const handleClick = () => {
19
   const handleClick = () => {
20
     history.push('/invoiceFill/edit.jsx');
20
     history.push('/invoiceFill/edit.jsx');
21
   }
21
   }
22
-  const handleOK = (record, data) => {
23
-    const title = record.status
24
-      ? '您确定要将该班级状态变更为未发布吗? 变更后该班级将不在移动端显示'
25
-      : '您确定要将该班级状态变更为发布吗? 发布后该班级可以在移动端显示';
26
-    Modal.confirm({
27
-      title: title,
28
-      okText: '确认',
29
-      cancelText: '取消',
30
-      onOk() {
31
-        // updateBanner(record.bannerId, { ...record, status: record.status === 1 ? 0 : 1 })
32
-        //   .then((res) => {
33
-        //     message.success('操作成功');
34
-        //     actionRef.current.reload();
35
-        //   })
36
-        //   .catch((err) => {
37
-        //     console.log(err.message)
38
-        //   });
39
-      },
40
-    });
41
-  };
42
   const handleDelete = (id) => {
22
   const handleDelete = (id) => {
43
     deleteInvoiceFill(id).then((res) => {
23
     deleteInvoiceFill(id).then((res) => {
44
       message.success('删除成功')
24
       message.success('删除成功')
72
       dataIndex: 'status',
52
       dataIndex: 'status',
73
       key: 'status',
53
       key: 'status',
74
       render: (_, record) => {
54
       render: (_, record) => {
75
-        return record.status === 1 ? '发布' : '未发布';
55
+        return record.status === 0 ? '未发布' :record.status === 1 ? '进行中' : '已截止';
76
       },
56
       },
77
       valueType: 'select',
57
       valueType: 'select',
78
       valueEnum: {
58
       valueEnum: {
79
-        1: { text: '发布' },
80
-        2: { text: '未发布' },
59
+        0: { text: '未发布' },
60
+        1: { text: '进行中' },
61
+        2: { text: '已截止' },
81
       },
62
       },
82
     },
63
     },
83
     {
64
     {
86
       key: 'option',
67
       key: 'option',
87
       ellipsis: true,
68
       ellipsis: true,
88
       render: (_, record) => [
69
       render: (_, record) => [
89
-        <Button type="link" key={1} onClick={() => handleOK(record)} style={{ padding: 0 }}>
90
-          {record.status === 0 ? '发布' : '取消发布'}
91
-        </Button>,
92
-        <Button type="link" key={2} onClick={() => history.push(`/invoiceFill/edit.jsx?id=${record.invoiceId}`)} style={{ padding: 0 }}>
70
+        <Button type="link" key={1} onClick={() => history.push(`/invoiceFill/edit.jsx?id=${record.invoiceId}`)} style={{ padding: 0 }}>
93
           编辑
71
           编辑
94
         </Button>,
72
         </Button>,
95
         <Popconfirm
73
         <Popconfirm
96
-          key={3}
74
+          key={2}
97
           title="您是否确认删除 ?"
75
           title="您是否确认删除 ?"
98
           onConfirm={() => handleDelete(record.invoiceId)}
76
           onConfirm={() => handleDelete(record.invoiceId)}
99
           okText="确定"
77
           okText="确定"

+ 5
- 5
src/services/invoiceDetail.js 查看文件

2
 
2
 
3
 // 获取列表
3
 // 获取列表
4
 export const getInvoiceDetailList = (params) =>
4
 export const getInvoiceDetailList = (params) =>
5
-  request(`/invoice/${params.invoiceId}/detail`, { params });
5
+  request(`/invoice/${params.invoiceId}/detail-tpl`, { params });
6
 
6
 
7
 // 生成明细
7
 // 生成明细
8
 export const saveInvoiceDetail = (invoiceId) =>
8
 export const saveInvoiceDetail = (invoiceId) =>
9
-  request(`/invoice/${invoiceId}/detail`, { method: 'post' });
9
+  request(`/invoice/${invoiceId}/detail-tpl`, { method: 'post' });
10
 
10
 
11
 // 更新信息
11
 // 更新信息
12
-export const updateInvoiceDetail = (id, invoiceId, data) =>
13
-  request(`/invoice/${invoiceId}/detail/${id}`, { data, method: 'put' });
12
+export const updateInvoiceDetail = (invoiceId, data) =>
13
+  request(`/invoice/${invoiceId}/detail-tpl/item`, { data, method: 'post' });
14
 
14
 
15
 /**
15
 /**
16
  * 删除报销明细
16
  * 删除报销明细
18
  * @returns
18
  * @returns
19
  */
19
  */
20
 export const deleteInvoiceDetail = (id) =>
20
 export const deleteInvoiceDetail = (id) =>
21
-  request(`/invoice/detail/${id}`, { method: 'delete' });
21
+  request(`/invoice/detail-tpl/item/${id}`, { method: 'delete' });