qymljy 2 лет назад
Родитель
Сommit
edbf86816b

+ 18 - 7
src/HDrpManagement/ProductMag/modules/components/addScheme.vue

@@ -29,7 +29,7 @@
               <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true" :height="'600px'">
                 <template v-slot:customcol="scope">
                   <div v-if="scope.column.columnname === 'rewardstart'">
-                    <el-input v-model="scope.column.data.rewardstart" placeholder="请填写"></el-input>
+                    <el-input v-model="scope.column.data.rewardstart" placeholder="请填写" @input="validateInput(scope.column.data.rewardstart,scope.column.data.rewardend)" :error="errorMessage"></el-input>
                   </div>
                   <div v-else-if="scope.column.columnname === 'includerewardstart'">
                     <el-select v-model="scope.column.data.includerewardstart" placeholder="请选择">
@@ -49,7 +49,7 @@
                   <div v-else-if="scope.column.columnname === 'reward_rate'">
                     <el-input v-model="scope.column.data.reward_rate" placeholder="请填写"></el-input>
                   </div>
-                  <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
+                  <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
                 </template>
               </tableLayout>
             </el-col>
@@ -71,7 +71,7 @@ export default {
     return {
       dialogVisible:false,
       form:{
-        "action": "0",//0 新增 1 更新
+        "action": "1",//1 新增 0 更新
         "categories": "",//商品大类
         "categoriesreward": []
       },
@@ -86,7 +86,8 @@ export default {
       categoriesList:[],
       tablecols:[],
       list:[],
-      loading:false
+      loading:false,
+      errorMessage:""
     }
   },
   methods:{
@@ -122,6 +123,17 @@ export default {
       })
       this.categoriesList = res.data
     },
