Sfoglia il codice sorgente

Merge branch 'dev' of http://39.101.143.165:8090/dong_k/link-wechat-web-pc into dev

@dongkboy 1 anno fa
parent
commit
6d61afbb01

+ 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',
+  })
+}
 

+ 39 - 1
src/api/lottery/index.js

@@ -1,5 +1,6 @@
 import request from '@/utils/request'
 const service = window.lwConfig.services.system + window.lwConfig.services.wecom
+const local = window.lwConfig.services.system
 
 // export function getList(params) {
 //     return request({
@@ -52,7 +53,44 @@ export function getActivity(params) {
 // 权益券
 export function getEquityCoupon() {
     return request({
-        url: service + '/equity/getEquityCoupon',
+        url: local + '/chinacoal/equity/getEquityCoupon',
         method: 'get'
     })
 }
+
+// 红包拉新查看
+export function getRedEnvelopeRecord(params) {
+    return request({
+        url: local + '/chinacoal/redEnvelope/getRedEnvelopeRecord',
+        method: 'get',
+        params
+    })
+}
+
+// 导出
+export function exportRedEnvelopeRecord(data) {
+    return request({
+        url: local + '/chinacoal/redEnvelope/exportRedEnvelopeRecord',
+        method: 'get',
+        data,
+        responseType: 'blob'
+    })
+}
+
+// 表单活动记录
+export function getFormRecord(params) {
+    return request({
+        url: local + '/chinacoal/redEnvelope/getFormRecord',
+        method: 'get',
+        params
+    })
+}
+
+// 抽奖中奖人数
+export function getWinningRecord(params) {
+    return request({
+        url: local + '/chinacoal/redEnvelope/getWinningRecord',
+        method: 'get',
+        params
+    })
+}

+ 11 - 6
src/views/application/form/add.vue

@@ -31,8 +31,10 @@
                         </div>
                     </div>
                 </el-form-item>
-                <el-form-item label="活动图片" prop="i">
-                    <upload></upload>
+                <el-form-item label="活动图片" prop="fileUrl">
+                    <UploadToCos :fileUrl.sync="addForm.fileUrl" type="0">
+                        <div slot="tip">支持jpg/jpeg/png格式,建议200*200</div>
+                    </UploadToCos>
                 </el-form-item>
             </el-form>
         </div>
@@ -54,7 +56,8 @@ export default {
                 actName: '',
                 actTime: [],
                 actDesc: '',
-                actPrizeList: []
+                actPrizeList: [],
+                fileUrl: ''
             },
             addRules: {
                 actName:[ { required: true, message: '请输入活动名称', trigger: 'blur' } ]
@@ -79,7 +82,8 @@ export default {
                         actType: `${obj.actType}`,
                         actTime: [obj.actStartTime, obj.actEndTime],
                         actDesc: obj.actDesc,
-                        actPrizeList: obj.actPrizeList?obj.actPrizeLis:[]
+                        actPrizeList: obj.actPrizeList?obj.actPrizeLis:[],
+                        fileUrl: obj.fileUrl
                     }
                 }
             })
