Bladeren bron

客户列表编辑 ,列表

魏熙美 5 jaren geleden
bovenliggende
commit
a9543c0ce6
5 gewijzigde bestanden met toevoegingen van 162 en 104 verwijderingen
  1. 14
    0
      src/config/api.js
  2. 38
    1
      src/store/modules/customer.js
  3. 51
    57
      src/views/customer/editRecommend.vue
  4. 58
    45
      src/views/customer/recommendCustomer.vue
  5. 1
    1
      src/views/index.js

+ 14
- 0
src/config/api.js Bestand weergeven

@@ -127,6 +127,20 @@ const apis = {
127 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 144
   goods:{
131 145
     list:{
132 146
       method:'get',

+ 38
- 1
src/store/modules/customer.js Bestand weergeven

@@ -32,7 +32,44 @@ export default {
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 Bestand weergeven

@@ -3,65 +3,66 @@
3 3
     <div class="form-wrapper">
4 4
       <el-form label-width="200px" :model="detail">
5 5
         <el-form-item label="意向项目:">
6
-          <el-input v-model="detail.name"></el-input>
6
+          <el-input v-model="detail.intention"></el-input>
7 7
         </el-form-item>
8 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 16
           </el-upload>
21
-          <el-dialog :visible.sync="dialogVisible">
22
-            <img width="100%" :src="dialogImageUrl" alt="">
23
-          </el-dialog>
24 17
       </el-form-item>
25 18
         <el-form-item label="客户姓名:">
26
-          <el-input v-model="detail.company"></el-input>
19
+          <el-input v-model="detail.name"></el-input>
27 20
         </el-form-item>
28 21
         <el-form-item label="客户电话:">
29
-          <el-input v-model="detail.department"></el-input>
22
+          <el-input v-model="detail.phone"></el-input>
30 23
         </el-form-item>
31 24
         <el-form-item label="客户性别:">
32
-          <el-radio-group v-model="detail.isMain">
25
+          <el-radio-group v-model="detail.sex">
33 26
             <el-radio :label="1">男</el-radio>
34 27
             <el-radio :label="0">女</el-radio>
35 28
           </el-radio-group>
36 29
         </el-form-item>
37 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 36
         </el-form-item>
40 37
         <el-form-item label="到访人数:">
41
-          <el-input v-model="detail.department"></el-input>
38
+          <el-input v-model="detail.visiteNum"></el-input>
42 39
         </el-form-item>
43 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 42
         </el-form-item>
46 43
         <el-form-item label="物业类型:">
47
-          <el-input v-model="detail.department"></el-input>
44
+          <el-input v-model="detail.realtyManageType"></el-input>
48 45
         </el-form-item>
49 46
         <el-form-item label="需求类型:">
50
-          <el-input v-model="detail.department"></el-input>
47
+          <el-input v-model="detail.demandType"></el-input>
51 48
         </el-form-item>
52 49
         <el-form-item label="价格区间:">
53
-          <el-input v-model="detail.department"></el-input>
50
+          <el-input v-model="detail.priceRange"></el-input>
54 51
         </el-form-item>
55 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 58
         </el-form-item>
58 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 62
           </el-select>
62 63
         </el-form-item>
63 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 66
         </el-form-item>
66 67
         <el-form-item>
67 68
           <el-button type="primary" @click="submitForm">修改并审核通过</el-button>
@@ -101,36 +102,38 @@ export default {
101 102
     return {
102 103
       upFileUrl: apis.file.upload.url,
103 104
       detail: {
105
+        customerId: '',
104 106
         name: undefined,
105 107
         company: undefined,
106 108
         department: undefined,
107 109
         post: undefined,
108 110
         tel: undefined,
109 111
         photo: undefined,
110
-        status: 1,
111
-        buildings: []
112
+        status: '1',
113
+        buildings: [],
114
+        realtyConsultant: ''
112 115
       },
113
-      imgList: [],
116
+      imageUrl: '',
114 117
       dialogVisible: false,
115 118
       dialogImageUrl: "",
116 119
       dialogTableVisible: false, //选择置业顾问弹框
117 120
       consultant:"",
118 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,9 +157,12 @@ export default {
154 157
     ...mapPersonActions(["getConsultant", "editConsultant"]),
155 158
 
156 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 163
           this.detail = data;
164
+          this.dialogImageUrl = data.picture
165
+          this.imageUrl = data.picture
160 166
         });
161 167
       }
162 168
     },
@@ -200,12 +206,8 @@ export default {
200 206
       return true;
201 207
     },
202 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 211
       this.hideLoadding();
210 212
     },
211 213
     handleRemove(file, fileList) {
@@ -213,7 +215,7 @@ export default {
213 215
     },
214 216
     submitForm() {
215 217
       this.showLoadding("保存中...");
216
-      this.editConsultant(this.detail)
218
+      this.$store.dispatch('customer/getRecommendCustomersUpdate',this.detail)
217 219
         .then(res => {
218 220
           if (res.personId) {
219 221
             this.detail = res;
@@ -221,6 +223,7 @@ export default {
221 223
 
222 224
           this.hideLoadding();
223 225
           this.$notify.info("保存成功");
226
+          this.$router.go(-1)
224 227
         })
225 228
         .catch(err => {
226 229
           this.hideLoadding();
@@ -242,16 +245,7 @@ export default {
242 245
     }
243 246
   },
244 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 251
 </script>

+ 58
- 45
src/views/customer/recommendCustomer.vue Bestand weergeven

@@ -5,50 +5,49 @@
5 5
         <ul>
6 6
           <li>
7 7
             <span>姓名</span>
8
-            <el-input v-model="name" ></el-input>
8
+            <el-input v-model="form.name" ></el-input>
9 9
           </li>
10 10
           <li>
11 11
             <span>电话</span>
12
-            <el-input v-model="name" ></el-input>
12
+            <el-input v-model="form.tel" ></el-input>
13 13
           </li>
14 14
           <li>
15 15
             <span>推荐人</span>
16
-            <el-input v-model="name" ></el-input>
16
+            <el-input v-model="form.consultName" ></el-input>
17 17
           </li>
18 18
           <li>
19 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 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 28
         </ul>
29 29
         <el-button
30 30
           size="mini"
31 31
           type="primary" @click="search">查询</el-button>
32 32
       </div>
33 33
     </div>
34
-    <el-table :data="dynamics.list || []" style="width: 100%">
34
+    <el-table :data="list || []"
35
+              border
36
+              style="width: 100%">
35 37
       <el-table-column
36 38
         type="index"
37 39
         width="50">
38
-        <template slot-scope="scope">
39
-          <span>{{ GetIndex(scope.$index) }}</span>
40
-        </template>
41 40
       </el-table-column>
42 41
       <el-table-column
43 42
         label="头像">
44 43
         <template slot-scope="scope">
45 44
           <div class="header">
46
-            <img :src="scope.row.imgUrl" alt="" />
45
+            <img :src="scope.row.picture" alt="" />
47 46
           </div>
48 47
         </template>
49 48
       </el-table-column>
50 49
       <el-table-column
51
-        prop="title"
50
+        prop="name"
52 51
         label="姓名">
53 52
       </el-table-column>
54 53
       <el-table-column
@@ -59,29 +58,38 @@
59 58
         prop="sex"
60 59
         width="100"
61 60
         label="性别">
61
+        <template slot-scope="scope">{{ scope.row.sex === 1 ? '男' : '女' }}</template>
62 62
       </el-table-column>
63 63
       <el-table-column
64
-        prop="sex"
64
+        prop="intention"
65 65
         label="意向项目">
66 66
       </el-table-column>
67 67
       <el-table-column  label="推荐人">
68 68
         <template slot-scope="scope">
69 69
           <span>{{scope.row.name}}</span>
70
-          <p>{{scope.row.tel}}</p>
70
+          <p>{{scope.row.phone}}</p>
71 71
         </template>
72 72
       </el-table-column>
73 73
       <el-table-column
74
-        prop="createDate"
74
+        prop="reportDate"
75 75
         label="推荐时间">
76 76
       </el-table-column>
77 77
       <el-table-column  label="状态">
78 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 80
         </template>
81 81
       </el-table-column>
82
-      <el-table-column fixed="right" width="100" label="操作">
82
+      <el-table-column fixed="right" width="200" label="操作">
83 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 93
         </template>
86 94
       </el-table-column>
87 95
     </el-table>
@@ -89,8 +97,8 @@
89 97
       small
90 98
       style="margin-top:10px;"
91 99
       layout="prev, pager, next"
92
-      :current-page.sync="currentPage"
93
-      :pageSize="pageSize"
100
+      :current-page.sync="form.pageNumber"
101
+      :pageSize="form.pageSize"
94 102
       @current-change="getList"
95 103
     >
96 104
     </el-pagination>
@@ -109,9 +117,16 @@ const {
109 117
 export default {
110 118
   data() {
111 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 130
       sex: "",
116 131
       phone: "",
117 132
       picture: "",
@@ -128,24 +143,20 @@ export default {
128 143
       personId: "",
129 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,7 +173,7 @@ export default {
162 173
     this.getList();
163 174
   },
164 175
   methods: {
165
-    ...mapCustomerActions(["getCustomers", "getDetail"]),
176
+    ...mapCustomerActions(["getCustomers", "getDetail", "getRecommendCustomers"]),
166 177
     ...mapDynamicActions([
167 178
       "getDynamics",
168 179
       "setDetailNull",
@@ -174,11 +185,13 @@ export default {
174 185
       return (this.currentPage - 1) * this.pageSize + inx + 1;
175 186
     },
176 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 Bestand weergeven

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