+    validateInput(value1,value2){
+      console.log(value1,value2)
+      if (value1 && value2 !== ''){
+        if (value1 > value2){
+          console.log('3333')
+          this.errorMessage = '不合法'
+          return false
+        }
+      }
+
+    },
     onSubmit(){
       this.form.categoriesreward = this.list
       this.$refs.form.validate(async (valid)=>{
@@ -129,9 +141,8 @@ export default {
         this.form.categoriesreward.forEach(item=>{
           item.rewardstart = item.rewardstart?(item.rewardstart/100).toFixed(4):''
           item.rewardend = item.rewardend?(item.rewardend/100).toFixed(4):''
-          item.reward_rate = item.rewardend?(item.reward_rate/100).toFixed(4):0
+          item.reward_rate = item.reward_rate?(item.reward_rate/100).toFixed(4):0
         })
-        console.log(this.form,'formData')
         const res = await this.$api.requested({
           "id": 20240311150704,
           "content":this.form
@@ -140,7 +151,7 @@ export default {
           this.form.categoriesreward.forEach(item=>{
             item.rewardstart = item.rewardstart?Math.round((item.rewardstart*100)*100)/100:''
             item.rewardend = item.rewardend?Math.round((item.rewardend*100)*100)/100:''
-            item.reward_rate = item.rewardend?Math.round((item.reward_rate*100*100))/100:0
+            item.reward_rate = item.reward_rate?Math.round((item.reward_rate*100)*100)/100:0
           })
         }
         this.tool.showMessage(res,()=>{

+ 54 - 11
src/HDrpManagement/ProductMag/modules/components/commissionSchemeSet.vue

@@ -1,15 +1,24 @@
 <template>
   <div>
-    <el-button size="small" type="primary" @click="dialogVisible = true">提成方案设置</el-button>
+    <el-button size="small" type="primary" @click="dialogVisible = true;listData()">提成方案设置</el-button>
     <el-drawer
         title="提成方案"
         :visible.sync="dialogVisible"
-        size="900px"
+        size="70%"
         direction="rtl"
         append-to-body
         @close="onClose">
-      <div class="drawer__panel">
+      <div class="drawer__panel" style="margin-bottom: 0 !important;">
         <addScheme @addSuccess="listData"></addScheme>
+        <tableMerge ref="tableMerge" style="margin-top: 20px" :layout="tablecols" :data="list" :opwidth="200" :custom="true"  :height="'calc(100vh - 140px)'" :mergeArr="mergeArr" fixedName="operation">
+          <template v-slot:customcol="scope">
+            <p >{{scope.column.data[scope.column.columnname]}}</p>
+          </template>
+          <template v-slot:opreation="scope">
+            <editScheme :data="scope.data" class="inline-16" @editSuccess="listData"></editScheme>
+            <el-button size="mini" type="text" @click="onDel(scope.data)">删 除</el-button>
+          </template>
+        </tableMerge>
       </div>
     </el-drawer>
   </div>
@@ -17,27 +26,61 @@
 
 <script>
 import addScheme from './addScheme'
+import tableMerge from '@/components/dynamic-table-merge/index'
+import editScheme from './editScheme'
 export default {
   name: "commissionSchemeSet",
   data(){
     return {
       dialogVisible:false,
-
+      tablecols:[],
+      list:[],
+      total:0,
+      currentPage:0,
+      mergeArr: ['categories', 'remarks', 'changeby', 'changedate', 'operation'],
+      param:{
+        "id": "20240311150804",
+        "content": {
+        }
+      }
     }
   },
-  components:{addScheme},
+  components:{addScheme,tableMerge,editScheme},
   methods:{
     async listData(){
-      const res = await this.$api.requested({
-        "id": "20240311150804",
-        "content": {
-        }
-      })
-      console.log(res.data,'data11')
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+    },
+    onDel(row){
+      this.$confirm('此操作将永久删除该方案, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const res = await this.$api.requested({
+          "id": 20240313133204,
+          "content": {
+            "categories": row.categories
+          }
+        })
+        this.tool.showMessage(res,()=>{
+          this.listData()
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });
+      });
     },
     onClose(){
 
     }
+  },
+  mounted() {
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).commissionSchemeTable.tablecols
   }
 }
 </script>

+ 188 - 0
src/HDrpManagement/ProductMag/modules/components/editScheme.vue

@@ -0,0 +1,188 @@
+<template>
+  <div>
+    <el-button size="mini" type="text" @click="onEdit(dialogVisible = true)">编 辑</el-button>
+    <el-drawer
+        title="编辑提成方案"
+        :visible.sync="dialogVisible"
+        size="900px"
+        direction="rtl"
+        append-to-body
+        @close="onClose">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="90px" label-position="right" size="mini">
+            <el-col :span="12">
+              <el-form-item label="商品大类" prop="categories">
+                <el-select v-model="form.categories" style="width:100%">
+                  <el-option v-for="item in categoriesList" :key="item.index" :value="item.tag" :label="item.tag"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="产品售价折扣区间及其提成比例:" prop="categoriesreward" label-width="245px">
+                <span style="color:#c0c4cc;">(上限值、下限值表示为牌价的折扣值)</span>
+                <el-button size="small" type="success" style="float: right" @click="delRow" :disabled="list.length === 0">删除末行</el-button>
+                <el-button size="small" type="primary" style="float: right" class="inline-16" @click="addRow">添加行</el-button>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <tableLayout :layout="tablecols" :data="list" :opwidth="200" :custom="true" :height="'600px'">
+                <template v-slot:customcol="scope">
+                  <div v-if="scope.column.columnname === 'rewardstart'">
+                    <el-input v-model="scope.column.data.rewardstart" placeholder="请填写"></el-input>
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'includerewardstart'">
+                    <el-select v-model="scope.column.data.includerewardstart" placeholder="请选择">
+                      <el-option label="是" value="1"></el-option>
+                      <el-option label="否" value="0"></el-option>
+                    </el-select>
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'rewardend'">
+                    <el-input v-model="scope.column.data.rewardend" placeholder="请填写"></el-input>
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'includerewardend'">
+                    <el-select v-model="scope.column.data.includerewardend" placeholder="请选择">
+                      <el-option label="是" value="1"></el-option>
+                      <el-option label="否" value="0"></el-option>
+                    </el-select>
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'reward_rate'">
+                    <el-input v-model="scope.column.data.reward_rate" placeholder="请填写"></el-input>
+                  </div>
+                  <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+                </template>
+              </tableLayout>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="onClose" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" :loading="loading" @click="onSubmit" class="normal-btn-width">确定保存</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "addScheme",
+  props:['data'],
+  data(){
+    return {
+      dialogVisible:false,
+      form:{
+        "action": "0",//1 新增 0 更新
+        "categories": "",//商品大类
+        "categoriesreward": []
+      },
+      rules:{
+        categories:[
+          { required: true, message: '未选择商品大类', trigger: 'change'},
+        ],
+        categoriesreward:[
+          { required: true, message: '未设置产品售价折扣区间及其提成比例', trigger: 'change'},
+        ],
+      },
+      categoriesList:[],
+      tablecols:[],
+      list:[],
+      loading:false
+    }
+  },
+  methods:{
+    onEdit(){
+      this.getCategoriesList()
+      this.listData()
+    },
+    async listData(){
+      const res = await this.$api.requested({
+        "id": "20240313164004",
+        "content": {
+          "categories": this.data.categories
+        }
+      })
+      console.log(res.data)
+      this.form = Object.assign({},this.form,this.data)
+      this.list = res.data
+      this.list.forEach(item=>{
+        item.includerewardstart = item.includerewardstart == '0'?'0':'1'
+        item.includerewardend = item.includerewardend == '0'?'0':'1'
+        item.rewardstart = item.rewardstart?Math.round((item.rewardstart * 100)*100)/100:''
+        item.rewardend = item.rewardend?Math.round((item.rewardend * 100)*100)/100:''
+        item.reward_rate = item.reward_rate?Math.round((item.reward_rate * 100)*100)/100:'0'
+      })
+    },
+    addRow(){
+      this.list.push(
+        {
+          "rewardstart": "",
+          "rewardend": "",
+          "includerewardstart": "0",
+          "includerewardend": "0",
+          "reward_rate": "0",
+          "rowindex":this.list.length + 1
+        }
+      )
+      console.log(this.list,'listData')
+    },
+    delRow(){
+      this.list.pop()
+    },
+    /*获取可选商品大类*/
+    async getCategoriesList () {
+      let res = await this.$api.requested({
+        "id": 20221013104401,
+        "content": {
+          "isExport":1,
+          "pageNumber":1,
+          "pageSize":100,
+          "sys_systemtagid":22,
+        }
+      })
+      this.categoriesList = res.data
+    },
+    onSubmit(){
+      this.form.categoriesreward = this.list
+      this.$refs.form.validate(async (valid)=>{
+        if (!valid) return false
+        this.form.categoriesreward.forEach(item=>{
+          item.rewardstart = item.rewardstart?(item.rewardstart/100).toFixed(4):''
+          item.rewardend = item.rewardend?(item.rewardend/100).toFixed(4):''
+          item.reward_rate = item.reward_rate?(item.reward_rate/100).toFixed(4):0
+        })
+        console.log(this.form,'formData')
+        const res = await this.$api.requested({
+          "id": 20240311150704,
+          "content":this.form
+        })
+        if (res.code === 0){
+          this.form.categoriesreward.forEach(item=>{
+            item.rewardstart = item.rewardstart?Math.round((item.rewardstart*100)*100)/100:''
+            item.rewardend = item.rewardend?Math.round((item.rewardend*100)*100)/100:''
+            item.reward_rate = item.reward_rate?Math.round((item.reward_rate*100)*100)/100:0
+          })
+        }
+        this.tool.showMessage(res,()=>{
+          this.form = {
+            "action": "1",//0 新增 1 更新
+            "categories": "",//商品大类
+            "categoriesreward": []
+          }
+          this.list = []
+          this.dialogVisible = false
+          this.$emit('editSuccess')
+        })
+      })
+    },
+    onClose(){}
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).commissionSet.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 2 - 4
src/HDrpManagement/projectChange/modules/detail.vue

@@ -126,7 +126,7 @@ import PortraitDetail from '@/HDrpManagement/projectPortrait/modules/detail.vue'
 import initiateAuthorization from '../components/initiateAuthorization'
 import auditAuthorization from '../components/auditAuthorization'
 import importFile from '@/template/importFile/index'
-import commissionSet from '@/components/commissionSet/index.vue'
+import commissionSet from '@/components/commissionSetNew/index.vue'
 export default {
   components:{
     reportingProgress,
@@ -493,7 +493,7 @@ export default {
 
 
           {label:'负责人',value:this.mainData.name ? this.mainData.name : '--'},
-          {label:'提成比例',value:this.mainData.reward_rate ? Math.round((this.mainData.reward_rate * 100)*100)/100 + '%': '--'},
+          {label:'修正比例',value:this.mainData.reward_rate ? Math.round((this.mainData.reward_rate * 100)*100)/100 + '%': '--'},
           {label:'提成计算节点',value:this.mainData.reward_point ? this.mainData.reward_point : '--'},
         ],
 
@@ -588,8 +588,6 @@ export default {
 
 
           {label:'负责人',value:this.mainData.name ? this.mainData.name : '--'},
-          {label:'提成比例',value:this.mainData.reward_rate ? Math.round((this.mainData.reward_rate * 100)*100)/100 + '%': '--'},
-          {label:'提成计算节点',value:this.mainData.reward_point ? this.mainData.reward_point : '--'},
         ],
 
         systemInfo: [

+ 0 - 2
src/HManagement/department/staff/detail/modules/main.vue

@@ -13,8 +13,6 @@
           <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="账号名称">{{mainInfo.username?mainInfo.username:'--'}}</el-descriptions-item>
           <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="账号类型">{{mainInfo.usertypename?mainInfo.usertypename:'--'}}</el-descriptions-item>
           <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="授权角色">{{mainInfo.userrole?mainInfo.userrole.map(item => item.remarks).join(','):'--'}}</el-descriptions-item>
-          <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="提成比例">{{mainInfo.reward_rate?Math.round((mainInfo.reward_rate * 100)*100)/100 + '%':'--'}}</el-descriptions-item>
-          <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="提成计算节点">{{mainInfo.reward_point?mainInfo.reward_point:'--'}}</el-descriptions-item>
 <!--        <el-descriptions-item label-class-name="my-label" content-class-name="my-content" label="报备领域">{{mainInfo.tradefield?mainInfo.tradefield:'&#45;&#45;'}}</el-descriptions-item>-->
 <!--          <el-descriptions-item label-class-name="my-label-layout" content-class-name="my-content" label="账号密码">
             <div class="flex-align-center flex-between">

+ 0 - 2
src/HManagement/marketing2/saler/area/detail/modules/detailedData.vue

@@ -13,8 +13,6 @@
         <el-descriptions-item label="汇报对象">{{ detailData.reporthrname?detailData.reporthrname:"--" }}</el-descriptions-item>
         <el-descriptions-item label="是否可编辑订单价格">{{ detailData.iseditprice == '1'?"是":"否" }}</el-descriptions-item>
         <el-descriptions-item label="最低授权折扣(%)" >{{ detailData.discountrate?Math.round((detailData.discountrate*100)*100)/100:"--" }}</el-descriptions-item>
-        <el-descriptions-item label="提成比例" >{{ detailData.reward_rate?Math.round((detailData.reward_rate*100)*100)/100:"--" }}</el-descriptions-item>
-        <el-descriptions-item label="提成计算节点">{{ detailData.reward_point?detailData.reward_point:"--" }}</el-descriptions-item>
       </el-descriptions>
     </div>
 

+ 1 - 1
src/SDrpManagement/salerPrivatecustomer/detail/customerDetail.vue

@@ -92,7 +92,7 @@ import bankCard from './modules/bankCard/index'
 import duplicatesCustomer from "@/components/duplicatesData/duplicatesCustomer";
 import mindmap from "@/components/mindmap/index.vue";
 import PortraitDetail from '@/HDrpManagement/customerPortrait/modules/detail.vue'
-import commissionSet from '@/components/commissionSet/index.vue'
+import commissionSet from '@/components/commissionSetNew/index.vue'
 export default {
   name: "detail",
   data() {

+ 1 - 1
src/SDrpManagement/salerPrivatecustomer/detail/modules/detailedData.vue

@@ -46,7 +46,7 @@
         </el-descriptions-item>
         <el-descriptions-item label-class-name="my-label" label="负责人">{{ data.leader?data.leader.length !== 0 ?data.leader[0].name:'--':"--" }}</el-descriptions-item>
 
-        <el-descriptions-item label-class-name="my-label" label="提成比例">
+        <el-descriptions-item label-class-name="my-label" label="修正比例">
           <span >{{ data.reward_rate?Math.round((data.reward_rate * 100)*100)/100 + '%':"--" }}</span>
         </el-descriptions-item>
         <el-descriptions-item label-class-name="my-label" label="提成计算节点">

+ 98 - 0
src/components/commissionSetNew/index.vue

@@ -0,0 +1,98 @@
+<template>
+  <div>
+    <el-button  size="mini" type="primary" @click="onShow">设置提成</el-button>
+    <el-dialog title="设置提成" :visible.sync="dialogFormVisible" width="650px" append-to-body :show-close="false">
+      <div slot="title" style="font-size: 15px">
+        设置提成
+      </div>
+      <el-row :gutter="20">
+        <el-form :model="form" :rules="rules" ref="form" label-width="130px" label-position="right" size="mini">
+          <el-col :span="24">
+            <el-form-item label="提成计算节点:" prop="reward_point">
+              <el-checkbox-group v-model="form.reward_point">
+                <el-checkbox :label="'订单审核'">订单审核</el-checkbox>
+                <el-checkbox :label="'物流单审核'">物流单审核</el-checkbox>
+                <el-checkbox :label="'开票审核'">开票审核</el-checkbox>
+                <el-checkbox :label="'核销单审核'">核销单审核</el-checkbox>
+              </el-checkbox-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item  label="修正比例:" prop="reward_rate">
+              <el-input   v-model="form.reward_rate" placeholder="请填写百分比"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <div class="dialog-footer">
+        <el-button size="small" @click="onClose(dialogFormVisible = false)" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "index",
+  props:["ownertable"],
+  data(){
+    var NumberSize = (rule, value, callback) => {
+      if (value === ''){
+        callback()
+      }else if (isNaN(parseFloat(value))){
+        return callback(new Error('请填写增量或减量的百分比%'))
+      }
+      callback()
+    }
+    return {
+      dialogFormVisible:false,
+      form:{
+        ownertable: "",
+        ownerid: '',
+        reward_point: [],
+        reward_rate:'0'
+      },
+      rules:{
+        reward_point:[
+          { required: true, message: '选择提成计算节点', trigger: 'change'},
+        ],
+        reward_rate:[
+          { required: false, message: '设置提成比例', trigger: 'change'},
+          { pattern:/^[0-9]+\.{0,1}[0-9]{0,4}$/,message: '请填写增量或减量的百分比%',trigger: 'change'},
+          { validator: NumberSize, trigger: 'change'}
+        ]
+      }
+    }
+  },
+  methods:{
+    onShow(){
+      this.dialogFormVisible = true
+    },
+    onSubmit(){
+      this.$refs.form.validate(async (valid)=>{
+        if (!valid) return false
+        this.form.ownertable = this.ownertable
+        this.form.ownerid = this.$route.query.id
+        this.form.reward_rate = (this.form.reward_rate / 100).toFixed(4)
+        const res = await this.$api.requested({
+          "id": 20240111084904,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.dialogFormVisible = false
+          this.$refs.form.resetFields()
+          this.$emit('setSuccess')
+        })
+      })
+    },
+    onClose(){
+      this.$refs.form.resetFields()
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 111 - 0
src/components/dynamic-table-merge/index.vue

@@ -0,0 +1,111 @@
+<template>
+  <div>
+    <!-- :header-cell-style="{background:'#EEEEEE',color:'#333'}" -->
+    <el-table ref="table" :row-class-name="tableClassName"  :data="data"  size="mini" :height="height ? height : data.length <= 4?'260px':data.length <= 20?'calc(100vh - 420px)':'calc(100vh - 420px)'"  @row-click="rowClick" style="width:100%" :header-cell-style="{height:'40px',color:'#606266',fontWeight:'400',fontSize:'14px'}"
+              :cell-style="{height:'40px',color:'#666666',fontWeight:'400'}" border @selection-change="selectionChange" :span-method="objectSpanMethod">
+      <el-table-column
+          type="selection"
+          width="35" fixed v-if="checkbox">
+      </el-table-column>
+      <el-table-column v-for="col in layout" :key="col.tablecolid" :prop="col.columnname" :label="col.title" :width="width && col.width === 0 ? 150 : col.width" :fixed="fixedName ? fixedName.indexOf(col.columnname)!= -1?redirect ? redirect : 'right' :false : false">
+        <template v-slot:header="{ column,$index }" v-if="customHeader">
+          <slot name="header" :data="column"></slot>
+        </template>
+        <template slot-scope="scope">
+          <div class="table-panel">
+            <!-- 自定义表格显示内容 -->
+            <slot v-if="custom" name="customcol" :column="{data:scope.row,columnname:col.columnname}"></slot>
+            <!-- 否则就是默认 -->
+            <span v-else>{{scope.row[col.columnname]}}</span>
+            <!-- 操作结构内容 -->
+            <slot v-if="col.columnname === 'operation'" name="opreation" :data="scope.row"></slot>
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+import {mapGetters} from "vuex"
+export default {
+  /*
+    layout:表结构数据;
+    data:表渲染数据;
+    custom:是否启用自定义结构;
+    opwidth:操作列宽度
+  */
+  props:['layout','data','custom','height','fixedName','width','checkbox','redirect','customHeader','mergeArr'],
+  data () {
+    return {
+      list:[],
+      mergeObj: {},
+    }
+  },
+  computed:{
+    ...mapGetters({
+      loading:'loading'
+    })
+  },
+  methods:{
+    rowClick (row) {
+      this.$emit('rowClick',row)
+    },
+    tableClassName ({row,rowIndex}) {
+      row.index = rowIndex
+    },
+    selectionChange(row){
+      this.$emit('selectionChange',row)
+    },
+    getSpanArr(data) {
+      this.mergeArr.forEach((key, index1) => {
+        let count = 0; // 用来记录需要合并行的起始位置
+        this.mergeObj[key] = []; // 记录每一列的合并信息
+        data.forEach((item, index) => {
+          // index == 0表示数据为第一行,直接 push 一个 1
+          if(index === 0) {
+            this.mergeObj[key].push(1);
+          } else {
+            // 判断当前行是否与上一行其值相等 如果相等 在 count 记录的位置其值 +1 表示当前行需要合并 并push 一个 0 作为占位
+            if(item[key] === data[index - 1][key]) {
+              this.mergeObj[key][count] += 1;
+              this.mergeObj[key].push(0);
+            } else {
+              // 如果当前行和上一行其值不相等
+              count = index; // 记录当前位置
+              this.mergeObj[key].push(1); // 重新push 一个 1
+            }
+          }
+        })
+      })
+    },
+    // 默认接受四个值 { 当前行的值, 当前列的值, 行的下标, 列的下标 }
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      this.mergeObj.changeby = this.mergeObj.categories
+      this.mergeObj.operation = this.mergeObj.categories
+      // 判断列的属性
+      if(this.mergeArr.indexOf(column.property) !== -1) {
+        // 判断其值是不是为0
+        if(this.mergeObj[column.property][rowIndex]) {
+          return [this.mergeObj[column.property][rowIndex], 1]
+        } else {
+          // 如果为0则为需要合并的行
+          return [0, 0];
+        }
+      }
+    }
+  },
+  watch:{
+    'data':function (val) {
+      console.log(val,'数据')
+      this.getSpanArr(val)
+    }
+  },
+  mounted () {
+    /*this.getSpanArr(this.data)*/
+  }
+}
+
+</script>
+<style>
+</style>