Browse Source

客户列表编辑 ,列表

魏熙美 5 years ago
parent
commit
a9543c0ce6

+ 14
- 0
src/config/api.js View File

127
       url: `${commPrefix}/customer/add`
127
       url: `${commPrefix}/customer/add`
128
     }
128
     }
129
   },
129
   },
130
+  recommendCustomer:{
131
+    list:{
132
+      method:'get',
133
+      url: `${commPrefix}/customer/recommend`
134
+    },
135
+    getById: {
136
+      method:'get',
137
+      url: `${commPrefix}/customer/recommend/getById/:id`
138
+    },
139
+    update: {
140
+      method:'put',
141
+      url: `${commPrefix}/customer/recommend/edit/:id`
142
+    }
143
+  },
130
   goods:{
144
   goods:{
131
     list:{
145
     list:{
132
       method:'get',
146
       method:'get',

+ 38
- 1
src/store/modules/customer.js View File

32
           }
32
           }
33
         })
33
         })
34
       })
34
       })
35
-    }
35
+    },
36
+    getRecommendCustomers ({ commit }, payload) { // 查询推荐客户列表
37
+      return new Promise((resolve, reject) => {
38
+        request({
39
+          ...apis.recommendCustomer.list,
40
+          params: payload,
41
+        }).then((data) => {
42
+          resolve(data)
43
+        }).catch(({ message }) => {
44
+            reject(message)
45
+        })
46
+      })
47
+    },
48
+    getRecommendCustomersGetById ({ commit }, payload) { // 根据Id查询列表
49
+      return new Promise((resolve, reject) => {
50
+        request({
51
+          ...apis.recommendCustomer.getById,
52
+          urlData: { id: payload.customerId},
53
+        }).then((data) => {
54
+          resolve(data)
55
+        }).catch(({ message }) => {
56
+          reject(message)
57
+        })
58
+      })
59
+    },
60
+    getRecommendCustomersUpdate ({ commit }, payload) { // 根据Id查询列表
61
+      return new Promise((resolve, reject) => {
62
+        request({
63
+          ...apis.recommendCustomer.update,
64
+          urlData: { id: payload.customerId},
65
+          data: payload
66
+        }).then((data) => {
67
+          resolve(data)
68
+        }).catch(({ message }) => {
69
+          reject(message)
70
+        })
71
+      })
72
+    },
36
     
73
     
37
   }
74
   }
38
 }
75
 }

+ 51
- 57
src/views/customer/editRecommend.vue View File

3
     <div class="form-wrapper">
3
     <div class="form-wrapper">
4
       <el-form label-width="200px" :model="detail">
4
       <el-form label-width="200px" :model="detail">
5
         <el-form-item label="意向项目:">
5
         <el-form-item label="意向项目:">
6
-          <el-input v-model="detail.name"></el-input>
6
+          <el-input v-model="detail.intention"></el-input>
7
         </el-form-item>
7
         </el-form-item>
8
         <el-form-item label="客户照片:">
8
         <el-form-item label="客户照片:">
9
-        <el-upload
10
-            :action="upFileUrl"
11
-            name='file'
12
-            list-type="picture-card"
13
-            :headers="uploadHeaders"
14
-            :file-list="imgList"
15
-            :show-file-list="true"
16
-            :before-upload="beforeImgUpload"
17
-            :on-success="handleAvatarSuccess"
18
-            :on-remove="handleRemove">
19
-            <i class="el-icon-plus"></i>
9
+          <el-upload
10
+                  :headers="uploadHeaders"
11
+                  :action="upFileUrl"
12
+                  :show-file-list="false"
13
+                  :on-success="handleAvatarSuccess">
14
+            <img v-if="imageUrl" :src="imageUrl" class="avatar">
15
+            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
20
           </el-upload>
16
           </el-upload>
21
-          <el-dialog :visible.sync="dialogVisible">
22
-            <img width="100%" :src="dialogImageUrl" alt="">
23
-          </el-dialog>
24
       </el-form-item>
17
       </el-form-item>
25
         <el-form-item label="客户姓名:">
18
         <el-form-item label="客户姓名:">
26
-          <el-input v-model="detail.company"></el-input>
19
+          <el-input v-model="detail.name"></el-input>
27
         </el-form-item>
20
         </el-form-item>
28
         <el-form-item label="客户电话:">
21
         <el-form-item label="客户电话:">
29
-          <el-input v-model="detail.department"></el-input>
22
+          <el-input v-model="detail.phone"></el-input>
30
         </el-form-item>
23
         </el-form-item>
31
         <el-form-item label="客户性别:">
