Просмотр исходного кода

用户同步、微信客户、行为类型、智能达标

@dongkboy 1 год назад
Родитель
Сommit
028b588d53

+ 2 - 2
env.js

@@ -34,8 +34,8 @@ const envs = {
     _ISCDN: true, // 是否开启cdn加速
   },
   development: {
-    // DOMAIN: 'http://192.168.0.19:6180',//董鑫
-    DOMAIN: 'http://192.168.0.106:6180',//屈晨
+    DOMAIN: 'http://192.168.0.52:6180',//董鑫
+    // DOMAIN: 'http://192.168.0.106:6180',//屈晨
     BASE_URL: './', // 路由基础路径
     BASE_API: 'https://scrm-gw.chinacoal-ins.com',
     // BASE_API: 'http://10.1.37.249:6180',

+ 37 - 0
src/api/customerManage/smartTagging.js

@@ -0,0 +1,37 @@
+import request from '@/utils/request'
+const service = window.lwConfig.services.wecom
+//智能打标
+//  获取标签组
+export function tagList(params) {
+  return request({
+    url: service+'/tag/list',
+    method: 'get',
+    params
+  })
+}
+
+// 打标规则添加
+export function markAdd(data) {
+  return request({
+    url: service+'/mark/add',
+    method: 'post',
+    data
+  })
+}
+
+// 打标规则列表
+export function markList(params) {
+  return request({
+    url: service + '/mark/list',
+    method: 'get',
+    params
+  })
+}
+//规则查看
+export function markQueryById(params) {
+  return request({
+    url: service + '/mark/queryById',
+    method: 'get',
+    params
+  })
+}

+ 28 - 0
src/api/customerManage/userActionTypeConfig.js

@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+const service = window.lwConfig.services.wecom
+//用户同步
+//  行为类型添加
+export function behaviorAdd(data) {
+  return request({
+    url: service+'/behavior/type/add',
+    method: 'post',
+    data
+  })
+}
+
+// 分页列表
+export function behaviorList(params) {
+  return request({
+    url: service+'/behavior/type/list',
+    method: 'get',
+    params
+  })
+}
+
+// 启用/禁用
+export function behaviorDisableEnable(id) {
+  return request({
+    url: service + '/behavior/type/disableEnable?id='+id,
+    method: 'get'
+  })
+}

+ 28 - 0
src/api/customerManage/userSync.js

@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+const service = window.lwConfig.services.wecom
+//用户同步
+//  查询同步用户列表(分页)
+export function userFindWeUserList(params) {
+  return request({
+    url: service+'/we/user/findWeUserList',
+    method: 'get',
+    params
+  })
+}
+
+// 查看详情接口
+export function findWeUserBaseInfo(params) {
+  return request({
+    url: service+'/we/user/findWeUserBaseInfo',
+    method: 'get',
+    params
+  })
+}
+
+// 用户分配/转移
+export function userTransferOwner(id) {
+  return request({
+    url: service + '/we/user/transferOwner/'+id,
+    method: 'post'
+  })
+}

+ 36 - 0
src/api/customerManage/wechatCustomer.js

@@ -0,0 +1,36 @@
+import request from '@/utils/request'
+const service = window.lwConfig.services.wecom
+//微信客户
+// 查询微信客户列表(分页)
+export function findWeCustomerUserList(params) {
+  return request({
+    url: service+'/we/customerUser/findWeCustomerUserList',
+    method: 'get',
+    params
+  })
+}
+
+// 查看微信客户详情接口
+export function findWeCustomerUserBaseInfo(params) {
+  return request({
+    url: service+'/we/customerUser/findWeCustomerUserBaseInfo',
+    method: 'get',
+    params
+  })
+}
+
+// 绑定用户
+export function customerBindUser(id) {
+  return request({
+    url: service + '/we/customerUser/bindUser/'+id,
+    method: 'post'
+  })
+}
+// 解绑用户
+export function customerUnbindUser(id) {
+  return request({
+    url: service + '/we/customerUser/unbindUser/'+id,
+    method: 'post'
+  })
+}
+

+ 6 - 10
src/components/templateTable.vue

@@ -1,7 +1,7 @@
 <template>
   <div style="position: relative" ref="commonTable">
     <!--表格栏-->
-    <el-table id="commonTable" ref="doLayout" :data="data.content" :highlight-current-row="highlightCurrentRow"
+    <el-table id="commonTable" ref="doLayout" :data="data.rows" :highlight-current-row="highlightCurrentRow"
       @selection-change="selectionChange" @row-click="rowClick" @current-change="handleCurrentChange" :border="border"
       :stripe="stripe" :show-summary="showSummary" :show-overflow-tooltip="showOverflowTooltip"
       :height="tableHeights ? tableHeights : tableHeight" :size="size" :align="align" style="width: 100%"
@@ -60,13 +60,13 @@
         <span>{{ tableSelectedCount }}</span>
       </div> -->
-    <pagination v-show="data.totalSize > 0 && data.totalSize" :total="data.totalSize" :page.sync="data.pageNum"
+    <pagination v-show="Number(data.total) > 0 && data.total" :total="Number(data.total)" :page.sync="data.pageNum"
       :limit.sync="data.pageSize" @pagination="findPage()" />
   </div>
 </template>
 <script>
 export default {
-  name: "KtCommonTable",
+  name: "templateTable",
   components: {
   },
   props: {
@@ -624,15 +624,11 @@ export default {
     setTimeout(() => {
       let tableTop = that.$refs.commonTable.offsetTop;
       let height = window.innerHeight;
-      let aaa= this.data.totalSize > 0 ? 225 : 175;
-      console.log(aaa)
+      let aaa= this.data.total > 0 ? 225 : 175;
       that.tableHeight = height - tableTop - aaa  + "px";
-    }, 10);
-    // window.onresize = function () {
-    //   let tableTop = that.$refs.commonTable.offsetTop;
-    //   let bottomTop = that.$refs.bottomFixed.offsetTop;
 
-    //   that.tableHeight = bottomTop - tableTop - 120 + "px";
+    }, 100);
+    // window.onresize = function () {
     // };
   },
 };