@@ -93,13 +97,14 @@ export default {
         handleDel( item, index ) {
             this.addForm.actPrizeList.splice(index, 1)
         },
-        handleSubmit() {
+        async handleSubmit() {
             let params = {
                 actName: this.addForm.actName,
                 actType: '4',
                 actStartTime: this.addForm.actTime[0],
                 actEndTime: this.addForm.actTime[1],
-                actPrizeList: this.addForm.actPrizeList
+                actPrizeList: this.addForm.actPrizeList,
+                fileUrl: this.addForm.fileUrl
             }
             if(this.$route.query.id) {
                 api.editActivity({

+ 83 - 6
src/views/application/form/list.vue

@@ -23,8 +23,12 @@
                         {{ `${scope.row.actStartTime}-${scope.row.actEndTime}` }}
                     </template>
                 </el-table-column>
-                <el-table-column prop="a" label="活动规则"></el-table-column>
-                <el-table-column prop="a" label="收集数量"></el-table-column>
+                <el-table-column prop="actDesc" label="活动规则"></el-table-column>
+                <el-table-column prop="listNum" label="收集数量">
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="showNumber(scope.row)">{{ scope.row.listNum }}</el-button>
+                    </template>
+                </el-table-column>
                 <el-table-column prop="actStatus" label="状态">
                     <template slot-scope="scope">
                         {{ scope.row.actStatus == '1'?'开启':scope.row.actStatus == '2'?'关闭':'' }}
@@ -48,11 +52,40 @@
                 @pagination="initList"
             />
         </div>
+        <el-dialog
+            :visible.sync="numberShow"
+            width="400"
+        >
+            <el-form :model="viewForm">
+                <el-form-item prop="userInfo" label="用户信息">
+                    <el-input placeholder="请输入用户信息" v-model="viewForm.userInfo"></el-input>
+                    <el-button @click="viewSearch()" type="primary" style="margin-left: 10px;">搜索</el-button>
+                </el-form-item>
+            </el-form>
+            <div class="mid-action">
+                <el-button type="primary" @click="addDownoad">导出</el-button>
+            </div>
+            <el-table
+                :data="numbersData"
+            >
+                <el-table-column label="序号" type="index"></el-table-column>
+                <el-table-column label="用户ID" prop="userId"></el-table-column>
+                <el-table-column label="填写信息" prop="userInfo"></el-table-column>
+            </el-table>
+            <pagination
+                v-show="total1 > 0"
+                :total="total1"
+                :page.sync="viewForm.pageNum"
+                :limit.sync="viewForm.pageSize"
+                @pagination="initViewList"
+            />
+        </el-dialog>
     </div>
 </template>
 
 <script>
 import * as api from "@/api/lottery";
+import {getFormRecord} from "@/api/lottery";
 
 export default {
     name: "formList",
@@ -65,9 +98,16 @@ export default {
             },
             total: 1,
             loading: false,
-            tableData: [{
-                a: 1
-            }]
+            tableData: [],
+            numberShow: false,
+            numbersData: [],
+            viewForm: {
+                userInfo: '',
+                pageNum: 1,
+                pageSize: 10
+            },
+            total1: 0,
+            viewId: ''
         }
     },
     created() {
@@ -95,7 +135,44 @@ export default {
                 path: 'add'
             })
         },
-
+        showNumber(row) {
+            this.numberShow = true
+            this.viewId = row.actId
+            this.initViewList()
+        },
+        initViewList() {
+            api.getFormRecord({
+                actId: this.viewId
+            }).then(res => {
+                if(res.code == 200) {
+                    this.numbersData = res.rows
+                    this.total1 = res.total
+                }
+            })
+        },
+        viewSearch() {
+            this.initViewList()
+        },
+        addDownoad() {
+            api.exportRedEnvelopeRecord({
+                actId: this.viewId
+            }).then(res => {
+                const blob = new Blob([res], { type: 'application/vnd.ms-excel' });
+                const fileName = '表单活动' + new Date().getTime() + '.xlsx';
+                if ('download' in document.createElement('a')) {
+                    const elink = document.createElement('a');
+                    elink.download = fileName;
+                    elink.style.display = 'none';
+                    elink.href = URL.createObjectURL(blob);
+                    document.body.appendChild(elink);
+                    elink.click();
+                    URL.revokeObjectURL(elink.href);
+                    document.body.removeChild(elink);
+                } else {
+                    navigator.msSaveBlob(blob, fileName);
+                }
+            })
+        },
         handleClose(row) {
             api.editActivityStatus({
                 actId: row.actId,

+ 22 - 9
src/views/application/lottery/add.vue

@@ -14,7 +14,7 @@
                 </el-form-item>
                 <el-form-item label="活动时间" prop="actTime">
                     <el-date-picker
-                        type="daterange"
+                        type="datetimerange"
                         v-model="addForm.actTime"
                         range-separator="至"
                         start-placeholder="开始日期"
@@ -35,7 +35,7 @@
                     <el-table-column prop="prizeType" label="活动奖品"></el-table-column>
                     <el-table-column label="操作">
                         <template slot-scope="scope">
-                            <el-button type="text" @click="prizeEdit(scope.row)">编辑</el-button>
+                            <el-button type="text" @click="prizeEdit(scope)">编辑</el-button>
                             <el-button type="text" @click="prizeDel(scope)">删除</el-button>
                         </template>
                     </el-table-column>
@@ -119,12 +119,16 @@ export default {
                 prizeType: '1',
                 prizeContent: ''
             },
-            coupon: []
+            coupon: [],
+            isEdit: false,
+            editIndex: null
         }
     },
     created() {
+        this.isEdit = false
         if(this.$route.query.id) {
             this.title = '编辑'
+            this.isEdit = true
             this.getActivity()
         }
         this.getEquityCoupon();
@@ -165,6 +169,7 @@ export default {
                     return
                 }
             }
+            this.isEdit = false
             this.addPrizeShow = true
             let num = 0
             this.addForm.prizeList.forEach(item => {
@@ -178,12 +183,13 @@ export default {
                 prizeContent: ''
             }
         },
-        prizeEdit(row) {
+        prizeEdit(scope) {
             this.addPrizeShow = true
-            this.addPrizeForm = row
+            this.addPrizeForm = scope.row
+            this.isEdit = true
+            this.editIndex = scope.$index
         },
         prizeDel(scope) {
-            console.log(12313, scope)
             this.addForm.prizeList.splice(scope.$index, 1)
         },
         addPrizeCancel() {
@@ -198,11 +204,18 @@ export default {
         },
         addPrizeSubmit() {
             this.addPrizeShow = false
-            this.addForm.prizeList.push({
-                ...this.addPrizeForm
-            })
+            if(this.isEdit) {
+
+            } else {
+                this.addForm.prizeList.push({
+                    ...this.addPrizeForm
+                })
+            }
         },
         handleSubmit() {
+            this.addForm.prizeList.forEach(item => {
+                item.prizeType = `${item.prizeType}`
+            })
             let params = {
                 actName: this.addForm.actName,
                 actType: this.addForm.actType,

+ 37 - 9
src/views/application/lottery/list.vue

@@ -2,7 +2,7 @@
     <div>
         <el-form ref="LotteryForm" :inline="true" :model="lotteryForm" class="top-search">
             <el-form-item label="类型" prop="type">
-                <el-select v-model="lotteryForm.actType">
+                <el-select v-model="lotteryForm.actType" clearable>
                     <el-option value="1" label="抽奖"></el-option>
                     <el-option value="2" label="转盘"></el-option>
                 </el-select>
@@ -33,9 +33,9 @@
                         {{ scope.row.actStartTime&&scope.row.actEndTime?`${scope.row.actStartTime}-${scope.row.actEndTime}`:'' }}
                     </template>
                 </el-table-column>
-                <el-table-column prop="actWinNum" label="中奖人数">
+                <el-table-column prop="winNum" label="中奖人数">
                     <template slot-scope="scope">
-                        <el-button type="text" @click="showNumber(scope.row)">{{ scope.row.actWinNum?scope.row.actWinNum:0 }}</el-button>
+                        <el-button type="text" @click="showNumber(scope.row)">{{ scope.row.winNum?scope.row.winNum:0 }}</el-button>
                     </template>
                 </el-table-column>
                 <el-table-column prop="actStatus" label="状态">
@@ -69,15 +69,23 @@
                 :data="numbersData"
             >
                 <el-table-column label="序号" type="index"></el-table-column>
-                <el-table-column label="用户名称" prop="name"></el-table-column>
-                <el-table-column label="手机号" prop="phone"></el-table-column>
+                <el-table-column label="用户名称" prop="userNickName"></el-table-column>
+                <el-table-column label="手机号" prop="userPhone"></el-table-column>
             </el-table>
         </el-dialog>
+        <pagination
+            v-show="total1 > 0"
+            :total="total1"
+            :page.sync="numberForm.pageNum"
+            :limit.sync="numberForm.pageSize"
+            @pagination="getWinningRecord"
+        />
     </div>
 </template>
 
 <script>
 import * as api from '@/api/lottery'
+import {getWinningRecord} from "@/api/lottery";
 export default {
     name: "lotteryList",
     data() {
@@ -91,7 +99,13 @@ export default {
             loading: false,
             tableData: [],
             numberShow: false,
-            numbersData: [{}]
+            numbersData: [],
+            total1: 0,
+            numberForm: {
+                pageNum: 1,
+                pageSize: 10
+            },
+            numberId: ''
         }
     },
     created() {
@@ -122,9 +136,23 @@ export default {
             })
         },
         showNumber(row) {
-            if(row.actWinNum) {
-                this.numberShow = true
-            }
+            // if(row.winNum) {
+            //     this.numberShow = true
+            // }
+            this.numberShow = true
+            this.numberId = row.actId
+            this.getWinningRecord()
+        },
+        getWinningRecord() {
+            api.getWinningRecord({
+                actId: this.numberId,
+                ...this.numberForm
+            }).then(res => {
+                if(res.code == 200) {
+                    this.numbersData = res.rows
+                    this.total1 = res.total
+                }
+            })
         },
         handleClose(row) {
             api.editActivityStatus({

+ 62 - 11
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'?'关闭':'' }}
@@ -72,24 +72,33 @@
             :visible.sync="viewShow"
             width="500"
         >
+            <el-form :model="viewForm">
+                <el-form-item prop="userInfo" label="用户信息">
+                    <el-input placeholder="请输入用户信息" v-model="viewForm.userInfo"></el-input>
+                    <el-button @click="viewSearch()" type="primary" style="margin-left: 10px;">搜索</el-button>
+                </el-form-item>
+            </el-form>
+            <div class="mid-action">
+                <el-button type="primary" @click="addDownoad">导出</el-button>
+            </div>
             <el-table
                 :data="viewData"
             >
                 <el-table-column type="index" label="序号"></el-table-column>
-                <el-table-column label="发起用户"></el-table-column>
-                <el-table-column label="红包金额"></el-table-column>
+                <el-table-column prop="userNickName" label="发起用户"></el-table-column>
+                <el-table-column prop="money" label="红包金额"></el-table-column>
                 <el-table-column label="裂变用户">
                     <template slot-scope="scope">
-                        用户昵称-手机号
+                        {{ `${scope.row.helpUserNickName} - ${scope.row.helpUserPhone}` }}
                     </template>
                 </el-table-column>
             </el-table>
             <pagination
-                v-show="total > 0"
-                :total="total"
-                :page.sync="packetForm.pageNum"
-                :limit.sync="packetForm.pageSize"
-                @pagination="initList"
+                v-show="total1 > 0"
+                :total="total1"
+                :page.sync="viewForm.pageNum"
+                :limit.sync="viewForm.pageSize"
+                @pagination="initViewList"
             />
         </el-dialog>
     </div>
@@ -97,6 +106,7 @@
 
 <script>
 import * as api from '@/api/lottery'
+import {exportRedEnvelopeRecord} from "@/api/lottery";
 
 export default {
     name: "packetList",
@@ -107,11 +117,18 @@ export default {
                 pageNum: 1,
                 pageSize: 10
             },
-            total: 1,
+            total: 0,
+            total1: 0,
+            viewForm: {
+                userInfo: '',
+                pageNum: 1,
+                pageSize: 10,
+            },
             loading: false,
             tableData: [],
             viewShow: false,
-            viewData: []
+            viewData: [],
+            viewId: ''
         }
     },
     created() {
@@ -172,9 +189,43 @@ export default {
         },
         handleView(row) {
             this.viewShow = true
+            this.viewId = row.actId
+            this.initViewList()
         },
         handleShare(row) {
 
+        },
+        viewSearch() {
+            this.initViewList()
+        },
+        initViewList() {
+            api.getRedEnvelopeRecord({
+                actId: this.viewId,
+                ...this.viewForm
+            }).then(res => {
+                this.total1 = res.total
+                this.viewData = res.rows
+            })
+        },
+        addDownoad() {
+            api.exportRedEnvelopeRecord({
+                actId: this.viewId
+            }).then(res => {
+                const blob = new Blob([res], { type: 'application/vnd.ms-excel' });
+                const fileName = '红包记录' + new Date().getTime() + '.xlsx';
+                if ('download' in document.createElement('a')) {
+                    const elink = document.createElement('a');
+                    elink.download = fileName;
+                    elink.style.display = 'none';
+                    elink.href = URL.createObjectURL(blob);
+                    document.body.appendChild(elink);
+                    elink.click();
+                    URL.revokeObjectURL(elink.href);
+                    document.body.removeChild(elink);
+                } else {
+                    navigator.msSaveBlob(blob, fileName);
+                }
+            })
         }
     }
 }

+ 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">

+ 40 - 16
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,14 +50,36 @@ 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: {
+
   }
 }
 </script>
 <!-- 样式区域 -->
-<style lang='scss' scoped></style>
+<style lang='scss' scoped>
+
+</style>

+ 35 - 18
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,31 +152,50 @@ 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() {