24
         <el-form-item label="客户性别:">
32
-          <el-radio-group v-model="detail.isMain">
25
+          <el-radio-group v-model="detail.sex">
33
             <el-radio :label="1">男</el-radio>
26
             <el-radio :label="1">男</el-radio>
34
             <el-radio :label="0">女</el-radio>
27
             <el-radio :label="0">女</el-radio>
35
           </el-radio-group>
28
           </el-radio-group>
36
         </el-form-item>
29
         </el-form-item>
37
         <el-form-item label="预约到访时间:">
30
         <el-form-item label="预约到访时间:">
38
-          <el-input v-model="detail.department"></el-input>
31
+          <el-date-picker
32
+                  v-model="detail.appointmentTime"
33
+                  type="datetime"
34
+                  placeholder="选择日期时间">
35
+          </el-date-picker>
39
         </el-form-item>
36
         </el-form-item>
40
         <el-form-item label="到访人数:">
37
         <el-form-item label="到访人数:">
41
-          <el-input v-model="detail.department"></el-input>
38
+          <el-input v-model="detail.visiteNum"></el-input>
42
         </el-form-item>
39
         </el-form-item>
43
         <el-form-item label="客户描述:">
40
         <el-form-item label="客户描述:">
44
-            <el-input type="textarea" :rows="5"  v-model="detail.introduction"></el-input>
41
+            <el-input type="textarea" :rows="5"  v-model="detail.describe"></el-input>
45
         </el-form-item>
42
         </el-form-item>
46
         <el-form-item label="物业类型:">
43
         <el-form-item label="物业类型:">
47
-          <el-input v-model="detail.department"></el-input>
44
+          <el-input v-model="detail.realtyManageType"></el-input>
48
         </el-form-item>
45
         </el-form-item>
49
         <el-form-item label="需求类型:">
46
         <el-form-item label="需求类型:">
50
-          <el-input v-model="detail.department"></el-input>
47
+          <el-input v-model="detail.demandType"></el-input>
51
         </el-form-item>
48
         </el-form-item>
52
         <el-form-item label="价格区间:">
49
         <el-form-item label="价格区间:">
53
-          <el-input v-model="detail.department"></el-input>
50
+          <el-input v-model="detail.priceRange"></el-input>
54
         </el-form-item>
51
         </el-form-item>
55
         <el-form-item label="报备日期:">
52
         <el-form-item label="报备日期:">
56
-          <el-input v-model="detail.department"></el-input>
53
+          <el-date-picker
54
+                  v-model="detail.reportDate"
55
+                  type="datetime"
56
+                  placeholder="选择日期时间">
57
+          </el-date-picker>
57
         </el-form-item>
58
         </el-form-item>
58
         <el-form-item label="状态:">
59
         <el-form-item label="状态:">
59
-          <el-select v-model="detail.buildings" placeholder="请选择">
60
-            <el-option v-for="(build,i) in buildings.list || []" :key="i" :label="build.buildingName" :value="build.buildingId"></el-option>
60
+          <el-select v-model="detail.status" placeholder="请选择">
61
+            <el-option v-for="(item,i) in gridData || []" :key="i" :label="item.name" :value="item.value"></el-option>
61
           </el-select>
62
           </el-select>
62
         </el-form-item>
63
         </el-form-item>
63
         <el-form-item label="归属置业顾问:">
64
         <el-form-item label="归属置业顾问:">
64
-          <p style="margin:0">{{consultant}}<span @click="dialogTableVisible=true" class="choose">请选择</span></p>
65
+          <p style="margin:0">{{detail.realtyConsultant}}<span @click="dialogTableVisible=true" class="choose">请选择</span></p>
65
         </el-form-item>
66
         </el-form-item>
66
         <el-form-item>
67
         <el-form-item>
67
           <el-button type="primary" @click="submitForm">修改并审核通过</el-button>
68
           <el-button type="primary" @click="submitForm">修改并审核通过</el-button>
