zlisen пре 3 година
родитељ
комит
879803c71e

+ 17
- 5
config/routes.js Прегледај датотеку

@@ -128,15 +128,27 @@ export default [
128 128
             component: '../layouts/BlankLayout',
129 129
             routes: [
130 130
               {
131
-                path: '/recommend/recommendCustomer/list',
132
-                name: '推荐记录',
133
-                component: './recommend/recommendCustomer/index',
131
+                path: '/recommend/customer',
132
+                name: '客户推荐',
133
+                component: './recommend/customer',
134
+              },
135
+              {
136
+                path: '/recommend/customer/audit',
137
+                name: '客户审核',
138
+                hideInMenu: true,
139
+                component: './recommend/customer/audit',
140
+              },
141
+
142
+              {
143
+                path: '/recommend/channel',
144
+                name: '经纪人推荐',
145
+                component: './recommend/channel',
134 146
               },
135 147
               {
136
-                path: '/recommend/recommendCustomer/audit',
148
+                path: '/recommend/channel/audit',
137 149
                 name: '客户审核',
138 150
                 hideInMenu: true,
139
-                component: './recommend/recommendCustomer/audit',
151
+                component: './recommend/channel/audit',
140 152
               },
141 153
             ],
142 154
           },

+ 45
- 0
src/components/SelectButton/consultantSelect.jsx Прегледај датотеку

@@ -0,0 +1,45 @@
1
+import React, { useState, useEffect, useMemo } from 'react';
2
+import { Select } from 'antd';
3
+import apis from '../../services/apis';
4
+import request from '../../utils/request'
5
+
6
+const { Option } = Select;
7
+
8
+/**
9
+ *
10
+ *
11
+ * @param {*} props
12
+ * @returns
13
+ */
14
+const ChannelSelect = props => {
15
+  const [data, setData] = useState([])
16
+  useEffect(() => {
17
+    getChannelSelect({buildingId:props.buildingId});
18
+  }, [props.value,props.buildingId])
19
+
20
+
21
+
22
+  const getChannelSelect = params => {
23
+    request({ ...apis.customer.buildingConsultant, params: { ...params,pageNumber: 1, pageSize: 999 } }).then(data => {
24
+      setData(data.records)
25
+      // 默认选中第一个
26
+    })
27
+  }
28
+
29
+  return (
30
+    <Select
31
+      showSearch
32
+      value={props.value}
33
+      style={{ width: '250px' }}
34
+      placeholder="请选择置业顾问"
35
+      onChange={props.onChange}
36
+      filterOption={(input, option) =>
37
+        option.props.children && option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
38
+      }>
39
+      {data.map(Item => (
40
+        <Option key={Item.userId} value={Item.userId}> {Item.userName} </Option>
41
+      ))}
42
+    </Select>
43
+  )
44
+}
45
+export default ChannelSelect

+ 7
- 5
src/pages/Live/LiveActivity/Edit/components/base.jsx Прегледај датотеку

@@ -9,14 +9,11 @@ import {
9 9
   Radio,
10 10
   DatePicker,
11 11
   message,
12
-  Upload,
12
+  Switch,
13 13
   InputNumber,
14 14
 } from 'antd';
15
-import { FormattedMessage } from 'umi-plugin-react/locale';
16 15
 import moment from 'moment';
17 16
 import router from 'umi/router';
18
-import styles from '../../../../style/GoodsList.less';
19
-import XForm, { FieldTypes, createForm } from '../../../../../components/XForm';
20 17
 import apis from '../../../../../services/apis';
21 18
 import BuildSelect2 from '../../../../../components/SelectButton/BuildSelect2';
22 19
 import LivePlatSelect from '../../../../../components/SelectButton/LivePlatSelect';
@@ -26,7 +23,6 @@ import request from '../../../../../utils/request';
26 23
 import Navigate from '@/components/Navigate';
27 24
 
28 25
 const { Option } = Select;
29
-const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
30 26
 
31 27
 let cityId = '';
32 28
 
@@ -177,6 +173,12 @@ const header = props => {
177 173
             />,
178 174
           )}
179 175
         </Form.Item>
176
+        <Form.Item label="是否新房">
177
+          {getFieldDecorator('isNewHouse', {
178
+            valuePropName: 'checked',
179
+            initialValue: liveActivityData.isNewHouse || false,
180
+          })(<Switch/>)}
181
+        </Form.Item>
180 182
         <Form.Item label="直播小程序">
181 183
           {getFieldDecorator('liveApp', {
182 184
             initialValue: liveActivityData.liveApp,

+ 14
- 6
src/pages/Live/LiveActivity/add/index.jsx Прегледај датотеку

@@ -1,5 +1,5 @@
1 1
 import React, { useState, useEffect } from 'react';
2
-import { Form, Input, Button, Icon, Select, message, Table, Divider, Tag, Pagination, Modal, DatePicker, Radio, Upload, InputNumber } from 'antd';
2
+import { Form, Input, Button, Icon, Select, message, Table, Divider, Tag, Pagination, Modal, DatePicker, Radio, Switch, InputNumber, Card } from 'antd';
3 3
 import { FormattedMessage } from 'umi-plugin-react/locale';
4 4
 import XForm, { FieldTypes } from '../../../../components/XForm';
5 5
 import router from 'umi/router';
@@ -77,7 +77,7 @@ const header = props => {
77 77
   const { getFieldDecorator } = props.form;
78 78
 
79 79
   return (
80
-    <>
80
+    <Card>
81 81
       <Form labelCol={{ span: 7 }} wrapperCol={{ span: 12 }} onSubmit={handleSubmit}>
82 82
         <Form.Item label="所属城市">
83 83
           {getFieldDecorator('cityId', {
@@ -112,15 +112,23 @@ const header = props => {
112 112
                 ],
113 113
               })(<DatePicker placeholder="预计结束时间" disabledDate={disabledDate} style={{ width: '500px' }}format="YYYY-MM-DD HH:mm:ss" showTime={{ format: 'HH:mm:ss' }}/>)}
114 114
         </Form.Item>
115
+
116
+        <Form.Item label="是否新房">
117
+          {getFieldDecorator('isNewHouse', {
118
+            valuePropName: 'checked',
119
+            initialValue:  false,
120
+          })(<Switch defaultChecked={false}/>)}
121
+        </Form.Item>
122
+
115 123
         <Form.Item label="直播小程序">
116 124
           {getFieldDecorator('liveApp', {
117 125
               rules: [{ required: true, message: '请选择直播小程序' }],
118
-            })((<LivePlatSelect />))}
126
+            })((<LivePlatSelect value={1} />))}
119 127
         </Form.Item>
120 128
         <Form.Item label="房间参数">
121 129
           {getFieldDecorator('liveRoomParam', {
122
-            rules: [{ required: true, message: '请输入房间参数' }],
123
-          })(<Input maxLength={1000} placeholder="点击右侧按钮查看如何获取房间参数" style={{width:'680px'}}/>)}<Navigate onClick={openIndexImg}>不知道怎么填?查看说明</Navigate>
130
+            rules: [{ required: true, message: '请输入房间' }],
131
+          })(<Input maxLength={1000} placeholder="请输入房间号" style={{width:'680px'}}/>)}
124 132
         </Form.Item>
