Pārlūkot izejas kodu

fix(客户管理):如下

1.客户管理bug修复7处
2.按钮添加权限控制
3.客户详情项目、合同页签联调
wanglj 3 gadi atpakaļ
vecāks
revīzija
28d5a4691c

+ 5 - 1
src/api/customer/index.js

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-27 11:10:39
  * @LastEditors: wanglj
- * @LastEditTime: 2023-01-04 18:07:11
+ * @LastEditTime: 2023-01-11 15:54:49
  * @Description: file content
  * @FilePath: \opms_frontend\src\api\customer\index.js
  */
@@ -18,6 +18,10 @@ export default {
   getAbstract(query) {
     return micro_request.postRequest(basePath, 'Customer', 'GetCustAbstract', query)
   },
+  // 客户名称查重
+  checkCustName(query) {
+    return micro_request.postRequest(basePath, 'Customer', 'GetCustNameIsExist', query)
+  },
   // 客户编辑
   updateCostomer(query) {
     return micro_request.postRequest(basePath, 'Customer', 'UpdateById', query)

+ 0 - 2
src/components/select/SelectUser.vue

@@ -93,11 +93,9 @@
     methods: {
       open() {
         this.clear()
-        console.log(this.ids, 'ids')
         if (this.ids.length) {
           for (const item of this.ids) {
             const index = this.options.findIndex((each) => each.id == item)
-            console.log(index, this.options[index])
             if (index > -1) this.transfer(index)
           }
         }

+ 4 - 3
src/views/customer/components/Allocate.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-26 14:34:34
  * @LastEditors: wanglj
- * @LastEditTime: 2023-01-10 11:08:34
+ * @LastEditTime: 2023-01-11 11:19:43
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\customer\components\allocate.vue
 -->
@@ -54,7 +54,6 @@
         form: {
           allocate: '',
         },
-        allocate: [],
         data: generateData(),
         options: [],
         ids: [],
@@ -62,7 +61,9 @@
       }
     },
     methods: {
-      handleClose() {},
+      handleClose() {
+        this.form.allocate = ''
+      },
       choose() {
         // this.$refs.transfer.innerVisible = true
         this.$refs.selectUser.open()

+ 23 - 5
src/views/customer/components/Edit.vue

@@ -31,7 +31,7 @@
       </el-row>
       <el-row :gutter="20">
         <el-col :span="12">
-          <el-form-item label="客户来源" prop="source">
+          <el-form-item label="客户来源" prop="">
             <el-select v-model="editForm.source" placeholder="请选择客户来源" style="width: 100%">
               <el-option v-for="item in sourceOptions" :key="item.value" :label="item.value" :value="item.value" />
             </el-select>
@@ -41,10 +41,11 @@
           <el-form-item label="下次联系时间" prop="followUpDate">
             <el-date-picker
               v-model="editForm.followUpDate"
+              format="yyyy-MM-dd HH:mm"
               placeholder="选择下次联系时间"
               style="width: 100%"
-              type="date"
-              value-format="yyyy-MM-dd" />
+              type="datetime"
+              value-format="yyyy-MM-dd HH:mm" />
           </el-form-item>
         </el-col>
       </el-row>
@@ -110,6 +111,20 @@
 
   export default {
     data() {
+      var checkCustName = async (rule, value, callback) => {
+        if (!value) return callback('请输入客户名称')
+        let params = {
+          custName: value,
+          id: this.editForm.id,
+        }
+        const [err, res] = await to(api.checkCustName(params))
+        if (err) return callback('网络错误')
+        if (res.data.list) {
+          callback('客户名称重复')
+        } else {
+          callback()
+        }
+      }
       return {
         title: '新增客户信息',
         // 新增编辑客户弹窗
@@ -129,7 +144,7 @@
           region: {}, //区
         },
         editRules: {
-          custName: [{ required: true, trigger: 'blur', message: '请输入客户名称' }],
+          custName: [{ required: true, validator: checkCustName, trigger: 'blur' }],
           custIndustry: [{ required: true, trigger: 'change', message: '请选择客户行业' }],
           custLevel: [{ required: true, trigger: 'change', message: '请选择客户级别' }],
           source: [{ required: true, trigger: 'change', message: '请选择客户来源' }],
@@ -179,7 +194,10 @@
         let params = { ...this.editForm }
         const [valid] = await to(this.$refs.editForm.validate())
         if (valid == false) return
-        if (!params.province.id) return this.$message.warning('请选择所在地区')
+        if (!params.province.id) {
+          this.$message.warning('请选择所在地区')
+          return
+        }
         let arr = []
         arr.push(params.province.distName)
         if (params.city.id) arr.push(params.city.distName)

+ 4 - 4
src/views/customer/components/Merge.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-27 09:33:48
  * @LastEditors: wanglj
- * @LastEditTime: 2023-01-09 11:32:51
+ * @LastEditTime: 2023-01-11 15:37:38
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\customer\components\Merge.vue
 -->
@@ -54,7 +54,7 @@
           <el-radio v-model="form.custAddress" :label="item.custAddress" />
         </li>
         <li>
-          <el-radio v-model="form.remark" :label="item.remark" />
+          <el-radio v-model="form.remark" :label="item.remark" style="max-width: 300px" />
         </li>
         <li>
           <el-radio v-model="form.salesName" :label="item.salesName" @change="saleChange(item)" />
@@ -181,13 +181,13 @@
     }
 
     .title {
-      width: 100px;
+      flex: 0 0 100px;
       text-align: center;
     }
 
     .each {
       flex: 1;
-
+      overflow: hidden;
       li {
         padding-left: 10px;
       }

+ 9 - 7
src/views/customer/components/Shift.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-26 17:21:07
  * @LastEditors: wanglj
- * @LastEditTime: 2023-01-10 11:10:14
+ * @LastEditTime: 2023-01-11 11:34:48
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\customer\components\Shift.vue
 -->
@@ -11,7 +11,7 @@
     <select-user ref="selectUser" :query-params="{ roles: ['Sales', 'SalesManager'] }" @save="selectUser" />
     <el-form ref="form" label-width="80px" :model="form" :rules="rules">
       <el-form-item label="接收对象" prop="SalesName">
-        <el-input v-model="form.SalesName" readonly>
+        <el-input v-model="form.salesName" readonly>
           <el-button slot="append" icon="el-icon-search" @click="choose" />
         </el-input>
       </el-form-item>
@@ -21,7 +21,7 @@
         </el-checkbox-group>
       </el-form-item>
       <el-form-item label="备注信息" prop="remark">
-        <el-input v-model="form.Remark" maxlength="500" resize="none" :rows="5" show-word-limit type="textarea" />
+        <el-input v-model="form.remark" maxlength="500" resize="none" :rows="5" show-word-limit type="textarea" />
       </el-form-item>
     </el-form>
     <span slot="footer">
@@ -43,12 +43,12 @@
       return {
         visible: false,
         form: {
-          SalesName: '',
+          salesName: '',
           about: ['客户'],
-          Remark: '',
+          remark: '',
         },
         rules: {
-          SalesName: [{ required: true, message: '请选择接收对象', trigger: 'change' }],
+          salesName: [{ required: true, message: '请选择接收对象', trigger: 'change' }],
           about: [{ required: true, message: '请选择转移相关', trigger: 'change' }],
         },
         userList: [],
@@ -57,13 +57,15 @@
     methods: {
       handleClose() {
         this.$refs.form.resetFields()
+        this.form.salesName = ''
+        this.userList = []
       },
       choose() {
         this.$refs.selectUser.open()
       },
       selectUser(userList) {
         this.userList = userList
-        this.form.SalesName = userList[0].userName
+        this.form.salesName = userList[0].userName
       },
       async handleSubmit() {
         if (!this.userList.length) return this.$message.warning('请选择销售代表')

+ 102 - 34
src/views/customer/detail.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-26 09:30:47
  * @LastEditors: wanglj
- * @LastEditTime: 2023-01-10 15:25:50
+ * @LastEditTime: 2023-01-11 16:09:07
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\customer\detail.vue
 -->
@@ -16,12 +16,12 @@
             {{ detail.custName }}
             <span>
               <template v-if="privateCus == 1">
-                <el-button @click="handleShift">转移客户</el-button>
-                <el-button @click="handleToOpen">移入公海</el-button>
+                <el-button v-permissions="['customer:shift']" @click="handleShift">转移客户</el-button>
+                <el-button v-permissions="['customer:open']" @click="handleToOpen">移入公海</el-button>
                 <el-button>创建项目</el-button>
               </template>
               <template v-else>
-                <el-button @click="handleReceive">领取客户</el-button>
+                <el-button v-permissions="['customer:receive']" @click="handleReceive">领取客户</el-button>
                 <el-button v-permissions="['customer:allocate']" @click="handleAllocate">分配客户</el-button>
               </template>
             </span>
@@ -45,7 +45,7 @@
               {{ detail.custStatus == 10 ? '正常' : '异常' }}
             </el-descriptions-item>
             <el-descriptions-item content-class-name="my-content" label="最后跟进时间" label-class-name="my-label">
-              {{ detail.followUpDate }}
+              {{ parseTime(detail.followUpDate, '{y}-{m}-{d} {h}:{i}') }}
             </el-descriptions-item>
           </el-descriptions>
         </header>
@@ -108,7 +108,22 @@
             <div v-else class="no-follow">暂无跟进记录</div>
           </el-tab-pane>
           <el-tab-pane label="详细信息" name="detail">
-            <el-descriptions border :column="2" size="medium">
+            <!-- <div class="detail-container">
+              <ul>
+                <li>客户级别</li>
+                <li>下次联系时间</li>
+                <li>所在地区</li>
+                <li>详细地址</li>
+                <li>客户级别</li>
+                <li>客户级别</li>
+              </ul>
+            </div> -->
+            <el-descriptions
+              border
+              :column="2"
+              :content-style="{ width: '25%', 'word-break': 'break-all' }"
+              :label-style="{ width: '25%' }"
+              size="medium">
               <el-descriptions-item label="客户级别">
                 {{ detail.custLevel }}
               </el-descriptions-item>
@@ -162,18 +177,18 @@
           <el-tab-pane label="联系人" name="contact">
             <vab-query-form>
               <vab-query-form-left-panel :span="12">
-                <el-input placeholder="请输入单据名称/编号" prefix-icon="el-icon-search" style="width: 50%" />
+                <el-input
+                  v-model="cuctName"
+                  placeholder="请输入单据名称/编号"
+                  prefix-icon="el-icon-search"
+                  style="width: 50%"
+                  @keyup.enter.native="handleClick({ name: 'contact' })" />
               </vab-query-form-left-panel>
               <vab-query-form-right-panel :span="12">
                 <el-button icon="el-icon-plus" @click="addContact">新建联系人</el-button>
               </vab-query-form-right-panel>
             </vab-query-form>
-            <el-table
-              v-loading="listLoading"
-              border
-              :data="contactList"
-              height="calc(100% - 42px)"
-              @selection-change="setSelectRows">
+            <el-table border :data="contactList" height="calc(100% - 42px)" @selection-change="setSelectRows">
               <el-table-column align="center" type="selection" />
               <el-table-column align="center" label="姓名" prop="cuctName" />
               <el-table-column align="center" label="岗位" prop="postion" />
@@ -193,11 +208,42 @@
               </el-table-column>
             </el-table>
           </el-tab-pane>
-          <el-tab-pane label="项目记录" name="item">项目记录</el-tab-pane>
-          <el-tab-pane label="合同记录" name="contract">合同记录</el-tab-pane>
+          <el-tab-pane label="项目记录" name="item">
+            <el-table border :data="items" height="calc(100% - 42px)">
+              <el-table-column align="center" label="商机标题" prop="nboName" width="120px" />
+              <el-table-column align="center" label="关联客户" prop="custName" width="200px" />
+              <el-table-column align="center" label="审批状态" prop="approStatus" width="320px">
+                <template slot-scope="scope">
+                  {{ getStatus(scope.row.approStatus) }}
+                </template>
+              </el-table-column>
+              <el-table-column align="center" label="商机状态" prop="nboPhase" width="320px" />
+              <el-table-column align="center" label="商机类别" prop="nboType" width="320px" />
+              <el-table-column align="center" label="商机金额" prop="estTransPrice" width="320px" />
+              <el-table-column align="center" label="最后跟进时间" prop="finalFollowTime" width="320px" />
+              <el-table-column align="center" label="下次跟进时间" prop="nextFollowTime " width="320px" />
+            </el-table>
+          </el-tab-pane>
+          <el-tab-pane label="合同记录" name="contract">
+            <el-table border :data="contracts" height="calc(100% - 42px)">
+              <el-table-column align="center" label="合同编号" prop="contractCode" width="320px" />
+              <el-table-column align="center" label="合同名称" prop="contractName" width="200px" />
+              <el-table-column align="center" label="项目名称" prop="nboName" width="320px" />
+              <el-table-column align="center" label="审批状态" prop="approStatus" width="120px">
+                <template slot-scope="scope">
+                  {{ getStatus(scope.row.approStatus) }}
+                </template>
+              </el-table-column>
+              <el-table-column align="center" label="合同类型" prop="contractType" width="120px" />
+              <el-table-column align="center" label="合同金额" prop="contractAmount" width="120px" />
+              <el-table-column align="center" label="负责人" prop="inchargeName" width="120px" />
+              <el-table-column align="center" label="公司签约人" prop="signatoryName" width="140px" />
+              <el-table-column align="center" label="经销商" prop="distributorName" width="320px" />
+            </el-table>
+          </el-tab-pane>
           <el-tab-pane label="工单记录" name="worksheet">工单记录</el-tab-pane>
           <el-tab-pane label="归属记录" name="belong">
-            <el-table v-loading="listLoading" border :data="belongs" height="calc(100% - 42px)">
+            <el-table border :data="belongs" height="calc(100% - 42px)">
               <el-table-column align="center" label="归属销售" prop="saleName" />
               <el-table-column align="center" label="原来归属" prop="origSaleName" />
               <el-table-column align="center" label="操作方式" prop="opnType">
@@ -210,6 +256,8 @@
               </el-table-column>
               <el-table-column align="center" label="操作人" prop="createdName" />
               <el-table-column align="center" label="操作时间" min-width="160px" prop="opnDatetime" />
+              <el-table-column align="center" label="开始时间" min-width="160px" prop="startDate" />
+              <el-table-column align="center" label="结束时间" min-width="160px" prop="endDate" />
               <el-table-column align="center" label="备注" prop="remark" />
             </el-table>
           </el-tab-pane>
@@ -217,8 +265,9 @@
       </el-col>
       <el-col :span="8">
         <div class="buttons">
-          <el-button type="primary" @click="handleEdit">编辑</el-button>
-          <el-button @click="handleDelete">删除</el-button>
+          <el-button v-permissions="['customer:edit']" type="primary" @click="handleEdit">编辑</el-button>
+          <el-button v-permissions="['customer:delete']" @click="handleDelete">删除</el-button>
+          <el-button @click="$router.go(-1)">返回</el-button>
         </div>
         <ul class="records">
           <li v-for="(value, key) in records" :key="key">
@@ -271,6 +320,8 @@
   import api from '@/api/customer'
   import follow from '@/api/customer/follow'
   import to from 'await-to-js'
+  import businessApi from '@/api/proj/business'
+  import contractApi from '@/api/contract'
   import Contact from './components/Contact'
   import Edit from './components/Edit'
   import Allocate from './components/Allocate'
@@ -312,12 +363,15 @@
           drawTotal: '', //开票总额
         },
         activeName: 'follow',
-        listLoading: false,
+        cuctName: '',
         contactList: [],
         selectRows: [],
         records: [], //操作记录
         followList: [], //跟进记录
         belongs: [],
+        items: [], //项目
+        contracts: [], //合同
+        appro: [],
       }
     },
     computed: {
@@ -335,12 +389,19 @@
     },
     methods: {
       async init() {
-        Promise.all([api.getDetail({ ids: [parseInt(this.id)] }), api.getAbstract({ id: parseInt(this.id) })]).then(
-          ([detail, abstract]) => {
-            if (detail.data.list[0]) this.detail = detail.data.list[0]
-            if (abstract.data.list) this.abstract = abstract.data.list
-          }
-        )
+        Promise.all([
+          api.getDetail({ ids: [parseInt(this.id)] }),
+          api.getAbstract({ id: parseInt(this.id) }),
+          this.getDicts('proj_appro_status'),
+        ]).then(([detail, abstract, appro]) => {
+          if (detail.data.list[0]) this.detail = detail.data.list[0]
+          if (abstract.data.list) this.abstract = abstract.data.list
+          this.appro = appro.data.values || []
+        })
+      },
+      getStatus(val) {
+        const obj = this.appro.find((item) => item.key == val)
+        if (obj) return obj.value
       },
       async getDynamics() {
         const [err, res] = await to(api.dynamicsList({ custId: parseInt(this.id) }))
@@ -361,7 +422,7 @@
       async handleClick(tab) {
         let err, res
         if (tab.name == 'contact') {
-          ;[err, res] = await to(api.getContact({ custId: parseInt(this.id) }))
+          ;[err, res] = await to(api.getContact({ custId: parseInt(this.id), cuctName: this.cuctName }))
           if (err) return
           this.contactList = res.data.list || []
         } else if (tab.name == 'follow') {
@@ -372,10 +433,17 @@
           ;[err, res] = await to(follow.getListByDay(params))
           if (err) return
           this.followList = res.data.list || []
-        } else if (tab.name == 'belong' && this.belongs.length == 0) {
+        } else if (tab.name == 'belong') {
           ;[err, res] = await to(api.getBelongs({ custId: parseInt(this.id) }))
           if (err) return
           this.belongs = res.data.list || []
+        } else if (tab.name == 'item') {
+          ;[err, res] = await to(businessApi.getList({ custName: this.detail.custName }))
+          if (err) return
+          this.items = res.data.list || []
+        } else if (tab.name == 'contract') {
+          ;[err, res] = await to(contractApi.getList({ custId: parseInt(this.id) }))
+          this.contracts = res.data.list || []
         }
       },
       // 添加联系人
@@ -522,6 +590,7 @@
     padding: 20px 40px;
     > .el-row {
       flex: 1;
+      width: 100%;
 
       > .el-col {
         height: 100%;
@@ -585,6 +654,12 @@
 
         .el-tab-pane {
           height: 100%;
+          .el-descriptions {
+            table-layout: fixed;
+            .is-bordered {
+              table-layout: fixed;
+            }
+          }
         }
       }
     }
@@ -814,11 +889,4 @@
   .height-enter, .height-leave-to /* .fade-leave-active below version 2.1.8 */ {
     height: 0;
   }
-
-  ::v-deep .el-descriptions__table tbody {
-    td,
-    th {
-      width: 25%;
-    }
-  }
 </style>

+ 29 - 5
src/views/customer/list.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-26 16:34:37
  * @LastEditors: wanglj
- * @LastEditTime: 2023-01-10 11:41:59
+ * @LastEditTime: 2023-01-11 16:11:44
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\customer\list.vue
 -->
@@ -53,9 +53,30 @@
           @click="$refs.edit.init()">
           新建
         </el-button>
-        <el-button icon="el-icon-plus" size="mini" type="primary" @click="handleShift">转移客户</el-button>
-        <el-button icon="el-icon-plus" size="mini" type="primary" @click="handleToOpen">移入公海</el-button>
-        <el-button icon="el-icon-plus" size="mini" type="primary" @click="handleMerge">合并客户</el-button>
+        <el-button
+          v-permissions="['customer:shift']"
+          icon="el-icon-plus"
+          size="mini"
+          type="primary"
+          @click="handleShift">
+          转移客户
+        </el-button>
+        <el-button
+          v-permissions="['customer:open']"
+          icon="el-icon-plus"
+          size="mini"
+          type="primary"
+          @click="handleToOpen">
+          移入公海
+        </el-button>
+        <el-button
+          v-permissions="['customer:merge']"
+          icon="el-icon-plus"
+          size="mini"
+          type="primary"
+          @click="handleMerge">
+          合并客户
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <el-button icon="el-icon-download" @click="exportData" />
@@ -85,12 +106,15 @@
           <span v-else-if="item.prop === 'custStatus'">
             {{ row.custStatus == 10 ? '正常' : '异常' }}
           </span>
+          <span v-else-if="item.prop === 'followUpDate'">
+            {{ parseTime(row.followUpDate, '{y}-{m}-{d} {h}:{i}') }}
+          </span>
           <span v-else>{{ row[item.prop] }}</span>
         </template>
       </el-table-column>
       <el-table-column align="center" label="操作">
         <template slot-scope="scope">
-          <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
+          <el-button v-permissions="['customer:edit']" type="text" @click="handleEdit(scope.row)">编辑</el-button>
           <el-button v-permissions="['customer:delete']" type="text" @click="handleDelete(scope.row)">删除</el-button>
         </template>
       </el-table-column>

+ 10 - 6
src/views/customer/openSea.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-15 15:38:21
  * @LastEditors: wanglj
- * @LastEditTime: 2023-01-10 11:37:48
+ * @LastEditTime: 2023-01-11 16:06:36
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\customer\openSea.vue
 -->
@@ -46,7 +46,9 @@
         <el-button v-permissions="['customer:allocate']" icon="el-icon-plus" type="primary" @click="handleAllocate">
           分配
         </el-button>
-        <el-button icon="el-icon-plus" type="primary" @click="handleReceive">领取</el-button>
+        <el-button v-permissions="['customer:receive']" icon="el-icon-plus" type="primary" @click="handleReceive">
+          领取
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <el-button icon="el-icon-download" @click="exportData" />
@@ -76,6 +78,9 @@
           <span v-else-if="item.prop === 'custStatus'">
             {{ row.custStatus == 10 ? '正常' : '异常' }}
           </span>
+          <span v-else-if="item.prop === 'followUpDate'">
+            {{ parseTime(row.followUpDate, '{y}-{m}-{d} {h}:{i}') }}
+          </span>
           <span v-else>{{ row[item.prop] }}</span>
         </template>
       </el-table-column>
@@ -120,7 +125,7 @@
         prop="createdTime" /> -->
       <el-table-column align="center" label="操作">
         <template slot-scope="scope">
-          <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
+          <el-button v-permissions="['customer:edit']" type="text" @click="handleEdit(scope.row)">编辑</el-button>
           <el-button v-permissions="['customer:delete']" type="text" @click="handleDelete(scope.row)">删除</el-button>
         </template>
       </el-table-column>
@@ -264,9 +269,8 @@
     },
     methods: {
       getOptions() {
-        Promise.all([api.getProvinceInfo(), this.getDicts('CustomerLevel'), this.getDicts('CustomerIndustry')])
-          .then(([province, level, industry]) => {
-            this.provinceOptions = province.data.list || []
+        Promise.all([this.getDicts('CustomerLevel'), this.getDicts('CustomerIndustry')])
+          .then(([level, industry]) => {
             this.levelOptions = level.data.values || []
             this.industryOptions = industry.data.values || []
           })

+ 0 - 3
src/views/plat/task/components/TaskAdd.vue

@@ -299,13 +299,10 @@
         this.multiple = multiple
         this.property = property
         this.label = label
-        console.log(this.form[property], Boolean(this.form[property]), 'this.form[property]')
         if (this.form[property].length) {
           this.$refs.selectUser.ids = this.form[property]
         } else if (this.form[property]) {
-          console.log(123)
           this.$refs.selectUser.ids = [this.form[property]]
-          console.log(this.ids)
         } else {
           this.$refs.selectUser.ids = []
         }