101
     return {
102
     return {
102
       upFileUrl: apis.file.upload.url,
103
       upFileUrl: apis.file.upload.url,
103
       detail: {
104
       detail: {
105
+        customerId: '',
104
         name: undefined,
106
         name: undefined,
105
         company: undefined,
107
         company: undefined,
106
         department: undefined,
108
         department: undefined,
107
         post: undefined,
109
         post: undefined,
108
         tel: undefined,
110
         tel: undefined,
109
         photo: undefined,
111
         photo: undefined,
110
-        status: 1,
111
-        buildings: []
112
+        status: '1',
113
+        buildings: [],
114
+        realtyConsultant: ''
112
       },
115
       },
113
-      imgList: [],
116
+      imageUrl: '',
114
       dialogVisible: false,
117
       dialogVisible: false,
115
       dialogImageUrl: "",
118
       dialogImageUrl: "",
116
       dialogTableVisible: false, //选择置业顾问弹框
119
       dialogTableVisible: false, //选择置业顾问弹框
117
       consultant:"",
120
       consultant:"",
118
       gridData: [
121
       gridData: [
119
         {
122
         {
120
-          date: "2016-05-02",
121
-          name: "王小虎"
123
+          name: "报备",
124
+          value: '1'
122
         },
125
         },
123
         {
126
         {
124
-          date: "2016-05-04",
125
-          name: "王小虎"
127
+          name: "到访",
128
+          value: '2'
126
         },
129
         },
127
         {
130
         {
128
-          date: "2016-05-01",
129
-          name: "王小虎"
131
+          name: "认购",
132
+          value: '3'
130
         },
133
         },
131
         {
134
         {
132
-          date: "2016-05-03",
133
-          name: "王小虎"
135
+          name: "签约",
136
+          value: '4'
134
         }
137
         }
135
       ]
138
       ]
136
     };
139
     };
154
     ...mapPersonActions(["getConsultant", "editConsultant"]),
157
     ...mapPersonActions(["getConsultant", "editConsultant"]),
155
 
158
 
156
     init() {
159
     init() {
157
-      if (this.$route.params.id) {
158
-        this.getConsultant({ id: this.$route.params.id }).then(data => {
160
+      this.detail.customerId = this.$route.query.id
161
+      if (this.detail.customerId !== undefined) {
162
+        this.$store.dispatch('customer/getRecommendCustomersGetById',this.detail).then(data => {
159
           this.detail = data;
163
           this.detail = data;
164
+          this.dialogImageUrl = data.picture
165
+          this.imageUrl = data.picture
160
         });
166
         });
161
       }
167
       }
162
     },
168
     },
200
       return true;
206
       return true;
201
     },
207
     },
202
     handleAvatarSuccess(res) {
208
     handleAvatarSuccess(res) {
203
-      this.imgList = [
204
-        ...this.imgList,
205
-        {
206
-          url: res.data
207
-        }
208
-      ];
209
+      this.imageUrl = res.data
210
+      this.detail.picture = res.data
209
       this.hideLoadding();
211
       this.hideLoadding();
210
     },
212
     },
211
     handleRemove(file, fileList) {
213
     handleRemove(file, fileList) {
213
     },
215
     },