125 133
         <Form.Item label="封面图1" help="建议尺寸:750px*420px,比例16:9,格式:jpg,用于:活动列表">
126 134
               {getFieldDecorator('listImg', {
@@ -167,7 +175,7 @@ const header = props => {
167 175
           </Button>
168 176
         </Form.Item>
169 177
       </Form>
170
-    </>
178
+    </Card>
171 179
   )
172 180
 }
173 181
 

+ 9
- 3
src/pages/Live/video/Edit/index.jsx Прегледај датотеку

@@ -9,7 +9,7 @@ import {
9 9
   Radio,
10 10
   DatePicker,
11 11
   message,
12
-  Upload,
12
+  Switch,
13 13
   InputNumber,
14 14
 } from 'antd';
15 15
 import { FormattedMessage } from 'umi-plugin-react/locale';
@@ -25,7 +25,6 @@ import ImageUpload from '@/components/XForm/ImageUpload';
25 25
 import request from '@/utils/request';
26 26
 import Navigate from '@/components/Navigate';
27 27
 
28
-
29 28
 const header = props => {
30 29
   console.log(props);
31 30
 
@@ -51,13 +50,13 @@ const header = props => {
51 50
     router.go('-1');
52 51
   };
53 52
 
54
-
55 53
   function handleSubmit(e) {
56 54
     e.preventDefault();
57 55
     props.form.validateFields((err, values) => {
58 56
       console.log(values, 'values');
59 57
       if (!err) {
60 58
         values.videoUrl = values?.videoUrl[0];
59
+        // values.isNewHouse =  values.isNewHouse?1:0
61 60
         if (id) {
62 61
           request({
63 62
             ...apis.video.updata,
@@ -133,6 +132,13 @@ const header = props => {
133 132
           })(<Input maxLength={20} placeholder="请输入视频标题" />)}
134 133
         </Form.Item>
135 134
 
135
+        <Form.Item label="是否新房">
136
+          {getFieldDecorator('isNewHouse', {
137
+            valuePropName: 'checked',
138
+            initialValue: data.isNewHouse || false,
139
+          })(<Switch />)}
140
+        </Form.Item>
141
+
136 142
         <Form.Item label="简介">
137 143
           {getFieldDecorator('remark', {
138 144
             initialValue: data.remark,

src/pages/recommend/recommendCustomer/audit.jsx → src/pages/recommend/channel/audit.jsx Прегледај датотеку

@@ -4,15 +4,10 @@ import ImageUpload from '../../../components/XForm/ImageUpload';
4 4
 import moment from 'moment';
5 5
 import request from '../../../utils/request';
6 6
 import apis from '../../../services/apis';
7
-import Styles from './style.less';
8 7
 import { router } from 'umi';
9 8
 
10 9
 import Attribution from './components/attribution'
11 10
 
12
-const { Option } = Select;
13
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
14
-const { Meta } = Card;
15
-
16 11
 const { TextArea } = Input;
17 12
 
18 13
 const tailFormItemLayout = {
@@ -55,8 +50,11 @@ function body(props) {
55 50
   // 获取详情信息
56 51
   function getById(currentId) {
57 52
     request({ ...apis.customer.recommendGetById, urlData: { id: currentId } }).then(res => {
58
-      res.reportDate = moment(res.reportDate)
59
-      props.form.setFieldsValue(res)
53
+      // res.reportDate = moment(res.reportDate)
54
+      if(res){
55
+        props.form.setFieldsValue({...res,reportDate:moment(res.reportDate)})
56
+      }
57
+    
60 58
     })
61 59
   }
62 60
 
@@ -107,8 +105,8 @@ function body(props) {
107 105
   }
108 106
 
109 107
   return (
110
-    <>
111
-      <Form {...tailFormItemLayout} onSubmit={e => handleSubmit(e)} style={{ width: '800px', margin: 'auto' }}>
108
+    <Card>
109
+      <Form {...tailFormItemLayout} onSubmit={e => handleSubmit(e)} style={{ maxWidth: '1000px' }}>
112 110
         <Form.Item label="客户ID" style={{ display: 'none' }}>
113 111
           {getFieldDecorator('customerId')(
114 112
             <Input
@@ -218,19 +216,21 @@ function body(props) {
218 216
           </Row>
219 217
         </Form.Item>
220 218
         <Form.Item style={{ display: 'flex', justifyContent: 'center' }}>
221
-          <Button type="primary" className={Styles.SubmitButton} htmlType="submit" >
219
+          <Button type="primary" htmlType="submit" >
222 220
             审核通过
223 221
           </Button>
224
-          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
225
-          <Button onClick={() => submitDate({ verifyStatus: '2' })}>
222
+          <Button type="danger" ghost style={{marginLeft: '4em'}} onClick={() => submitDate({ verifyStatus: '2' })}>
226 223
             驳回
227 224
           </Button>
225
+          <Button style={{marginLeft: '4em'}} onClick={() => router.goBack(-1)}>
226
+            取消
227
+          </Button>
228 228
         </Form.Item>
229 229
       </Form>
230 230
 
231 231
       {/* 选择置业顾问 */}
232 232
       <Attribution visibleData={visibleData} onCancel={() => closeConsultant()} onSuccess={e => consultantSuccess(e)} />
233
-    </>
233
+    </Card>
234 234
   );
235 235
 }
236 236
 const WrappedBody = Form.create({ name: 'body' })(body);

src/pages/recommend/recommendCustomer/components/attribution.jsx → src/pages/recommend/channel/components/attribution.jsx Прегледај датотеку

@@ -3,7 +3,7 @@ import { Form, Icon, Input, Button, DatePicker, Select, Card, Row, Col, Paginati
3 3
 import moment from 'moment';
4 4
 import request from '../../../../utils/request';
5 5
 import apis from '../../../../services/apis';
6
-import Styles from '../style.less';
6
+
7 7
 
8 8
 
9 9
 const { Option } = Select;

+ 207
- 0
src/pages/recommend/channel/index.jsx Прегледај датотеку

@@ -0,0 +1,207 @@
1
+import React, { useState } from 'react';
2
+import {  Avatar, Button,message } from 'antd';
3
+import moment from 'moment';
4
+import request from '../../../utils/request';
5
+import apis from '../../../services/apis';
6
+import QueryTable from '@/components/QueryTable'
7
+import { router } from 'umi';
8
+import AuthButton from '@/components/AuthButton';
9
+import BuildingSelect from '@/components/SelectButton/BuildSelect';
10
+
11
+
12
+
13
+/**
14
+ *
15
+ *
16
+ * @param {*} props
17
+ * @returns
18
+ */
19
+function Recommend(props) {
20
+  const [exportLoding,setExportLoding] = useState(false)
21
+
22
+  function toAudit(cuurentId) {
23
+    router.push({
24
+      pathname: '/customer/recommend/audit',
25
+      query: {
26
+        id: cuurentId,
27
+      },
28
+    })
29
+  }
30
+
31
+
32
+  /**
33
+   *导出数据(推荐用户)
34
+   *
35
+   */
36
+  function exportRecommendCustomer() {
37
+    setExportLoding(true)
38
+    request({
39
+      ...apis.customer.customerRecommendRecommenderExport,
40
+      responseType: 'blob',
41
+    }).then(response => {
42
+      console.log('exportRecommendCustomer: ', response)
43
+      download(response)
44
+    }).catch(error => {
45
+
46
+    })
47
+  }
48
+
49
+  function download(data) {
50
+    if (!data) {
51
+      return
52
+    }
53
+    const url = window.URL.createObjectURL(new Blob([data]))
54
+    const link = document.createElement('a')
55
+    link.style.display = 'none'
56
+    link.href = url
57
+    link.setAttribute('download', '推荐客户.xlsx')
58
+    document.body.append(link)
59
+    link.click()
60
+    setExportLoding(false)
61
+  }
62
+
63
+  const columns = [
64
+    // {
65
+    //   title: '头像',
66
+    //   dataIndex: 'picture',
67
+    //   key: 'picture',
68
+    //   render: (_, record) => <Avatar shape="square" src={record.picture} size={64} icon="user" />,
69
+    // },
70
+    {
71
+      title: '姓名',
72
+      dataIndex: 'name',
73
+      key: 'name',
74
+    },
75
+    {
76
+      title: '电话',
77
+      dataIndex: 'phone',
78
+      key: 'phone',
79
+    },
80
+    {
81
+      title: '性别',
82
+      dataIndex: 'sex',
83
+      key: 'sex',
84
+      // eslint-disable-next-line no-nested-ternary
85
+      render: (_, record) => <><span>{record.sex === 1 ? '男' : record.sex === 2 ? '女' : '未知'}</span></>,
86
+    },
87
+    {
88
+      title: '意向项目',
89
+      dataIndex: 'buildingName',
90
+      key: 'buildingName',
91
+    },
92
+    {
93
+      title: '推荐人',
94
+      dataIndex: 'recommendPersonName',
95
+      key: 'recommendPersonName',
96
+      render: (_, record) => <><span>{(record.recommendPersonName  ? record.recommendPersonName : '') + " " + (record.recommendPhone  ? record.recommendPhone : '')}</span></>,
97
+    },
98
+    {
99
+      title: '推荐时间',
100
+      dataIndex: 'createDate',
101
+      key: 'createDate',
102
+      render: (_, record) => <><span>{record.createDate && moment(record.createDate).format('YYYY-MM-DD')}</span></>,
103
+    },
104
+    {
105
+      title: '状态',
106
+      dataIndex: 'status',
107
+      key: 'status',
108
+      render: (_, record) => <><span>{record.status === '1' ? '待审核' : record.status === '2' ? '已通过' : record.status === '3' ? '已驳回' : ''}</span></>,
109
+    },
110
+    {
111
+      title: '操作',
112
+      dataIndex: 'customerId',
113
+      key: 'customerId',
114
+      render: (_, record) => (
115
+        <>{record.status === '1' ?<Button type='link' onClick={() => {
116
+          toAudit(record.channelCustomerId)
117
+          }}>审核</Button>:
118
+          <Button type='link' onClick={() => {
119
+            toAudit(record.channelCustomerId)
120
+            }}>查看详情</Button>
121
+          }
122
+          {/* {
123
+            <AuthButton name="admin.customer.recommend.verify.id.put" noRight={null}>
124
+              {record.verifyStatus === 0 ? <span style={{ color: 'rgba(239,39,58,1)', cursor: 'pointer' }} onClick={() => toAudit(record.customerId)}>审核</span> : ''}
125
+            </AuthButton>
126
+          } */}
127
+        </>
128
+      ),
129
+    },
130
+  ]
131
+
132
+  // const searchFields = [
133
+  //   {
134
+  //     name: 'sceneType',
135
+  //     label: '用户来源',
136
+  //     placeholder: '请选择用户来源',
137
+  //     render: () => <WxDictSelect style={{width: 160}} />
138
+  //   },
139
+  // ]
140
+ const searchFields=[
141
+     {
142
+      name: 'buildingId',
143
+      label: '项目',
144
+      placeholder: '项目',
145
+      render: () => <BuildingSelect style={{width: 160}} />
146
+    },
147
+  {
148
+    name: 'name',
149
+    label: '姓名',
150
+    placeholder: '请输入姓名',
151
+  },
152
+  {
153
+    name: 'phone',
154
+    label: '电话',
155
+    placeholder: '请输入电话',
156
+  },
157
+  {
158
+    name: 'recommendPersonName',
159
+    label: '推荐人',
160
+    placeholder: '请输入推荐人姓名',
161
+  },
162
+  {
163
+    name: 'recommendPhone',
164
+    label: '推荐人电话',
165
+    placeholder: '请输入推荐人电话电话',
166
+  },
167
+  {
168
+    name: 'status',
169
+    label: '状态',
170
+    placeholder: '请选择状态',
171
+    type: 'select',
172
+    options: [
173
+      {label: '未通过', value: '1'},
174
+      {label: '已通过', value: '2'},
175
+      {label: '已驳回', value: '3'}
176
+    ]
177
+  },
178
+ ]
179
+
180
+ const actionRender = () => {
181
+    
182
+  return (
183
+    <Button type="danger" loading={exportLoding} onClick={() => exportRecommendCustomer()}>
184
+      导出
185
+    </Button>
186
+  );
187
+};
188
+
189
+  return (
190
+    <>
191
+      <QueryTable
192
+          rowKey="recommendCustomer"
193
+          api={apis.customer.recommender}
194
+          searchFields={searchFields}
195
+          columns={columns}
196
+          postData={data => {
197
+            data.type='channel'
198
+            return data;
199
+          }}
200
+          actionRender={actionRender}
201
+        />
202
+    
203
+    </>
204
+  );
205
+}
206
+
207
+export default Recommend

+ 210
- 0
src/pages/recommend/customer/audit.jsx Прегледај датотеку

@@ -0,0 +1,210 @@
1
+import React, { useState, useEffect } from 'react';
2
+import { Form, Icon, Input, Button, DatePicker, Select, Card, Row, Col, Pagination, Alert, Table, Avatar, Radio, Upload, message, notification } from 'antd';
3
+import ImageUpload from '../../../components/XForm/ImageUpload';
4
+import moment from 'moment';
5
+import request from '../../../utils/request';
6
+import apis from '../../../services/apis';
7
+import { router } from 'umi';
8
+
9
+import Attribution from './components/attribution'
10
+import BuildingSelect from '@/components/SelectButton/BuildSelect2';
11
+import ConsultantSelect from '@/components/SelectButton/consultantSelect';
12
+
13
+const { TextArea } = Input;
14
+
15
+const tailFormItemLayout = {
16
+  labelCol: {
17
+    xs: { span: 20 },
18
+    sm: { span: 3 },
19
+  },
20
+  wrapperCol: {
21
+    xs: { span: 20 },
22
+    sm: { span: 16 },
23
+  },
24
+};
25
+
26
+const openNotificationWithIcon = (type, message) => {
27
+  notification[type]({
28
+    message,
29
+    description:
30
+      '',
31
+  });
32
+}
33
+
34
+function body(props) {
35
+  const { getFieldDecorator } = props.form
36
+
37
+  // eslint-disable-next-line react-hooks/rules-of-hooks
38
+  const [visibleData, setVisibleData] = useState({ visible: false, customerId: '', realtyConsultant: '', buildingId: '' })
39
+
40
+  // eslint-disable-next-line react-hooks/rules-of-hooks
41
+  const [dataSource, setDataSource] = useState({ picture: '' })
42
+
43
+  const { id } = props.location.query;
44
+
45
+  if (id !== '') {
46
+    // eslint-disable-next-line react-hooks/rules-of-hooks
47
+    useEffect(() => {
48
+      getById(id)
49
+    }, [])
50
+  }
51
+
52
+  // 获取详情信息
53
+  function getById(currentId) {
54
+    request({ ...apis.customer.getDetail, urlData: { id: currentId } }).then(res => {
55
+      // res.reportDate = moment(res.reportDate)
56
+      if(res){
57
+        props.form.setFieldsValue({...res,reportDate:moment(res.reportDate)})
58
+      }
59
+    
60
+    })
61
+  }
62
+
63
+  function submitDate(params) {
64
+    // props.form.setFieldsValue(res)
65
+    console.log(params, 'params')
66
+    request({ ...apis.customer.auto, urlData: { id: params.customerId || props.form.getFieldValue('customerId') }, params: { verifyStatus: params.verifyStatus, realtyConsultant: props.form.getFieldValue('realtyConsultant') } }).then(() => {
67
+      // eslint-disable-next-line no-unused-expressions
68
+      openNotificationWithIcon('success', '操作成功')
69
+      router.go(-1)
70
+    }).catch(err => {
71
+      // eslint-disable-next-line no-unused-expressions
72
+
73
+    })
74
+  }
75
+
76
+  // 提交事件
77
+  function handleSubmit(e) {
78
+    e.preventDefault();
79
+    props.form.validateFields((err, values) => {
80
+      if (!err) {
81
+        submitDate({ verifyStatus: '1' })
82
+        // submitDate({ ...values })
83
+      }
84
+    });
85
+  }
86
+
87
+  // Change 事件
88
+  function handleSelectChange(e) {
89
+    // eslint-disable-next-line no-console
90
+    console.log(e)
91
+  }
92
+
93
+  // 显示选择置业顾问的窗口
94
+  function showConsultant() {
95
+    setVisibleData({ visible: true, customerId: props.form.getFieldValue('customerId'), realtyConsultant: props.form.getFieldValue('realtyConsultant'), buildingId: props.form.getFieldValue('buildingId') })
96
+  }
97
+
98
+  // 关闭选择置业顾问的窗口
99
+  function closeConsultant() {
100
+    setVisibleData({ visible: false, customerId: '', realtyConsultant: '', buildingId: '' })
101
+  }
102
+
103
+  // 选择置业顾问弹窗
104
+  function consultantSuccess(e) {
105
+    console.log(e)
106
+    props.form.setFieldsValue({ realtyConsultant: e.realtyConsultant, consultantName: e.name })
107
+  }
108
+
109
+  return (
110
+    <Card>
111
+      <Form {...tailFormItemLayout} onSubmit={e => handleSubmit(e)} style={{ maxWidth: '1000px' }}>
112
+        {/* <Form.Item label="客户ID" style={{ display: 'none' }}>
113
+          {getFieldDecorator('customerId')(
114
+            <Input
115
+              placeholder="客户ID"
116
+            />,
117
+          )}
118
+        </Form.Item>
119
+        <Form.Item label="项目ID" style={{ display: 'none' }}>
120
+          {getFieldDecorator('buildingId')(
121
+            <Input
122
+              placeholder="项目ID"
123
+            />,
124
+          )}
125
+        </Form.Item>
126
+        <Form.Item label="归属人" style={{ display: 'none' }}>
127
+          {getFieldDecorator('realtyConsultant')(
128
+            <Input
129
+              placeholder="归属人"
130
+            />,
131
+          )}
132
+        </Form.Item> */}
133
+        <Form.Item label="意向项目:">
134
+          {getFieldDecorator('buildingId')(
135
+            <BuildingSelect
136
+              placeholder="意向项目"
137
+              style={{width:'100%'}}
138
+            />,
139
+          )}
140
+        </Form.Item>
141
+        <Form.Item label="客户姓名">
142
+          {getFieldDecorator('name')(
143
+            <Input placeholder="客户姓名" />,
144
+          )}
145
+        </Form.Item>
146
+        <Form.Item label="客户电话">
147
+          {getFieldDecorator('phone')(
148
+            <Input placeholder="客户电话" />,
149
+          )}
150
+        </Form.Item>
151
+        <Form.Item label="客户性别">
152
+          {getFieldDecorator('sex')(
153
+            <Radio.Group>
154
+              <Radio value={1}>男</Radio>
155
+              <Radio value={2}>女</Radio>
156
+            </Radio.Group>,
157
+          )}
158
+        </Form.Item>
159
+        <Form.Item label="客户描述">
160
+          {getFieldDecorator('describe')(
161
+            <TextArea placeholder="客户描述" rows={10} />,
162
+          )}
163
+        </Form.Item>
164
+        <Form.Item label="归属置业顾问">
165
+          {getFieldDecorator('describe11')(
166
+            <ConsultantSelect placeholder="归属置业顾问" buildingId={props.form.getFieldValue('buildingId')} />,
167
+          )}
168
+        </Form.Item>
169
+
170
+        
171
+
172
+        {/* <Form.Item label="归属置业顾问"
173
+      >
174
+          <Row gutter={8}>
175
+            <Col span={12}>
176
+              {getFieldDecorator('consultantName', {
177
+                rules: [
178
+                  {
179
+                    required: true,
180
+                    message: '请选择置业顾问',
181
+                  },
182
+                ],
183
+              })(<Input placeholder="请选择置业顾问" />)}
184
+            </Col>
185
+            <Col span={12}>
186
+              <Button onClick={() => showConsultant()}>选择</Button>
187
+            </Col>
188
+          </Row>
189
+        </Form.Item> */}
190
+        <Form.Item style={{ display: 'flex', justifyContent: 'center' }}>
191
+          <Button type="primary" htmlType="submit" >
192
+            审核通过
193
+          </Button>
194
+          <Button type="danger" ghost style={{marginLeft: '4em'}} onClick={() => submitDate({ status: '2' })}>
195
+            驳回
196
+          </Button>
197
+          <Button style={{marginLeft: '4em'}} onClick={() => router.goBack(-1)}>
198
+            取消
199
+          </Button>
200
+        </Form.Item>
201
+      </Form>
202
+
203
+      {/* 选择置业顾问 */}
204
+      <Attribution visibleData={visibleData} onCancel={() => closeConsultant()} onSuccess={e => consultantSuccess(e)} />
205
+    </Card>
206
+  );
207
+}
208
+const WrappedBody = Form.create({ name: 'body' })(body);
209
+
210
+export default WrappedBody

+ 151
- 0
src/pages/recommend/customer/components/attribution.jsx Прегледај датотеку

@@ -0,0 +1,151 @@
1
+import React, { useState, useEffect } from 'react';
2
+import { Form, Icon, Input, Button, DatePicker, Select, Card, Row, Col, Pagination, Alert, Table, Avatar, Radio, Modal, Descriptions, notification } from 'antd';
3
+import moment from 'moment';
4
+import request from '../../../../utils/request';
5
+import apis from '../../../../services/apis';
6
+
7
+
8
+
9
+const { Option } = Select;
10
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
11
+const { Meta } = Card;
12
+
13
+/**
14
+ * 调整归属
15
+ *
16
+ * @param {*} props
17
+ * @returns
18
+ */
19
+class ModalAttribution extends React.Component {
20
+  constructor(props) {
21
+    super(props);
22
+    this.state = {
23
+       dataSource: { records: [] },
24
+       visibleData: { visible: false, customerId: '', realtyConsultant: '', buildingId: '' },
25
+    }
26
+  }
27
+
28
+  // 挂载之后
29
+  componentDidMount() {
30
+    // this.getList({ pageNumber: 1, pageSize: 5 })
31
+  }
32
+
33
+  componentDidUpdate(preProps, preState) {
34
+    if (this.props.visibleData.visible !== preState.visibleData.visible) {
35
+      this.getList({ pageNumber: 1, pageSize: 5, buildingId: this.props.visibleData.buildingId })
36
+      this.setState({ visibleData: this.props.visibleData });
37
+    }
38
+  }
39
+
40
+  // 弹框确定按钮
41
+  // eslint-disable-next-line react/sort-comp
42
+  handleOk() {
43
+    this.props.onCancel()
44
+  }
45
+
46
+  // 弹框取消按钮
47
+  handleCancel() {
48
+    this.props.onCancel()
49
+  }
50
+
51
+  getList(params) {
52
+    if (params.buildingId === '' || params.buildingId === null || params.buildingId === undefined) {
53
+      return
54
+    }
55
+
56
+    // 网路请求
57
+    request({ ...apis.customer.buildingConsultant, params: { ...params } }).then(res => {
58
+      this.setState({ dataSource: res })
59
+    }).catch(err => {
60
+      // eslint-disable-next-line no-unused-expressions
61
+
62
+    })
63
+  }
64
+
65
+  openNotificationWithIcon = (type, message) => {
66
+    notification[type]({
67
+      message,
68
+      description:
69
+        '',
70
+    });
71
+  };
72
+
73
+   // 分页
74
+  onChange(pageNum) {
75
+    this.getList({ pageNumber: pageNum, pageSize: 5, buildingId: this.props.visibleData.buildingId })
76
+  }
77
+
78
+  // 提交
79
+  submitGm(record) {
80
+
81
+    console.log('传递之前:', record)
82
+    this.handleCancel()
83
+    this.props.onSuccess({ realtyConsultant: record.userId, name: record.userName })
84
+
85
+
86
+    // // 网路请求
87
+    // request({ ...apis.customer.recommendEdit, urlData: { id: this.state.visibleData.customerId }, data: { customerId: this.state.visibleData.customerId, realtyConsultant: record.personId } }).then(res => {
88
+    //   // eslint-disable-next-line no-unused-expressions
89
+    //   this.openNotificationWithIcon('success', '操作成功')
90
+    //   this.handleCancel()
91
+    //   this.props.onSuccess({ realtyConsultant: record.personId, name: record.name })
92
+    // }).catch(err => {
93
+    //   // eslint-disable-next-line no-unused-expressions
94
+    //   // this.openNotificationWithIcon('error', err)
95
+    // })
96
+  }
97
+
98
+  render() {
99
+    const columns = [
100
+      // {
101
+      //   title: '编号',
102
+      //   dataIndex: 'personId',
103
+      //   key: 'personId',
104
+      // },
105
+      {
106
+        title: '姓名',
107
+        dataIndex: 'userName',
108
+        key: 'userName',
109
+      },
110
+      {
111
+        title: '电话',
112
+        dataIndex: 'phone',
113
+        key: 'phone',
114
+      },
115
+      {
116
+        title: '部门',
117
+        dataIndex: 'department',
118
+        key: 'department',
119
+      },
120
+      {
121
+        title: '岗位',
122
+        dataIndex: 'position',
123
+        key: 'position',
124
+      },
125
+      {
126
+        title: '操作',
127
+        dataIndex: 'personId',
128
+        key: 'personId',
129
+        // eslint-disable-next-line no-nested-ternary
130
+        render: (_, record) => <>{ this.props.visibleData.realtyConsultant !== record.userId && <Button type="danger" onClick={() => this.submitGm(record)}>确定</Button>}</>,
131
+      },
132
+    ]
133
+    return (
134
+      <>
135
+        <Modal
136
+            title="选择置业顾问"
137
+            width={800}
138
+            destroyOnClose="true"
139
+            footer={null}
140
+            visible={this.state.visibleData.visible}
141
+            // onOk={() => this.handleOk()}
142
+            onCancel={(e) => this.handleCancel(e)}
143
+          >
144
+            <Table rowKey="attribution" dataSource={this.state.dataSource.records} columns={columns} pagination={{ pageSize: 5,total: this.state.dataSource.total, onChange: e => this.onChange(e) }} />
145
+          </Modal>
146
+      </>
147
+    );
148
+  }
149
+}
150
+
151
+export default ModalAttribution

+ 199
- 0
src/pages/recommend/customer/index.jsx Прегледај датотеку

@@ -0,0 +1,199 @@
1
+import React, { useState } from 'react';
2
+import {  Avatar, Button,message } from 'antd';
3
+import moment from 'moment';
4
+import request from '../../../utils/request';
5
+import apis from '../../../services/apis';
6
+import QueryTable from '@/components/QueryTable'
7
+import { router } from 'umi';
8
+import AuthButton from '@/components/AuthButton';
9
+import BuildingSelect from '@/components/SelectButton/BuildSelect';
10
+
11
+
12
+
13
+/**
14
+ *
15
+ *
16
+ * @param {*} props
17
+ * @returns
18
+ */
19
+function Recommend(props) {
20
+  const [exportLoding,setExportLoding] = useState(false)
21
+
22
+  function toAudit(cuurentId) {
23
+    router.push({
24
+      pathname: '/recommend/customer/audit',
25
+      query: {
26
+        id: cuurentId,
27
+      },
28
+    })
29
+  }
30
+
31
+
32
+  /**
33
+   *导出数据(推荐用户)
34
+   *
35
+   */
36
+  function exportRecommendCustomer() {
37
+    setExportLoding(true)
38
+    request({
39
+      ...apis.customer.customerRecommendRecommenderExport,
40
+      responseType: 'blob',
41
+    }).then(response => {
42
+      console.log('exportRecommendCustomer: ', response)
43
+      download(response)
44
+    }).catch(error => {
45
+
46
+    })
47
+  }
48
+
49
+  function download(data) {
50
+    if (!data) {
51
+      return
52
+    }
53
+    const url = window.URL.createObjectURL(new Blob([data]))
54
+    const link = document.createElement('a')
55
+    link.style.display = 'none'
56
+    link.href = url
57
+    link.setAttribute('download', '推荐客户.xlsx')
58
+    document.body.append(link)
59
+    link.click()
60
+    setExportLoding(false)
61
+  }
62
+
63
+  const columns = [
64
+    // {
65
+    //   title: '头像',
66
+    //   dataIndex: 'picture',
67
+    //   key: 'picture',
68
+    //   render: (_, record) => <Avatar shape="square" src={record.picture} size={64} icon="user" />,
69
+    // },
70
+    {
71
+      title: '姓名',
72
+      dataIndex: 'name',
73
+      key: 'name',
74
+    },
75
+    {
76
+      title: '电话',
77
+      dataIndex: 'phone',
78
+      key: 'phone',
79
+    },
80
+    {
81
+      title: '性别',
82
+      dataIndex: 'sex',
83
+      key: 'sex',
84
+      // eslint-disable-next-line no-nested-ternary
85
+      render: (_, record) => <><span>{record.sex === 1 ? '男' : record.sex === 2 ? '女' : '未知'}</span></>,
86
+    },
87
+    {
88
+      title: '意向项目',
89
+      dataIndex: 'buildingName',
90
+      key: 'buildingName',
91
+    },
92
+    {
93
+      title: '推荐人',
94
+      dataIndex: 'recommendPersonName',
95
+      key: 'recommendPersonName',
96
+      render: (_, record) => <><span>{(record.recommendPersonName  ? record.recommendPersonName : '') + " " + (record.recommendPhone  ? record.recommendPhone : '')}</span></>,
97
+    },
98
+    {
99
+      title: '推荐时间',
100
+      dataIndex: 'createDate',
101
+      key: 'createDate',
102
+      render: (_, record) => <><span>{record.createDate && moment(record.createDate).format('YYYY-MM-DD')}</span></>,
103
+    },
104
+    {
105
+      title: '状态',
106
+      dataIndex: 'status',
107
+      key: 'status',
108
+      render: (_, record) => <><span>{record.status === '1' ? '待审核' : record.status === '2' ? '已通过' : record.status === '3' ? '已驳回' : ''}</span></>,
109
+    },
110
+    {
111
+      title: '操作',
112
+      dataIndex: 'customerId',
113
+      key: 'customerId',
114
+      render: (_, record) => (
115
+        <>{record.status === '1' ?<Button type='link' onClick={() => {
116
+          toAudit(record.channelCustomerId)
117
+          }}>审核</Button>:
118
+          <Button type='link' onClick={() => {
119
+            toAudit(record.channelCustomerId)
120
+            }}>查看详情</Button>
121
+          }
122
+          {/* {
123
+            <AuthButton name="admin.customer.recommend.verify.id.put" noRight={null}>
124
+              {record.verifyStatus === 0 ? <span style={{ color: 'rgba(239,39,58,1)', cursor: 'pointer' }} onClick={() => toAudit(record.customerId)}>审核</span> : ''}
125
+            </AuthButton>
126
+          } */}
127
+        </>
128
+      ),
129
+    },
130
+  ]
131
+
132
+ const searchFields=[
133
+     {
134
+      name: 'buildingId',
135
+      label: '项目',
136
+      placeholder: '项目',
137
+      render: () => <BuildingSelect style={{width: 160}} />
138
+    },
139
+  {
140
+    name: 'name',
141
+    label: '姓名',
142
+    placeholder: '请输入姓名',
143
+  },
144
+  {
145
+    name: 'phone',
146
+    label: '电话',
147
+    placeholder: '请输入电话',
148
+  },
149
+  {
150
+    name: 'recommendPersonName',
151
+    label: '推荐人',
152
+    placeholder: '请输入推荐人姓名',
153
+  },
154
+  {
155
+    name: 'recommendPhone',
156
+    label: '推荐人电话',
157
+    placeholder: '请输入推荐人电话电话',
158
+  },
159
+  {
160
+    name: 'status',
161
+    label: '状态',
162
+    placeholder: '请选择状态',
163
+    type: 'select',
164
+    options: [
165
+      {label: '未通过', value: '1'},
166
+      {label: '已通过', value: '2'},
167
+      {label: '已驳回', value: '3'}
168
+    ]
169
+  },
170
+ ]
171
+
172
+ const actionRender = () => {
173
+    
174
+  return (
175
+    <Button type="danger" loading={exportLoding} onClick={() => exportRecommendCustomer()}>
176
+      导出
177
+    </Button>
178
+  );
179
+};
180
+
181
+  return (
182
+    <>
183
+      <QueryTable
184
+          rowKey="recommendCustomer"
185
+          api={apis.customer.recommender}
186
+          searchFields={searchFields}
187
+          columns={columns}
188
+          postData={data => {
189
+            data.type='customer'
190
+            return data;
191
+          }}
192
+          actionRender={actionRender}
193
+        />
194
+    
195
+    </>
196
+  );
197
+}
198
+
199
+export default Recommend

+ 0
- 252
src/pages/recommend/recommendCustomer/index.jsx Прегледај датотеку

@@ -1,252 +0,0 @@
1
-import React, { useState, useEffect } from 'react';
2
-import { Form, Icon, Input, Button, DatePicker, Select, Card, Row, Col, Pagination, Alert, Table, Avatar } from 'antd';
3
-import moment from 'moment';
4
-import request from '../../../utils/request';
5
-import apis from '../../../services/apis';
6
-import Styles from './style.less';
7
-import { router } from 'umi';
8
-import AuthButton from '@/components/AuthButton';
9
-import BuildingSelect from '@/components/SelectButton/BuildSelect';
10
-
11
-
12
-const { Option } = Select;
13
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
14
-const { Meta } = Card;
15
-
16
-/**
17
- *
18
- *
19
- * @param {*} props
20
- * @returns
21
- */
22
-function body(props) {
23
-  const { getFieldDecorator } = props.form
24
-
25
-  // eslint-disable-next-line react-hooks/rules-of-hooks
26
-  const [dataSource, setDataSource] = useState({ records: [] })
27
-
28
-  // eslint-disable-next-line react-hooks/rules-of-hooks
29
-  useEffect(() => {
30
-    getList({ pageNumber: 1, pageSize: 10 })
31
-  }, [])
32
-
33
-  function getList(params) {
34
-    // 网路请求
35
-    request({ ...apis.customer.recommender, params: { ...params } }).then(res => {
36
-      setDataSource(res)
37
-    }).catch(err => {
38
-      // eslint-disable-next-line no-unused-expressions
39
-      <Alert
40
-        style={{
41
-          marginBottom: 24,
42
-        }}
43
-        message={err}
44
-        type="error"
45
-        showIcon
46
-      />
47
-    })
48
-  }
49
-
50
-  // 提交事件
51
-  function handleSubmit(e) {
52
-    e.preventDefault();
53
-    props.form.validateFields((err, values) => {
54
-      if (!err) {
55
-        getList({ pageNum: 1, pageSize: 10, ...values })
56
-      }
57
-    });
58
-  }
59
-
60
-  // Change 事件
61
-  function handleSelectChange(e) {
62
-    // eslint-disable-next-line no-console
63
-    console.log(e)
64
-  }
65
-
66
-  // 分页
67
-  function onChange(pageNum) {
68
-    props.form.validateFields((err, values) => {
69
-      if (!err) {
70
-        getList({ pageNumber: pageNum, pageSize: 10, ...values })
71
-      }
72
-    });
73
-  }
74
-
75
-  function toAudit(cuurentId) {
76
-    router.push({
77
-      pathname: '/recommend/recommendCustomer/audit',
78
-      query: {
79
-        id: cuurentId,
80
-      },
81
-    })
82
-  }
83
-
84
-
85
-  /**
86
-    * 重置搜索
87
-    */
88
-  function handleReset() {
89
-    props.form.resetFields();
90
-  }
91
-
92
-  /**
93
-   *导出数据(推荐用户)
94
-   *
95
-   */
96
-  function exportRecommendCustomer() {
97
-    request({
98
-      ...apis.customer.customerRecommendRecommenderExport,
99
-      responseType: 'blob',
100
-    }).then(response => {
101
-      console.log('exportRecommendCustomer: ', response)
102
-      download(response)
103
-    }).catch(error => {
104
-
105
-    })
106
-  }
107
-
108
-  function download(data) {
109
-    if (!data) {
110
-      return
111
-    }
112
-    const url = window.URL.createObjectURL(new Blob([data]))
113
-    const link = document.createElement('a')
114
-    link.style.display = 'none'
115
-    link.href = url
116
-    link.setAttribute('download', '推荐客户.xlsx')
117
-    document.body.append(link)
118
-    link.click()
119
-  }
120
-
121
-  const columns = [
122
-    {
123
-      title: '头像',
124
-      dataIndex: 'picture',
125
-      key: 'picture',
126
-      render: (_, record) => <Avatar shape="square" src={record.picture} size={64} icon="user" />,
127
-    },
128
-    {
129
-      title: '姓名',
130
-      dataIndex: 'name',
131
-      key: 'name',
132
-    },
133
-    {
134
-      title: '电话',
135
-      dataIndex: 'phone',
136
-      key: 'phone',
137
-    },
138
-    {
139
-      title: '性别',
140
-      dataIndex: 'sex',
141
-      key: 'sex',
142
-      // eslint-disable-next-line no-nested-ternary
143
-      render: (_, record) => <><span>{record.sex === 1 ? '男' : record.sex === 2 ? '女' : '未知'}</span></>,
144
-    },
145
-    {
146
-      title: '意向项目',
147
-      dataIndex: 'intention',
148
-      key: 'intention',
149
-    },
150
-    {
151
-      title: '推荐人',
152
-      dataIndex: 'consultantName',
153
-      key: 'consultantName',
154
-      render: (_, record) => <><span>{(record.recommendName !== null ? record.recommendName : '') + " " + (record.recommendTel !== null ? record.recommendTel : '')}</span></>,
155
-    },
156
-    {
157
-      title: '推荐时间',
158
-      dataIndex: 'createDate',
159
-      key: 'createDate',
160
-      render: (_, record) => <><span>{record.createDate && moment(record.createDate).format('YYYY-MM-DD')}</span></>,
161
-    },
162
-    {
163
-      title: '状态',
164
-      dataIndex: 'verifyStatus',
165
-      key: 'verifyStatus',
166
-      render: (_, record) => <><span>{record.verifyStatus === 0 ? '待审核' : record.verifyStatus === 1 ? '已通过' : record.verifyStatus === 2 ? '已驳回' : ''}</span></>,
167
-    },
168
-    {
169
-      title: '操作',
170
-      dataIndex: 'customerId',
171
-      key: 'customerId',
172
-      render: (_, record) => (
173
-        <>
174
-          {
175
-            <AuthButton name="admin.customer.recommend.verify.id.put" noRight={null}>
176
-              {record.verifyStatus === 0 ? <span style={{ color: 'rgba(239,39,58,1)', cursor: 'pointer' }} onClick={() => toAudit(record.customerId)}>审核</span> : ''}
177
-            </AuthButton>
178
-          }
179
-        </>
180
-      ),
181
-    },
182
-  ]
183
-
184
-  return (
185
-    <>
186
-      <Form layout="inline" onSubmit={e => handleSubmit(e, props)} style={{ display: 'flex' }}>
187
-        <Form.Item>
188
-          {getFieldDecorator('name')(
189
-            <Input
190
-              prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
191
-              placeholder="姓名"
192
-            />,
193
-          )}
194
-        </Form.Item>
195
-        <Form.Item>
196
-          {getFieldDecorator('tel')(
197
-            <Input
198
-              prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
199
-              placeholder="电话"
200
-            />,
201
-          )}
202
-        </Form.Item>
203
-        <Form.Item>
204
-          {getFieldDecorator('consultName')(
205
-            <Input placeholder="推荐人" />,
206
-          )}
207
-        </Form.Item>
208
-        <Form.Item>
209
-          {getFieldDecorator('consultTel')(
210
-            <Input placeholder="推荐人电话" />,
211
-          )}
212
-        </Form.Item>
213
-        <Form.Item>
214
-          {getFieldDecorator('verifyStatus')(
215
-            <Select style={{ width: '180px' }} placeholder="状态" onChange={handleSelectChange}>
216
-              <Option value={0}>未通过</Option>
217
-              <Option value={1}>已通过</Option>
218
-              <Option value={2}>已驳回</Option>
219
-            </Select>,
220
-          )}
221
-        </Form.Item>
222
-        <Form.Item>
223
-          {getFieldDecorator('buildingId')(
224
-            <BuildingSelect />,
225
-          )}
226
-        </Form.Item>
227
-        <Form.Item>
228
-          <AuthButton name="admin.recommend.search" noRight={null}>
229
-            <Button type="primary" htmlType="submit" >
230
-              搜索
231
-              </Button>
232
-          </AuthButton>
233
-          <Button style={{ marginLeft: 8 }} onClick={handleReset}>
234
-            重置
235
-            </Button>
236
-        </Form.Item>
237
-      </Form>
238
-      {/* style={{float:'right',margin:'20px 0'}} */}
239
-      <div style={{ textAlign: 'right', padding: '10px 0' }}>
240
-        <AuthButton name="admin.recommend.import" noRight={null} >
241
-          <Button type="primary" onClick={() => exportRecommendCustomer()}>
242
-            导出
243
-        </Button>
244
-        </AuthButton>
245
-      </div>
246
-      <Table rowKey="recommendCustomer" dataSource={dataSource.records} columns={columns} pagination={{ total: dataSource.total, onChange }} />
247
-    </>
248
-  );
249
-}
250
-const WrappedBody = Form.create({ name: 'body' })(body);
251
-
252
-export default WrappedBody

+ 0
- 54
src/pages/recommend/recommendCustomer/style.css Прегледај датотеку

@@ -1,54 +0,0 @@
1
-.SubmitButton {
2
-  background: #ef273a;
3
-  border-radius: 7px;
4
-  border: 0px;
5
-}
6
-.SelectFrom {
7
-  width: 180px;
8
-  background: #ffffff;
9
-  border-radius: 7px;
10
-  border: 1px solid #dbdbdb;
11
-}
12
-.addButton {
13
-  background: #50be00;
14
-  border-radius: 4px;
15
-  border: 0px;
16
-  margin: 10px 0px;
17
-}
18
-.cardText {
19
-  font-size:  0.106rem;
20
-  color: #333;
21
-  line-height: 24px;
22
-  display: flex;
23
-  align-items: center;
24
-  position: relative;
25
-}
26
-.cardItem {
27
-  font-size:  0.106rem;
28
-  font-weight: 400;
29
-  color: #666;
30
-  line-height: 24px;
31
-  display: flex;
32
-  align-items: center;
33
-}
34
-.ediText {
35
-  font-size:  0.106rem;
36
-  color: #ff925c;
37
-  line-height: 24px;
38
-  position: absolute;
39
-  right: 0;
40
-}
41
-.title {
42
-  display: inline-block;
43
-  width:  0.54rem;
44
-  justify-content: space-between;
45
-  text-align: justify;
46
-  text-align-last: justify;
47
-}
48
-.address {
49
-  width: 400px;
50
-  height: 24px;
51
-  text-overflow: ellipsis;
52
-  white-space: nowrap;
53
-  overflow: hidden;
54
-}

+ 0
- 58
src/pages/recommend/recommendCustomer/style.less Прегледај датотеку

@@ -1,58 +0,0 @@
1
-.SubmitButton {
2
-  background: rgba(239,39,58,1);
3
-  border-radius: 7px;
4
-  border: 0px;
5
-}
6
-.SelectFrom {
7
-  width: 180px;
8
-  background: #ffffff;
9
-  border-radius: 7px;
10
-  border: 1px solid #dbdbdb;
11
-}
12
-.addButton {
13
-  background: #50be00;
14
-  border-radius: 4px;
15
-  border: 0px;
16
-  margin: 10px 0px;
17
-}
18
-.cardText {
19
-  color: #333;
20
-  display: flex;
21
-  align-items: center;
22
-  position: relative;
23
-  line-height: 1.5;
24
-  font-size: 0.106rem;
25
-  margin-bottom: 0.08rem;
26
-
27
-}
28
-.cardItem{
29
-  font-size: 0.106rem;
30
-  font-weight: 400;
31
-  color: #666;
32
-  line-height: 24px;
33
-  display: flex;
34
-  align-items: center;  
35
-}
36
-.ediText {
37
-  font-size:  0.106rem;
38
-  color: #ff925c;
39
-  line-height: 24px;
40
-  position: absolute;
41
-  right: 0;
42
-}
43
-.title{
44
-  display: inline-block;
45
-  width:  0.54rem;
46
-  justify-content: space-between;
47
-  text-align: justify;
48
-  text-align-last:justify
49
-}
50
-
51
-.address { 
52
-  width: 400px;
53
-  height: 24px; 
54
-  text-overflow: ellipsis; 
55
-  white-space: nowrap;
56
-  overflow: hidden;
57
-}
58
-

+ 0
- 54
src/pages/recommend/recommendCustomer/style.wxss Прегледај датотеку

@@ -1,54 +0,0 @@
1
-.SubmitButton {
2
-  background: #ef273a;
3
-  border-radius: 7px;
4
-  border: 0px;
5
-}
6
-.SelectFrom {
7
-  width: 180px;
8
-  background: #ffffff;
9
-  border-radius: 7px;
10
-  border: 1px solid #dbdbdb;
11
-}
12
-.addButton {
13
-  background: #50be00;
14
-  border-radius: 4px;
15
-  border: 0px;
16
-  margin: 10px 0px;
17
-}
18
-.cardText {
19
-  font-size:  0.106rem;
20
-  color: #333;
21
-  line-height: 24px;
22
-  display: flex;
23
-  align-items: center;
24
-  position: relative;
25
-}
26
-.cardItem {
27
-  font-size:  0.106rem;
28
-  font-weight: 400;
29
-  color: #666;
30
-  line-height: 24px;
31
-  display: flex;
32
-  align-items: center;
33
-}
34
-.ediText {
35
-  font-size:  0.106rem;
36
-  color: #ff925c;
37
-  line-height: 24px;
38
-  position: absolute;
39
-  right: 0;
40
-}
41
-.title {
42
-  display: inline-block;
43
-  width:  0.54rem;
44
-  justify-content: space-between;
45
-  text-align: justify;
46
-  text-align-last: justify;
47
-}
48
-.address {
49
-  width: 400px;
50
-  height: 24px;
51
-  text-overflow: ellipsis;
52
-  white-space: nowrap;
53
-  overflow: hidden;
54
-}

+ 5
- 0
src/services/apis.js Прегледај датотеку

@@ -368,6 +368,11 @@ export default {
368 368
       url: `${prefix}/channelCustomer`,
369 369
       action: 'admin.customer.recommend.recommender.get',
370 370
     },
371
+    getDetail: {
372
+      method: 'GET',
373
+      url: `${prefix}/channelCustomer/:id`,
374
+      action: 'admin.customer.recommend.recommender.get',
375
+    },
371 376
     auto: {
372 377
       method: 'PUT',
373 378
       url: `${prefix}/customer/recommend/verify/:id`,