+ 3 - 4
src/views/customerManage/customer.vue

@@ -42,9 +42,6 @@ export default {
         weTags: [],
       },
       list: [
-        {
-          customerName:"321231"
-        }
       ], // 客户列表
       staffList: [], // 所有员工列表
       dialogVisible: false, // 选择标签弹窗显隐
@@ -213,7 +210,7 @@ export default {
               })
             }
           })
-          // this.list = rows
+          this.list = rows
           this.total = +total
           this.lastSyncTime = lastSyncTime
           this.noRepeatCustomerTotal = +noRepeatCustomerTotal
@@ -332,6 +329,8 @@ export default {
       this.queryUser = list
     },
     submitSelectTag(selected) {
+      console.log(this.currentEidt)
+      return
       if (this.tagDialogType.type === 'query') {
         this.queryTag = selected
         this.dialogVisible = false

+ 59 - 29
src/views/customerManage/userSync/list.vue

@@ -3,26 +3,26 @@
   <div>
     <!-- 模板内容 -->
     <el-form ref="queryForm" :inline="true" :model="query" label-width="100px" class="top-search">
-      <el-form-item label="用户ID" prop="name">
-        <el-input v-model="query.name" placeholder="请输入"></el-input>
+      <el-form-item label="用户ID" >
+        <el-input v-model="query.userCode" placeholder="请输入"></el-input>
       </el-form-item>
-      <el-form-item label="用户姓名" prop="name">
+      <el-form-item label="用户姓名" >
         <el-input v-model="query.name" placeholder="请输入"></el-input>
       </el-form-item>
-      <el-form-item label="手机号" prop="name">
-        <el-input v-model="query.name" placeholder="请输入"></el-input>
+      <el-form-item label="手机号" >
+        <el-input v-model="query.phone" placeholder="请输入"></el-input>
       </el-form-item>
-      <el-form-item label="用户来源" prop="name">
-        <el-input v-model="query.name" placeholder="请输入"></el-input>
+      <el-form-item label="用户来源" >
+        <el-input v-model="query.source" placeholder="请输入"></el-input>
       </el-form-item>
-      <el-form-item label="用户状态" prop="name">
-        <el-input v-model="query.name" placeholder="请输入"></el-input>
+      <el-form-item label="用户状态" >
+        <el-input v-model="query.status" placeholder="请输入"></el-input>
       </el-form-item>
-      <el-form-item label="企微触达状态" prop="name">
+      <el-form-item label="企微触达状态" >
         <el-input v-model="query.name" placeholder="请输入"></el-input>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" @click="getList(1)">查询</el-button>
+        <el-button type="primary" @click="findPage()">查询</el-button>
         <el-button @click="resetForm()">重置</el-button>
         <!-- <el-button
           v-hasPermi="['customerManage:customer:export']"
@@ -73,7 +73,7 @@
 <!-- 行为区域 -->
 <script>
 import templateTable from "@/components/templateTable.vue";
-import { Row } from "element-ui";
+import * as api from '@/api/customerManage/userSync'
 export default {
   components: {
     templateTable
@@ -82,7 +82,18 @@ export default {
   data() {
     return {
       transferUserShow: false,//转出弹窗
-      query: {},//页面检索对象
+      //页面检索对象
+      query: {
+        name:"",//姓名
+        phone:"",//手机号
+        source:"",//来源
+        status:"",//状态
+        userCode:"",//用户id
+        deliveredStatus:"",
+        pageNum:1,
+        pageSize:10,
+
+      },
       form: {},//提交表单
       rules: {
         labelName: [
@@ -103,18 +114,18 @@ export default {
         totalSize: 100,
       },
       Columns: [
-        { prop: "name", label: "用户ID", minWidth: 180, },
-        { prop: "mobile", label: "用户姓名", minWidth: 160 },
-        { prop: "userId", label: "性别", minWidth: 120 },
-        { prop: "deptName", label: "生日", minWidth: 160 },
-        { prop: "type", label: "手机号", minWidth: 160, formatter: this.typeFormatter },
-        { prop: "originalLevel", label: "用户来源", minWidth: 160, formatter: this.originalLevelFormatter },
-        { prop: "originalLevel1", label: "用户状态", minWidth: 160, },
-        { prop: "originalLevel2", label: "用户类型", minWidth: 160, },
-        { prop: "originalLevel3", label: "注册时间", minWidth: 160, },
-        { prop: "originalLevel4", label: "企微触达状态", minWidth: 160, },
-        { prop: "originalLevel5", label: "添加时间", minWidth: 160, },
-        { prop: "originalLevel6", label: "最近互动时间", minWidth: 160, },
+        { prop: "userCode", label: "用户ID", minWidth: 180, },
+        { prop: "name", label: "用户姓名", minWidth: 160 },
+        { prop: "sex", label: "性别", minWidth: 120,formatter: this.sexFormatter},
+        { prop: "birthday", label: "生日", minWidth: 160 },
+        { prop: "phone", label: "手机号", minWidth: 160,  },
+        { prop: "source", label: "用户来源", minWidth: 160, formatter: this.sourceFormatter },
+        { prop: "status", label: "用户状态", minWidth: 160, formatter: this.statusFormatter},
+        { prop: "type", label: "用户类型", minWidth: 160, formatter: this.typeFormatter},
+        { prop: "registerTime", label: "注册时间", minWidth: 160, },
+        { prop: "deliveredStatus", label: "企微触达状态", minWidth: 160,formatter: this.deliveredStatusFormatter },
+        // { prop: "registerTime", label: "添加时间", minWidth: 160, },
+        { prop: "updateTime", label: "最近互动时间", minWidth: 160, },
 
       ],
     }
@@ -124,11 +135,26 @@ export default {
   },
   // 方法函数
   methods: {
+    sexFormatter(row,column){
+      return row.sex==0?'女':'男'
+    },
+    sourceFormatter(row,column){
+      return row.source==0?'晋掌柜':'掌柜生活'
+    },
+    statusFormatter(row,column){
+      return row.status==0?'正式用户':'临时用户'
+    },
+    typeFormatter(row,column){
+      return row.type==0?'普通用户':''
+    },
+    deliveredStatusFormatter(row,column){
+      return row.deliveredStatus==0?'未触达':'已触达'
+    },
     // 查看详情
-    viewDetails() {
+    viewDetails(row) {
       this.$router.push({
         path: 'userSyncDetail',
-        query: {name:"232" },
+        query: {id:row.id },
       })
     },
     // 操作用户
@@ -144,11 +170,15 @@ export default {
       this.transferUserShow = true;
     },   //列表查询
     findPage() {
-      console.log(1)
+      api.userFindWeUserList(this.query).then((res)=>{
+          console.log(res)
+      })
     },
     // 同步用户
     syncUser() {
-
+      api.findWeUserBaseInfo().then((res)=>{
+        console.log(res)
+      })
     },
   },
   // 计算属性

+ 8 - 1
src/views/customerManage/wechatCustomer/detail.vue

@@ -37,14 +37,21 @@ export default {
   data() {
     return {
       detailForm:{},
-
+      id:"",
     }
   },
   // 生命周期函数
   created() {
+    this.id=this.$route.query.id;
+    this.detailquery();
   },
   // 方法函数
   methods: {
+    detailquery(){
+      api.findWeCustomerUserBaseInfo({id:this.id}).then((res)=>{
+          console.log(res)
+      })
+    }
   },
   // 计算属性
   computed: {

+ 24 - 13
src/views/customerManage/wechatCustomer/list.vue

@@ -3,24 +3,24 @@
   <div>
     <!-- 模板内容 -->
     <el-form ref="queryForm" :inline="true" :model="queryform" label-width="80px" class="top-search">
-      <el-form-item label="openid" prop="name">
-        <el-input v-model="queryform.name" placeholder="请输入"></el-input>
+      <el-form-item label="openid" >
+        <el-input v-model="queryform.wxOpenid" placeholder="请输入"></el-input>
       </el-form-item>
-      <el-form-item label="用户ID" prop="name">
-        <el-input v-model="queryform.name" placeholder="请输入"></el-input>
+      <el-form-item label="用户ID" >
+        <el-input v-model="queryform.userCode" 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="微信昵称" >
+        <el-input v-model="queryform.wxNickname" placeholder="请输入"></el-input>
       </el-form-item>
-      <el-form-item label="状态" prop="name">
-        <el-select v-model="queryform.labelName" placeholder="请选择,支持关键词搜索" clearable filterable>
+      <el-form-item label="状态" >
+        <el-select v-model="queryform.status" placeholder="请选择,支持关键词搜索" clearable filterable>
           <el-option label="全部" value="1"></el-option>
           <el-option label="已绑定" value="2"></el-option>
           <el-option label="未绑定" value="3"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" @click="getList(1)">查询</el-button>
+        <el-button type="primary" @click="findPage">查询</el-button>
         <el-button @click="resetForm()">重置</el-button>
         <!-- <el-button
           v-hasPermi="['customerManage:customer:export']"
@@ -71,6 +71,8 @@
 <!-- 行为区域 -->
 <script>
 import templateTable from "@/components/templateTable.vue";
+import * as api from '@/api/customerManage/wechatCustomer'
+
 export default {
   components: {
     templateTable
@@ -79,7 +81,14 @@ export default {
   data() {
     return {
       userBindingShow: false,//转出弹窗
-      queryform: {},//页面检索对象
+      queryform: {
+        userCode:"",//用户id
+        status:"",//状态
+        wxOpenid:"",//用户id
+        wxNickname:"",//微信昵称
+        pageNum:1,
+        pageSize:10,
+      },//页面检索对象
       form: {},//提交表单
       rules: {
         labelName: [
@@ -123,10 +132,10 @@ export default {
   // 方法函数
   methods: {
     // 查看详情
-    viewDetails() {
+    viewDetails(row) {
       this.$router.push({
         path: 'wechatCustomerDetail',
-        query: { name: "232" },
+        query: { id: row.id },
       })
     },
     // 操作用户
@@ -161,7 +170,9 @@ export default {
       }
     },   //列表查询
     findPage() {
-      console.log(1)
+      api.findWeCustomerUserList(this.query).then((res)=>{
+          console.log(res)
+      })
     },
     // 同步用户
     syncUser() {

+ 203 - 34
src/views/customerOperation/smartTagging.vue

@@ -20,24 +20,66 @@
           新建
         </el-button>
       </div>
-      <templateTable ref="commonTable" :operationWidth="200" :SerialShow="true" :showOperation="true" :showBatchDelete="false"
-        :data="Result" :columns="Columns" @findPage="findPage">
+      <templateTable ref="commonTable" :operationWidth="200" :SerialShow="false" :showOperation="true"
+        :showBatchDelete="false" :data="Result" :columns="Columns" @findPage="findPage">
         <template slot="buttonSlot" slot-scope="{ row }">
           <el-button type="text" @click="viewDetails(row)">查看</el-button>
         </template>
       </templateTable>
     </div>
-    <el-dialog title="添加行为类型" :visible.sync="createBehaviorShow" width="40%">
+    <el-dialog title="添加智能打标规则" :visible.sync="createBehaviorShow" width="900px">
       <div>
-        <el-form ref="form" :rules="rules" :model="form" label-position="left" label-width="120px">
-          <el-form-item label="行为类型编码" prop="labelName">
-            <el-input v-model="form.name" placeholder="请输入行为类型编码"></el-input>
+        <el-form ref="form" :rules="rules" :model="form" label-position="left" label-width="120px" :disabled="disabled">
+          <el-form-item label="行为类型名称" prop="actionId">
+            <el-select v-model="form.actionId" placeholder="请选择,支持关键词搜索" clearable filterable @change="actionChange">
+              <el-option :label="item.name" :value="item.code" v-for="(item, index) in behaviorTypeList"
+                :key="index.id"></el-option>
+            </el-select>
           </el-form-item>
-          <el-form-item label="行为类型名称" prop="labelName">
-            <el-input v-model="form.name" placeholder="请输入行为类型名称"></el-input>
+          <el-form-item label="规则" prop="markRules1">
+            <div class="flex a-c   customRules " v-if="form.actionId == 'ACT003'">
+              <span>客户24小时内点击活动链接≥</span>
+              <el-input v-model="form.markRules1"></el-input>
+              <span>次</span>
+            </div>
+            <div class="flex a-c customRules " v-else-if="form.actionId == 'ACT010'">
+              <span>历史累计订单金额≥</span>
+              <el-input v-model="form.markRules1"></el-input>
+              <span>元</span>
+            </div>
+            <div class="flex a-c customRules " v-else-if="form.actionId == 'ACT005'">
+              <span>首次下单订单金额≥</span>
+              <el-input v-model="form.markRules1"></el-input>
+              <span>元</span>
+            </div>
+            <div class="flex a-c customRules " v-else-if="form.actionId == 'ACT006'">
+              <span>客户连续</span>
+              <el-input v-model="form.markRules1"></el-input>
+              <span>天未打开小程序且未回复消息</span>
+            </div>
+            <div class="flex a-c customRules " v-else-if="form.actionId == 'ACT008'">
+              <span>客户升级为</span>
+              <el-input v-model="form.markRules1"></el-input>
+            </div>
+            <div class="flex a-c customRules " v-else-if="form.actionId == 'ACT009'">
+              <span>客户在聊天中发送</span>
+              <el-input v-model="form.markRules1" type="textarea" style="margin: 0 10px;" maxlength="200"
+                show-word-limit></el-input>
+              <span>等关键词</span>
+            </div>
+            <el-input v-else v-model="form.markRules1"></el-input>
           </el-form-item>
-          <el-form-item label="行为描述" prop="labelName">
-            <el-input type="textarea" v-model="form.desc"></el-input>
+          <el-form-item label="标签组">
+            <el-select v-model="form.tagGroupId" placeholder="请选择" clearable filterable @change="tagsArrayChange">
+              <el-option v-for="(item, index) in tagsArray" :key="index" :label="item.groupName"
+                :value="item.id"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="关联标签" v-if="form.tagGroupId" prop="tagIdList">
+            <el-select v-model="form.tagIdList" placeholder="请选择" clearable multiple>
+              <el-option :label="item.name" :value="item.tagId" v-for="(item, index) in tagsSubSet"
+                :key="index"></el-option>
+            </el-select>
           </el-form-item>
         </el-form>
       </div>
@@ -52,7 +94,9 @@
 <!-- 行为区域 -->
 <script>
 import templateTable from "@/components/templateTable.vue";
-import { Row } from "element-ui";
+import * as api from '@/api/customerManage/smartTagging'//智能达标api
+import * as userActionTypeApi from '@/api/customerManage/userActionTypeConfig'//获取行为类型数据
+
 export default {
   components: {
     templateTable
@@ -60,52 +104,152 @@ export default {
   // 数据存放区域
   data() {
     return {
+      disabled:false,
+      behaviorTypeList: [],//行为类型名称
       createBehaviorShow: false,//转出弹窗
-      queryform: {},//页面检索对象
-      form: {},//提交表单
+      queryform: {
+        pageNum: 1,
+        pageSize: 10,
+      },//页面检索对象
+      form: {
+        actionId: "",
+        actionName: "",
+        markRules1: "",//规则
+        tagGroupId: "",//标签组id
+        tagGroupName: "",//标签组name
+        tagIdList: [],//标签列表
+        tagId: "",
+      },//提交表单
       rules: {
-        labelName: [
+        actionId: [
           {
             required: true,
-            message: '请选择员工',
+            message: '请选择行为类型',
             trigger: 'chnage',
           },
         ],
-
-      },
-      Result: {
-        content: [
+        markRules1: [
           {
-            name: "3232",
-            status: true
+            required: true,
+            message: '请选择补全规则',
+            trigger: 'blur',
           },
-          {
-            name: "3232",
-            status: false
-          }
         ],
-        totalSize: 0,
+        tagIdList: [
+          {
+            required: true,
+            message: '请选择标签',
+            trigger: 'change',
+          },
+        ]
+
       },
+      Result: {},
       Columns: [
-        { prop: "name", label: "行为类型名称", minWidth: 180, },
-        { prop: "name", label: "规则名称", minWidth: 180, },
-        { prop: "mobile", label: "关联标签", minWidth: 360 },
+        { prop: "actionName", label: "行为类型名称", minWidth: 180, },
+        { prop: "markRules1", label: "规则名称", minWidth: 180, formatter: this.markRules1Formatter },
+        { prop: "tagList", label: "关联标签", minWidth: 360, formatter: this.tagListFormatter },
       ],
+      tagsArray: [],//标签组
+      tagsSubSet: [],//标签列表
     }
   },
   // 生命周期函数
   created() {
+    this.userActionType();//获取行为列表
+    this.fetchTags();//获取标签
   },
   // 方法函数
   methods: {
+    tagListFormatter(row) {
+      let result = '';
+      row.tagList.forEach((item, index) => {
+        result += item.name; // 直接拼接
+        if (index < row.tagList.length - 1) {
+          result += ' '; // 在元素之间添加空格
+        }
+      });
+      return result
+    },
+    //条将规则判断
+    markRules1Formatter(row) {
+      let type = row.actionId;
+      switch (type) {
+        case 'ACT003':
+          return `客户24小时内点击活动链接≥${row.markRules1}次`;
+        case 'ACT005':
+          return `首次下单订单金额≥${row.markRules1}元`;
+        case 'ACT006':
+          return `客户连续${row.markRules1}天未打开小程序且未回复消息`;
+        case 'ACT008':
+          return `客户升级为${row.markRules1}`;
+        case 'ACT009':
+          return `客户在聊天中发送${row.markRules1}等关键词`;
+        case 'ACT010':
+          return `历史累计订单金额≥${row.markRules1}元`;
+        default:
+          return row.markRules1; // 处理未匹配的情况
+      }
+    },
+    //获取对应标签组标签列表
+    tagsArrayChange(value) {
+      this.form.tagIdList = [];//清空历史
+      this.form.tagGroupName = this.tagsArray.find(val => val.id == value).groupName;
+      this.tagsSubSet = this.tagsArray.find(val => val.id == value).weTags;
+    },
+    actionChange(value) {
+      this.form.actionName = this.behaviorTypeList.find(val => val.code == value).name;
+    },
+    //获取标签组
+    fetchTags() {
+      api.tagList({
+        pageNum: 1,
+        pageSize: 100,
+        groupName: '',
+        groupTagType: 1,
+      }).then((res) => {
+        if (res.code == 200) {
+          this.tagsArray = res.rows;
+        }
+      })
+    },
+    userActionType() {
+      userActionTypeApi.behaviorList({
+        name: "",
+        delFlag: 0,
+        pageNum: 1,
+        pageSize: 10,
+      }).then((res) => {
+        if (res.code == 200) {
+          this.behaviorTypeList = res.rows;
+        }
+      })
+    },
     // 查看详情
-    viewDetails() {
+    viewDetails(row) {
+      this.disabled=true;
+      console.log(row)
+      this.createBehaviorShow = true;
+      this.form=row;
+      this.form.tagIdList=row.tagList.map(ele=>{
+        return ele.name;
+      })
     },
     // 操作用户
     userOperation() {
       this.$refs['form'].validate((valid) => {
         if (valid) {
-          console.log(valid)
+          this.form.tagId = this.form.tagIdList.join(',');
+          api.markAdd(this.form).then((res) => {
+            if (res.code == 200) {
+              this.$message({
+                type: 'success',
+                message: '添加成功!'
+              });
+              this.createBehaviorShow = false;
+              this.findPage();
+            }
+          })
         }
       })
     },
@@ -117,11 +261,25 @@ export default {
 
     },   //列表查询
     findPage() {
-      console.log(1)
+      api.markList(this.queryform).then((res) => {
+        if (res.code == 200) {
+          this.Result = res;
+        }
+      })
     },
     // 同步用户
     createBehavior() {
-        this.createBehaviorShow=true;
+      this.createBehaviorShow = true;
+      this.disabled=false;
+      this.form= {
+        actionId: "",
+        actionName: "",
+        markRules1: "",//规则
+        tagGroupId: "",//标签组id
+        tagGroupName: "",//标签组name
+        tagIdList: [],//标签列表
+        tagId: "",
+      }
     },
   },
   // 计算属性
@@ -130,4 +288,15 @@ export default {
 }
 </script>
 <!-- 样式区域 -->
-<style lang='scss' scoped></style>
+<style lang='scss' scoped>
+.customRules {
+  span {
+    color: #333;
+  }
+
+  .el-input {
+    width: 85px;
+    margin: 0 10px;
+  }
+}
+</style>

+ 77 - 42
src/views/customerOperation/userActionTypeConfig.vue

@@ -3,14 +3,14 @@
   <div>
     <!-- 模板内容 -->
     <el-form ref="queryForm" :inline="true" :model="queryform" label-width="100px" class="top-search">
-      <el-form-item label="行为类型名称" prop="name">
+      <el-form-item label="行为类型名称">
         <el-input v-model="queryform.name" placeholder="请输入"></el-input>
       </el-form-item>
-      <el-form-item label="状态" prop="name">
-        <el-select v-model="queryform.labelName" placeholder="请选择,支持关键词搜索" clearable filterable>
-          <el-option label="全部" value="1"></el-option>
-          <el-option label="已绑定" value="2"></el-option>
-          <el-option label="未绑定" value="3"></el-option>
+      <el-form-item label="状态">
+        <el-select v-model="queryform.delFlag" placeholder="请选择,支持关键词搜索" clearable filterable>
+          <el-option label="全部" value=""></el-option>
+          <el-option label="启用" value="0"></el-option>
+          <el-option label="停用" value="1"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -28,21 +28,18 @@
         :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="disableAction(row)">停用</el-button>
+          <el-button type="text" @click="disableAction(row)">{{ row.delFlag == 0 ? '禁用' : '启用' }}</el-button>
         </template>
       </templateTable>
     </div>
-    <el-dialog title="添加行为类型" :visible.sync="createBehaviorShow" width="40%">
+    <el-dialog :title="dialogTitle" :visible.sync="createBehaviorShow" width="40%">
       <div>
-        <el-form ref="form" :rules="rules" :model="form" label-position="left" label-width="120px">
-          <el-form-item label="行为类型编码" prop="labelName">
-            <el-input v-model="form.name" placeholder="请输入行为类型编码"></el-input>
-          </el-form-item>
-          <el-form-item label="行为类型名称" prop="labelName">
+        <el-form ref="form" :rules="rules" :model="form" label-position="left" label-width="120px" :disabled="dialogType=='detail'?true:false">
+          <el-form-item label="行为类型名称" prop="name">
             <el-input v-model="form.name" placeholder="请输入行为类型名称"></el-input>
           </el-form-item>
-          <el-form-item label="行为描述" prop="labelName">
-            <el-input type="textarea" v-model="form.desc"></el-input>
+          <el-form-item label="行为描述" prop="description">
+            <el-input type="textarea" v-model="form.description"></el-input>
           </el-form-item>
         </el-form>
       </div>
@@ -57,7 +54,8 @@
 <!-- 行为区域 -->
 <script>
 import templateTable from "@/components/templateTable.vue";
-import { Row } from "element-ui";
+import * as api from '@/api/customerManage/userActionTypeConfig'
+
 export default {
   components: {
     templateTable
@@ -65,37 +63,41 @@ export default {
   // 数据存放区域
   data() {
     return {
+      dialogTitle:"添加行为类型",
+      dialogType:'add',
       createBehaviorShow: false,//转出弹窗
-      queryform: {},//页面检索对象
-      form: {},//提交表单
+      queryform: {
+        name: "",
+        delFlag: "",
+        pageNum: 1,
+        pageSize: 10,
+      },//页面检索对象
+      form: {
+        "name": "",
+        "description": "",
+      },//提交表单
       rules: {
-        labelName: [
+        name: [
           {
             required: true,
-            message: '请选择员工',
-            trigger: 'chnage',
+            message: '名称必填',
+            trigger: 'blur',
           },
         ],
-
-      },
-      Result: {
-        content: [
+        description: [
           {
-            name: "3232",
-            status: true
+            required: true,
+            message: '行为描述必填',
+            trigger: 'blur',
           },
-          {
-            name: "3232",
-            status: false
-          }
         ],
-        totalSize: 0,
       },
+      Result: {},
       Columns: [
-        { prop: "name", label: "行为类型编码", minWidth: 180, },
+        { prop: "code", label: "行为类型编码", minWidth: 180, },
         { prop: "name", label: "行为类型名称", minWidth: 180, },
-        { prop: "mobile", label: "行为描述(选填)", minWidth: 360 },
-        { prop: "userId", label: "状态", minWidth: 120 },
+        { prop: "description", label: "行为描述(选填)", minWidth: 360 },
+        { prop: "delFlag", label: "状态", minWidth: 120, formatter: this.delFlagFormatter },
       ],
     }
   },
@@ -104,14 +106,34 @@ export default {
   },
   // 方法函数
   methods: {
+    delFlagFormatter(row) {
+      let delFlag = row.delFlag;
+      return delFlag == 0 ? '启用' : '禁用'
+    },
     // 查看详情
-    viewDetails() {
+    viewDetails(row) {
+      this.dialogType='detail';
+      this.dialogTitle='详情';
+      this.createBehaviorShow = true;
+      this.form.name=row.name;
+      this.form.description=row.description;
     },
     // 操作用户
     userOperation() {
+
       this.$refs['form'].validate((valid) => {
         if (valid) {
-          console.log(valid)
+          api.behaviorAdd(this.form).then((res) => {
+            if (res.code == 200) {
+              this.createBehaviorShow = false;
+              this.$message({
+                type: 'success',
+                message: '添加成功'
+              });
+              this.findPage();
+            }
+
+          })
         }
       })
     },
@@ -120,14 +142,27 @@ export default {
      * @param row status 状态 true 已绑定 false 未绑定
      */
     disableAction(row) {
-
+      api.behaviorDisableEnable(row.id).then((res) => {
+        if (res.code == 200) {
+          this.$message({
+            type: 'success',
+            message: '操作成功'
+          });
+          this.findPage();
+        }
+      })
     },   //列表查询
     findPage() {
-      console.log(1)
+      api.behaviorList(this.queryform).then((res) => {
+        if (res.code == 200) {
+          this.Result = res;
+        }
+      })
     },
-    // 同步用户
-    createBehavior() {
-        this.createBehaviorShow=true;
+    createBehavior(){
+      this.dialogType='add';
+      this.dialogTitle='添加行为类型';
+      this.createBehaviorShow = true;
     },
   },
   // 计算属性