Pārlūkot izejas kodu

fix: 对接用户同步、微信客户

wuguojie 1 gadu atpakaļ
vecāks
revīzija
73e831f4cc

+ 13 - 3
src/api/customerManage/userSync.js

@@ -1,5 +1,6 @@
 import request from '@/utils/request'
 const service = window.lwConfig.services.wecom
+const local = window.lwConfig.services.system
 //用户同步
 //  查询同步用户列表(分页)
 export function userFindWeUserList(params) {
@@ -20,9 +21,18 @@ export function findWeUserBaseInfo(params) {
 }
 
 // 用户分配/转移
-export function userTransferOwner(id) {
+export function userTransferOwner(id, data) {
   return request({
-    url: service + '/we/user/transferOwner/'+id,
-    method: 'post'
+    url: service + '/we/user/transferOwner/'+id + '?userId=' + data,
+    method: 'post',
   })
 }
+
+// 分配/转出可选的用户
+export function userList(params) {
+  return request({
+    url: local + `/system/user/listAll?userName=${params}`,
+    method: 'get',
+  })
+}
+

+ 10 - 2
src/api/customerManage/wechatCustomer.js

@@ -1,5 +1,6 @@
 import request from '@/utils/request'
 const service = window.lwConfig.services.wecom
+const local = window.lwConfig.services.system
 //微信客户
 // 查询微信客户列表(分页)
 export function findWeCustomerUserList(params) {
@@ -20,9 +21,9 @@ export function findWeCustomerUserBaseInfo(params) {
 }
 
 // 绑定用户
-export function customerBindUser(id) {
+export function customerBindUser(id, data) {
   return request({
-    url: service + '/we/customerUser/bindUser/'+id,
+    url: service + '/we/customerUser/bindUser/'+id + '?userId=' + data,
     method: 'post'
   })
 }
@@ -33,4 +34,11 @@ export function customerUnbindUser(id) {
     method: 'post'
   })
 }
+// 绑定用户可选的数据
+export function userList() {
+  return request({
+    url: service + '/we/user/findUserList ',
+    method: 'get',
+  })
+}
 

+ 1 - 1
src/views/application/packet/list.vue

@@ -43,7 +43,7 @@
                         {{ scope.row.prizeList?scope.row.prizeList[0].redRacketBudget:'' }}
                     </template>
                 </el-table-column>
-                <el-table-column prop="a" label="参与用户"></el-table-column>
+                <el-table-column prop="listNum" label="参与用户"></el-table-column>
                 <el-table-column prop="actStatus" label="状态">
                     <template slot-scope="scope">
                         {{ scope.row.actStatus == '1'?'开启':scope.row.actStatus == '2'?'关闭':'' }}

+ 5 - 0
src/views/customerManage/customer.vue

@@ -578,6 +578,11 @@ export default {
           row.weFlowerCustomerRels[0] ? row.weFlowerCustomerRels[0].userName : ''
         }}</template> -->
         </el-table-column>
+        <el-table-column prop="source" label="客户来源" align="center">
+            <template slot-scope="scope">
+                {{ scope.row.source == '0'?'客群活码':scope.row.source == '1'?'门店活码':scope.row.source == '2'?'识客活码':scope.row.source == '3'?'拉新活码':'' }}
+            </template>
+        </el-table-column>
         <el-table-column prop="trackState" label="商机阶段" align="center">
           <template slot-scope="{ row }">
             <!-- <el-tag v-if="row.trackState" :type="dictTrackState[~~row.trackState + ''].color">

+ 36 - 17
src/views/customerManage/userSync/detail.vue

@@ -6,30 +6,30 @@
       <span class="g-card-title">用户详情</span>
       <!-- 表单 -->
       <!-- 模板内容 -->
-      <el-form ref="queryForm"  :model="queryForm" label-width="100px" >
-        <el-form-item label="用户ID" prop="name">
-          <el-input v-model="queryForm.name" placeholder="用户ID"></el-input>
+      <el-form ref="queryForm"  :model="queryForm" label-width="100px" :disabled="true">
+        <el-form-item label="用户ID" prop="userCode">
+          <el-input v-model="queryForm.userCode" placeholder="用户ID"></el-input>
         </el-form-item>
         <el-form-item label="用户姓名" prop="name">
           <el-input v-model="queryForm.name" placeholder="请输入用户姓名"></el-input>
         </el-form-item>
-        <el-form-item label="性别" prop="name">
-          <el-input v-model="queryForm.name" placeholder="请输入性别"></el-input>
+        <el-form-item label="性别" prop="sex">
+          <el-input v-model="queryForm.sex" placeholder="请输入性别"></el-input>
         </el-form-item>
-        <el-form-item label="生日" prop="name">
-          <el-input v-model="queryForm.name" placeholder="请输入生日"></el-input>
+        <el-form-item label="生日" prop="birthday">
+          <el-input v-model="queryForm.birthday" placeholder="请输入生日"></el-input>
         </el-form-item>
-        <el-form-item label="手机号" prop="name">
-          <el-input v-model="queryForm.name" placeholder="请输入手机号"></el-input>
+        <el-form-item label="手机号" prop="phone">
+          <el-input v-model="queryForm.phone" placeholder="请输入手机号"></el-input>
         </el-form-item>
-        <el-form-item label="用户状态" prop="name">
-          <el-input v-model="queryForm.name" placeholder="用户状态"></el-input>
+        <el-form-item label="用户状态" prop="status">
+          <el-input v-model="queryForm.status" placeholder="用户状态"></el-input>
         </el-form-item>
-        <el-form-item label="用户类型" prop="name">
-          <el-input v-model="queryForm.name" placeholder="用户类型"></el-input>
+        <el-form-item label="用户类型" prop="type">
+          <el-input v-model="queryForm.type" placeholder="用户类型"></el-input>
         </el-form-item>
-        <el-form-item label="注册时间" prop="name">
-          <el-input v-model="queryForm.name" placeholder="注册时间"></el-input>
+        <el-form-item label="注册时间" prop="registerTime">
+          <el-input v-model="queryForm.registerTime" placeholder="注册时间"></el-input>
         </el-form-item>
       </el-form>
     </div>
@@ -38,6 +38,8 @@
 
 <!-- 行为区域 -->
 <script>
+import * as api from '@/api/customerManage/userSync'
+import {findWeUserBaseInfo} from "@/api/customerManage/userSync";
 export default {
   // 数据存放区域
   data() {
@@ -48,11 +50,28 @@ export default {
   },
   // 生命周期函数
   created() {
-
+    this.initData();
   },
   // 方法函数
   methods: {
-
+    initData() {
+      api.findWeUserBaseInfo({
+          id: this.$route.query.id
+      }).then(res => {
+          if(res.code == 200) {
+            this.queryForm = {
+                userCode: res.data.userCode,
+                name: res.data.name,
+                sex: res.data.sex?'男':'女',
+                birthday: res.data.birthday,
+                phone: res.data.phone,
+                status: res.data.status?'临时用户':'正式用户',
+                type: res.data.type == 0?'普通用户':'',
+                registerTime: res.data.registerTime,
+            }
+          }
+      })
+    }
   },
   // 计算属性
   computed: {

+ 35 - 16
src/views/customerManage/userSync/list.vue

@@ -45,7 +45,8 @@
         :data="Result" :columns="Columns" @findPage="findPage">
         <template slot="buttonSlot" slot-scope="{ row }">
           <el-button type="text" @click="viewDetails(row)">查看</el-button>
-          <el-button type="text" @click="transferUser">转出</el-button>
+          <el-button type="text" v-if="row.ownerUserId" @click="transferUser(row)">转出</el-button>
+          <el-button type="text" v-else @click="transferUser(row)">分配</el-button>
         </template>
       </templateTable>
     </div>
@@ -54,9 +55,7 @@
         <el-form ref="form" :rules="rules" :model="form" label-position="left" label-width="120px">
           <el-form-item label="选择员工" prop="labelName">
             <el-select v-model="form.labelName" placeholder="请选择,支持关键词搜索" clearable filterable>
-              <el-option label="321" value="3"></el-option>
-              <el-option label="321" value="3"></el-option>
-              <el-option label="321" value="3"></el-option>
+              <el-option v-for="(item, index) in userList" :label="item.userName" :value="item.userId"></el-option>
             </el-select>
           </el-form-item>
 
@@ -74,6 +73,7 @@
 <script>
 import templateTable from "@/components/templateTable.vue";
 import * as api from '@/api/customerManage/userSync'
+import {transferOwner, userTransferOwner} from "@/api/customerManage/userSync";
 export default {
   components: {
     templateTable
@@ -106,12 +106,8 @@ export default {
 
       },
       Result: {
-        content: [
-          {
-            name: "3232"
-          }
-        ],
-        totalSize: 100,
+        rows: [],
+        total: 100,
       },
       Columns: [
         { prop: "userCode", label: "用户ID", minWidth: 180, },
@@ -128,6 +124,8 @@ export default {
         { prop: "updateTime", label: "最近互动时间", minWidth: 160, },
 
       ],
+      userList: [],
+      userId: ''
     }
   },
   // 生命周期函数
@@ -154,30 +152,51 @@ export default {
     viewDetails(row) {
       this.$router.push({
         path: 'userSyncDetail',
-        query: {id:row.id },
+        query: { id: row.id },
       })
     },
     // 操作用户
     userOperation() {
       this.$refs['form'].validate((valid) => {
         if (valid) {
-          console.log(valid)
+            api.userTransferOwner(this.userId, Number(this.form.labelName)).then(res => {
+                if(res.code == 200) {
+                    this.$message.success(res.msg)
+                }
+                this.transferUserShow = false;
+            })
         }
       })
     },
     // 用户转出弹窗
-    transferUser() {
+    transferUser(row) {
       this.transferUserShow = true;
-    },   //列表查询
+      this.userId = row.id
+      this.initUserList()
+    },
+    initUserList() {
+        api.userList(localStorage.getItem('username')).then(res => {
+            if(res.code == 200) {
+                this.userList = res.data
+            }
+        })
+    },
+    //列表查询
     findPage() {
+        let that = this
       api.userFindWeUserList(this.query).then((res)=>{
-          console.log(res)
+          if(res.code == 200) {
+              that.Result = {
+                  rows: res.rows,
+                  total: res.total
+              }
+          }
       })
     },
     // 同步用户
     syncUser() {
       api.findWeUserBaseInfo().then((res)=>{
-        console.log(res)
+
       })
     },
   },

+ 27 - 16
src/views/customerManage/wechatCustomer/detail.vue

@@ -6,24 +6,26 @@
       <span class="g-card-title">用户详情</span>
       <!-- 表单 -->
       <!-- 模板内容 -->
-      <el-form ref="detailForm"  :model="detailForm" label-position="left" label-width="80px" >
-        <el-form-item label="openid" prop="name">
-          <el-input v-model="detailForm.name" placeholder="用户openid"></el-input>
+      <el-form ref="detailForm"  :model="detailForm" label-position="left" label-width="80px" disabled>
+        <el-form-item label="openid" prop="wxOpenid">
+          <el-input v-model="detailForm.wxOpenid" placeholder="用户openid"></el-input>
         </el-form-item>
-        <el-form-item label="用户ID" prop="name">
-          <el-input v-model="detailForm.name" placeholder="请输入用户ID"></el-input>
+        <el-form-item label="用户ID" prop="userCode">
+          <el-input v-model="detailForm.userCode" placeholder="请输入用户ID"></el-input>
         </el-form-item>
-        <el-form-item label="微信昵称" prop="name">
-          <el-input v-model="detailForm.name" placeholder="请输入微信昵称"></el-input>
+        <el-form-item label="微信昵称" prop="wxNickname">
+          <el-input v-model="detailForm.wxNickname" placeholder="请输入微信昵称"></el-input>
         </el-form-item>
-        <el-form-item label="手机号" prop="name">
-          <el-input v-model="detailForm.name" placeholder="请输入手机号"></el-input>
+        <el-form-item label="手机号" prop="wxPhone">
+          <el-input v-model="detailForm.wxPhone" placeholder="请输入手机号"></el-input>
         </el-form-item>
-        <el-form-item label="头像" prop="name">
-            <div class="avatar"></div>
+        <el-form-item label="头像" prop="wxAvatar">
+            <div class="avatar">
+                <img :src="detailForm.wxAvatar">
+            </div>
         </el-form-item>
-        <el-form-item label="绑定时间" prop="name">
-          <el-input v-model="detailForm.name" placeholder="绑定时间"></el-input>
+        <el-form-item label="绑定时间" prop="bindTime">
+          <el-input v-model="detailForm.bindTime" placeholder="绑定时间"></el-input>
         </el-form-item>
       </el-form>
     </div>
@@ -32,6 +34,7 @@
 
 <!-- 行为区域 -->
 <script>
+import * as api from '@/api/customerManage/wechatCustomer'
 export default {
   // 数据存放区域
   data() {
@@ -42,14 +45,16 @@ export default {
   },
   // 生命周期函数
   created() {
-    this.id=this.$route.query.id;
+    this.id = this.$route.query.id;
     this.detailquery();
   },
   // 方法函数
   methods: {
     detailquery(){
-      api.findWeCustomerUserBaseInfo({id:this.id}).then((res)=>{
-          console.log(res)
+      api.findWeCustomerUserBaseInfo({id: this.id}).then((res)=>{
+          if(res.code == 200) {
+              this.detailForm = res.data
+          }
       })
     }
   },
@@ -66,5 +71,11 @@ export default {
   border-radius: 50%;
   border: 1px solid #DCDFE6;
   margin-left: 10px;
+  img{
+    display: block;
+    width: 100%;
+    height: 100%;
+    border-radius: 50%;
+  }
 }
 </style>

+ 55 - 31
src/views/customerManage/wechatCustomer/list.vue

@@ -52,9 +52,7 @@
         <el-form ref="form" :rules="rules" :model="form" label-position="left" label-width="120px">
           <el-form-item label="选择用户" prop="labelName">
             <el-select v-model="form.labelName" placeholder="请选择,支持关键词搜索" clearable filterable>
-              <el-option label="321" value="3"></el-option>
-              <el-option label="321" value="3"></el-option>
-              <el-option label="321" value="3"></el-option>
+                <el-option v-for="(item, index) in userList" :label="item.name" :value="item.id" :key="item.id"></el-option>
             </el-select>
           </el-form-item>
 
@@ -72,6 +70,7 @@
 <script>
 import templateTable from "@/components/templateTable.vue";
 import * as api from '@/api/customerManage/wechatCustomer'
+import {customerUnbindUser} from "@/api/customerManage/wechatCustomer";
 
 export default {
   components: {
@@ -89,7 +88,9 @@ export default {
         pageNum:1,
         pageSize:10,
       },//页面检索对象
-      form: {},//提交表单
+      form: {
+          labelName: ''
+      },//提交表单
       rules: {
         labelName: [
           {
@@ -101,33 +102,27 @@ export default {
 
       },
       Result: {
-        content: [
-          {
-            name: "3232",
-            status: true
-          },
-          {
-            name: "3232",
-            status: false
-          }
-        ],
-        totalSize: 100,
+          rows: [],
+          total: 100,
       },
       Columns: [
-        { prop: "name", label: "openid", minWidth: 180, },
-        { prop: "name", label: "用户ID", minWidth: 180, },
-        { prop: "mobile", label: "微信昵称", minWidth: 160 },
-        { prop: "userId", label: "手机号码", minWidth: 120 },
-        { prop: "deptName", label: "头像URL", minWidth: 160 },
-        { prop: "type", label: "绑定时间", minWidth: 160, formatter: this.typeFormatter },
-        { prop: "originalLevel", label: "状态", minWidth: 160, formatter: this.originalLevelFormatter },
-        { prop: "originalLevel1", label: "最后同步时间", minWidth: 160, },
+        { prop: "wxOpenid", label: "openid", minWidth: 180, },
+        { prop: "userCode", label: "用户ID", minWidth: 180, },
+        { prop: "wxNickname", label: "微信昵称", minWidth: 160 },
+        { prop: "wxPhone", label: "手机号码", minWidth: 120 },
+        { prop: "wxAvatar", label: "头像URL", minWidth: 160 },
+        { prop: "bindTime", label: "绑定时间", minWidth: 160, formatter: this.typeFormatter },
+        { prop: "status", label: "状态", minWidth: 160, formatter: this.originalLevelFormatter },
+        { prop: "createTime", label: "最后同步时间", minWidth: 160, },
 
       ],
+      userList: [],
+      userId: ''
     }
   },
   // 生命周期函数
   created() {
+      this.initUserList()
   },
   // 方法函数
   methods: {
@@ -140,9 +135,16 @@ export default {
     },
     // 操作用户
     userOperation() {
+        let that = this
       this.$refs['form'].validate((valid) => {
         if (valid) {
-          console.log(valid)
+            api.customerBindUser(that.userId, that.form.labelName).then(res => {
+                if(res.code == 200) {
+                    this.$message.success(res.msg)
+                    this.findPage()
+                }
+                this.userBindingShow = false
+            })
         }
       })
     },
@@ -157,23 +159,45 @@ export default {
           cancelButtonText: '取消',
           dangerouslyUseHTMLString: true,
         }).then(() => {
-          this.$message({
-            type: 'success',
-            message: '删除成功!'
-          });
+          api.customerUnbindUser(row.id).then(res => {
+              if(res.code == 200) {
+                  this.$message.success(res.msg)
+                  this.findPage()
+              }
+          })
+          // this.$message({
+          //   type: 'success',
+          //   message: '删除成功!'
+          // });
         }).catch(() => {
 
         });
       } else {
         this.userBindingShow = true;
-
+        this.userId = row.id
       }
-    },   //列表查询
+    },
+    initUserList() {
+        api.userList(localStorage.getItem('username')).then(res => {
+            if(res.code == 200) {
+                this.userList = res.data
+            }
+        })
+    },
+    //列表查询
     findPage() {
       api.findWeCustomerUserList(this.query).then((res)=>{
-          console.log(res)
+          if(res.code == 200) {
+              this.Result = {
+                  rows: res.rows,
+                  total: res.total
+              }
+          }
       })
     },
+      originalLevelFormatter(row,column){
+          return row.status==0?'未绑定':'已绑定'
+      },
     // 同步用户
     syncUser() {