214
     submitForm() {
216
     submitForm() {
215
       this.showLoadding("保存中...");
217
       this.showLoadding("保存中...");
216
-      this.editConsultant(this.detail)
218
+      this.$store.dispatch('customer/getRecommendCustomersUpdate',this.detail)
217
         .then(res => {
219
         .then(res => {
218
           if (res.personId) {
220
           if (res.personId) {
219
             this.detail = res;
221
             this.detail = res;
221
 
223
 
222
           this.hideLoadding();
224
           this.hideLoadding();
223
           this.$notify.info("保存成功");
225
           this.$notify.info("保存成功");
226
+          this.$router.go(-1)
224
         })
227
         })
225
         .catch(err => {
228
         .catch(err => {
226
           this.hideLoadding();
229
           this.hideLoadding();
242
     }
245
     }
243
   },
246
   },
244
   mounted() {
247
   mounted() {
245
-    const _that = this;
246
 
248
 
247
-    this.getBuildings({
248
-      pageNum: 1,
249
-      pageSize: 100
250
-    }).then(() => {
251
-      if ((this.$route.query.id || "") !== "") {
252
-        this.getDetail({ id: this.$route.query.id }).then(data => {});
253
-      }
254
-    });
255
   }
249
   }
256
 };
250
 };
257
 </script>
251
 </script>

+ 58
- 45
src/views/customer/recommendCustomer.vue View File

5
         <ul>
5
         <ul>
6
           <li>
6
           <li>
7
             <span>姓名</span>
7
             <span>姓名</span>
8
-            <el-input v-model="name" ></el-input>
8
+            <el-input v-model="form.name" ></el-input>
9
           </li>
9
           </li>
10
           <li>
10
           <li>
11
             <span>电话</span>
11
             <span>电话</span>
12
-            <el-input v-model="name" ></el-input>
12
+            <el-input v-model="form.tel" ></el-input>
13
           </li>
13
           </li>
14
           <li>
14
           <li>
15
             <span>推荐人</span>
15
             <span>推荐人</span>
16
-            <el-input v-model="name" ></el-input>
16
+            <el-input v-model="form.consultName" ></el-input>
17
           </li>
17
           </li>
18
           <li>
18
           <li>
19
             <span>推荐人电话</span>
19
             <span>推荐人电话</span>
20
-            <el-input v-model="name" ></el-input>
21
-          </li>
22
-          <li>
23
-            <span>状态</span>
24
-            <el-select v-model="name" placeholder="请选择">
25
-              <el-option v-for="(item,i) in gridData || []" :key="i" :label="item.name" :value="item.id"></el-option>
26
-            </el-select>
20
+            <el-input v-model="form.consultTel" ></el-input>
27
           </li>
21
           </li>
22
+<!--          <li>-->
23
+<!--            <span>状态</span>-->
24
+<!--            <el-select v-model="form.status" placeholder="请选择">-->
25
+<!--              <el-option v-for="(item,i) in gridData || []" :key="i" :label="item.name" :value="item.value"></el-option>-->
26
+<!--            </el-select>-->
27
+<!--          </li>-->
28
         </ul>
28
         </ul>
29
         <el-button
29
         <el-button
30
           size="mini"
30
           size="mini"
31
           type="primary" @click="search">查询</el-button>
31
           type="primary" @click="search">查询</el-button>
32
       </div>
32
       </div>
33
     </div>
33
     </div>
34
-    <el-table :data="dynamics.list || []" style="width: 100%">
34
+    <el-table :data="list || []"
35
+              border
36
+              style="width: 100%">
35
       <el-table-column
37
       <el-table-column
36
         type="index"
38
         type="index"
37
         width="50">
39
         width="50">
38
-        <template slot-scope="scope">
39
-          <span>{{ GetIndex(scope.$index) }}</span>
40
-        </template>
41
       </el-table-column>
40
       </el-table-column>
42
       <el-table-column
41
       <el-table-column
43
         label="头像">
42
         label="头像">
44
         <template slot-scope="scope">
43
         <template slot-scope="scope">
45
           <div class="header">
44
           <div class="header">
46
-            <img :src="scope.row.imgUrl" alt="" />
45
+            <img :src="scope.row.picture" alt="" />
47
           </div>
46
           </div>
48
         </template>
47
         </template>
49
       </el-table-column>
48
       </el-table-column>
50
       <el-table-column
49
       <el-table-column
51
-        prop="title"
50
+        prop="name"
52
         label="姓名">
51
         label="姓名">
53
       </el-table-column>
52
       </el-table-column>
54
       <el-table-column
53
       <el-table-column
59
         prop="sex"
58
         prop="sex"
60
         width="100"
59
         width="100"
61
         label="性别">
60
         label="性别">
61
+        <template slot-scope="scope">{{ scope.row.sex === 1 ? '男' : '女' }}</template>
62
       </el-table-column>
62
       </el-table-column>
63
       <el-table-column
63
       <el-table-column
64
-        prop="sex"
64
+        prop="intention"
65
         label="意向项目">
65
         label="意向项目">
66
       </el-table-column>
66
       </el-table-column>
67
       <el-table-column  label="推荐人">
67
       <el-table-column  label="推荐人">
68
         <template slot-scope="scope">
68
         <template slot-scope="scope">
69
           <span>{{scope.row.name}}</span>
69
           <span>{{scope.row.name}}</span>
70
-          <p>{{scope.row.tel}}</p>
70
+          <p>{{scope.row.phone}}</p>
71
         </template>
71
         </template>
72
       </el-table-column>
72
       </el-table-column>
73
       <el-table-column
73
       <el-table-column
74
-        prop="createDate"
74
+        prop="reportDate"
75
         label="推荐时间">
75
         label="推荐时间">
76
       </el-table-column>
76
       </el-table-column>
77
       <el-table-column  label="状态">
77
       <el-table-column  label="状态">
78
         <template slot-scope="scope">
78
         <template slot-scope="scope">
79
-          <span>{{scope.row.status==1?'已通过':scope.row.status==0?'已驳回':'未审核'}}</span>
79
+          <span>{{scope.row.status == 1 ? '报备': scope.row.status == 2 ? '到访' : scope.row.status == 3 ? '认购' : '签约' }}</span>
80
         </template>
80
         </template>
81
       </el-table-column>
81
       </el-table-column>
82
-      <el-table-column fixed="right" width="100" label="操作">
82
+      <el-table-column fixed="right" width="200" label="操作">
83
         <template slot-scope="scope">
83
         <template slot-scope="scope">
84
-          <el-button type="text" @click="toEditRecommend(scope.row)" size="small">{{scope.row.status==1?'查看详情':'审核'}}</el-button>
84
+          <router-link :to="{ name:'editRecommend', query: { id: scope.row.customerId } }">编辑</router-link>
85
+          &nbsp;
86
+          <router-link :to="{ name: 'editRecommend', query: { id: scope.row.personId } }">调整归属</router-link>
87
+          &nbsp;
88
+          <router-link :to="{ name:'editRecommend', query: { id: scope.row.customerId } }">积分记录</router-link>
89
+          &nbsp;
90
+          <router-link :to="{ name:'editRecommend', query: { id: scope.row.customerId } }">推荐客户</router-link>
91
+          &nbsp;
92
+          <router-link :to="{ name:'editRecommend', query: { id: scope.row.customerId } }">查看详情</router-link>
85
         </template>
93
         </template>
86
       </el-table-column>
94
       </el-table-column>
87
     </el-table>
95
     </el-table>
89
       small
97
       small
90
       style="margin-top:10px;"
98
       style="margin-top:10px;"
91
       layout="prev, pager, next"
99
       layout="prev, pager, next"
92
-      :current-page.sync="currentPage"
93
-      :pageSize="pageSize"
100
+      :current-page.sync="form.pageNumber"
101
+      :pageSize="form.pageSize"
94
       @current-change="getList"
102
       @current-change="getList"
95
     >
103
     >
96
     </el-pagination>
104
     </el-pagination>
109
 export default {
117
 export default {
110
   data() {
118
   data() {
111
     return {
119
     return {
112
-      pageSize: 20,
113
-      currentPage: 1,
114
-      name: "",
120
+      form: {
121
+        pageSize: 10,
122
+        pageNumber: 1,
123
+        name: "",
124
+        consultName: '',
125
+        consultTel: '',
126
+        status: ''
127
+      },
128
+      list: [],
129
+      total: 0,
115
       sex: "",
130
       sex: "",
116
       phone: "",
131
       phone: "",
117
       picture: "",
132
       picture: "",
128
       personId: "",
143
       personId: "",
129
       gridData: [
144
       gridData: [
130
         {
145
         {
131
-          date: "2016-05-02",
132
-          name: "王小虎",
133
-          id: "1"
146
+          name: "报备",
147
+          value: 1
134
         },
148
         },
135
         {
149
         {
136
-          date: "2016-05-04",
137
-          name: "王小虎",
138
-          id: "2"
150
+          name: "到访",
151
+          value: 2
139
         },
152
         },
140
         {
153
         {
141
-          date: "2016-05-01",
142
-          name: "王小虎",
143
-          id: "3"
154
+          name: "认购",
155
+          value: 3
144
         },
156
         },
145
         {
157
         {
146
-          date: "2016-05-03",
147
-          name: "王小虎",
148
-          id: "4"
158
+          name: "签约",
159
+          value: 4
149
         }
160
         }
150
       ]
161
       ]
151
     };
162
     };
162
     this.getList();
173
     this.getList();
163
   },
174
   },
164
   methods: {
175
   methods: {
165
-    ...mapCustomerActions(["getCustomers", "getDetail"]),
176
+    ...mapCustomerActions(["getCustomers", "getDetail", "getRecommendCustomers"]),
166
     ...mapDynamicActions([
177
     ...mapDynamicActions([
167
       "getDynamics",
178
       "getDynamics",
168
       "setDetailNull",
179
       "setDetailNull",
174
       return (this.currentPage - 1) * this.pageSize + inx + 1;
185
       return (this.currentPage - 1) * this.pageSize + inx + 1;
175
     },
186
     },
176
     getList() {
187
     getList() {
177
-      this.getDynamics({
178
-        pageNum: this.currentPage,
179
-        pageSize: this.pageSize,
180
-        name: this.name,
181
-        buildingId: this.buildingId
188
+      this.getRecommendCustomers(this.form).then((res) => {
189
+        this.list = res.records
190
+        this.form.pageSize = res.size
191
+        this.form.pageNumber = res.current
192
+        this.total = res.total
193
+      }).catch(() => {
194
+        console.log('getRecommendCustomers err')
182
       });
195
       });
183
     },
196
     },
184
 
197
 

+ 1
- 1
src/views/index.js View File

126
       {
126
       {
127
         path: 'customerlist',
127
         path: 'customerlist',
128
         name: 'customerlist',
128
         name: 'customerlist',
129
-        component: () => import('./customer/list.vue'),
129
+        component: () => import('./customer/recommendCustomer.vue'),
130
         meta: {
130
         meta: {
131
           menuShow: true,
131
           menuShow: true,
132
           title: '客户列表',
132
           title: '客户列表',