@dongkboy 11 mesi fa
parent
commit
5679d02038

+ 15 - 0
src/http/moudules/insCompany.js

@@ -1041,6 +1041,21 @@ export const ruleListQuery = (data) => {
   })
 
 }
+//获取用户身份
+export const getUserGradeList = (id) => {
+  return axios({
+    url: '/partner/getUserGradeList?userId='+id,
+    method: "get",
+  })
+}
+//追加用户身份
+export const addUserIdentity = (data) => {
+  return axios({
+    url: "/partner/addUserIdentity",
+    method: 'post',
+    data
+  })
+}
 //规则修改
 export const ruleUpdate = (data) => {
   return axios({

+ 46 - 0
src/http/moudules/retail.js

@@ -87,6 +87,14 @@ export const liftingRecordaudit = (data) => {
       data
   })
 }
+//降级升降记录审核
+export const liftingRecorddowngradeAudit = (data) => {
+  return axios({
+      url: '/partner/liftingRecord/downgradeAudit',
+      method: 'post',
+      data
+  })
+}
 //佣金明细查询
 export const commissionDetailsPage = (data) => {
   return axios({
@@ -110,3 +118,41 @@ export const queryGradeNamerule = () => {
       method: 'get',
   })
 }
+//  获取等级配置金额
+export const unlockLevel = (grade) => {
+  return axios({
+      url: '/partner/liftingRecord/unlockLevel?grade='+grade,
+      method: 'get',
+  })
+}
+//解锁等级
+export const confirmUnlocking = (data) => {
+  return axios({
+      url: '/partner/liftingRecord/confirmUnlocking',
+      method: 'post',
+      data
+  })
+}
+//查询购买记录
+export const purchaseRecordPage = (data) => {
+  return axios({
+      url: '/purchaseRecord/queryPage',
+      method: 'post',
+      data
+  })
+}
+//查看购买凭证
+export const purchaseviewVouchers= (id) => {
+  return axios({
+      url: '/purchaseRecord/viewVouchers?id='+id,
+      method: 'get',
+  })
+}
+//查询过期佣金
+export const expiredCommissionPage= (data) => {
+  return axios({
+      url: '/expiredCommission/queryPage',
+      method: 'post',
+      data
+  })
+}

+ 10 - 1
src/views/DistributionManage/PartnerManagement/CommissionChangeLog.vue

@@ -77,7 +77,7 @@ export default {
         { prop: "mobile", label: "手机号", minWidth: 160 },
         { prop: "userId", label: "工号", minWidth: 120 },
         { prop: "deptName", label: "所属机构", minWidth: 160 },
-        { prop: "userGrade", label: "用户等级", minWidth: 160 },
+        { prop: "userGrade", label: "用户等级", minWidth: 160,formatter: this.userGradeFormatter},
         { prop: "originalCommission", label: "原佣金", minWidth: 160 },
         { prop: "afterChange", label: "变更后佣金", minWidth: 160 },
         { prop: "changeReason", label: "变更原因", minWidth: 160 },
@@ -92,6 +92,15 @@ export default {
   },
   // 方法函数
   methods: {
+    userGradeFormatter(row,column){
+      let userGrade = row.userGrade;
+      let info=this.userGradeList.find(val=>val.grade==userGrade)
+      if(info){
+        return info.gradeName
+      }else{
+        return  "出单员"
+      }
+    },
     //获取人员等级列表
     userGradeQuery() {
       this.$api.retail.queryGradeNamerule().then((res) => {

+ 54 - 25
src/views/DistributionManage/PartnerManagement/CommissionDetails.vue

@@ -21,25 +21,19 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="等级">
-            <el-select v-model="pageRequest.grade" clearable>
-              <el-option label="全部" value=" "></el-option>
-              <el-option label="创始人" value=" "></el-option>
-              <el-option label="管理人" value=" "></el-option>
-              <el-option label="合伙人" value=" "></el-option>
-              <el-option label="工作室" value=" "></el-option>
-              <el-option label="团队长" value=" "></el-option>
-              <el-option label="业务员" value=" "></el-option>
+            <el-select v-model="pageRequest.source" clearable>
+              <el-option :label="item.gradeName" :value="item.grade" v-for="(item,index) in userGradeList" :key="item.grade"></el-option>
             </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="订单号">
-            <el-input v-model="pageRequest.orderNo" clearable placeholder="输入工号查找"></el-input>
+            <el-input v-model="pageRequest.orderno" clearable placeholder="输入工号查找"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="车牌号">
-            <el-input v-model="pageRequest.licenseNo" clearable placeholder="输入工号查找"></el-input>
+            <el-input v-model="pageRequest.licenseno" clearable placeholder="输入工号查找"></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
@@ -51,14 +45,13 @@
         </el-col>
         <el-col :span="8">
           <el-form-item>
-            <el-button size="small" type="primary" @click="onSubmit">查询</el-button>
-            <el-button size="small" type="default" @click="onSubmit">重置</el-button>
+            <el-button size="small" type="primary" @click="findPage">查询</el-button>
+            <el-button size="small" type="default" @click="resetFrom">重置</el-button>
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
-    <kt-common-table :tableHeights="580" :operationWidth="200" :showOperation="false" button2Name="详情"
-      button2Type="text" :button2style="{ color: '#2D4D89' }" @handleButton2="agreementsHistory"
+    <kt-common-table :tableHeights="580" :operationWidth="200" :showOperation="false"
       :showBatchDelete="false" :data="Result" :columns="Columns" @findPage="findPage">
     </kt-common-table>
   </div>
@@ -75,6 +68,7 @@ export default {
   // 数据存放区域
   data() {
     return {
+      userGradeList:[],//人员等级字典
       Datelist: [],
       pageRequest: {
         pageNum: 1,
@@ -82,20 +76,20 @@ export default {
         userName: "",//姓名
         mobile: "",//手机号
         userId: "",//工号
-        grade: "",//等级
-        orderNo: "",//订单号
-        licenseNo: "",//车牌号
+        source: "",//等级
+        orderno: "",//订单号
+        licenseno: "",//车牌号
         signingTime: [],
       },
       Columns: [
-        { prop: "orderNo", label: "订单号", minWidth: 180 },
-        { prop: "licenseNo", label: "车牌号", minWidth: 160 },
-        { prop: "premium;", label: "保费", minWidth: 120 },
-        { prop: "signingTime", label: "签单时间", minWidth: 160 },
-        { prop: "grade", label: "等级", minWidth: 160 },
-        { prop: "commissionRate;", label: "佣金比例", minWidth: 160 },
-        { prop: "commission:", label: "佣金", minWidth: 160 },
-        { prop: "userName;", label: "姓名", minWidth: 160 },
+        { prop: "orderno", label: "订单号", minWidth: 180 },
+        { prop: "licenseno", label: "车牌号",  },
+        { prop: "sumpremium", label: "保费", minWidth: 120 },
+        { prop: "createTime", label: "签单时间", minWidth: 160 },
+        { prop: "source", label: "等级", minWidth: 160 ,formatter: this.sourceFormatter},
+        { prop: "proportional", label: "佣金比例", minWidth: 160 },
+        { prop: "extractFee", label: "佣金", minWidth: 160 },
+        { prop: "userName", label: "姓名", minWidth: 160 },
         { prop: "mobile", label: "手机号", minWidth: 160 },
         { prop: "userId", label: "工号", minWidth: 160 },
       ],
@@ -104,9 +98,44 @@ export default {
   },
   // 生命周期函数
   created() {
+    this.userGradeQuery();
+
   },
   // 方法函数
   methods: {
+    sourceFormatter(row,column){
+      let source = row.source;
+      let info=this.userGradeList.find(val=>val.grade==source)
+      if(info){
+        return info.gradeName
+      }else{
+        return  '出单员'
+      }
+    },
+    //获取人员等级列表
+    userGradeQuery() {
+      this.$api.retail.queryGradeNamerule().then((res) => {
+        if (res.code == '200') {
+          this.userGradeList=res.data;
+        } else {
+        }
+      });
+    },
+    //重置表单
+    resetFrom() {
+      this.pageRequest = {
+        pageNum: 1,
+        pageSize: 20,
+        userName: "",//姓名
+        mobile: "",//手机号
+        userId: "",//工号
+        source: "",//等级
+        orderno: "",//订单号
+        licenseno: "",//车牌号
+        signingTime: [],
+      }
+    },
+    // 数据访问
     findPage(data) {
       if (data && data.pageRequest) {
         this.pageRequest.pageNum = data.pageRequest.pageNum;

+ 61 - 43
src/views/DistributionManage/PartnerManagement/CommissionRule.vue

@@ -58,13 +58,16 @@
             <div class="flex f-c ">
               <div class="flex a-c mb-2" v-for="(item, index) in ruleitem.partnerRatioList" :key="index">
                 <!-- 复选框 -->
-                <el-checkbox v-if="index" v-model="item.bf"
+                <el-checkbox v-if="index==0" v-model="item.ry"
                   @change="handleCheckboxChange(ruleindex, index, 'administrator')"></el-checkbox>
-                <el-checkbox v-else v-model="item.ry"
+                <el-checkbox v-if="index==1" v-model="item.bf"
                   @change="handleCheckboxChange(ruleindex, index, 'administrator')"></el-checkbox>
-
-                <span style="margin: 0 10px;">{{ index ?
-                  `保费考核&nbsp;&nbsp;&nbsp;&nbsp;下属工作室出单保费` : `人员考核&nbsp;&nbsp;&nbsp;&nbsp;邀请工作室达` }}</span>
+                  <el-checkbox v-if="index==2" v-model="item.gr"
+                  @change="handleCheckboxChange(ruleindex, index, 'administrator')"></el-checkbox>
+                <span style="margin: 0 10px;">{{ index == 0 ?
+                  `人员考核&nbsp;&nbsp;&nbsp;&nbsp;邀请工作室达` : index == 1 ? `保费考核&nbsp;&nbsp;&nbsp;&nbsp;下属工作室出单保费` :
+                  `保费考核&nbsp;&nbsp;&nbsp;&nbsp;自己的出单费用`
+                  }}</span>
                 <!-- 输入框 -->
                 <el-form-item :prop="`administrator.rulesRatioList.${ruleindex}.partnerRatioList.${index}.min`"
                   :rules="getRules(ruleindex, index, 'min', 'administrator')">
@@ -73,14 +76,6 @@
                     style="margin: 0 5px;width: 200px;"></el-input-number>
                   <span>{{ index ? '元' : '人' }}</span>
                 </el-form-item>
-                <span style="margin: 0 5px;">至</span>
-                <el-form-item :prop="`administrator.rulesRatioList.${ruleindex}.partnerRatioList.${index}.max`"
-                  :rules="getRules(ruleindex, index, 'max', 'administrator')">
-                  <el-input-number v-model="item.max" size="small" controls-position="right" :min="item.min"
-                    :max="index ? 100000000 : 10000" :precision="index ? 2 : 0"
-                    style="margin: 0 5px;width: 200px;"></el-input-number>
-                  <span>{{ index ? '元' : '人' }}</span>
-                </el-form-item>
               </div>
               <div class="flex a-c">
                 以上条件
@@ -155,12 +150,15 @@
             <div class="flex f-c ">
               <div class="flex a-c mb-2" v-for="(item, index) in ruleitem.partnerRatioList" :key="index">
                 <!-- 复选框 -->
-                <el-checkbox v-if="index" v-model="item.bf"
+                <el-checkbox v-if="index==0" v-model="item.ry"
                   @change="handleCheckboxChange(ruleindex, index, 'partner')"></el-checkbox>
-                <el-checkbox v-else v-model="item.ry"
+                <el-checkbox v-if="index==1" v-model="item.bf"
                   @change="handleCheckboxChange(ruleindex, index, 'partner')"></el-checkbox>
-                <span style="margin: 0 10px;">{{ index ?
-                  `保费考核&nbsp;&nbsp;&nbsp;&nbsp;下属团队出单保费` : `人员考核&nbsp;&nbsp;&nbsp;&nbsp;邀请团队达` }}</span>
+                  <el-checkbox v-if="index==2" v-model="item.gr"
+                  @change="handleCheckboxChange(ruleindex, index, 'partner')"></el-checkbox>
+                <span style="margin: 0 10px;">{{ index == 0 ?
+                  `人员考核&nbsp;&nbsp;&nbsp;&nbsp;邀请团队达` : index == 1 ? `保费考核&nbsp;&nbsp;&nbsp;&nbsp;下属团队出单保费` : `保费考核&nbsp;&nbsp;&nbsp;&nbsp;自己的出单费用`
+                }}</span>
                 <!-- 输入框 -->
                 <el-form-item :prop="`partner.rulesRatioList.${ruleindex}.partnerRatioList.${index}.min`"
                   :rules="getRules(ruleindex, index, 'min', 'partner')">
@@ -169,14 +167,7 @@
                     style="margin: 0 5px;width: 200px;"></el-input-number>
                   <span>{{ index ? '元' : '人' }}</span>
                 </el-form-item>
-                <span style="margin: 0 5px;">至</span>
-                <el-form-item :prop="`partner.rulesRatioList.${ruleindex}.partnerRatioList.${index}.max`"
-                  :rules="getRules(ruleindex, index, 'max', 'partner')">
-                  <el-input-number v-model="item.max" size="small" controls-position="right" :min="item.min"
-                    :max="index ? 100000000 : 10000" :precision="index ? 2 : 0"
-                    style="margin: 0 5px;width: 200px;"></el-input-number>
-                  <span>{{ index ? '元' : '人' }}</span>
-                </el-form-item>
+
               </div>
               <div class="flex a-c">
                 以上条件
@@ -285,10 +276,6 @@ export default {
           { required: true, message: '请输入最小值', trigger: 'blur' },
           { type: 'number', message: '必须为数字', trigger: 'blur', transform: (value) => Number(value) }
         ],
-        max: [
-          { required: true, message: '请输入最大值', trigger: 'blur' },
-          { type: 'number', message: '必须为数字', trigger: 'blur', transform: (value) => Number(value) }
-        ],
         allSatisfied: [
           { required: true, message: '请选择条件', trigger: 'change' }
         ],
@@ -313,19 +300,45 @@ export default {
       // 手动触发表单校验
       this.$refs.formRef.validateField([
         `${typename}.rulesRatioList.${ruleindex}.partnerRatioList.${index}.min`,
-        `${typename}.rulesRatioList.${ruleindex}.partnerRatioList.${index}.max`
       ]);
     },
     // 动态获取校验规则
+
     getRules(ruleindex, index, field, typename) {
       const item = this.from[typename].rulesRatioList[ruleindex].partnerRatioList[index];
-      const isRequired = index ? item.bf : item.ry; // 根据复选框决定是否必填
+      const isRequired = index == 0 ? item.ry : index == 1 ? item.bf : item.gr; // 根据复选框决定是否必填
 
-      return [
-        { required: isRequired, message: `请输入${field === 'min' ? '最小值' : '最大值'}`, trigger: 'blur' },
-        { type: 'number', message: '必须为数字', trigger: 'blur', transform: (value) => Number(value) }
-      ];
+      // 动态生成规则数组
+      const rules = [];
+
+      // 如果必填,添加 required 规则
+      if (isRequired) {
+        rules.push({
+          required: true,
+          message: `请输入${field === 'min' ? '最小值' : '最大值'}`,
+          trigger: 'blur',
+        });
+      }
+
+      // 如果有值,则校验是否为数字
+      rules.push({
+        validator: (rule, value, callback) => {
+          if (value !== null && value !== undefined && value !== '') {
+            if (isNaN(Number(value))) {
+              callback(new Error('必须为数字'));
+            } else {
+              callback();
+            }
+          } else {
+            callback();
+          }
+        },
+        trigger: 'blur',
+      });
+
+      return rules;
     },
+
     Query() {
       this.$api.retail.commissionQuery().then((res) => {
         if (res.code == '200') {
@@ -340,8 +353,8 @@ export default {
     },
     rulesAdd(Name) {
       const info = this.from[Name].rulesRatioList[this.from[Name].rulesRatioList.length - 1]
-      console.log(this.from[Name].rulesRatioList[this.from[Name].rulesRatioList.length - 1])
-      if (info.partnerRatioList[0].max && info.partnerRatioList[1].max) {
+      // console.log(this.from[Name].rulesRatioList[this.from[Name].rulesRatioList.length - 1])
+      if (info.partnerRatioList[0].min) {
         this.from[Name].rulesRatioList.push({
           allSatisfied: "",
           kickback: "",
@@ -349,22 +362,27 @@ export default {
             {
               bf: false,
               ry: false,
-              max: "",
-              min: info.partnerRatioList[0].max + 1,
+              gr: false,
+              min: info.partnerRatioList[0].min + 1,
             },
             {
               bf: false,
               ry: false,
-              max: "",
-              min: info.partnerRatioList[1].max + 1,
-
+              gr: false,
+              min: info.partnerRatioList[1].min + 1,
+            },
+            {
+              bf: false,
+              ry: false,
+              gr: false,
+              min: info.partnerRatioList[1].min + 1,
             }
           ]
         })
       } else {
         this.$message({
           type: 'error',
-          message: '请先将最值补充完整',
+          message: '请先将最值补充完整',
         });
       }
 

+ 165 - 0
src/views/DistributionManage/PartnerManagement/ExpiredCommission.vue

@@ -0,0 +1,165 @@
+<!-- 模板区域 -->
+<template>
+  <div class="p-2">
+    <!-- 模板内容 -->
+    <el-form :model="pageRequest" size="small" label-width="85px">
+      <el-row :gutter="40">
+        <el-col :span="8">
+          <el-form-item label="姓名">
+            <el-input v-model="pageRequest.name" clearable placeholder="输入姓名查找"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="手机号">
+            <el-input v-model="pageRequest.mobile" clearable placeholder="输入手机号查找"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="工号">
+            <el-input v-model="pageRequest.userId" clearable placeholder="输入工号查找"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="过期时间">
+            <el-date-picker v-model="pageRequest.startTime" clearable type="daterange" value-format="yyyy-MM-dd"
+              range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item>
+            <el-button size="small" type="primary" @click="findPage">查询</el-button>
+            <el-button size="small" type="default" @click="resetFrom">重置</el-button>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <kt-common-table :tableHeights="580" :operationWidth="200" :showOperation="false"
+      :showBatchDelete="false" :data="Result" :columns="Columns" @findPage="findPage">
+    </kt-common-table>
+  </div>
+</template>
+
+<!-- 行为区域 -->
+<script>
+import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
+
+export default {
+  components: {
+    KtCommonTable
+  },
+  // 数据存放区域
+  data() {
+    return {
+      userGradeList:[],//人员等级字典
+      Datelist: [],
+      pageRequest: {
+        pageNum: 1,
+        pageSize: 20,
+        name: "",//姓名
+        mobile: "",//手机号
+        userId: "",//工号
+        startTime: [],
+      },
+      Columns: [
+        { prop: "name", label: "姓名", minWidth: 180 },
+        { prop: "mobile", label: "手机号",  },
+        { prop: "userId", label: "工号", minWidth: 120 },
+        { prop: "deptName", label: "所属机构", minWidth: 160 },
+        { prop: "grade", label: "降级前", minWidth: 160 ,formatter: this.gradeFormatter},
+        { prop: "gradeAfter", label: "降级后", minWidth: 160,formatter: this.gradeAfterFormatter},
+        { prop: "lockCommission", label: "锁定佣金", minWidth: 160 },
+        { prop: "downgradeTime", label: "降级时间", minWidth: 160 },
+        { prop: "expiration", label: "过期时间", minWidth: 160 },
+      ],
+      Result: [],
+    }
+  },
+  // 生命周期函数
+  created() {
+    this.userGradeQuery();
+
+  },
+  // 方法函数
+  methods: {
+    gradeFormatter(row,column){
+      let grade = row.grade;
+      let info=this.userGradeList.find(val=>val.grade==grade)
+      if(info){
+        return info.gradeName
+      }else{
+        return  row.grade
+      }
+    },
+    gradeAfterFormatter(row,column){
+      let gradeAfter = row.gradeAfter;
+      let info=this.userGradeList.find(val=>val.grade==gradeAfter)
+      if(info){
+        return info.gradeName
+      }else{
+        return  row.gradeAfter
+      }
+    },
+    //获取人员等级列表
+    userGradeQuery() {
+      this.$api.retail.queryGradeNamerule().then((res) => {
+        if (res.code == '200') {
+          this.userGradeList=res.data;
+        } else {
+        }
+      });
+    },
+    //重置表单
+    resetFrom() {
+      this.pageRequest = {
+        pageNum: 1,
+        pageSize: 20,
+        name: "",//姓名
+        mobile: "",//手机号
+        userId: "",//工号
+        signingTime: [],
+      }
+    },
+    // 数据访问
+    findPage(data) {
+      if (data && data.pageRequest) {
+        this.pageRequest.pageNum = data.pageRequest.pageNum;
+        this.pageRequest.pageSize = data.pageRequest.pageSize;
+      } else {
+        this.pageRequest.pageNum = 1;
+        this.pageRequest.pageSize = 20;
+      }
+      this.$api.retail
+        .expiredCommissionPage({ ...this.pageRequest })
+        .then((res) => {
+          this.Result = {
+            content: res.data.records,
+            pageNum: res.data.pages,
+            pageSize: res.data.size,
+            totalSize: res.data.total,
+          };
+        });
+    },
+  },
+  // 计算属性
+  computed: {
+  }
+}
+</script>
+<!-- 样式区域 -->
+<style lang='scss' scoped>
+/deep/ .el-form {
+  .el-input {
+    width: 100% !important;
+  }
+
+  .el-select {
+    width: 100% !important;
+  }
+
+  .el-date-editor--daterange {
+    width: 100% !important;
+
+  }
+}
+</style>

+ 220 - 147
src/views/DistributionManage/PartnerManagement/IevelRule.vue

@@ -1,13 +1,13 @@
 <!-- 模板区域 -->
 <template>
-  <div class="body p-2">
+  <div class="body ">
     <!-- 模板内容 -->
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <el-tab-pane label="等级一" name="level1">
         <h5>等级规则</h5>
         <el-form ref="form" :model="dataList[0]" label-width="80px" size="small" style="width: 800px;">
           <el-form-item label="等级名称">
-            <el-input v-model="dataList[0].gradeName"></el-input>
+            <el-input v-model="dataList[0].gradeName" ></el-input>
           </el-form-item>
           <el-form-item label="升级策略">
             <el-radio-group v-model="dataList[0].upgrade">
@@ -25,9 +25,9 @@
       </el-tab-pane>
       <el-tab-pane label="等级二" name="level2">
         <h5>等级规则</h5>
-        <el-form ref="form" :model="dataList[1].cycle" label-width="80px" size="small" style="width: 800px;">
+        <el-form ref="form" :model="dataList[1].cycle" label-width="80px" size="small" >
           <el-form-item label="等级名称">
-            <el-input v-model="dataList[1].gradeName"></el-input>
+            <el-input v-model="dataList[1].gradeName" style="width: 800px;"></el-input>
           </el-form-item>
           <el-form-item label="升级策略">
             <div class="flex f-c m-top-10">
@@ -36,7 +36,7 @@
                 <el-radio label="2">不支持</el-radio>
               </el-radio-group>
               <el-form-item label="考核周期" class="m-top-20 spacing " v-if="dataList[1].upgrade == 1">
-                <el-radio-group v-model="dataList[1].cycle.cycle" class="flex f-c ">
+                <el-radio-group v-model="dataList[1].cycle.cycle" class="flex f-c">
                   <el-radio label="1">不限期</el-radio>
                   <el-radio label="2">
                     <span class="mr-2">固定天数</span>
@@ -60,76 +60,65 @@
                     </el-date-picker>
                   </el-radio>
                 </el-radio-group>
-              </el-form-item>
-              <el-form-item label="考核条件" class="m-top-20 spacing " v-if="dataList[1].upgrade == 1">
-                <div class="flex f-c ">
+                <div class="m-btn-10  m-top-10">
+                  在上个等级时,限期内,以下条件
+                  <el-select v-model="dataList[1].appraise" placeholder="请选择" style="width: 150px;">
+                    <el-option label="全部满足" value="1"></el-option>
+                    <el-option label="满足任意一条" value="2"></el-option>
+                  </el-select>
+                  可升级成为该等级
+                </div>
+                <div class="flex f-c row">
                   <div class="flex a-c mb-2" v-for="(item, index) in dataList[1].requirement" :key="index">
                     <el-checkbox v-model="item.checked"></el-checkbox>
-                    <span style="margin: 0 10px;">{{ index ? '下属成员出单保费' : '邀请合伙人达' }}</span>
+                    <span style="margin: 0 10px;">{{ index==0 ? '邀请合伙人达' :index==1? `${dataList[1].gradeName}下属成员出单保费`:'自己的出单保费达' }}</span>
                     <el-input class="width" v-model="item.min" size="small" style="margin: 0 5px;" placeholder="请输入">
                       <template slot="append">{{ index ? '元' : '人' }}</template>
                     </el-input>
-                    <span style="margin: 0 5px;">至</span>
-                    <el-input class="width" v-model="item.max" size="small" style="margin: 0 5px;" placeholder="请输入">
-                      <template slot="append">{{ index ? '元' : '人' }}</template>
-                    </el-input>
                   </div>
                 </div>
-                <div>
-                  以上条件
-                  <el-select v-model="dataList[1].appraise" placeholder="请选择">
+              </el-form-item>
+              <el-form-item label="考核规则" class=" spacing " v-if="dataList[1].upgrade == 1">
+                <div class="m-btn-10   flex a-c">
+                  成为该等级后,
+                  <el-input class="width"
+                      v-model="dataList[1].khDays" size="small" style="margin: 0 5px;"
+                      placeholder="请输入1~365的正整数" :maxlength="3"></el-input>
+                  天内,以下条件
+                  <el-select v-model="dataList[1].relSatisfy" placeholder="请选择" style="width: 150px;margin: 0 5px;">
                     <el-option label="全部满足" value="1"></el-option>
                     <el-option label="满足任意一条" value="2"></el-option>
                   </el-select>
-                  即可升级
+                  即可保持该等级,否则降至上一等
                 </div>
-              </el-form-item>
-            </div>
-          </el-form-item>
-          <el-form-item label="保级策略" class="m-top-20 spacing ">
-            <el-radio-group v-model="dataList[1].strategy" class="flex f-c ">
-              <el-radio label="1">不保级</el-radio>
-              <el-radio label="2">
-                <span class="mr-2">任务保级</span>
-                <div v-if="dataList[1].strategy == 2" class="flex f-c mrgin-1">
+                <div class="flex f-c row">
                   <div class="flex a-c mb-2" v-for="(item, index) in dataList[1].strategyArray" :key="index">
                     <el-checkbox v-model="item.checked"></el-checkbox>
-                    <el-input class="width" v-model="item.taskDays" size="small" style="margin: 0 5px;"
-                      placeholder="请输入">
-                      <template slot="append">天内</template>
-                    </el-input>
-                    <span style="margin: 0 10px;">{{ index ? '下属成员出单保费' : '邀请合伙人达' }}</span>
+                    <span style="margin: 0 10px;">{{ index==0 ? '邀请合伙人达' :index==1? `${dataList[1].gradeName}下属成员出单保费`:'自己的出单保费达' }}</span>
                     <el-input class="width" v-model="item.min" size="small" style="margin: 0 5px;" placeholder="请输入">
                       <template slot="append">{{ index ? '元' : '人' }}</template>
                     </el-input>
-                    <span style="margin: 0 5px;">至</span>
-                    <el-input class="width" v-model="item.max" size="small" style="margin: 0 5px;" placeholder="请输入">
-                      <template slot="append">{{ index ? '元' : '人' }}</template>
-                    </el-input>
-                  </div>
-                  <div>
-                    以上条件
-                    <el-select v-model="dataList[1].relSatisfy" placeholder="请选择">
-                      <el-option label="全部满足" value="1"></el-option>
-                      <el-option label="满足任意一条" value="2"></el-option>
-                    </el-select>
-                    即可升级
                   </div>
                 </div>
-              </el-radio>
-              <el-radio :label="3">
-                <span class="mr-2">购买保级</span>
-
-              </el-radio>
-            </el-radio-group>
+              </el-form-item>
+              <div class="flex a-c">
+                <el-checkbox v-model="dataList[1].fallTick"></el-checkbox>
+                <span style="margin: 0 5px;">降级后,支付锁定金额的</span>
+                <el-input class="width"
+                      v-model="dataList[1].fallAmount" size="small" style="margin: 0 5px;"
+                      >
+                      <template slot="append">%</template></el-input>
+                可解锁该等级
+              </div>
+            </div>
           </el-form-item>
         </el-form>
       </el-tab-pane>
       <el-tab-pane label="等级三" name="level3">
         <h5>等级规则</h5>
-        <el-form ref="form" :model="dataList[2].cycle" label-width="80px" size="small" style="width: 800px;">
+        <el-form ref="form" :model="dataList[2].cycle" label-width="80px" size="small" >
           <el-form-item label="等级名称">
-            <el-input v-model="dataList[2].gradeName"></el-input>
+            <el-input v-model="dataList[2].gradeName" style="width: 800px;"></el-input>
           </el-form-item>
           <el-form-item label="升级策略">
             <div class="flex f-c m-top-10">
@@ -143,92 +132,84 @@
                   <el-radio label="2">
                     <span class="mr-2">固定天数</span>
                     成为该等级后,限期
-                    <el-input class="width" v-model="dataList[2].cycle.fixedDays" size="small" style="margin: 0 5px;"
-                      placeholder="请输入1~365的正整数">
+                    <el-input class="width" :disabled="['1','3'].includes(dataList[2].cycle.cycle)"
+                      v-model="dataList[2].cycle.fixedDays" size="small" style="margin: 0 5px;"
+                      placeholder="请输入1~365的正整数" :maxlength="3">
                       <template slot="append">天</template>
                     </el-input>
                   </el-radio>
                   <el-radio label="3">
                     <span class="mr-2">固定日期</span>
-                    <el-date-picker class="width" v-model="dataList[2].cycle.min" type="date" placeholder="选择日期"
+                    <el-date-picker class="width" v-model="dataList[2].cycle.min"
+                      :disabled="[1, 2].includes(dataList[2].cycle.cycle)" type="date" placeholder="选择日期"
                       format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd">
                     </el-date-picker>
                     <span style="margin: 0 5px;">至</span>
-                    <el-date-picker class="width" v-model="dataList[2].cycle.max" type="date" placeholder="选择日期"
+                    <el-date-picker class="width" v-model="dataList[2].cycle.max"
+                      :disabled="[1, 2].includes(dataList[2].cycle.cycle)" type="date" placeholder="选择日期"
                       format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd">
                     </el-date-picker>
                   </el-radio>
                 </el-radio-group>
-              </el-form-item>
-              <el-form-item label="考核条件" class="m-top-20 spacing " v-if="dataList[2].upgrade == 1">
-                <div class="flex f-c ">
+                <div class="m-btn-10  m-top-10">
+                  在上个等级时,限期内,以下条件
+                  <el-select v-model="dataList[2].appraise" placeholder="请选择" style="width: 150px;">
+                    <el-option label="全部满足" value="1"></el-option>
+                    <el-option label="满足任意一条" value="2"></el-option>
+                  </el-select>
+                  可升级成为该等级
+                </div>
+                <div class="flex f-c row">
                   <div class="flex a-c mb-2" v-for="(item, index) in dataList[2].requirement" :key="index">
                     <el-checkbox v-model="item.checked"></el-checkbox>
-                    <span style="margin: 0 10px;">{{ index ? '下属成员出单保费' : '邀请工作室达' }}</span>
+                    <span style="margin: 0 10px;">{{ index==0 ? '邀请工作室达' :index==1? `${dataList[2].gradeName}下属成员出单保费`:'自己的出单保费达' }}</span>
                     <el-input class="width" v-model="item.min" size="small" style="margin: 0 5px;" placeholder="请输入">
                       <template slot="append">{{ index ? '元' : '人' }}</template>
                     </el-input>
-                    <span style="margin: 0 5px;">至</span>
-                    <el-input class="width" v-model="item.max" size="small" style="margin: 0 5px;" placeholder="请输入">
-                      <template slot="append">{{ index ? '元' : '人' }}</template>
-                    </el-input>
                   </div>
                 </div>
-                <div>
-                  以上条件
-                  <el-select v-model="dataList[2].appraise" placeholder="请选择">
+              </el-form-item>
+              <el-form-item label="考核规则" class=" spacing " v-if="dataList[2].upgrade == 1">
+                <div class="m-btn-10   flex a-c">
+                  成为该等级后,
+                  <el-input class="width"
+                      v-model="dataList[2].khDays" size="small" style="margin: 0 5px;"
+                      placeholder="请输入1~365的正整数" :maxlength="3"></el-input>
+                  天内,以下条件
+                  <el-select v-model="dataList[2].relSatisfy" placeholder="请选择" style="width: 150px;margin: 0 5px;">
                     <el-option label="全部满足" value="1"></el-option>
                     <el-option label="满足任意一条" value="2"></el-option>
                   </el-select>
-                  即可升级
+                  即可保持该等级,否则降至上一等
                 </div>
-              </el-form-item>
-            </div>
-          </el-form-item>
-          <el-form-item label="保级策略" class="m-top-20 spacing ">
-            <el-radio-group v-model="dataList[2].strategy" class="flex f-c ">
-              <el-radio label="1">不保级</el-radio>
-              <el-radio label="2">
-                <span class="mr-2">任务保级</span>
-                <div v-if="dataList[2].strategy == 2" class="flex f-c mrgin-1">
+                <div class="flex f-c row">
                   <div class="flex a-c mb-2" v-for="(item, index) in dataList[2].strategyArray" :key="index">
                     <el-checkbox v-model="item.checked"></el-checkbox>
-                    <el-input class="width" v-model="item.taskDays" size="small" style="margin: 0 5px;"
-                      placeholder="请输入">
-                      <template slot="append">天内</template>
-                    </el-input>
-                    <span style="margin: 0 10px;">{{ index ? '下属成员出单保费' : '邀请工作室达' }}</span>
+                    <span style="margin: 0 10px;">{{ index==0 ? '邀请工作室达' :index==1? `${dataList[2].gradeName}下属成员出单保费`:'自己的出单保费达' }}</span>
                     <el-input class="width" v-model="item.min" size="small" style="margin: 0 5px;" placeholder="请输入">
                       <template slot="append">{{ index ? '元' : '人' }}</template>
                     </el-input>
-                    <span style="margin: 0 5px;">至</span>
-                    <el-input class="width" v-model="item.max" size="small" style="margin: 0 5px;" placeholder="请输入">
-                      <template slot="append">{{ index ? '元' : '人' }}</template>
-                    </el-input>
-                  </div>
-                  <div>
-                    以上条件
-                    <el-select v-model="dataList[2].relSatisfy" placeholder="请选择">
-                      <el-option label="全部满足" value="1"></el-option>
-                      <el-option label="满足任意一条" value="2"></el-option>
-                    </el-select>
-                    即可升级
                   </div>
                 </div>
-              </el-radio>
-              <el-radio :label="3">
-                <span class="mr-2">购买保级</span>
-
-              </el-radio>
-            </el-radio-group>
+              </el-form-item>
+              <div class="flex a-c">
+                <el-checkbox v-model="dataList[2].fallTick"></el-checkbox>
+                <span style="margin: 0 5px;">降级后,支付锁定金额的</span>
+                <el-input class="width"
+                      v-model="dataList[2].fallAmount" size="small" style="margin: 0 5px;"
+                      >
+                      <template slot="append">%</template></el-input>
+                可解锁该等级
+              </div>
+            </div>
           </el-form-item>
         </el-form>
       </el-tab-pane>
       <el-tab-pane label="等级四" name="level4">
         <h5>等级规则</h5>
-        <el-form ref="form" :model="dataList[3].cycle" label-width="80px" size="small" style="width: 800px;">
+        <el-form ref="form" :model="dataList[3].cycle" label-width="80px" size="small" >
           <el-form-item label="等级名称">
-            <el-input v-model="dataList[3].gradeName"></el-input>
+            <el-input v-model="dataList[3].gradeName" style="width: 800px;"></el-input>
           </el-form-item>
           <el-form-item label="升级策略">
             <div class="flex f-c m-top-10">
@@ -242,84 +223,167 @@
                   <el-radio label="2">
                     <span class="mr-2">固定天数</span>
                     成为该等级后,限期
-                    <el-input class="width" v-model="dataList[3].cycle.fixedDays" size="small" style="margin: 0 5px;"
-                      placeholder="请输入1~365的正整数">
+                    <el-input class="width" :disabled="['1','3'].includes(dataList[3].cycle.cycle)"
+                      v-model="dataList[3].cycle.fixedDays" size="small" style="margin: 0 5px;"
+                      placeholder="请输入1~365的正整数" :maxlength="3">
                       <template slot="append">天</template>
                     </el-input>
                   </el-radio>
                   <el-radio label="3">
                     <span class="mr-2">固定日期</span>
-                    <el-date-picker class="width" v-model="dataList[3].cycle.min" type="date" placeholder="选择日期"
+                    <el-date-picker class="width" v-model="dataList[3].cycle.min"
+                      :disabled="[1, 2].includes(dataList[3].cycle.cycle)" type="date" placeholder="选择日期"
                       format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd">
                     </el-date-picker>
                     <span style="margin: 0 5px;">至</span>
-                    <el-date-picker class="width" v-model="dataList[3].cycle.max" type="date" placeholder="选择日期"
+                    <el-date-picker class="width" v-model="dataList[3].cycle.max"
+                      :disabled="[1, 2].includes(dataList[3].cycle.cycle)" type="date" placeholder="选择日期"
                       format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd">
                     </el-date-picker>
                   </el-radio>
                 </el-radio-group>
-              </el-form-item>
-              <el-form-item label="考核条件" class="m-top-20 spacing " v-if="dataList[3].upgrade == 1">
-                <div class="flex f-c ">
+                <div class="m-btn-10  m-top-10">
+                  在上个等级时,限期内,以下条件
+                  <el-select v-model="dataList[3].appraise" placeholder="请选择" style="width: 150px;">
+                    <el-option label="全部满足" value="1"></el-option>
+                    <el-option label="满足任意一条" value="2"></el-option>
+                  </el-select>
+                  可升级成为该等级
+                </div>
+                <div class="flex f-c row">
                   <div class="flex a-c mb-2" v-for="(item, index) in dataList[3].requirement" :key="index">
                     <el-checkbox v-model="item.checked"></el-checkbox>
-                    <span style="margin: 0 10px;">{{ index ? '下属成员出单保费' : '邀请团队长达' }}</span>
+                    <span style="margin: 0 10px;">{{ index==0 ? '邀请团队长达' :index==1? `${dataList[3].gradeName}下属成员出单保费`:'自己的出单保费达' }}</span>
                     <el-input class="width" v-model="item.min" size="small" style="margin: 0 5px;" placeholder="请输入">
                       <template slot="append">{{ index ? '元' : '人' }}</template>
                     </el-input>
-                    <span style="margin: 0 5px;">至</span>
-                    <el-input class="width" v-model="item.max" size="small" style="margin: 0 5px;" placeholder="请输入">
-                      <template slot="append">{{ index ? '元' : '人' }}</template>
-                    </el-input>
                   </div>
                 </div>
-                <div>
-                  以上条件
-                  <el-select v-model="dataList[3].appraise" placeholder="请选择">
+              </el-form-item>
+              <el-form-item label="考核规则" class=" spacing " v-if="dataList[3].upgrade == 1">
+                <div class="m-btn-10   flex a-c">
+                  成为该等级后,
+                  <el-input class="width"
+                      v-model="dataList[3].khDays" size="small" style="margin: 0 5px;"
+                      placeholder="请输入1~365的正整数" :maxlength="3"></el-input>
+                  天内,以下条件
+                  <el-select v-model="dataList[3].relSatisfy" placeholder="请选择" style="width: 150px;margin: 0 5px;">
                     <el-option label="全部满足" value="1"></el-option>
                     <el-option label="满足任意一条" value="2"></el-option>
                   </el-select>
-                  即可升级
+                  即可保持该等级,否则降至上一等
                 </div>
-              </el-form-item>
-            </div>
-          </el-form-item>
-          <el-form-item label="保级策略" class="m-top-20 spacing ">
-            <el-radio-group v-model="dataList[3].strategy" class="flex f-c ">
-              <el-radio label="1">不保级</el-radio>
-              <el-radio label="2">
-                <span class="mr-2">任务保级</span>
-                <div v-if="dataList[3].strategy == 2" class="flex f-c mrgin-1">
+                <div class="flex f-c row">
                   <div class="flex a-c mb-2" v-for="(item, index) in dataList[3].strategyArray" :key="index">
                     <el-checkbox v-model="item.checked"></el-checkbox>
-                    <el-input class="width" v-model="item.taskDays" size="small" style="margin: 0 5px;"
-                      placeholder="请输入">
-                      <template slot="append">天内</template>
-                    </el-input>
-                    <span style="margin: 0 10px;">{{ index ? '下属成员出单保费' : '邀请团队长达' }}</span>
+                    <span style="margin: 0 10px;">{{ index==0 ? '邀请团队长达' :index==1? `${dataList[3].gradeName}下属成员出单保费`:'自己的出单保费达' }}</span>
                     <el-input class="width" v-model="item.min" size="small" style="margin: 0 5px;" placeholder="请输入">
                       <template slot="append">{{ index ? '元' : '人' }}</template>
                     </el-input>
+                  </div>
+                </div>
+              </el-form-item>
+              <div class="flex a-c">
+                <el-checkbox v-model="dataList[3].fallTick"></el-checkbox>
+                <span style="margin: 0 5px;">降级后,支付锁定金额的</span>
+                <el-input class="width"
+                      v-model="dataList[3].fallAmount" size="small" style="margin: 0 5px;"
+                      placeholder="" >
+                      <template slot="append">%</template></el-input>
+                可解锁该等级
+              </div>
+            </div>
+          </el-form-item>
+        </el-form>
+      </el-tab-pane>
+      <el-tab-pane label="等级五" name="level5">
+        <h5>等级规则</h5>
+        <el-form ref="form" :model="dataList[4].cycle" label-width="80px" size="small" >
+          <el-form-item label="等级名称">
+            <el-input v-model="dataList[4].gradeName" style="width: 800px;"></el-input>
+          </el-form-item>
+          <el-form-item label="升级策略">
+            <div class="flex f-c m-top-10">
+              <el-radio-group v-model="dataList[4].upgrade">
+                <el-radio label="1">支持</el-radio>
+                <el-radio label="2">不支持</el-radio>
+              </el-radio-group>
+              <el-form-item label="考核周期" class="m-top-20 spacing " v-if="dataList[4].upgrade == 1">
+                <el-radio-group v-model="dataList[4].cycle.cycle" class="flex f-c ">
+                  <el-radio label="1">不限期</el-radio>
+                  <el-radio label="2">
+                    <span class="mr-2">固定天数</span>
+                    成为该等级后,限期
+                    <el-input class="width" :disabled="['1','3'].includes(dataList[4].cycle.cycle)"
+                      v-model="dataList[4].cycle.fixedDays" size="small" style="margin: 0 5px;"
+                      placeholder="请输入1~365的正整数" :maxlength="3">
+                      <template slot="append">天</template>
+                    </el-input>
+                  </el-radio>
+                  <el-radio label="3">
+                    <span class="mr-2">固定日期</span>
+                    <el-date-picker class="width" v-model="dataList[4].cycle.min"
+                      :disabled="[1, 2].includes(dataList[4].cycle.cycle)" type="date" placeholder="选择日期"
+                      format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd">
+                    </el-date-picker>
                     <span style="margin: 0 5px;">至</span>
-                    <el-input class="width" v-model="item.max" size="small" style="margin: 0 5px;" placeholder="请输入">
+                    <el-date-picker class="width" v-model="dataList[4].cycle.max"
+                      :disabled="[1, 2].includes(dataList[4].cycle.cycle)" type="date" placeholder="选择日期"
+                      format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd">
+                    </el-date-picker>
+                  </el-radio>
+                </el-radio-group>
+                <div class="m-btn-10  m-top-10">
+                  在上个等级时,限期内,以下条件
+                  <el-select v-model="dataList[4].appraise" placeholder="请选择" style="width: 150px;">
+                    <el-option label="全部满足" value="1"></el-option>
+                    <el-option label="满足任意一条" value="2"></el-option>
+                  </el-select>
+                  可升级成为该等级
+                </div>
+                <div class="flex f-c row">
+                  <div class="flex a-c mb-2" v-for="(item, index) in dataList[4].requirement" :key="index">
+                    <el-checkbox v-model="item.checked"></el-checkbox>
+                    <span style="margin: 0 10px;">{{ index==0 ? '邀请团队长达' :index==1? `${dataList[4].gradeName}下属成员出单保费`:'自己的出单保费达' }}</span>
+                    <el-input class="width" v-model="item.min" size="small" style="margin: 0 5px;" placeholder="请输入">
                       <template slot="append">{{ index ? '元' : '人' }}</template>
                     </el-input>
                   </div>
-                  <div>
-                    以上条件
-                    <el-select v-model="dataList[3].relSatisfy" placeholder="请选择">
-                      <el-option label="全部满足" value="1"></el-option>
-                      <el-option label="满足任意一条" value="2"></el-option>
-                    </el-select>
-                    即可升级
+                </div>
+              </el-form-item>
+              <el-form-item label="考核规则" class=" spacing " v-if="dataList[4].upgrade == 1">
+                <div class="m-btn-10   flex a-c">
+                  成为该等级后,
+                  <el-input class="width"
+                      v-model="dataList[4].khDays" size="small" style="margin: 0 5px;"
+                      placeholder="请输入1~365的正整数" :maxlength="3"></el-input>
+                  天内,以下条件
+                  <el-select v-model="dataList[4].relSatisfy" placeholder="请选择" style="width: 150px;margin: 0 5px;">
+                    <el-option label="全部满足" value="1"></el-option>
+                    <el-option label="满足任意一条" value="2"></el-option>
+                  </el-select>
+                  即可保持该等级,否则降至上一等级
+                </div>
+                <div class="flex f-c row">
+                  <div class="flex a-c mb-2" v-for="(item, index) in dataList[4].strategyArray" :key="index">
+                    <el-checkbox v-model="item.checked"></el-checkbox>
+                    <span style="margin: 0 10px;">{{ index==0 ? '邀请团队长达' :index==1? `${dataList[4].gradeName}下属成员出单保费`:'自己的出单保费达' }}</span>
+                    <el-input class="width" v-model="item.min" size="small" style="margin: 0 5px;" placeholder="请输入">
+                      <template slot="append">{{ index ? '元' : '人' }}</template>
+                    </el-input>
                   </div>
                 </div>
-              </el-radio>
-              <el-radio :label="3">
-                <span class="mr-2">购买保级</span>
-
-              </el-radio>
-            </el-radio-group>
+              </el-form-item>
+              <div class="flex a-c">
+                <el-checkbox v-model="dataList[4].fallTick"></el-checkbox>
+                <span style="margin: 0 5px;">降级后,支付锁定金额的</span>
+                <el-input class="width"
+                      v-model="dataList[4].fallAmount" size="small" style="margin: 0 5px;"
+                      placeholder="" >
+                      <template slot="append">%</template></el-input>
+                可解锁该等级
+              </div>
+            </div>
           </el-form-item>
         </el-form>
       </el-tab-pane>
@@ -539,7 +603,10 @@ export default {
   }
 
 }
-
+  .body{
+    padding: 20px 20px 60px;
+    box-sizing: border-box;
+  }
 .width {
   width: 220px;
 }
@@ -556,7 +623,13 @@ export default {
   box-shadow: 0 0 1px 0 #ccc;
   transition: all 0.1s, box-shadow 0.5s;
 }
-
+.row {
+  width: 800px;
+  background-color: #f2f2f2;
+  padding: 20px 20px 0 ;
+  box-sizing: border-box;
+  border-radius: 5px;
+}
 /deep/ .el-form-item__content .el-input-group {
   vertical-align: unset
 }

+ 195 - 0
src/views/DistributionManage/PartnerManagement/PurchaseHistory.vue

@@ -0,0 +1,195 @@
+<!-- 模板区域 -->
+<template>
+  <div class="p-2">
+    <!-- 模板内容 -->
+    <el-form :model="pageRequest" size="small" label-width="85px">
+      <el-row :gutter="40">
+        <el-col :span="8">
+          <el-form-item label="姓名">
+            <el-input v-model="pageRequest.name" clearable placeholder="输入姓名查找"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="手机号">
+            <el-input v-model="pageRequest.mobile" clearable placeholder="输入手机号查找"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="工号">
+            <el-input v-model="pageRequest.userId" clearable placeholder="输入工号查找"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="购买时间">
+            <el-date-picker v-model="pageRequest.startTime" clearable type="daterange" value-format="yyyy-MM-dd"
+              range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item>
+            <el-button size="small" type="primary" @click="findPage">查询</el-button>
+            <el-button size="small" type="default" @click="resetFrom">重置</el-button>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <kt-common-table :tableHeights="580" :operationWidth="200" :showOperation="false" :showBatchDelete="false"
+      :data="Result" :columns="Columns" @findPage="findPage">
+    </kt-common-table>
+    <el-image-viewer v-if="showViewer" :on-close="closeViewer" :z-index="9999" :url-list="[CredentialsImg]" />
+  </div>
+</template>
+
+<!-- 行为区域 -->
+<script>
+import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
+
+export default {
+  components: {
+    "el-image-viewer": () =>
+    import("element-ui/packages/image/src/image-viewer"),
+    KtCommonTable
+  },
+  // 数据存放区域
+  data() {
+    return {
+      showViewer: false,//大图预览开关
+      CredentialsImg:"",
+      userGradeList: [],//人员等级字典
+      Datelist: [],
+      pageRequest: {
+        pageNum: 1,
+        pageSize: 20,
+        name: "",//姓名
+        mobile: "",//手机号
+        userId: "",//工号
+        startTime: [],
+      },
+      Columns: [
+        { prop: "name", label: "姓名", minWidth: 180 },
+        { prop: "mobile", label: "手机号", },
+        { prop: "userId", label: "工号", minWidth: 120 },
+        { prop: "deptName", label: "所属机构", minWidth: 160 },
+        { prop: "grade", label: "降级前", minWidth: 160, formatter: this.gradeFormatter },
+        { prop: "gradeAfter", label: "降级后", minWidth: 160, formatter: this.gradeAfterFormatter },
+        { prop: "lockCommission", label: "锁定佣金", minWidth: 160 },
+        { prop: "purchasingTime", label: "购买时间", minWidth: 160 },
+        { prop: "apperId", label: "购买凭证", minWidth: 160, formatter: this.apperIdFormatter },
+      ],
+      Result: [],
+    }
+  },
+  // 生命周期函数
+  created() {
+    this.userGradeQuery();
+
+  },
+  // 方法函数
+  methods: {
+    // 关闭大图查看器
+    closeViewer() {
+      this.showViewer = false;
+    },
+    gradeFormatter(row, column) {
+      let grade = row.grade;
+      let info = this.userGradeList.find(val => val.grade == grade)
+      if (info) {
+        return info.gradeName
+      } else {
+        return row.grade
+      }
+    },
+    gradeAfterFormatter(row, column) {
+      let gradeAfter = row.gradeAfter;
+      let info = this.userGradeList.find(val => val.grade == gradeAfter)
+      if (info) {
+        return info.gradeName
+      } else {
+        return row.gradeAfter
+      }
+    },
+    apperIdFormatter(row, column) {
+      let id = row.apperId;
+      const handleClick = () => {
+        this.$api.retail.purchaseviewVouchers(id).then((res) => {
+        if (res.code == '200') {
+          this.$message({
+            type: 'success',
+            message: res.msg,
+          });
+          this.showViewer=true;
+        } else {
+          this.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+      }
+      return <span style="color:#409EFF" onClick={handleClick}>查看凭证</span>
+    },
+
+    //获取人员等级列表
+    userGradeQuery() {
+      this.$api.retail.queryGradeNamerule().then((res) => {
+        if (res.code == '200') {
+          this.userGradeList = res.data;
+        } else {
+        }
+      });
+    },
+    //重置表单
+    resetFrom() {
+      this.pageRequest = {
+        pageNum: 1,
+        pageSize: 20,
+        name: "",//姓名
+        mobile: "",//手机号
+        userId: "",//工号
+        signingTime: [],
+      }
+    },
+    // 数据访问
+    findPage(data) {
+      if (data && data.pageRequest) {
+        this.pageRequest.pageNum = data.pageRequest.pageNum;
+        this.pageRequest.pageSize = data.pageRequest.pageSize;
+      } else {
+        this.pageRequest.pageNum = 1;
+        this.pageRequest.pageSize = 20;
+      }
+      this.$api.retail
+        .purchaseRecordPage({ ...this.pageRequest })
+        .then((res) => {
+          this.Result = {
+            content: res.data.records,
+            pageNum: res.data.pages,
+            pageSize: res.data.size,
+            totalSize: res.data.total,
+          };
+        });
+    },
+  },
+  // 计算属性
+  computed: {
+  }
+}
+</script>
+<!-- 样式区域 -->
+<style lang='scss' scoped>
+/deep/ .el-form {
+  .el-input {
+    width: 100% !important;
+  }
+
+  .el-select {
+    width: 100% !important;
+  }
+
+  .el-date-editor--daterange {
+    width: 100% !important;
+
+  }
+}
+</style>

+ 258 - 28
src/views/DistributionManage/PartnerManagement/UpgradeDowngradeRecord.vue

@@ -43,17 +43,27 @@
           </el-col>
           <el-col :span="8">
             <el-form-item>
-              <el-button size="small" type="primary">查询</el-button>
-              <el-button size="small" type="default">重置</el-button>
+              <el-button size="small" type="primary" @click="findPage">查询</el-button>
+              <el-button size="small" type="default" @click="resetFrom">重置</el-button>
+
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
-      <kt-common-table  ref="commonTable" :tableHeights="520" :operationWidth="200" :showOperation="true" :button2Name="pageRequest.auditStatus=='0'?'通过':''"
-        button2Type="text" :button2style="{ color: '#2D4D89' }" @handleButton2="isOperationPassed" :button3Name="pageRequest.auditStatus=='0'?'拒绝':''"
-        button3Type="text" :button3style="{ color: '#2D4D89' }" @handleButton3="denyOperation" :showBatchDelete="false"
-        :data="Result" :columns="Columns" @findPage="findPage">
-      </kt-common-table>
+      <templateTable ref="commonTable" :tableHeights="520" :operationWidth="200" :showOperation="true"
+        :showBatchDelete="false" :data="Result" :columns="Columns" @findPage="findPage">
+        <template slot="buttonSlot" slot-scope="{ row }" v-if="pageRequest.auditStatus == '0'">
+          <el-button v-if="row.type == '0'" type="text" size="small" @click="isOperationPassed(row)">
+            通过
+          </el-button>
+          <el-button v-if="row.type == '0'" type="text" size="small" @click="denyOperation(row)">
+            拒绝
+          </el-button>
+          <el-button v-if="row.type == '1'" type="text" size="small" @click="unlockLevel(row)">
+            解锁等级
+          </el-button>
+        </template>
+      </templateTable>
     </div>
     <el-dialog title="驳回原因" :visible.sync="OperationVisible" width="25%">
       <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="rejectReason" maxlength="200" show-word-limit>
@@ -63,28 +73,96 @@
         <el-button size="small" type="primary" @click="OperationVisiblesubmit">确 定</el-button>
       </span>
     </el-dialog>
+    <el-dialog title="升级审核" :visible.sync="upgradeReviewVisible" width="30%">
+      <el-form label-position="right" size="small" label-width="180px" :model="upgradeReviewInfo" style="width: 450px;">
+        <el-form-item label="升级前">
+          <el-input disabled v-model="upgradeReviewInfo.originalLevel"></el-input>
+        </el-form-item>
+        <el-form-item label="升级后">
+          <el-input disabled v-model="upgradeReviewInfo.afterChange"></el-input>
+        </el-form-item>
+        <el-form-item v-if="auditCommissionshow" :label="`升级后${upgradeReviewInfo.originalLevel}佣金比例`">
+          <el-input v-model="upgradeReviewInfo.auditCommission">
+            <template slot="append">%</template>
+          </el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="upgradeReviewVisible = false">取 消</el-button>
+        <el-button size="small" type="primary" @click="upgradeReviewsubmit">审核通过</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog title="解锁等级" :visible.sync="unlockLevelVisible" width="30%">
+      <el-form label-position="right" size="small" label-width="100px" :model="unlockLevelInfo" style="width: 450px;">
+        <el-form-item label="支付金额">
+          <el-input disabled v-model="unlockLevelInfo.paymentAmount">
+            <template slot="append">元</template>
+          </el-input>
+        </el-form-item>
+        <el-form-item label="收款凭证">
+          <el-upload action="#" list-type="picture-card" :auto-upload="false" :on-change="credentialupload"
+            :file-list="imgList" :limit="1">
+            <i slot="default" class="el-icon-plus"></i>
+            <div slot="file" slot-scope="{file}">
+              <img class="el-upload-list__item-thumbnail" :src="file.url" alt="">
+              <span class="el-upload-list__item-actions">
+                <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
+                  <i class="el-icon-zoom-in"></i>
+                </span>
+                <span class="el-upload-list__item-delete" @click="handleRemove(file)">
+                  <i class="el-icon-delete"></i>
+                </span>
+              </span>
+            </div>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="unlockLevelVisible = false">取 消</el-button>
+        <el-button size="small" type="primary" @click="confirmUnlock">确定解锁</el-button>
+      </span>
+    </el-dialog>
+    <el-image-viewer v-if="showViewer" :on-close="closeViewer" :z-index="9999" :url-list="[imgList[0].url]" />
   </div>
 </template>
 
 <!-- 行为区域 -->
 <script>
-import KtCommonTable from "@/views/Core/KtCommonTable.vue"; //表格组件
-
+import templateTable from "../components/templateTable.vue";
 export default {
   components: {
-    KtCommonTable
+    templateTable,
+    "el-image-viewer": () =>
+      import("element-ui/packages/image/src/image-viewer"),
   },
   // 数据存放区域
   data() {
     return {
-      id: "",
+      showViewer: false,//大图预览开关
+      imgList: [//默认回显图片
+      ],
+      auditCommissionshow:true,
+      upgradeReviewInfo: {
+        originalLevel: "",//原等级
+        afterChange: "",//变更后等级
+        auditCommission: "",//比例
+      },//升级审核表单
+      unlockLevelInfo: {
+        paymentAmount: "",//支付金额
+        fileId: '',//图片id
+        recordId: "",//数据id
+      },//解锁等级表单
+      userGradeList: [],//等级列表
+      id: "",//数据id
       rejectReason: "",//驳回原因
       OperationVisible: false,//拒绝弹窗
-      pendingReview: 0,
-      isApproved: 0,
-      isNotApproved: 0,
-      Datelist: [],
+      upgradeReviewVisible: false,//升级审核弹窗
+      unlockLevelVisible: false,//解锁等级弹窗
+      pendingReview: 0,//待审核条数
+      isApproved: 0,//已审核条数
+      isNotApproved: 0,//审核不通过条数
       pageRequest: {
+        //检索信息
         pageNum: 1,
         pageSize: 20,
         name: "",//姓名
@@ -94,41 +172,170 @@ export default {
         applyTime: [],//申请时间
         auditStatus: '0',
       },
+      //表头信息
       Columns: [
-        { prop: "name", label: "姓名", minWidth: 180 },
+        { prop: "name", label: "姓名", minWidth: 180, },
         { prop: "mobile", label: "手机号", minWidth: 160 },
         { prop: "userId", label: "工号", minWidth: 120 },
         { prop: "deptName", label: "所属机构", minWidth: 160 },
-        { prop: "type", label: "类型", minWidth: 160 },
-        { prop: "originalLevel", label: "原等级", minWidth: 160 },
-        { prop: "afterChange", label: "变更后等级", minWidth: 160 },
-        { prop: "cycle", label: "考核周期", minWidth: 160 },
-        { prop: "upgradeStrategy", label: "升级策略", minWidth: 160 },
+        { prop: "type", label: "类型", minWidth: 160, formatter: this.typeFormatter },
+        { prop: "originalLevel", label: "原等级", minWidth: 160, formatter: this.originalLevelFormatter },
+        { prop: "afterChange", label: "变更后等级", minWidth: 160, formatter: this.afterChangeFormatter },
+        { prop: "conditions", label: "升级条件", minWidth: 160, formatter: this.conditionsFormatter },
+        { prop: "rules", label: "考核规则", minWidth: 160, formatter: this.rulesFormatter },
         { prop: "rejectReason", label: "驳回原因", minWidth: 160 },
         { prop: "createTime", label: "申请时间", minWidth: 160 },
       ],
-      Result: [],
+      Result: [],//表格数据
     }
   },
   // 生命周期函数
   created() {
+    this.userGradeQuery();
   },
   // 方法函数
   methods: {
+    // 解锁等级
+    confirmUnlock() {
+      this.$api.retail.confirmUnlocking(this.unlockLevelInfo).then((res) => {
+        if (res.code == '200') {
+          this.$message({
+            type: 'success',
+            message: res.msg,
+          });
+          this.unlockLevelVisible = false;
+          this.findPage();
+
+        } else {
+          this.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+    },
+    // 凭证上传
+    credentialupload(file) {
+      const params = new FormData(); // 声明formData数据类型
+      params.append("multipartFile", file.raw);
+      params.append("type", "image");
+      this.$api.letter.uploadFile(params).then((res) => {
+        if (res.code == '200') {
+          this.unlockLevelInfo.fileId = res.data.id;
+        } else {
+          this.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+      this.imgList.push({ url: file.url });
+    },
+    //删除图片
+    handleRemove(file) {
+      this.imgList.map((ele, index) => {
+        if (ele.uid === file.uid) {
+          this.imgList.splice(index, 1);
+        }
+        return ele;
+      });
+    },
+    //图片预览
+    handlePictureCardPreview(file) {
+      this.showViewer = true;
+    },
+    // 关闭大图查看器
+    closeViewer() {
+      this.showViewer = false;
+    },
+    //获取人员等级列表
+    userGradeQuery() {
+      this.$api.retail.queryGradeNamerule().then((res) => {
+        if (res.code == '200') {
+          this.userGradeList = res.data;
+        } else {
+        }
+      });
+    },
+    typeFormatter(row, column) {
+      let type = row.type;
+      if (type == '0') {
+        return '升级';
+      } else {
+        return '降级';
+      }
+    },
+    originalLevelFormatter(row, column) {
+
+      let originalLevel = row.originalLevel;
+      let info = this.userGradeList.find(val => val.grade == originalLevel)
+      return info.gradeName
+    },
+    afterChangeFormatter(row, column) {
+      let afterChange = row.afterChange;
+      let info = this.userGradeList.find(val => val.grade == afterChange)
+      return info.gradeName
+    },
+    conditionsFormatter(row, column) {
+      return (
+        <el-popover placement="bottom" width="200" trigger="click">
+          <div domPropsInnerHTML={row.conditions}></div>
+          <span slot="reference" style="cursor: pointer">查看规则</span>
+        </el-popover>
+      );
+    },
+    rulesFormatter(row, column) {
+      return (
+        <el-popover placement="bottom" width="200" trigger="click">
+          <div domPropsInnerHTML={row.rules}></div>
+          <span slot="reference" style="cursor: pointer">查看规则</span>
+        </el-popover>
+      );
+    },
+    //重置表单
+    resetFrom() {
+      this.pageRequest = {
+        pageNum: 1,
+        pageSize: 20,
+        name: "",//姓名
+        mobile: "",//手机号
+        userId: "",//工号
+        type: "",//类型
+        applyTime: [],//申请时间
+        auditStatus: '0',
+        upgradeType:'',//升降级标识
+      }
+    },
     handleClick(tab, event) {
       this.pageRequest.auditStatus = tab.name;
       this.findPage();
     },
-    isOperationPassed({ row, column }) {
-      this.$api.retail.liftingRecordaudit({
-        id: row.id,
+    //升级审核
+    isOperationPassed(row) {
+      console.log(row)
+      if(row.afterChange==row.originalLevel){
+        this.auditCommissionshow=false;
+      }
+      this.id = row.id;
+      this.upgradeType=row.upgradeType;
+      this.upgradeReviewVisible = true;
+      this.upgradeReviewInfo.originalLevel = this.userGradeList.find(val => val.grade == row.originalLevel).gradeName;
+      this.upgradeReviewInfo.afterChange = this.userGradeList.find(val => val.grade == row.afterChange).gradeName;
+
+    },
+    //升级审核
+    upgradeReviewsubmit() {
+      this.$api.retail[this.upgradeType=='1'?'liftingRecorddowngradeAudit':'liftingRecordaudit']({
+        id: this.id,
         auditStatus: "1",
+        auditCommission: this.upgradeReviewInfo.auditCommission,
       }).then((res) => {
         if (res.code == '200') {
           this.$message({
             type: 'success',
             message: res.msg,
           });
+          this.upgradeReviewVisible = false;
           this.findPage();
         } else {
           this.$message({
@@ -138,12 +345,29 @@ export default {
         }
       });
     },
-    denyOperation({ row, column }) {
+    //拒绝操作
+    denyOperation(row) {
       this.OperationVisible = true;
       this.id = row.id;
     },
+    //解锁等级
+    unlockLevel(row) {
+      this.$api.retail.unlockLevel(row.originalLevel).then((res) => {
+        if (res.code == '200') {
+          this.unlockLevelInfo.recordId = row.id;
+          this.unlockLevelInfo.paymentAmount = res.data;
+          this.unlockLevelVisible = true;
+        } else {
+          this.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+    },
+
     OperationVisiblesubmit() {
-      this.$api.retail.liftingRecordaudit({
+      this.$api.retail[this.upgradeType=='1'?'liftingRecorddowngradeAudit':'liftingRecordaudit']({
         id: this.id,
         auditStatus: "2",
         rejectReason: this.rejectReason,
@@ -174,9 +398,10 @@ export default {
       this.$api.retail
         .liftingRecordPage({ ...this.pageRequest })
         .then((res) => {
+          //
           this.Result = {
             content: res.data.records,
-            pageNum: res.data.pages,
+            pageNum: res.data.current,
             pageSize: res.data.size,
             totalSize: res.data.total,
           };
@@ -201,6 +426,7 @@ export default {
   },
   // 计算属性
   computed: {
+
   }
 }
 </script>
@@ -220,4 +446,8 @@ export default {
 
   }
 }
+
+.width {
+  width: 200px;
+}
 </style>

+ 833 - 0
src/views/DistributionManage/components/templateTable.vue

@@ -0,0 +1,833 @@
+<template>
+  <div style="position: relative" ref="commonTable">
+    <!--表格栏-->
+    <el-table id="commonTable" ref="doLayout" :data="data.content" :highlight-current-row="highlightCurrentRow"
+      @selection-change="selectionChange" @row-click="rowClick" @current-change="handleCurrentChange"
+      :element-loading-text="$t('action.loading')" :border="border" :stripe="stripe" :show-summary="showSummary"
+      :summary-method="getSummaries" :show-overflow-tooltip="showOverflowTooltip"
+      :height="tableHeights ? tableHeights : tableHeight" :size="size" :align="align" :header-cell-style="{
+        fontWeight: '900',
+        color: '#606266',
+      }" style="width: 100%" :row-class-name="tableRowClassName" @expand-change="handleExpandChange"
+      :expand-row-keys="expandRows" row-key="id">
+      <el-table-column type="selection" width="50" fixed align="center" v-if="
+        showBatchDelete ||
+        refreshStatus ||
+        showBatchSettled ||
+        showBatchPrint ||
+        customToolseletted ||
+        disableInBulk ||
+        select
+      "></el-table-column>
+      <el-table-column v-if="SerialShow" label="序号" type="index" width="50" align="center"></el-table-column>
+      <template v-for="column in columns">
+        <el-table-column header-align="center" align="center" :prop="column.prop" :label="column.label"
+          :width="column.width" :min-width="column.minWidth" :fixed="column.fixed" :key="column.prop"
+          :type="column.type" :formatter="column.formatter" :sortable="column.sortable ? column.sortable : false">
+          <template v-for="columnchildren in column.children">
+            <el-table-column v-if="columnchildren" header-align="center" align="center" :prop="columnchildren.prop"
+              :label="columnchildren.label" :width="columnchildren.width" :min-width="columnchildren.minWidth"
+              :fixed="columnchildren.fixed" :key="columnchildren.prop" :type="columnchildren.type"
+              :formatter="columnchildren.formatter" :sortable="columnchildren.sortable == null ? true : columnchildren.sortable
+                ">
+            </el-table-column>
+          </template>
+        </el-table-column>
+      </template>
+      <el-table-column :label="$t('action.operation')" :width="operationWidth" :fixed="isNotFixed ? false : 'right'"
+        v-if="showOperation" header-align="center" align="center" class-name="table-fiexd">
+        <template slot-scope="scope">
+          <slot name="buttonSlot" :row="scope.row" :index="scope.$index"></slot>
+        </template>
+      </el-table-column>
+
+    </el-table>
+    <!--分页栏-->
+    <!-- 底部分页 -->
+    <div class="bottomFixed flex a-c" ref="bottomFixed">
+      <kt-button :label="customToolName" :perms="permscustomTool" :size="size" type="danger" @click="customToolMethod()"
+        :disabled="selections.length === 0" style="float: left" v-if="customToolseletted" />
+      <kt-button class="debutton" :label="deleteName" :perms="permsDelete" :size="size" type="danger"
+        @click="handleBatchDelete()" :disabled="selections.length === 0" style="float: left"
+        v-if="showBatchDelete & showOperation" />
+      <kt-button class="debutton" :label="refreshStatusName" :size="size" type="danger" @click="refreshStatusBatch()"
+        :disabled="selections.length === 0" style="float: left" v-if="refreshStatus" />
+      <kt-button :label="customToolName1" :perms="permscustomTool" :size="size" type="danger"
+        @click="customToolMethod1()" :disabled="selections.length === 0" style="float: left"
+        v-if="customToolseletted" />
+      <kt-button :label="disableInBulkName" :perms="disableInBulkperms" :size="size" type="danger"
+        @click="disableInBulkClick()" :disabled="selections.length === 0" style="float: left" v-if="disableInBulk" />
+      <kt-button :label="settledName" :perms="permsSettled" :size="size" type="danger" @click="handleBatchSettled()"
+        :disabled="selections.length === 0" style="float: left" v-if="showBatchSettled" />
+      <kt-button label="导出Excel" :perms="permsExcel" :size="size" type="danger" @click="handleBatchPrint()"
+        style="float: left" v-if="showBatchPrint" />
+      <div v-if="tableSelectedCount" class="tableSelectedCountClass">已选
+        <span>{{ tableSelectedCount }}</span>
+        条
+      </div>
+      <el-pagination background @size-change="handleSizeChange" layout="total, sizes, prev, pager, next, jumper"
+        @current-change="refreshPageRequest" :current-page="data.pageNum" :page-size="data.pageSize"
+        :page-sizes="[10, 20, 50, 100, 200, 300, 400, 500]" :total="data.totalSize"
+        style="float: left; margin-left: 20px" v-if="isshowpagination">
+
+      </el-pagination>
+    </div>
+  </div>
+</template>
+<script>
+import KtButton from "@/views/Core/KtButton";
+import BigNumber from "bignumber.js";
+import ProductCostForm from '@/components/Form/ProductCostForm.vue';//表单组件
+export default {
+  name: "KtCommonTable",
+  components: {
+    KtButton,
+    ProductCostForm
+  },
+  props: {
+    //批量刷新状态
+    refreshStatus: {
+      type: Boolean,
+      default: false
+    },
+    // 承保规则expend内容
+    agreementUnderwritingRuleShow: {
+      type: Boolean,
+      default: false
+    },
+    select: {
+      type: Boolean,
+      default: false,
+    },
+    tableHeights: {
+      type: Number,
+    },
+    operationWidth: {
+      type: Number,
+      default: 200,
+    },
+    // 是否需要固定列(指操作那一列)
+    isNotFixed: {
+      type: Boolean,
+      default: false
+    },
+    showBatchSettled: {
+      //显示批量结算
+      type: Boolean,
+      default: false,
+    },
+    SerialShow: {
+      type: Boolean,
+      default: true,
+    },
+    customToolName: {
+      type: String,
+    },
+    customToolName1: {
+      type: String,
+    },
+    permscustomTool: {
+      type: String,
+    },
+    customToolseletted: {
+      // 自定义操作组件
+      type: Boolean,
+      default: false,
+    },
+    disableInBulkName: {
+      type: String,
+    },
+    disableInBulkperms: {
+      type: String,
+    },
+    disableInBulk: {
+      // 批量禁用
+      type: Boolean,
+      default: false,
+    },
+    settledName: {
+      //批量按钮name
+      type: String,
+    },
+    deleteName: {
+      type: String,
+    },
+    refreshStatusName: {
+      //批量更新状态按钮Name
+      type: String,
+    },
+    showBatchPrint: {
+      //显示批量导出
+      type: Boolean,
+      default: false,
+    },
+    //显示合计
+    showSummary: {
+      type: Boolean,
+      default: false,
+    },
+    //更多操作
+    buttonDropdown: {
+      type: Array,
+      default: () => [],
+    },
+    isshowpagination: {
+      //是否显示分页栏
+      type: Boolean,
+      default: true,
+    },
+    tableList: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+    showSummaryFieldList: Array, //自定义合计列配置
+    keyName: String, //主键字段名
+    columns: Array, // 表格列配置
+    data: {}, // 表格分页数据
+    permsEdit: String, // 编辑权限标识
+    permsDelete: String, // 底部按钮标识
+    permsSettled: String, // 底部按钮标识
+    permsExcel: String, // 底部按钮标识
+    size: {
+      // 尺寸样式
+      type: String,
+      default: "small ",
+    },
+    align: {
+      // 文本对齐方式
+      type: String,
+      default: "left",
+    },
+    // maxHeight: {  // 表格最大高度
+    //   type: Number,
+    //   default: 1420
+    // },
+    // height: {  // 表格最大高度
+    //   type: Number,
+    //   default: 250
+    // },
+    showOperation: {
+      // 是否显示操作组件
+      type: Boolean,
+      default: true,
+    },
+    border: {
+      // 是否显示边框
+      type: Boolean,
+      default: true,
+    },
+    stripe: {
+      // 是否显示斑马线
+      type: Boolean,
+      default: true,
+    },
+    highlightCurrentRow: {
+      // 是否高亮当前行
+      type: Boolean,
+      default: true,
+    },
+    showOverflowTooltip: {
+      // 是否单行显示
+      type: Boolean,
+      default: true,
+    },
+    showBatchDelete: {
+      // 是否显示操作组件
+      type: Boolean,
+      default: false,
+    },
+    showSysUserAccountCardList: {
+      // 是否显示二级列组件
+      type: Boolean,
+      default: false,
+    },
+    showDefaultPage: {
+      // 是否默认调用一次查询
+      type: Boolean,
+      default: true,
+    }
+  },
+  data() {
+    return {
+      tableSelectedCount: "",
+      tableHeight: 0,
+      loading: false, // 加载标识
+      selections: [], // 列表选中列
+      pageRequest: {
+        pageNum: 1,
+        pageSize: 20,
+      },
+      taskPool: false,
+
+      underwritingRulesAddVehicleFactorVisible: false,
+      operator: { "pageNum": 1, "pageSize": 10, "columnFilters": { "label": { "name": "label", "value": "agreement_operator" } } },
+      dynamicFormArray: [],
+      operatorlist: [],
+      underwritingRulesForm: {
+        //承保因子表单项
+        agreementId: "", //协议id
+        ruleDescription: "", //规则描述
+        rulesStartDate: "",//规则起期
+        rulesEndDate: "",//规则止期
+        validInd: "1", //是否有效
+        rulesAttrList: [],//规则属性
+        carClassList: [],
+        areanumberplateList: [],
+        licenseAreaList: [],
+      },
+      expandRows: []
+    };
+  },
+  created() {
+  },
+  watch: {
+    tableList(val, old) {
+      if (val.length > 0) {
+        let obj = val[0]
+        this.underwritingRulesHistoryDetails(obj, val)
+      }
+    },
+  },
+  methods: {
+    //获取银行卡信息
+    getSysUserAccountCardList(row) {
+      if (typeof row.expanded === "undefined") {
+        row.expanded = true;
+      }
+      if (row.expanded) {
+        if (this.expandRows.includes(row.id)) {
+          this.expandRows = this.expandRows.filter(item => item !== row.id);
+        } else {
+          this.expandRows.push(row.id);
+        }
+      } else {
+        this.expandRows = this.expandRows.filter(item => item !== row.id);
+      }
+      row.expanded = !row.expanded;
+      if (row.sysUserAccountCardList.length === 0) {
+        this.$api.dept.queryCardListByUserId(row.userId).then((res) => {
+          if (res.code == 200) {
+            if (res.data) {
+              row.sysUserAccountCardList = res.data;
+              this.$set(this.data.content, row.index, row)
+            }
+          }
+        });
+      }
+      //this.$refs.doLayout.toggleRowExpansion(row, row.expanded);
+    },
+    // 点击展开行
+    handleExpandChange(row, rows) {
+      if (this.showSysUserAccountCardList) {
+        this.getSysUserAccountCardList(row)
+      }
+      if (rows.length > 0) {
+        if (this.agreementUnderwritingRuleShow) {
+          this.underwritingRulesHistoryDetails(row)
+        }
+      }
+    },
+    // 承保规则历史记录详情
+    underwritingRulesHistoryDetails(row, value) {
+      let that = this
+      that.$api.dict.findPage(that.operator).then(res => {
+        that.operatorlist = res.data.content;
+      })
+      that.$api.insCompany.getUndwrtRulesFactorQuery(row.id).then((res) => {
+        if (res.code == '200') {
+          if (value && value.length == 1) {
+            this.expandRows.push(value[0].id)
+          }
+          let obj = Object.assign({}, res.data);
+          obj.costsAttrLinks.map(val => {
+            switch (val.attrType) {
+              case 'inputNumber':
+              case 'datetime':
+                if (!val.operator) {
+                  val.operator = '1';
+                }
+                break;
+            }
+            if (val.attrCode == 'LicenseNo') {
+              val.dictLabal = this.areanumberplateList;
+            }
+            if (val.attrCode == 'LicenseArea') {
+              val.dictLabal = this.licenseAreaList;
+            }
+            if (val.attrCode == 'CarClass') {
+              val.dictLabal = this.carClassList
+            }
+            return val;
+          })
+          that.dynamicFormArray = obj.costsAttrLinks;
+          that.underwritingRulesForm = {
+            id: obj.id,
+            agreementId: obj.agreementId, //协议id
+            ruleDescription: obj.ruleDescription, //规则描述
+            validInd: obj.validInd, //是否有效
+            rulesStartDate: obj.rulesStartDate,
+            rulesEndDate: obj.rulesEndDate,
+            rulesAttrList: [],//规则属性
+          };
+        } else {
+          that.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+    },
+    tableRowClassName(row, rowIndex) {
+      // if (!!row.fieldName24 && row.fieldName24.indexOf("未") >= 0) {
+      //   return "warningRow";
+      // } else if (!!row.fieldName24 && row.fieldName24.indexOf("已") >= 0) {
+      // return "successRow";
+      // }
+      if (!!this.taskPool) {
+        if (row.row.isExternal === 1) {
+          return "flagRow";
+        } else {
+          return "";
+        }
+      }
+      this.$emit("tableRowClassName", row);
+      // return '';
+    },
+    getSummaries(param) {
+      const { columns, data } = param;
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "合计"; // 假设第一列显示文本'合计'
+          return;
+        }
+        if (this.showSummaryFieldList) {
+          // 如果当前列名不在需要计算的列名数组中,直接返回空值或其他标记
+          if (!this.showSummaryFieldList.includes(column.property)) {
+            sums[index] = "-";
+            return;
+          }
+        }
+        let sum = new BigNumber(0);
+        data.forEach((item) => {
+          let value = item[column.property];
+          let number = new BigNumber(value);
+          if (!number.isNaN()) {
+            sum = sum.plus(number);
+          }
+        });
+        sums[index] = sum.toFixed(); // 转换成字符串避免精度问题
+      });
+      return sums;
+    },
+    // 分页查询
+    findPage: function () {
+      this.loading = true;
+      let callback = (res) => {
+        this.loading = false;
+        //解决操作栏位置偏移问题
+        this.$nextTick(() => {
+          this.$refs.doLayout.doLayout();
+        }, 200);
+      };
+      this.$emit("findPage", {
+        pageRequest: this.pageRequest,
+        callback: callback,
+      });
+    },
+    hideLoading() {
+      this.loading = false;
+    },
+    // 选择切换
+    selectionChange: function (selections) {
+      let idlist = [];
+      this.tableSelectedCount = selections.length;
+      this.selections = selections;
+      // this.selections.map((item) => idlist.push(item.id));
+      this.$emit("selectionChange", selections);
+    },
+    // 选择切换
+    handleCurrentChange: function (val) {
+      this.$emit("handleCurrentChange", {
+        val: val,
+      });
+    },
+
+    rowClick: function (row) {
+      this.$emit("rowClick", {
+        row: row,
+      });
+    },
+    // 换页刷新
+    refreshPageRequest: function (pageNum) {
+      this.pageRequest.pageNum = pageNum;
+      // this.pageRequest.pageSize = 20;
+      this.findPage();
+    },
+    // 每页条数发生改变
+    handleSizeChange(pageSize) {
+      this.pageRequest.pageSize = pageSize;
+      this.findPage();
+    },
+    signStateChanged(index, row) {
+      this.$emit("signStateChanged", {
+        index: index,
+        row: row,
+      });
+    },
+    // 按钮编辑
+    handleBtnEdit: function (index, row) {
+      this.$emit("handleBtnEdit", {
+        index: index,
+        row: row,
+      });
+    },
+    // 编辑
+    handleEdit: function (index, row) {
+      this.$emit("handleEdit", {
+        index: index,
+        row: row,
+      });
+      // this.$emit('findLeftTreeData')
+    },
+    handleBreak: function (index, row, i, r) {
+      this.$emit("handleBreak", {
+        index: index,
+        row: row,
+        i: i,
+        r: r,
+      });
+    },
+
+    handleTimeLine: function (index, row, i, r) {
+      this.$emit("handleTimeLine", {
+        index: index,
+        row: row,
+        i: i,
+        r: r,
+      });
+    },
+    handleRebind: function (index, row, i, r) {
+      this.$emit("handleRebind", {
+        index: index,
+        row: row,
+        i: i,
+        r: r,
+      });
+    },
+    // 删除
+    handleDelete: function (index, row) {
+      let _keyName = "id";
+      if (!!this.keyName) {
+        _keyName = this.keyName;
+      }
+
+      this.delete(row[_keyName]);
+    },
+    handleButton1: function (index, row) {
+      this.$emit("handleButton1", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton2: function (index, row) {
+      this.$emit("handleButton2", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton3: function (index, row) {
+      this.$emit("handleButton3", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton4: function (index, row) {
+      this.$emit("handleButton4", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton5: function (index, row) {
+      this.$emit("handleButton5", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton6: function (index, row) {
+      this.$emit("handleButton6", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton7: function (index, row) {
+      this.$emit("handleButton7", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton8: function (index, row) {
+      this.$emit("handleButton8", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton10: function (index, row) {
+      this.$emit("handleButton10", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton9: function (index, row) {
+      this.$emit("handleButton9", {
+        index: index,
+        row: row,
+      });
+    },
+    handleButton: function (index, row) {
+      this.$emit("handleButton", {
+        index: index,
+        row: row,
+      });
+    },
+    //删除单个
+    handleDeleteFlag: function (index, row) {
+      this.$emit("handleDeleteFlag", { index: index, row: row });
+      // var _keyName = "id";
+      // if (!!this.keyName) {
+      //   _keyName = this.keyName;
+      // }
+      // let ids = row[_keyName];
+      // this.$confirm("确认删除吗?", "提示", {
+      //   type: "warning",
+      // })
+      //   .then(() => {
+      //     let params = [];
+      //     let idArray = (ids + "").split(",");
+      //     for (var i = 0; i < idArray.length; i++) {
+      //       var obj = {};
+      //       obj[_keyName] = idArray[i];
+      //       params.push(obj);
+      //     }
+      //     this.loading = true;
+      //     let callback = (res) => {
+      //       if (res.code == 200) {
+      //         this.$message({
+      //           message: "操作成功",
+      //           type: "success",
+      //         });
+      //         this.findPage();
+      //         // this.$emit('findLeftTreeData')
+      //       } else {
+      //         this.$message({
+      //           message: "操作失败, " + res.msg,
+      //           type: "error",
+      //         });
+      //       }
+      //     };
+      //     this.$emit("handleDeleteFlag", {
+      //       params: params,
+      //       callback: callback,
+      //     });
+      //     this.loading = false;
+      //   })
+      //   .catch(() => {
+      //     this.loading = false;
+      //   });
+    },
+    //批量刷新状态
+    refreshStatusBatch: function () {
+      let idlist = [];
+      this.selections.map((item) => idlist.push(item.subOrderId));
+      this.$emit("refreshStatusBatch", idlist);
+    },
+    // 批量删除
+    handleBatchDelete: function () {
+      let idlist = [];
+      this.selections.map((item) => idlist.push(item.id));
+      this.$emit("handleDelete", idlist);
+    },
+    //自定义批量操作按钮
+    customToolMethod() {
+      let idlist = [];
+      this.selections.map((item) => idlist.push(item.id));
+      this.$emit("customTool", idlist);
+    },
+
+    //自定义批量操作按钮1
+    customToolMethod1() {
+      let idlist = [];
+      this.selections.map((item) => idlist.push(item.id));
+      this.$emit("customTool1", idlist);
+    },
+    //批量导出
+    disableInBulkClick() {
+      let idlist = [];
+      this.selections.map((item) => idlist.push(item.id));
+      this.$emit("disableInBulkClick", idlist);
+    },
+    // 删除操作
+    delete: function (ids) {
+      var _keyName = "id";
+      if (!!this.keyName) {
+        _keyName = this.keyName;
+      }
+
+      this.$confirm("确认删除吗?", "提示", {
+        type: "warning",
+      })
+        .then(() => {
+          let params = [];
+          let idArray = (ids + "").split(",");
+          for (var i = 0; i < idArray.length; i++) {
+            var obj = {};
+            obj[_keyName] = idArray[i];
+            params.push(obj);
+          }
+          let callback = (res) => {
+            if (res.code == 200) {
+              this.$message({
+                message: "操作成功",
+                type: "success",
+              });
+              this.findPage();
+              // this.$emit('findLeftTreeData')
+            } else {
+              this.$message({
+                message: "操作失败, " + res.msg,
+                type: "error",
+              });
+            }
+          };
+          this.$emit("handleDelete", {
+            params: params,
+            callback: callback,
+          });
+        })
+        .catch(() => { });
+    },
+    //批量结算
+    handleBatchSettled: function () {
+      let _keyName = "orderno";
+      if (!!this.keyName) {
+        _keyName = this.keyName;
+      }
+      let idlist = [];
+      this.selections.map((item) => idlist.push(item[_keyName]));
+      this.$emit("handleSettled", idlist);
+    },
+    //批量打印
+    handleBatchPrint: function () {
+      // let _keyName = "orderno";
+      // if(!!this.keyName){
+      //   _keyName = this.keyName;
+      // }
+      // let ids = this.selections.map(item => item[_keyName]).toString()
+      // console.log(ids);
+      this.$emit("handlePrint");
+    },
+  },
+
+  mounted() {
+    const that = this;
+    if (this.showDefaultPage) {
+      that.refreshPageRequest(1);
+    }
+    setTimeout(() => {
+      let tableTop = that.$refs.commonTable.offsetTop;
+      let height = window.innerHeight;
+      that.tableHeight = height - tableTop - 160 + "px";
+    }, 10);
+    // window.onresize = function () {
+    //   let tableTop = that.$refs.commonTable.offsetTop;
+    //   let bottomTop = that.$refs.bottomFixed.offsetTop;
+
+    //   that.tableHeight = bottomTop - tableTop - 120 + "px";
+    // };
+  },
+};
+</script>
+
+<style scoped>
+/deep/ .el-table__fixed-body .el-table__fixed-right {
+  background-color: #f0f0f0;
+  /* 你想要的背景色 */
+}
+
+/deep/ .table-fiexd {
+  background: #fff !important;
+}
+
+/* 底部固定分页 */
+.bottomFixed {
+  height: 40px;
+  /* position: fixed; */
+  bottom: 0;
+  width: 100%;
+  background: #fff;
+  /* margin-top: 10px; */
+  /* box-shadow: 0 -2px 0 0 #efefef; */
+}
+
+/deep/.el-table .el-table__row--striped {
+  background-color: inherit;
+}
+
+.el-table .warningRow {
+  background: oldlace;
+}
+
+.el-table .successRow {
+  background: #f0f9eb;
+}
+
+.el-dropdown-link {
+  cursor: pointer;
+  color: var(--themeColor);
+  font-size: 12px;
+}
+</style>
+<style lang="scss" scoped>
+.tableSelectedCountClass {
+  color: #606266;
+  font-size: 14px;
+  font-weight: bold;
+  margin-left: 10px;
+
+  span {
+    color: red;
+  }
+}
+
+/deep/ .el-tag--plain {
+  background: rgba(93, 125, 255, 0.1);
+  border-radius: 4px;
+  border: 1px solid #5d7dff;
+}
+
+/deep/ .el-tag--plain.el-tag--danger {
+  background: rgba(240, 85, 82, 0.1);
+  border-radius: 4px 4px 4px 4px;
+  border: 1px solid #f05552;
+}
+
+/deep/ .el-tag--plain.el-tag--info {
+  background: rgba(158, 158, 158, 0.1);
+  border-radius: 4px 4px 4px 4px;
+  border: 1px solid #9e9e9e;
+}
+
+/deep/ .el-tag--plain.el-tag--success {
+  background: rgba(81, 189, 44, 0.1);
+  border-radius: 4px 4px 4px 4px;
+  border: 1px solid #51bd2c;
+}
+
+/deep/ .el-tag--plain.el-tag--warning {
+  background: rgba(242, 153, 47, 0.1);
+  border-radius: 4px 4px 4px 4px;
+  border: 1px solid #f2992f;
+}
+</style>

+ 73 - 13
src/views/PeopleManage/Partner/PersonList.vue

@@ -103,7 +103,7 @@
             @keyup.enter.native="nextStep()" label-width="110px" size="small" label-position="top"
             class="personnelInformation">
             <el-row>
-              <el-col :span="8" v-if="dialogTitle == '新增合伙人'">
+              <el-col :span="8">
                 <el-form-item label="合伙人等级" prop="level">
                   <el-select style="width: 100%" v-model="formData.gradeList" placeholder="请选择" clearable multiple
                     popper-class="select-prop" @change="handlelevelChange">
@@ -112,7 +112,7 @@
                   </el-select>
                 </el-form-item>
               </el-col>
-              <el-col :span="8" v-if="dialogTitle == '新增合伙人'">
+              <el-col :span="8">
                 <el-form-item label="上级合伙人" prop="referrerId">
                   <el-select filterable :disabled="formData.gradeList ? formData.gradeList[0] == 1 : false"
                     style="width: 100%" v-model="formData.referrerId" placeholder="请选择" clearable
@@ -257,6 +257,16 @@
         </el-tab-pane>
       </el-tabs>
     </el-dialog>
+    <el-dialog title="提示" :visible.sync="addIdentityShow" width="40%" @close="addIdentityclose">
+      <el-checkbox-group v-model="checkedCities" >
+        <el-checkbox :disabled="item.value<=levelOptions1[levelOptions1.length-1]" v-for="(item, index) in levelOptions"
+          :label="item.value" :key="index">{{ item.label }}</el-checkbox>
+      </el-checkbox-group>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" @click="addIdentityShow = false">取 消</el-button>
+        <el-button size="small" type="primary" @click="addIdentitySave">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -327,6 +337,8 @@ export default {
   },
   data() {
     return {
+      checkedCities: [],
+      addIdentityShow: false,//添加身份弹窗
       formDataDetail: {},
       btnGroup: [{
         name: '新增合伙人',
@@ -349,6 +361,9 @@ export default {
           label: '工作室',
           value: '4'
         },
+      ],
+      levelOptions1: [
+
       ],
       formList: [
         {
@@ -477,7 +492,7 @@ export default {
           },
           { prop: "referrerId", label: "推荐人工号", type: "text" },
           { prop: "referrerName", label: "推荐人名称", type: "text" },
-          { prop: "commissionRate", label: "抽成比例", type: "text" },
+          // { prop: "commissionRate", label: "抽成比例", type: "text" },
           {
             prop: "grade", label: "合伙人级别", type: "statMap",
             options: [
@@ -549,6 +564,14 @@ export default {
               return this.relationship(row);
             },
           },
+          {
+            label: "添加身份",
+            type: 'text',
+            click: (row, index) => {
+              return this.addIdentity(row);
+            },
+          },
+
         ],
       },
       rules: {
@@ -591,11 +614,11 @@ export default {
               },
             ]
           },
-          {
-            prop: "agencyName",
-            label: "机构名称",
-            type: "text",
-          },
+          // {
+          //   prop: "agencyName",
+          //   label: "机构名称",
+          //   type: "text",
+          // },
           { prop: "userId", label: "工号", type: "text" },
           {
             prop: "userName",
@@ -711,7 +734,7 @@ export default {
       relationshipVisible: false,
       listData: {},
       pageResultrelationship: [],
-
+      detailsId: "",
     };
   },
 
@@ -892,7 +915,7 @@ export default {
         .then((res) => {
           this.tableConfig.loading = false;
           this.pageResult = res.data.records;
-          this.pageData.pageNum = res.data.pages;
+          this.pageData.pageNum = res.data.current;
           this.pageData.pageSize = res.data.size;
           this.pageData.totalSize = res.data.total;
         });
@@ -940,6 +963,44 @@ export default {
       this.listData = row
       this.findPagerelationship()
     },
+
+    //添加身份
+    addIdentity(row) {
+      this.detailsId = row.userId;
+      this.$api.insCompany.getUserGradeList(row.userId).then((res) => {
+        if (res.code == '200') {
+          this.levelOptions1 = res.data;
+          this.addIdentityShow = true;
+        } else {
+          this.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+    },
+    addIdentityclose(){
+      this.checkedCities=[];
+    },
+    addIdentitySave() {
+      this.$api.insCompany.addUserIdentity({
+        userId: this.detailsId,
+        gradeList: this.checkedCities,
+      }).then((res) => {
+        if (res.code == '200') {
+          this.$message({
+            type: 'success',
+            message: res.msg,
+          });
+          this.addIdentityShow=false;
+        } else {
+          this.$message({
+            type: 'error',
+            message: res.msg,
+          });
+        }
+      });
+    },
     findPagerelationship() {
       this.$api.insCompany
         .relationalQuery(this.listData.userId)
@@ -1041,11 +1102,10 @@ export default {
         return;
       }
       if (
-        this.currentTreeNode.comlevel != '5' ||
-        this.currentTreeNode.managementSource != '5'
+        this.currentTreeNode.comlevel != '4'
       ) {
         //团队代理人managementSource为2  渠道为1  后线为空
-        this.$message.info("请选择第级机构");
+        this.$message.info("请选择第级机构");
         return;
       }
       this.formData = {