浏览代码

Merge branch 'greenUrgent' into mergeBranch

qymljy 1 年之前
父节点
当前提交
10cd1b9497

+ 216 - 56
src/Form/commissionDistribution/add.vue

@@ -1,10 +1,10 @@
 <template>
   <div>
-    <el-button size="small" type="primary"  @click="dialogVisible = true;listData()">新 建</el-button>
+    <el-button size="small" type="primary" @click="addShow">新 建</el-button>
     <el-drawer
         title="新建提成发放清单"
         :visible.sync="dialogVisible"
-        size="80%"
+        size="90%"
         direction="rtl"
         append-to-body
         @close="onClose">
@@ -13,40 +13,109 @@
           <el-form :model="form" :rules="rules" ref="formRef" label-width="120px" label-position="left" size="mini">
             <el-col :span="24">
               <el-form-item label="请选择收入凭证:" >
-                  <div style="float: left;margin-left: 20px" class="search__label">审核时间:</div>
+                <div class="inline-16 mt-10">
+                  <div class="search__label">审核时间:</div>
                   <el-date-picker
                       v-model="auditDate"
                       @change="selectChange"
                       type="daterange"
-                      style="width:200px;float: left"
+                      size="small"
                       format="yyyy-MM-dd"
                       value-format="yyyy-MM-dd"
                       range-separator="至"
                       start-placeholder="开始日期"
                       end-placeholder="结束日期">
                   </el-date-picker>
-                  <div style="margin-left: 20px;float: left" class="search__label">回款比例(%):</div>
-                  <div style="float: left">
-                    <el-input v-model="begrate" style="width: 200px" placeholder="请输入回款比例" @change="rateChange" :clearable="true"></el-input> —
-                    <el-input v-model="endrate" style="width: 200px" placeholder="请输入回款比例" @change="rateChange" :clearable="true"></el-input>
+                </div>
+                <div class="inline-16 mt-10">
+                  <div class="search__label inline-16" >回款比例(%):</div>
+                  <div class="inline-16">
+                    <el-input v-model="begrate" :clearable="true" placeholder="请输入回款比例" size="small"
+                              style="width: 200px" @change="rateChange"></el-input>
+                    —
+                    <el-input v-model="endrate" :clearable="true" placeholder="请输入回款比例" size="small"
+                              style="width: 200px" @change="rateChange"></el-input>
                   </div>
-                <div style="margin-left: 20px;float: left" class="search__label">搜索:</div>
-                <div>
-                  <el-input v-model="param.content.where.condition" style="width: 200px" placeholder="单号、业务员、部门、备注" @change="listData" :clearable="true"></el-input>
+                </div>
+                <div class="inline-16 mt-10">
+                  <label class="search__label">部门:</label>
+                  <el-cascader ref="selectdep" v-model="depment" :options="deplist" :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
+                               clearable
+                               size="small" @change="selectDep"></el-cascader>
+                </div>
+                <div class="inline-16 mt-10">
+                  <div style="margin-left: 20px;float: left" class="search__label">搜索:</div>
+                    <el-input v-model="param.content.where.condition" :suffix-icon="param.content.where.condition?'':'el-icon-search'"
+                              class="input-with-select inline-16 layout_search__panel"
+                              clearable
+                              placeholder="搜索"
+                              size="small" style="width:200px;"
+                              @clear="listData(param.content.pageNumber = 1)" @keyup.native.enter="listData(param.content.pageNumber = 1)">
+                    </el-input>
                 </div>
               </el-form-item>
              </el-col>
             <el-col :span="24">
-                <tableNewLayout style="margin-bottom: 20px" ref="tableRef" :checkbox="true" :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 410px)" :width="true" :custom="true" @selectionChange="selectionChange">
-                  <template v-slot:customcol="scope">
-                    <div v-if="scope.column.columnname === 'rate'">
-                      <div>{{scope.column.data.rate?Math.round((scope.column.data.rate * 100)*100)/100 + '%':'0%'}}</div>
+              <tableNewLayout ref="tableRef" :checkbox="true" :custom="true" :data="list" :layout="tablecols"
+                              :opwidth="200" :width="true" height="calc(100vh - 450px)"
+                              @selectionChange="selectionChange">
+                <template v-slot:customcol="scope">
+                  <div v-if="scope.column.columnname === 'orderrate'">
+                    <div>
+                      {{ scope.column.data.orderrate ? Math.round((scope.column.data.orderrate * 100) * 100) / 100 + '%' : scope.column.data.orderrate == 0?'0%' :'--'}}
                     </div>
-                    <div v-else>
-                      {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
-                    </div>
-                  </template>
-                </tableNewLayout>
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'rate'">
+                    {{scope.column.data[[scope.column.columnname]]?Math.round((scope.column.data[[scope.column.columnname]] * 100) * 100) / 100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%' :'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'allocation_rate'">
+                    {{scope.column.data[[scope.column.columnname]]?Math.round((scope.column.data[[scope.column.columnname]] * 100) * 100) / 100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%' :'--'}}
+                  </div>
+
+                  <div v-else-if="scope.column.columnname === 'amount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'orderamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'orderprice'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'price'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'cashbilldetailamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'rewardamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'payapplyamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else>
+                    {{ scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation' ? scope.column.data[[scope.column.columnname]] : '--' }}
+                  </div>
+                </template>
+              </tableNewLayout>
+              <div class="container normal-panel" style="text-align:right">
+                <el-pagination
+                    :current-page="currentPage"
+                    :page-size="100"
+                    :page-sizes="[100, 150, 200, 250]"
+                    :total="total"
+                    background
+                    layout="total,sizes, prev, pager, next, jumper"
+                    @size-change="handleSizeChange"
+                    @current-change="handleCurrentChange">
+                </el-pagination>
+              </div>
             </el-col>
             <el-col :span="24">
               <el-form-item label="备注:" prop="remarks">
@@ -71,49 +140,66 @@ export default {
   name: "add",
   data(){
     return {
-      dialogVisible:false,
-      tablecols:[],
-      auditDate:'',
-      begrate:'',
-      endrate:'',
-      list:[],
-      form:{
-        "sa_hrpayapplyid":0,
+      dialogVisible: false,
+      tablecols: [],
+      auditDate: '',
+      begrate: '',
+      endrate: '',
+      list: [],
+      total: 0,
+      currentPage: 0,
+      form: {
+        "sa_hrpayapplyid": 0,
         "billdate": new Date().getFullYear() + '-' + (new Date().getMonth() + 1) + '-' + new Date().getDate(),
-        "billno":"",
-        "remarks":"",
+        "billno": "",
+        "remarks": "",
         "hrpayapplydetail": []
       },
-      rules:{},
-      param:{
+      rules: {},
+      param: {
         "id": 20240117140304,
         "content": {
-          "sa_hrpayapplyid":0,
+          "sa_hrpayapplyid": 0,
           "pageNumber": 1,
-          "pageSize": 99999,
-          "where":{
-            "condition":"",
-            "begdate":"",
-            "enddate":"",
-            "status":"",
-            "begrate":'',//开始回款比例
-            "endrate":'' //截止回款比例
+          "pageSize": 100,
+          "where": {
+            "condition": "",
+            "begdate": "",
+            "enddate": "",
+            "status": "",
+            "begrate": '',//开始回款比例
+            "endrate": '' //截止回款比例
           }
         }
-      }
+      },
+      depmentParam: {
+        classname: "webmanage.department.department",
+        method: "querydepartment",
+        content: {}
+      },
+      depment: '',
+      deplist: []
     }
   },
-  methods:{
-    async listData(){
+  methods: {
+    addShow() {
+      this.dialogVisible = true;
+      this.listData(this.param.content.pageNumner = 1);
+      this.departmentrtment()
+    },
+    async listData() {
       const res = await this.$api.requested(this.param)
       this.list = res.data
+      this.total = res.total;
+      this.currentPage = res.pageNumber
     },
-    selectionChange(row){
-      this.form.hrpayapplydetail = row.map(item=>{
+    selectionChange(row) {
+      console.log(row, 'rows');
+      this.form.hrpayapplydetail = row.map(item => {
         return {
-          "sa_hrpayapplydetailid": 0,
-          "remarks": item.remarks,
-          "sa_hrcashbillid": item.sa_hrcashbillid
+          "sa_hrcashbilldetailid": item.sa_hrcashbilldetailid,
+          "sa_hrcashbillid": item.sa_hrcashbillid,
+          "amount": item.amount
         }
       })
     },
@@ -152,20 +238,94 @@ export default {
         this.param.content.where.begdate = ''
         this.param.content.where.enddate = this.auditDate[1]
       }
-      this.listData()
+      this.listData(this.param.content.pageNumner = 1)
     },
-    rateChange(){
-      if (this.begrate && this.endrate){
-        const begrate = this.begrate /100
-        const endrate = this.endrate /100
+    rateChange() {
+      if (this.begrate && this.endrate) {
+        const begrate = this.begrate / 100;
+        const endrate = this.endrate / 100;
         this.param.content.where.begrate = begrate.toFixed(4)
         this.param.content.where.endrate = endrate.toFixed(4)
-      }else {
+      } else {
         this.param.content.where.begrate = ''
         this.param.content.where.endrate = ''
       }
+      this.listData(this.param.content.pageNumner = 1)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val;
       this.listData()
-    }
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val;
+      this.listData()
+    },
+    async departmentrtment() {
+      const res = await this.$api.requested(this.depmentParam);
+      this.deplist = this.createMenu(res.data)
+    },
+    createMenu(array) {
+      var that = this;
+      let arr = [];
+
+      function convertToElementTree(node) {
+        // 新节点
+        if (node.subdep.length === 0) {
+          var elNode = {
+            label: node["depname"],
+            parentid: node['parentid'],
+            parentname: node['parentname'],
+            departmentid: node["departmentid"],
+            value: node["departmentid"],
+            remarks: node["remarks"],
+            isused: node["isused"],
+            changedate: node['changedate'],
+            changeby: node['changeby'],
+            createdate: node['createdate'],
+            createby: node['createby'],
+            depno: node['depno'],
+            disabled: that.pageOnlyRead,
+          }
+        } else {
+          var elNode = {
+            label: node["depname"],
+            parentid: node['parentid'],
+            parentname: node['parentname'],
+            departmentid: node["departmentid"],
+            value: node["departmentid"],
+            remarks: node["remarks"],
+            isused: node["isused"],
+            changedate: node['changedate'],
+            changeby: node['changeby'],
+            createdate: node['createdate'],
+            createby: node['createby'],
+            depno: node['depno'],
+            disabled: that.pageOnlyRead,
+            children: []
+          }
+        }
+        if (node.subdep && node.subdep.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.subdep.length; index++) {
+            // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+            elNode.children.push(convertToElementTree(node.subdep[index]));
+          }
+        }
+        return elNode;
+      }
+
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
+    },
+    selectDep(val) {
+      this.person = '';
+      this.param.content.where.departmentid = val[val.length - 1];
+      this.listData(this.param.content.pageNumner = 1)
+    },
   },
   created() {
     this.tablecols = this.tool.tabelCol(this.$route.name).incomeSelectTable.tablecols

+ 1 - 1
src/Form/commissionDistribution/edit.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-button size="small" :type="data.status == '发放'?'':'primary'"  @click="onShow(dialogVisible = true)" :disabled="data.status == '发放'">编 辑</el-button>
+    <el-button size="mini" :type="data.status == '发放'?'':'primary'"  @click="onShow(dialogVisible = true)" :disabled="data.status == '发放'">编 辑</el-button>
     <el-drawer
         title="编辑提成发放清单"
         :visible.sync="dialogVisible"

+ 53 - 18
src/Form/salerExpenditure/add.vue

@@ -4,13 +4,13 @@
     <el-drawer
         title="新建支出凭证"
         :visible.sync="dialogVisible"
-        size="800px"
+        size="70%"
         direction="rtl"
         append-to-body
         @close="onClose">
       <div class="drawer__panel">
         <el-row :gutter="20">
-          <el-form :model="form" :rules="rules" ref="formRef" label-width="90px" label-position="right" size="mini">
+          <el-form :model="form" :rules="rules" ref="formRef" label-width="120px" label-position="right" size="mini">
             <el-col :span="24">
               <el-form-item label="业务员:" prop="hrid">
                 <el-popover
@@ -56,26 +56,53 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="金额:" prop="amount">
-                <el-input v-model="form.amount" placeholder="请填写金额" v-on:input="validateInput"></el-input>
+              <el-form-item label="备注:" prop="remarks">
+                <el-input v-model="form.remarks" type="textarea" rows="5" placeholder="请输入备注信息"></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="收入凭证:" prop="source_hrcashbill">
+              <el-form-item label="收入凭证明细:" prop="hrcashbilldetail">
+                <el-input style="width:300px;margin-bottom: 10px" placeholder="搜索" :suffix-icon="income.param.content.where.condition?income.param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="income.param.content.where.condition" @keyup.native.enter="incomeData(income.param.content.pageNumber = 1)" @clear="incomeData(income.param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+                </el-input>
                 <tableNewLayout ref="tableRef" :checkbox="true" :layout="income.tablecols" :data="income.list" :opwidth="200" height="calc(100vh - 440px)" :width="true" :custom="true" @selectionChange="selectionChange">
                   <template v-slot:customcol="scope">
-                    <div>
+                    <div v-if="scope.column.columnname === 'amount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'orderprice'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'orderamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'price'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'rewardamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'payapplyamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'rate'">
+                      {{scope.column.data[[scope.column.columnname]]?Math.round(tool.formatAmount(scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'allocation_rate'">
+                      {{scope.column.data[[scope.column.columnname]]?Math.round(tool.formatAmount(scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+                    </div>
+                    <div v-else>
                       {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
                     </div>
                   </template>
                 </tableNewLayout>
               </el-form-item>
             </el-col>
-            <el-col :span="24">
-              <el-form-item label="备注:" prop="remarks">
-                <el-input v-model="form.remarks" type="textarea" rows="5" placeholder="请输入备注信息"></el-input>
-              </el-form-item>
-            </el-col>
           </el-form>
         </el-row>
       </div>
@@ -109,7 +136,7 @@ export default {
         "subclass": "",
         "remarks": "",
         "amount": "",
-        "source_hrcashbill": [ ] //用于建支出凭证时传选择的收入凭证信息
+        "hrcashbilldetail": [] //用于建支出凭证时传选择的收入凭证信息
       },
       rules:{
         hrid:[
@@ -118,8 +145,8 @@ export default {
         sa_hraccountclassid:[
           { required: true, message: '未选择账户类型', trigger: 'change'},
         ],
-        source_hrcashbill:[
-          { required: true, message: '未选择收入凭证', trigger: 'blur'},
+        hrcashbilldetail:[
+          { required: true, message: '未选择收入凭证', trigger: 'change'},
         ],
         amount:[
           { required: true, message: '金额不可为空', trigger: 'change'},
@@ -152,7 +179,7 @@ export default {
           "id": 20240111143204,
           "content": {
             "pageNumber": 1,
-            "pageSize": 999,
+            "pageSize": 99999,
             "sa_hraccountclassid":"",
             "hrid":"",
             "where": {
@@ -233,10 +260,18 @@ export default {
     },
     /*已选业务员*/
     selectionChange(row){
-      this.form.source_hrcashbill =  row.map(item =>{
+      this.form.hrcashbilldetail =  row.map(item =>{
         return {
-          "ownerid":item.sa_hrcashbillid,
-          "amount":item.amount
+          "sa_hrcashbilldetailid": 0,
+          "allocation_rate": item.allocation_rate,
+          "ownerid": item.sa_hrcashbilldetailid,
+          "rate": item.rate,
+          "price": item.price,
+          "sa_orderitemsid": item.sa_orderitemsid,
+          "sa_orderid": item.sa_orderid,
+          "remarks": '',
+          "orderprice": item.orderprice,
+          "amount": item.amount
         }
       })
     },

+ 263 - 0
src/Form/salerExpenditure/addCopy.vue

@@ -0,0 +1,263 @@
+<template>
+  <div>
+    <el-button size="small" type="primary"  @click="dialogVisible = true">新 建</el-button>
+    <el-drawer
+        title="新建支出凭证"
+        :visible.sync="dialogVisible"
+        size="800px"
+        direction="rtl"
+        append-to-body
+        @close="onClose">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="formRef" label-width="90px" label-position="right" size="mini">
+            <el-col :span="24">
+              <el-form-item label="业务员:" prop="hrid">
+                <el-popover
+                    placement="bottom"
+                    v-model="isShow"
+                    width="600"
+                    trigger="click">
+                  <el-input  style="width:200px;margin-bottom: 10px" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+                  </el-input>
+                  <tableNewLayout :layout="tablecols" :data="list" :opwidth="200" height="400px" :width="true" :custom="true" @rowClick="rowClick">
+                    <template v-slot:customcol="scope">
+                      <div>
+                        {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
+                      </div>
+                    </template>
+                  </tableNewLayout>
+                  <div  class="container normal-panel" style="text-align:right">
+                    <el-pagination
+                        background
+                        @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange"
+                        :current-page="currentPage"
+                        :page-sizes="[20, 50, 100, 200]"
+                        :page-size="20"
+                        layout="total,sizes, prev, pager, next, jumper"
+                        :total="total">
+                    </el-pagination>
+                  </div>
+                  <el-input slot="reference" v-model="form.name" placeholder="请选择业务员" readonly @focus="listData"></el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="账户类型:" prop="sa_hraccountclassid">
+                <el-select v-model="form.sa_hraccountclassid" placeholder="请选择账户类型" style="width: 100%" @change="incomeData">
+                  <el-option
+                      v-for="item in accountData"
+                      :key="item.sa_hraccountclassid"
+                      :label="item.hraccountname"
+                      :value="item.sa_hraccountclassid">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="金额:" prop="amount">
+                <el-input v-model="form.amount" placeholder="请填写金额" v-on:input="validateInput"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="收入凭证:" prop="source_hrcashbill">
+                <tableNewLayout ref="tableRef" :checkbox="true" :layout="income.tablecols" :data="income.list" :opwidth="200" height="calc(100vh - 440px)" :width="true" :custom="true" @selectionChange="selectionChange">
+                  <template v-slot:customcol="scope">
+                    <div>
+                      {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
+                    </div>
+                  </template>
+                </tableNewLayout>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="备注:" prop="remarks">
+                <el-input v-model="form.remarks" type="textarea" rows="5" placeholder="请输入备注信息"></el-input>
+              </el-form-item>
+            </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"  @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add",
+  data(){
+    return {
+      dialogVisible:false,
+      isShow:false,
+      tablecols:[],
+      list:[],
+      currentPage:0,
+      total:0,
+      form:{
+        "sa_hrcashbillid": "0",
+        "hrid": '',
+        "name":'',
+        "sa_hraccountclassid": "",
+        "type": "0", //1收 0支
+        "billdate": new Date().getFullYear() + '-' + (new Date().getMonth() + 1) + '-' + new Date().getDate(),
+        "class": "",
+        "subclass": "",
+        "remarks": "",
+        "amount": "",
+        "source_hrcashbill": [ ] //用于建支出凭证时传选择的收入凭证信息
+      },
+      rules:{
+        hrid:[
+          { required: true, message: '未选择业务员', trigger: 'change'},
+        ],
+        sa_hraccountclassid:[
+          { required: true, message: '未选择账户类型', trigger: 'change'},
+        ],
+        source_hrcashbill:[
+          { required: true, message: '未选择收入凭证', trigger: 'blur'},
+        ],
+        amount:[
+          { required: true, message: '金额不可为空', trigger: 'change'},
+        /*  { pattern:/^[0-9]+\.{0,1}[0-9]{0,6}$/,message: '输入不合法,请输入数值',trigger: 'change'},*/
+        ],
+      },
+      param:{
+        "id": 20240111143104,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "condition": ""
+          }
+        }
+      },
+      accountType:{
+        "id": 20240111085104,
+        "content": {
+          "pageSize": 9999,
+          "pageNumber": 1,
+          "where": {}
+        }
+      },
+      accountData:[],
+      income:{
+        tablecols:[],
+        list:[],
+        param:{
+          "id": 20240111143204,
+          "content": {
+            "pageNumber": 1,
+            "pageSize": 999,
+            "sa_hraccountclassid":"",
+            "hrid":"",
+            "where": {
+              "condition": ""
+            }
+          }
+        }
+      }
+    }
+  },
+  methods:{
+    validateInput() {
+      // 使用正则表达式验证输入是否为数值
+      this.form.amount = this.form.amount.replace(/[^-0-9][^\d.]/g, '');
+    },
+    /*可选业务员*/
+    async listData(){
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.currentPage = res.pageNumber
+      this.total = res.total
+    },
+    /*可选收入凭证*/
+    async incomeData(){
+      this.income.param.content.hrid = this.form.hrid
+      this.income.param.content.sa_hraccountclassid = this.form.sa_hraccountclassid
+      const res = await this.$api.requested(this.income.param)
+      this.income.list = res.data
+    },
+    onClose(){
+      this.dialogVisible = false
+      this.income.list = []
+      this.form.name = ''
+      this.form.hrid = ''
+      this.$refs.tableRef.$refs.table.clearSelection()
+      this.$refs.formRef.resetFields()
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    rowClick(row){
+      this.isShow = false
+      this.form.name = row.name
+      this.form.hrid = row.hrid
+      if (this.form.sa_hraccountclassid !== ''){
+        this.incomeData()
+      }
+    },
+    onSubmit(){
+      this.$refs.formRef.validate(async (valid)=>{
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20240111085604,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.dialogVisible = false
+          this.income.list = []
+          this.$refs.tableRef.$refs.table.clearSelection()
+          this.$refs.formRef.resetFields()
+          this.form.name = ''
+          this.form.hrid = ''
+          this.$emit('onSuccess')
+        })
+      })
+    },
+    /*获取账户类型*/
+    async queryAccountType(){
+      const res = await this.$api.requested(this.accountType)
+      this.accountData = res.data
+    },
+    /*已选业务员*/
+    selectionChange(row){
+      this.form.source_hrcashbill =  row.map(item =>{
+        return {
+          "ownerid":item.sa_hrcashbillid,
+          "amount":item.amount
+        }
+      })
+    },
+  },
+  watch:{
+    'isShow':function (val){
+      this.param.content.where.condition = ''
+    }
+  },
+  mounted() {
+    this.queryAccountType()
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).salerSelectTable.tablecols
+    this.income.tablecols = this.tool.tabelCol(this.$route.name).incomeSelectTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+/deep/ .el-input__validateIcon {
+  display: none;
+}
+</style>

+ 86 - 12
src/Form/salerIncome/add.vue

@@ -4,7 +4,7 @@
     <el-drawer
         title="新建收入凭证"
         :visible.sync="dialogVisible"
-        size="800px"
+        size="70%"
         direction="rtl"
         append-to-body
         @close="onClose">
@@ -45,7 +45,7 @@
             </el-col>
             <el-col :span="24">
               <el-form-item label="账户类型:" prop="sa_hraccountclassid">
-                <el-select v-model="form.sa_hraccountclassid" placeholder="请选择账户类型" style="width: 100%">
+                <el-select v-model="form.sa_hraccountclassid" placeholder="请选择账户类型" style="width: 100%" @change="accountclassChange">
                   <el-option
                       v-for="item in accountData"
                       :key="item.sa_hraccountclassid"
@@ -56,8 +56,31 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="金额:" prop="amount">
-                <el-input v-model="form.amount" placeholder="请填写金额" v-on:input="validateInput"></el-input>
+              <el-form-item label="订单:" >
+                <el-input style="width:300px;margin-bottom: 10px" placeholder="搜索" :suffix-icon="orderParam.content.where.condition?orderParam.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="orderParam.content.where.condition" @keyup.native.enter="orderData(orderParam.content.pageNumber = 1)" @clear="orderData(orderParam.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+                </el-input>
+                <tableNewLayout ref="tableRef" :checkbox="true" :layout="orderTablecols" :data="orderList" :opwidth="200" height="calc(100vh - 440px)" :width="true" :custom="true" @selectionChange="selectionChange">
+                  <template v-slot:customcol="scope">
+                    <div v-if="scope.column.columnname === 'amount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'rewardamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'payapplyamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                    </div>
+                    <div v-else>
+                      {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
+                    </div>
+                  </template>
+                </tableNewLayout>
               </el-form-item>
             </el-col>
             <el-col :span="24">
@@ -70,13 +93,15 @@
       </div>
       <div class="fixed__btn__panel">
         <el-button size="small" @click="onClose" class="normal-btn-width">取 消</el-button>
-        <el-button size="small" type="primary"  @click="onSubmit" class="normal-btn-width">确 定</el-button>
+        <el-button size="small" type="primary"  @click="onSubmit" class="normal-btn-width" :loading="loading">确 定</el-button>
       </div>
     </el-drawer>
   </div>
 </template>
 
 <script>
+import {mapGetters} from "vuex";
+
 export default {
   name: "add",
   data(){
@@ -98,12 +123,7 @@ export default {
         "subclass": "",
         "remarks": "",
         "amount": "",
-        "source_hrcashbill": [  //用于建支出凭证时传选择的收入凭证信息
-          {
-            "ownerid": "",
-            "amount": ""
-          }
-        ]
+        'sa_orderid':"",
       },
       rules:{
         hrid:[
@@ -135,9 +155,28 @@ export default {
           "where": {}
         }
       },
-      accountData:[]
+      accountData:[],
+      orderParam:{
+        "id": 20240625140304,
+        "content": {
+          "hrid":"",
+          "sa_hraccountclassid":"",
+          "pageNumber": 1,
+          "pageSize": 999999,
+          "where": {
+            "condition": ""
+          }
+        }
+      },
+      orderList:[],
+      orderTablecols:[]
     }
   },
+  computed:{
+    ...mapGetters({
+      loading:'loading'
+    })
+  },
   methods:{
     validateInput() {
       // 使用正则表达式验证输入是否为数值
@@ -154,6 +193,8 @@ export default {
       this.$refs.formRef.resetFields()
       this.form.name = ''
       this.form.hrid = ''
+      this.form.sa_orderid = ''
+      this.orderList = []
     },
     handleSizeChange(val) {
       // console.log(`每页 ${val} 条`);
@@ -169,19 +210,26 @@ export default {
       this.isShow = false
       this.form.name = row.name
       this.form.hrid = row.hrid
+      if (this.form.sa_hraccountclassid && this.form.hrid){
+        this.orderData(this.orderParam.content.pageNumber = 1)
+      }
     },
     onSubmit(){
       this.$refs.formRef.validate(async (valid)=>{
         if (!valid) return false
+        this.$store.commit('setLoading',true)
         const res = await this.$api.requested({
           "id": 20240111085604,
           "content": this.form
         })
+        this.$store.commit('setLoading',false)
         this.tool.showMessage(res,()=>{
           this.dialogVisible = false
           this.$refs.formRef.resetFields()
           this.form.name = ''
           this.form.hrid = ''
+          this.form.sa_orderid = ''
+          this.orderList = []
           this.$emit('onSuccess')
         })
       })
@@ -190,6 +238,31 @@ export default {
     async queryAccountType(){
       const res = await this.$api.requested(this.accountType)
       this.accountData = res.data
+    },
+    accountclassChange(){
+      if (this.form.sa_hraccountclassid && this.form.hrid){
+        this.orderData(this.orderData(this.orderParam.content.pageNumber = 1))
+      }
+    },
+    /*获取可选订单*/
+    async orderData(){
+      this.orderParam.content.hrid = this.form.hrid
+      this.orderParam.content.sa_hraccountclassid = this.form.sa_hraccountclassid
+      const res = await this.$api.requested(this.orderParam)
+      this.orderList = res.data
+    },
+    selectionChange(selection){
+      if (selection.length > 1) {
+        //移除上一次选中行数据
+        selection.shift();
+        //修改选中图标为未选中状态
+        this.$refs.tableRef.$refs.table.clearSelection();
+        //将当前选中行改为选中状态
+        this.$refs.tableRef.$refs.table.toggleRowSelection(selection[0]);
+        this.form.sa_orderid = selection[0].sa_orderid
+      }else {
+        this.form.sa_orderid = selection[0].sa_orderid
+      }
     }
   },
   watch:{
@@ -202,6 +275,7 @@ export default {
   },
   created() {
     this.tablecols = this.tool.tabelCol(this.$route.name).salerSelectTable.tablecols
+    this.orderTablecols = this.tool.tabelCol(this.$route.name).orderTable.tablecols
   }
 }
 </script>

+ 213 - 0
src/Form/salerIncome/addCopy.vue

@@ -0,0 +1,213 @@
+<template>
+  <div>
+    <el-button size="small" type="primary"  @click="dialogVisible = true">新 建</el-button>
+    <el-drawer
+        title="新建收入凭证"
+        :visible.sync="dialogVisible"
+        size="800px"
+        direction="rtl"
+        append-to-body
+        @close="onClose">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="formRef" label-width="90px" label-position="right" size="mini">
+            <el-col :span="24">
+              <el-form-item label="业务员:" prop="hrid">
+                <el-popover
+                    placement="bottom"
+                    v-model="isShow"
+                    width="600"
+                    trigger="click">
+                  <el-input  style="width:200px;margin-bottom: 10px" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+                  </el-input>
+                    <tableNewLayout :layout="tablecols" :data="list" :opwidth="200" height="400px" :width="true" :custom="true" @rowClick="rowClick">
+                      <template v-slot:customcol="scope">
+                        <div>
+                          {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
+                        </div>
+                      </template>
+                    </tableNewLayout>
+                    <div  class="container normal-panel" style="text-align:right">
+                      <el-pagination
+                          background
+                          @size-change="handleSizeChange"
+                          @current-change="handleCurrentChange"
+                          :current-page="currentPage"
+                          :page-sizes="[20, 50, 100, 200]"
+                          :page-size="20"
+                          layout="total,sizes, prev, pager, next, jumper"
+                          :total="total">
+                      </el-pagination>
+                    </div>
+                  <el-input slot="reference" v-model="form.name" placeholder="请选择业务员" readonly @focus="listData"></el-input>
+                </el-popover>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="账户类型:" prop="sa_hraccountclassid">
+                <el-select v-model="form.sa_hraccountclassid" placeholder="请选择账户类型" style="width: 100%">
+                  <el-option
+                      v-for="item in accountData"
+                      :key="item.sa_hraccountclassid"
+                      :label="item.hraccountname"
+                      :value="item.sa_hraccountclassid">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="金额:" prop="amount">
+                <el-input v-model="form.amount" placeholder="请填写金额" v-on:input="validateInput"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="备注:" prop="remarks">
+                <el-input v-model="form.remarks" type="textarea" rows="5" placeholder="请输入备注信息"></el-input>
+              </el-form-item>
+            </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"  @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add",
+  data(){
+    return {
+      dialogVisible:false,
+      isShow:false,
+      tablecols:[],
+      list:[],
+      currentPage:0,
+      total:0,
+      form:{
+        "sa_hrcashbillid": "0",
+        "hrid": '',
+        "name":'',
+        "sa_hraccountclassid": "",
+        "type": "1", //1收 0支
+        "billdate": new Date().getFullYear() + '-' + (new Date().getMonth() + 1) + '-' + new Date().getDate(),
+        "class": "",
+        "subclass": "",
+        "remarks": "",
+        "amount": "",
+        "source_hrcashbill": [  //用于建支出凭证时传选择的收入凭证信息
+          {
+            "ownerid": "",
+            "amount": ""
+          }
+        ]
+      },
+      rules:{
+        hrid:[
+          { required: true, message: '未选择业务员', trigger: 'change'},
+        ],
+        sa_hraccountclassid:[
+          { required: true, message: '未选择账户类型', trigger: 'change'},
+        ],
+        amount:[
+          { required: true, message: '金额不可为空', trigger: 'change'},
+         /* { pattern:/^[0-9]+\.{0,1}[0-9]{0,6}$/,message: '输入不合法,请输入数值',trigger: 'change'},*/
+        ],
+      },
+      param:{
+        "id": 20240111143104,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "condition": ""
+          }
+        }
+      },
+      accountType:{
+        "id": 20240111085104,
+        "content": {
+          "pageSize": 9999,
+          "pageNumber": 1,
+          "where": {}
+        }
+      },
+      accountData:[]
+    }
+  },
+  methods:{
+    validateInput() {
+      // 使用正则表达式验证输入是否为数值
+      this.form.amount = this.form.amount.replace(/[^-0-9][^\d.]/g, '');
+    },
+    async listData(){
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.currentPage = res.pageNumber
+      this.total = res.total
+    },
+    onClose(){
+      this.dialogVisible = false
+      this.$refs.formRef.resetFields()
+      this.form.name = ''
+      this.form.hrid = ''
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    rowClick(row){
+      this.isShow = false
+      this.form.name = row.name
+      this.form.hrid = row.hrid
+    },
+    onSubmit(){
+      this.$refs.formRef.validate(async (valid)=>{
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20240111085604,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.dialogVisible = false
+          this.$refs.formRef.resetFields()
+          this.form.name = ''
+          this.form.hrid = ''
+          this.$emit('onSuccess')
+        })
+      })
+    },
+    /*获取账户类型*/
+    async queryAccountType(){
+      const res = await this.$api.requested(this.accountType)
+      this.accountData = res.data
+    }
+  },
+  watch:{
+    'isShow':function (val){
+      this.param.content.where.condition = ''
+    }
+  },
+  mounted() {
+    this.queryAccountType()
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).salerSelectTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+/deep/ .el-input__validateIcon {
+  display: none;
+}
+</style>

+ 12 - 3
src/Form/salerIncome/edit.vue

@@ -55,11 +55,11 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="24">
+<!--            <el-col :span="24">
               <el-form-item label="金额:" prop="amount">
                 <el-input v-model="form.amount" placeholder="请填写金额" v-on:input="validateInput"></el-input>
               </el-form-item>
-            </el-col>
+            </el-col>-->
             <el-col :span="24">
               <el-form-item label="备注:" prop="remarks">
                 <el-input v-model="form.remarks" type="textarea" rows="5" placeholder="请输入备注信息"></el-input>
@@ -70,13 +70,15 @@
       </div>
       <div class="fixed__btn__panel">
         <el-button size="small" @click="onClose" class="normal-btn-width">取 消</el-button>
-        <el-button size="small" type="primary"  @click="onSubmit" class="normal-btn-width">确 定</el-button>
+        <el-button size="small" type="primary"  @click="onSubmit" class="normal-btn-width" :loading="loading">确 定</el-button>
       </div>
     </el-drawer>
   </div>
 </template>
 
 <script>
+import {mapGetters} from "vuex";
+
 export default {
   name: "edit",
   props:['data'],
@@ -139,6 +141,11 @@ export default {
       accountData:[]
     }
   },
+  computed:{
+    ...mapGetters({
+      loading:'loading'
+    })
+  },
   methods:{
     validateInput() {
       // 使用正则表达式验证输入是否为数值
@@ -177,10 +184,12 @@ export default {
     onSubmit(){
       this.$refs.formRef.validate(async (valid)=>{
         if (!valid) return false
+        this.$store.commit('setLoading',true)
         const res = await this.$api.requested({
           "id": 20240111085604,
           "content": this.form
         })
+        this.$store.commit('setLoading',false)
         this.tool.showMessage(res,()=>{
           this.dialogVisible = false
           this.$refs.formRef.resetFields()

+ 171 - 29
src/SDrpManagement/commissionDistribution/detail/components/income.vue

@@ -1,37 +1,71 @@
 <template>
   <div>
     <div class="flex-align-stretch">
-<!--      <div class="mt-10">
-        <label  class="search__label">状态:</label>
-        <el-select class="inline-16" v-model="param.content.where.status" placeholder="请选择状态" @change="selectChange" size="small" clearable>
-          <el-option label="新建" value="新建"></el-option>
-          <el-option label="审核" value="审核"></el-option>
-        </el-select>
-      </div>-->
+      <div class="mt-10 inline-16">
+        <label class="search__label">部门:</label>
+        <el-cascader ref="selectdep" v-model="depment" :options="deplist" :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
+                     clearable
+                     size="small" @change="selectDep"></el-cascader>
+      </div>
       <div class="mt-10 inline-16">
         <el-input  style="width:200px;" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
         </el-input>
       </div>
       <div class="mt-10 inline-16">
-        <addDetail :status="data.status" @onSuccess="listData"></addDetail>
+        <addDetail   :status="data.status" @onSuccess="listData"></addDetail>
       </div>
       <div class="mt-10 inline-16">
-        <exportFile :param="param" :columns="tablecols" fileName="收入列表"></exportFile>
+        <el-button    @click="delDetail" :type="delData.length == 0 || data.status == '发放'?'':'primary'" size="small" :disabled="delData.length == 0 || data.status == '发放'">删 除</el-button>
+      </div>
+      <div class="mt-10 inline-16">
+        <exportFile  :param="param" :columns="tablecols" fileName="收入列表"></exportFile>
       </div>
     </div>
-    <tableNewLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 376px)" :width="true" :custom="true" fixedName="operation">
+    <tableNewLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 376px)" :width="true" :custom="true" fixedName="operation amount" :checkbox="true" @selectionChange="selectionChange">
       <template v-slot:customcol="scope">
-        <div v-if="scope.column.columnname === 'remarks'">
-          {{scope.column.data.sourcenote !== '' && scope.column.data.remarks !== ''?'系统备注:' + scope.column.data.sourcenote + ';人工备注:' + scope.column.data.remarks :
-            scope.column.data.sourcenote !== ''?'系统备注:' + scope.column.data.sourcenote : scope.column.data.remarks !== ''?'人工备注:' + scope.column.data.remarks:'--'}}
+        <div v-if="scope.column.columnname === 'orderrate'">
+          <div>
+            {{ scope.column.data.orderrate ? Math.round((scope.column.data.orderrate * 100) * 100) / 100 + '%' : scope.column.data[[scope.column.columnname]] == 0?'0%':'--' }}
+          </div>
+        </div>
+        <div v-else-if="scope.column.columnname === 'rate'">
+          {{scope.column.data[[scope.column.columnname]]?Math.round((scope.column.data[[scope.column.columnname]] * 100) * 100) / 100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'allocation_rate'">
+          {{scope.column.data[[scope.column.columnname]]?Math.round((scope.column.data[[scope.column.columnname]] * 100) * 100) / 100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'orderprice'">
+          {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'orderamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'price'">
+          {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
         </div>
-        <div v-else-if="scope.column.columnname === 'relaamount'">
-          {{tool.formatAmount(scope.column.data[[scope.column.columnname]],2)}}
+        <div v-else-if="scope.column.columnname === 'cashbilldetailamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
         </div>
-        <div v-else-if="scope.column.columnname === 'status'">
-          <span :style="{color:scope.column.data.status == '新建'?'#333333':'#52c41a'}">
-            {{scope.column.data[[scope.column.columnname]]}}
-          </span>
+        <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'rewardamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'payapplyamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'amount'">
+          <div v-if="data.status != '发放' ">
+            <el-input v-model.number="scope.column.data.amount" placeholder="本次发放金额" @change="amountChange(scope.column.data.amount,scope.column.data)" size="small"></el-input>
+            <p style="color: red" v-if="isCheck && sa_hrcashbilldetailid == scope.column.data.sa_hrcashbilldetailid">不得大于未发放金额</p>
+          </div>
+          <div v-else>
+            {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+          </div>
         </div>
         <div v-else>
           {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
@@ -39,7 +73,6 @@
       </template>
       <template v-slot:opreation="scope">
         <el-button type="text" size="mini" @click="goDetail(scope.data)">详 情</el-button>
-        <el-button type="text" size="mini" @click="delDetail(scope.data)" :disabled="data.status == '发放'">删 除</el-button>
       </template>
     </tableNewLayout>
     <div  class="container normal-panel" style="text-align:right">
@@ -48,7 +81,7 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="currentPage"
-          :page-sizes="[20, 20, 100, 200]"
+          :page-sizes="[20, 50, 100, 200]"
           :page-size="20"
           layout="total,sizes, prev, pager, next, jumper"
           :total="total">
@@ -74,14 +107,26 @@ export default {
           "pageSize": 20,
           "where": {
             "condition": "",
-            "status":""
+            "departmentid":""
           }
         }
       },
       tablecols:[],
       list:[],
       total:0,
-      currentPage:0
+      currentPage:0,
+      delData:[],
+      isCheck:false,
+      sa_hrcashbilldetailid:'',
+      depmentParam: {
+        classname: "webmanage.department.department",
+        method: "querydepartment",
+        content: {}
+      },
+      depment: '',
+      deplist: [],
+      pageTotal:0,
+      listqueryid:'',
     }
   },
   methods:{
@@ -91,6 +136,9 @@ export default {
       this.list = res.data
       this.total = res.total
       this.currentPage = res.pageNumber
+      this.pageTotal = res.pageTotal
+      this.listqueryid = res.listqueryid
+      sessionStorage.setItem('total',res.total)
     },
     selectChange(){
       this.listData()
@@ -106,7 +154,6 @@ export default {
       this.listData()
     },
     goDetail(val){
-      console.log(val)
       this.$store.dispatch('changeDetailDrawer',false)
       this.$nextTick(()=>{
         let route = this.$route
@@ -114,17 +161,19 @@ export default {
           this.oldRoute = {path:route.path,query:route.query}
           this.$store.dispatch('setHistoryRouter',this.oldRoute)
         }
-
+        sessionStorage.setItem('listqueryid',this.listqueryid)
+        sessionStorage.setItem('isGo','1')
         this.$router.push({
           path:'/salerIncomeDetail',
-          query:{id:val.sa_hrcashbillid}
+          query:{id:val.sa_hrcashbillid,rowindex:val.rowindex,
+            listqueryid:this.listqueryid,fieldname:'sa_hrcashbillid'}
         })
         this.$store.dispatch('changeDetailDrawer',true)
       })
     },
     /*删除*/
     delDetail(val){
-      this.$confirm('此操作将删除当前数据, 是否继续?', '提示', {
+      this.$confirm('删除所选明细,是否继续?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
@@ -133,11 +182,12 @@ export default {
           "id": 20240117105904,
           "content": {
             "sa_hrpayapplyid": this.$route.query.id,
-            "sa_hrpayapplydetails":[val.sa_hrpayapplydetailid]
+            "sa_hrpayapplydetails":this.delData
           }
         })
         this.tool.showMessage(res,()=>{
           this.listData()
+          this.$emit('delSuccess')
         })
       }).catch(() => {
         this.$message({
@@ -146,10 +196,102 @@ export default {
         });
       });
 
-    }
+    },
+    selectionChange(val){
+      this.delData = val.map(item=>item.sa_hrpayapplydetailid)
+    },
+    async amountChange(val,data){
+      if (val > data.unpayapplyamount){
+        this.isCheck = true
+        this.sa_hrcashbilldetailid = data.sa_hrcashbilldetailid
+      }else {
+        const res = await this.$api.requested({
+          "id": "20240117105704",
+          "content": {
+            "sa_hrpayapplyid": this.$route.query.id,
+            "hrpayapplydetail": [
+              {
+                "sa_hrpayapplydetailid": data.sa_hrpayapplydetailid,
+                "amount": data.amount,
+                "sa_hrcashbillid": data.sa_hrcashbillid,
+                "sa_hrcashbilldetailid":data.sa_hrcashbilldetailid
+              }
+            ]
+          }
+        })
+        this.isCheck = false
+        this.listData(this.param.content.pageNumner = 1)
+        this.$emit('delSuccess')
+      }
+    },
+    async departmentrtment() {
+      const res = await this.$api.requested(this.depmentParam);
+      this.deplist = this.createMenu(res.data)
+    },
+    createMenu(array) {
+      var that = this;
+      let arr = [];
+
+      function convertToElementTree(node) {
+        // 新节点
+        if (node.subdep.length === 0) {
+          var elNode = {
+            label: node["depname"],
+            parentid: node['parentid'],
+            parentname: node['parentname'],
+            departmentid: node["departmentid"],
+            value: node["departmentid"],
+            remarks: node["remarks"],
+            isused: node["isused"],
+            changedate: node['changedate'],
+            changeby: node['changeby'],
+            createdate: node['createdate'],
+            createby: node['createby'],
+            depno: node['depno'],
+            disabled: that.pageOnlyRead,
+          }
+        } else {
+          var elNode = {
+            label: node["depname"],
+            parentid: node['parentid'],
+            parentname: node['parentname'],
+            departmentid: node["departmentid"],
+            value: node["departmentid"],
+            remarks: node["remarks"],
+            isused: node["isused"],
+            changedate: node['changedate'],
+            changeby: node['changeby'],
+            createdate: node['createdate'],
+            createby: node['createby'],
+            depno: node['depno'],
+            disabled: that.pageOnlyRead,
+            children: []
+          }
+        }
+        if (node.subdep && node.subdep.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.subdep.length; index++) {
+            // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+            elNode.children.push(convertToElementTree(node.subdep[index]));
+          }
+        }
+        return elNode;
+      }
+
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
+    },
+    selectDep(val) {
+      this.person = '';
+      this.param.content.where.departmentid = val[val.length - 1];
+      this.listData(this.param.content.pageNumner = 1)
+    },
   },
   mounted() {
     this.listData()
+    this.departmentrtment()
   },
   created() {
     console.log(this.tool.tabelCol(this.$route.name).incomesTable.tablecols,'tablecols')

+ 6 - 2
src/SDrpManagement/commissionDistribution/detail/index.vue

@@ -12,7 +12,7 @@
         :mainAreaData="mainAreaData"
         :titleText="mainData.billno"
         @pageChange="pageChange"
-        :tabs="['收入','详细信息']"
+        :tabs="['收入明细','详细信息']"
         @onEditSuccess="queryMainData"
         :statusCheck="[{key:'status',value:'发放'}]"
     >
@@ -20,7 +20,7 @@
         <toGrant class="inline-16" v-if="tool.checkAuth($route.name,'grant')" @examineSuccess="queryMainData" :status="mainData.status"></toGrant>
       </div>
       <div slot="slot0" class="normal-panel">
-        <incomes :data="mainData"></incomes>
+        <incomes  :data="mainData" @delSuccess="queryMainData"></incomes>
       </div>
       <div slot="slot1" class="normal-panel">
         <baseInfo  :detailInfo="detailInfo"></baseInfo>
@@ -101,6 +101,10 @@ export default {
           label:'发放时间',
           value:this.mainData.checkdate?this.mainData.checkdate:'--'
         },
+        {
+          label:'金额(元)',
+          value:this.mainData.amount?this.tool.formatAmount(this.mainData.amount,2):'--'
+        },
         /*{
           label:'备注',
           value:this.mainData.sourcenote !== '' && this.mainData.remarks !== ''?'系统备注:' + this.mainData.sourcenote + ';人工备注:' + this.mainData.remarks : this.mainData.sourcenote !== ''?'系统备注:' + this.mainData.sourcenote :

+ 195 - 37
src/SDrpManagement/commissionDistribution/detail/modules/addDetail.vue

@@ -1,52 +1,119 @@
 <template>
   <div>
-    <el-button size="small" :type="status == '发放'?'':'primary'"  @click="dialogVisible = true;listData()" :disabled="status == '发放'">添 加</el-button>
+    <el-button size="small" :type="status == '发放'?'':'primary'"  @click="addShow" :disabled="status == '发放'">添 加</el-button>
     <el-drawer
         title="添加收入凭证"
         :visible.sync="dialogVisible"
-        size="80%"
+        size="90%"
         direction="rtl"
         append-to-body
         @close="onClose">
-      <div class="drawer__panel">
+      <div class="drawer__panel" style="margin-bottom: 0!important;">
         <el-row :gutter="20">
           <el-form :model="form" :rules="rules" ref="formRef" label-width="120px" label-position="left" size="mini">
             <el-col :span="24">
               <el-form-item label="请选择收入凭证:" >
-                <div style="float: left;margin-left: 20px" class="search__label">审核时间:</div>
-                <el-date-picker
-                    v-model="auditDate"
-                    @change="selectChange"
-                    type="daterange"
-                    style="width:200px;float: left"
-                    format="yyyy-MM-dd"
-                    value-format="yyyy-MM-dd"
-                    range-separator="至"
-                    start-placeholder="开始日期"
-                    end-placeholder="结束日期">
-                </el-date-picker>
-                <div style="margin-left: 20px;float: left" class="search__label">回款比例(%):</div>
-                <div style="float: left">
-                  <el-input v-model="begrate" style="width: 200px" placeholder="请输入回款比例" @change="rateChange" :clearable="true"></el-input> —
-                  <el-input v-model="endrate" style="width: 200px" placeholder="请输入回款比例" @change="rateChange" :clearable="true"></el-input>
+                <div class="inline-16 mt-10">
+                  <div class="search__label">审核时间:</div>
+                  <el-date-picker
+                      v-model="auditDate"
+                      @change="selectChange"
+                      type="daterange"
+                      size="small"
+                      format="yyyy-MM-dd"
+                      value-format="yyyy-MM-dd"
+                      range-separator="至"
+                      start-placeholder="开始日期"
+                      end-placeholder="结束日期">
+                  </el-date-picker>
                 </div>
-                <div style="margin-left: 20px;float: left" class="search__label">搜索:</div>
-                <div>
-                  <el-input v-model="param.content.where.condition" style="width: 200px" placeholder="单号、业务员、部门、备注" @change="listData" :clearable="true"></el-input>
+                <div class="inline-16 mt-10">
+                  <div class="search__label inline-16" >回款比例(%):</div>
+                  <div class="inline-16">
+                    <el-input v-model="begrate" :clearable="true" placeholder="请输入回款比例" size="small"
+                              style="width: 200px" @change="rateChange"></el-input>
+                    —
+                    <el-input v-model="endrate" :clearable="true" placeholder="请输入回款比例" size="small"
+                              style="width: 200px" @change="rateChange"></el-input>
+                  </div>
+                </div>
+                <div class="inline-16 mt-10">
+                  <label class="search__label">部门:</label>
+                  <el-cascader ref="selectdep" v-model="depment" :options="deplist" :props="{emitPath:true,expandTrigger:'hover',checkStrictly:true,label:'label',value:'departmentid',children:'children'}"
+                               clearable
+                               size="small" @change="selectDep"></el-cascader>
+                </div>
+                <div class="inline-16 mt-10">
+                  <div style="margin-left: 20px;float: left" class="search__label">搜索:</div>
+                  <el-input v-model="param.content.where.condition" :suffix-icon="param.content.where.condition?'':'el-icon-search'"
+                            class="input-with-select inline-16 layout_search__panel"
+                            clearable
+                            placeholder="搜索"
+                            size="small" style="width:200px;"
+                            @clear="listData(param.content.pageNumber = 1)" @keyup.native.enter="listData(param.content.pageNumber = 1)">
+                  </el-input>
                 </div>
               </el-form-item>
              </el-col>
             <el-col :span="24">
-                <tableNewLayout style="margin-bottom: 20px" ref="tableRef" :checkbox="true" :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 250px)" :width="true" :custom="true" @selectionChange="selectionChange">
-                  <template v-slot:customcol="scope">
-                    <div v-if="scope.column.columnname === 'rate'">
-                      <div>{{scope.column.data.rate?Math.round((scope.column.data.rate * 100)*100)/100 + '%':'0%'}}</div>
+              <tableNewLayout  ref="tableRef" :checkbox="true" :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 260px)" :width="true" :custom="true" @selectionChange="selectionChange">
+                <template v-slot:customcol="scope">
+                  <div v-if="scope.column.columnname === 'orderrate'">
+                    <div>
+                      {{ scope.column.data.orderrate ? Math.round((scope.column.data.orderrate * 100) * 100) / 100 + '%' : scope.column.data.orderrate == 0?'0%' :'--' }}
                     </div>
-                    <div v-else>
-                      {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
-                    </div>
-                  </template>
-                </tableNewLayout>
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'rate'">
+                    {{scope.column.data[[scope.column.columnname]]?Math.round((scope.column.data[[scope.column.columnname]] * 100) * 100) / 100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%' :'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'allocation_rate'">
+                    {{scope.column.data[[scope.column.columnname]]?Math.round((scope.column.data[[scope.column.columnname]] * 100) * 100) / 100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%' :'--'}}
+                  </div>
+
+                  <div v-else-if="scope.column.columnname === 'amount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'orderamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'orderprice'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'price'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'cashbilldetailamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'rewardamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'payapplyamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+                    {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+                  </div>
+                  <div v-else>
+                    {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
+                  </div>
+                </template>
+              </tableNewLayout>
+              <div class="container normal-panel" style="text-align:right">
+                <el-pagination
+                    :current-page="currentPage"
+                    :page-size="100"
+                    :page-sizes="[100, 150, 200, 250]"
+                    :total="total"
+                    background
+                    layout="total,sizes, prev, pager, next, jumper"
+                    @size-change="handleSizeChange"
+                    @current-change="handleCurrentChange">
+                </el-pagination>
+              </div>
             </el-col>
           </el-form>
         </el-row>
@@ -71,6 +138,8 @@ export default {
       begrate:'',
       endrate:'',
       list:[],
+      total: 0,
+      currentPage: 0,
       form:{
         "sa_hrpayapplyid": '',
         "hrpayapplydetail": []
@@ -81,7 +150,7 @@ export default {
         "content": {
           "sa_hrpayapplyid":0,
           "pageNumber": 1,
-          "pageSize": 99999,
+          "pageSize": 100,
           "where":{
             "condition":"",
             "begdate":"",
@@ -89,21 +158,36 @@ export default {
             "status":""
           }
         }
-      }
+      },
+      depmentParam: {
+        classname: "webmanage.department.department",
+        method: "querydepartment",
+        content: {}
+      },
+      depment: '',
+      deplist: []
     }
   },
   methods:{
+    addShow() {
+      this.dialogVisible = true;
+      this.listData(this.param.content.pageNumner = 1);
+      this.departmentrtment()
+    },
     async listData(){
       this.param.content.sa_hrpayapplyid = this.$route.query.id
       const res = await this.$api.requested(this.param)
       this.list = res.data
+      this.total = res.total;
+      this.currentPage = res.pageNumber
     },
     selectionChange(row){
       this.form.hrpayapplydetail = row.map(item=>{
         return {
-          "sa_hrpayapplydetailid": 0,
-          "remarks": item.remarks,
-          "sa_hrcashbillid": item.sa_hrcashbillid
+          "sa_hrpayapplydetailid": item.sa_hrpayapplydetailid,
+          "amount": item.amount,
+          "sa_hrcashbillid": item.sa_hrcashbillid,
+          "sa_hrcashbilldetailid": item.sa_hrcashbilldetailid
         }
       })
     },
@@ -154,7 +238,81 @@ export default {
         this.param.content.where.endrate = ''
       }
       this.listData()
-    }
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val;
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val;
+      this.listData()
+    },
+    async departmentrtment() {
+      const res = await this.$api.requested(this.depmentParam);
+      this.deplist = this.createMenu(res.data)
+    },
+    createMenu(array) {
+      var that = this;
+      let arr = [];
+
+      function convertToElementTree(node) {
+        // 新节点
+        if (node.subdep.length === 0) {
+          var elNode = {
+            label: node["depname"],
+            parentid: node['parentid'],
+            parentname: node['parentname'],
+            departmentid: node["departmentid"],
+            value: node["departmentid"],
+            remarks: node["remarks"],
+            isused: node["isused"],
+            changedate: node['changedate'],
+            changeby: node['changeby'],
+            createdate: node['createdate'],
+            createby: node['createby'],
+            depno: node['depno'],
+            disabled: that.pageOnlyRead,
+          }
+        } else {
+          var elNode = {
+            label: node["depname"],
+            parentid: node['parentid'],
+            parentname: node['parentname'],
+            departmentid: node["departmentid"],
+            value: node["departmentid"],
+            remarks: node["remarks"],
+            isused: node["isused"],
+            changedate: node['changedate'],
+            changeby: node['changeby'],
+            createdate: node['createdate'],
+            createby: node['createby'],
+            depno: node['depno'],
+            disabled: that.pageOnlyRead,
+            children: []
+          }
+        }
+        if (node.subdep && node.subdep.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.subdep.length; index++) {
+            // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+            elNode.children.push(convertToElementTree(node.subdep[index]));
+          }
+        }
+        return elNode;
+      }
+
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
+    },
+    selectDep(val) {
+      this.person = '';
+      this.param.content.where.departmentid = val[val.length - 1];
+      this.listData(this.param.content.pageNumner = 1)
+    },
   },
   created() {
     this.tablecols = this.tool.tabelCol(this.$route.name).incomeSelectTable.tablecols

+ 3 - 0
src/SDrpManagement/commissionDistribution/index.vue

@@ -55,6 +55,9 @@
         <div v-if="scope.data.column.columnname === 'status'">
           <span :style="{color:scope.data.column.data[[scope.data.column.columnname]] == '新建'?'#333333':'#52c41a'}">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
         </div>
+        <div v-else-if="scope.data.column.columnname === 'amount'">
+          {{scope.data.column.data.amount?tool.formatAmount(scope.data.column.data.amount,2):'--'}}
+        </div>
         <div v-else>
           {{scope.data.column.data[[scope.data.column.columnname]] && scope.data.column.columnname !== 'operation'?scope.data.column.data[[scope.data.column.columnname]]:'--'}}
         </div>

+ 143 - 19
src/SDrpManagement/myaccountclass/index.vue

@@ -47,17 +47,26 @@
               </div>
               <div v-else-if="scope.column.columnname == 'accountname'">
                 <span v-if="usertype == '1'">
-                  {{scope.column.data.hraccountname}}
+                  {{ scope.column.data.hraccountname }}
                 </span>
                 <span v-else>
-                  {{scope.column.data[[scope.column.columnname]]}}
+                  {{ scope.column.data[[scope.column.columnname]] }}
+                </span>
+              </div>
+              <div v-else-if="scope.column.columnname == 'remarks'">
+                <span v-if="usertype == '1'">
+                  {{ scope.column.data.allremarks ? scope.column.data.allremarks : '--' }}
+                </span>
+                <span v-else>
+                  {{ scope.column.data[[scope.column.columnname]] ? scope.column.data[[scope.column.columnname]] : '--' }}
                 </span>
               </div>
               <div v-else>
-                {{scope.column.data[[scope.column.columnname]]?scope.column.data[[scope.column.columnname]]:'--'}}
+                {{ scope.column.data[[scope.column.columnname]] ? scope.column.data[[scope.column.columnname]] : '--' }}
               </div>
             </template>
             <template v-slot:opreation="scope">
+              <el-button class="inline-16" type="text" @click="drawShow(scope.data)">明细</el-button>
               <editPrice v-if="tool.checkAuth($route.name,'update')" class="inline-16" :data="scope.data"/>
               <delete-btn
                 @deleteCreate="deleteCreate"
@@ -69,26 +78,91 @@
               />
             </template>
           </tableMainLayout>
-<!--          <div style="margin-top:16px;text-align:right">
-            <el-pagination
-              background
-              small
-              @size-change="handleSizeChange"
-              @current-change="handleCurrentChange"
-              :current-page="param.content.pageNumber"
-              :page-size="param.content.pageSize"
-              layout="total, prev, pager, next, jumper"
-              :total="total">
-            </el-pagination>
-          </div>-->
         </div>
       </div>
     </normal-layout>
+    <el-drawer
+        :title="drawTitle"
+        :visible.sync="dialogVisible"
+        size="90%"
+        direction="rtl"
+        append-to-body
+        @close="onClose">
+      <div class="drawer__panel" style="margin-bottom: 0!important;">
+        <div style="display: flex;justify-content: space-between">
+          <div>
+            <el-input  style="width:200px;" placeholder="搜索" :suffix-icon="paramInfo.content.where.condition?paramInfo.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="paramInfo.content.where.condition" @keyup.native.enter="listDataInfo(paramInfo.content.pageNumber = 1)" @clear="listDataInfo(paramInfo.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+            </el-input>
+            <exportFile class="inline-16" :columns="drawType?tablecolsIncome:tablecolsPay" :param="paramInfo" :fileName="drawTitle"></exportFile>
+          </div>
+<!--          <div>
+            <span class="search__label">审核日期:</span>
+            <span style="font-size: 14px">{{checkDate}}</span>
+          </div>-->
+        </div>
+        <tableTemplate style="margin-top: 10px" ref="table" :layout="drawType?tablecolsIncome:tablecolsPay" :data="voucherList" :opwidth="200" :custom="true" height="calc(100vh - 170px)">
+          <template v-slot:customcol="scope">
+            <div v-if="scope.column.columnname === 'amount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'orderprice'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'orderamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'price'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'rewardamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'payapplyamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'cashbilldetailamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'rate'">
+              {{scope.column.data[[scope.column.columnname]]?Math.round(tool.formatAmount(scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'allocation_rate'">
+              {{scope.column.data[[scope.column.columnname]]?Math.round(tool.formatAmount(scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+            </div>
+            <div v-else>
+              {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
+            </div>
+          </template>
+        </tableTemplate>
+        <div  style="text-align:right;float: right;margin-top: 10px">
+          <el-pagination
+              background
+              @size-change="voucherHandleSizeChange"
+              @current-change="voucherHandleCurrentChange"
+              :current-page="voucherCurrentPage"
+              :pager-count="5"
+              :page-sizes="[100, 150,200, 250]"
+              :page-size="100"
+              layout="total,sizes, prev, pager, next, jumper"
+              :total="voucherTotal">
+          </el-pagination>
+        </div>
+      </div>
+    </el-drawer>
   </div>
 </template>
 
 <script>
+import tableTemplate from '@/views/salesData/components/table';
+import exportFile from '@/components/export_file/index'
 export default {
+  components:{tableTemplate,exportFile},
   data () {
     return {
       activeName:0,
@@ -99,7 +173,7 @@ export default {
         "id":20230111103403,
         "content": {
           "pageNumber":1,
-          "pageSize":20,
+          "pageSize":100,
           "sa_accountclassid":"",
           "where":{
             "condition":"",
@@ -123,10 +197,30 @@ export default {
           }
         }
       },
+      paramInfo:{
+        "id": "20240111131304",
+        "content": {
+          "sa_hrcashbillid": '',
+          "where": {
+            "condition": ""
+          },
+          "pageNumber":1,
+          "pageSize":100
+        }
+      },
       total:0,
       dateSelect:[],
       usertype:JSON.parse(sessionStorage.getItem('active_account')).usertype,
-      hrid:JSON.parse(sessionStorage.getItem('active_account')).hrid
+      hrid:JSON.parse(sessionStorage.getItem('active_account')).hrid,
+      drawTitle:'',
+      drawType:'',
+      dialogVisible:false,
+      tablecolsIncome:[],
+      tablecolsPay:[],
+      voucherList:[],
+      voucherTotal:0,
+      voucherCurrentPage:0,
+      checkDate:''
     }
   },
   methods:{
@@ -140,8 +234,6 @@ export default {
         }
       })
       this.acountlist = res.data
-      console.log(this.acountlist);
-
       this.accountMx()
     },
     async listDataSales(){
@@ -170,6 +262,12 @@ export default {
         console.log(res,"res的数据")
       }
     },
+    async listDataInfo(){
+      const res = await this.$api.requested(this.paramInfo)
+      this.voucherList = res.data
+      this.voucherTotal = res.total
+      this.voucherCurrentPage = res.pageNumber
+    },
     handleClick (index) {
       this.activeName = index
       this.accountMx()
@@ -203,9 +301,33 @@ export default {
         }
       }
       this.accountMx()
+    },
+    drawShow(data){
+      this.dialogVisible = true
+      this.drawType = data.type
+      if (data.type){
+        this.drawTitle = data.billno + '_' + '收入凭证明细'
+      }else {
+        this.drawTitle = data.billno + '_' + '支出凭证明细'
+      }
+      this.paramInfo.content.sa_hrcashbillid = data.sa_hrcashbillid
+      this.checkDate = this.dateSelect !== '' && this.dateSelect !== null?this.dateSelect[0]+'至' + this.dateSelect[1] :""
+      this.listDataInfo()
+    },
+    onClose(){
+      this.dialogVisible = false
+    },
+    voucherHandleSizeChange(val){
+      this.paramInfo.content.pageSize = val
+      this.listDataInfo()
+    },
+    voucherHandleCurrentChange(val){
+      this.paramInfo.content.pageSize = val
+      this.listDataInfo()
     }
   },
   mounted () {
+    this.dateSelect = ''
     if (this.usertype == '1'){
       this.listDataSales()
     }else {
@@ -214,6 +336,8 @@ export default {
   },
   created () {
     this.tablecols = this.tool.tabelCol(this.$route.name)['accountMoneyDetailTable'].tablecols
+    this.tablecolsIncome = this.tool.tabelCol(this.$route.name)['incomeVoucherDetailsTable'].tablecols
+    this.tablecolsPay = this.tool.tabelCol(this.$route.name)['payVoucherDetailsTable'].tablecols
   },
 }
 

+ 121 - 22
src/SDrpManagement/salerExpenditure/detail/components/income.vue

@@ -1,31 +1,58 @@
 <template>
   <div>
     <div class="flex-align-stretch">
-      <div class="mt-10">
-        <label  class="search__label">状态:</label>
-        <el-select class="inline-16" v-model="param.content.where.status" placeholder="请选择状态" @change="selectChange" size="small" clearable>
-          <el-option label="新建" value="新建"></el-option>
-          <el-option label="审核" value="审核"></el-option>
-        </el-select>
-      </div>
       <div class="mt-10 inline-16">
         <el-input  style="width:200px;" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
         </el-input>
       </div>
+      <div class="mt-10 inline-16">
+        <add  :data="data" @onSuccess="listData"></add>
+      </div>
+      <div class="mt-10 inline-16">
+        <el-button   @click="delDetail" :type="delData.length == 0 || data.status == '审核'?'':'primary'" size="small" :disabled="delData.length == 0 || data.status == '审核'">删 除</el-button>
+      </div>
+      <div class="mt-10 inline-16">
+        <exportFile :param="param" :columns="tablecols" fileName="收入明细"></exportFile>
+      </div>
     </div>
-    <tableNewLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 376px)" :width="true" :custom="true" fixedName="operation">
+    <tableNewLayout :layout="tablecols" :checkbox="true" :data="list" :opwidth="200" height="calc(100vh - 376px)" :width="true" :custom="true" fixedName="operation amount" @selectionChange="selectionChange">
       <template v-slot:customcol="scope">
-        <div v-if="scope.column.columnname === 'remarks'">
-          {{scope.column.data.sourcenote !== '' && scope.column.data.remarks !== ''?'系统备注:' + scope.column.data.sourcenote + ';人工备注:' + scope.column.data.remarks :
-            scope.column.data.sourcenote !== ''?'系统备注:' + scope.column.data.sourcenote : scope.column.data.remarks !== ''?'人工备注:' + scope.column.data.remarks:'--'}}
+        <div v-if="scope.column.columnname === 'amount'">
+<!--          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'&#45;&#45;'}}-->
+          <div v-if="data.status != '审核' ">
+            <el-input v-model.number="scope.column.data.amount" placeholder="本次发放金额" @change="amountChange(scope.column.data.amount,scope.column.data)" size="small"></el-input>
+            <p style="color: red" v-if="isCheck && sa_hrcashbilldetailid == scope.column.data.sa_hrcashbilldetailid">不得大于未发放金额</p>
+          </div>
+          <div v-else>
+            {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+          </div>
+        </div>
+        <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'orderprice'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'orderamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'price'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'rewardamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'payapplyamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
         </div>
-        <div v-else-if="scope.column.columnname === 'relaamount'">
-          {{tool.formatAmount(scope.column.data[[scope.column.columnname]],2)}}
+        <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
         </div>
-        <div v-else-if="scope.column.columnname === 'status'">
-          <span :style="{color:scope.column.data.status == '新建'?'#333333':'#52c41a'}">
-            {{scope.column.data[[scope.column.columnname]]}}
-          </span>
+        <div v-else-if="scope.column.columnname === 'rate'">
+          {{scope.column.data[[scope.column.columnname]]?Math.round(tool.formatAmount(scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'allocation_rate'">
+          {{scope.column.data[[scope.column.columnname]]?Math.round(tool.formatAmount(scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
         </div>
         <div v-else>
           {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
@@ -51,12 +78,16 @@
 </template>
 
 <script>
+import add from '../modules/income/add'
+import exportFile from '@/components/export_file/index5.vue'
 export default {
   name: "income",
+  props:['data'],
+  components:{add,exportFile},
   data(){
     return {
       param:{
-        "id": 20240111090204,
+        "id": 20240111131304,
         "content": {
           "sa_hrcashbillid":"",
           "pageNumber": 1,
@@ -72,7 +103,11 @@ export default {
       tablecols:[],
       list:[],
       total:0,
-      currentPage:0
+      currentPage:0,
+      isCheck:false,
+      delData:[],
+      pageTotal:0,
+      listqueryid:'',
     }
   },
   methods:{
@@ -82,6 +117,9 @@ export default {
       this.list = res.data
       this.total = res.total
       this.currentPage = res.pageNumber
+      this.pageTotal = res.pageTotal
+      this.listqueryid = res.listqueryid
+      sessionStorage.setItem('total',res.total)
     },
     selectChange(){
       this.listData()
@@ -105,14 +143,75 @@ export default {
           this.oldRoute = {path:route.path,query:route.query}
           this.$store.dispatch('setHistoryRouter',this.oldRoute)
         }
-
+        sessionStorage.setItem('listqueryid',this.listqueryid)
+        sessionStorage.setItem('isGo','1')
         this.$router.push({
           path:'/salerIncomeDetail',
-          query:{id:val.ownerid}
+          query:{id:val.sa_hrcashbillid,rowindex:val.rowindex,
+            listqueryid:this.listqueryid,fieldname:'sa_hrcashbillid'}
         })
         this.$store.dispatch('changeDetailDrawer',true)
       })
-    }
+    },
+    async amountChange(val,data){
+      if (val > data.unpayapplyamount){
+        this.isCheck = true
+        this.sa_hrcashbilldetailid = data.sa_hrcashbilldetailid
+      }else {
+        const res = await this.$api.requested({
+          "id": "20240111131204",
+          "content": {
+            "sa_hrcashbillid": this.$route.query.id,
+            "hrcashbilldetail": [
+              {
+                "sa_hrpayapplydetailid": data.sa_hrpayapplydetailid,
+                "amount": data.amount,
+                "allocation_rate": data.allocation_rate,
+                "ownerid": data.ownerid,// 选择的sa_hrcashbilldetailid
+                "rate": data.rate,
+                "price": data.price,
+                "sa_orderitemsid": data.sa_orderitemsid,
+                "sa_orderid": data.sa_orderid,
+                "remarks": "",
+                "orderprice": data.orderprice,
+              }
+            ]
+          }
+        })
+        this.isCheck = false
+        this.listData(this.param.content.pageNumner = 1)
+        this.$emit('onSuccess')
+      }
+    },
+    selectionChange(val){
+      this.delData = val.map(item=>item.sa_hrcashbilldetailid)
+    },
+    /*删除*/
+    delDetail(val){
+      this.$confirm('删除所选明细,是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const res = await this.$api.requested({
+          "id": 20240111131404,
+          "content": {
+            "sa_hrcashbillid": this.$route.query.id,
+            "sa_hrcashbilldetailids":this.delData
+          }
+        })
+        this.tool.showMessage(res,()=>{
+          this.listData()
+          this.$emit('onSuccess')
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });
+      });
+
+    },
   },
   mounted() {
     this.listData()

+ 7 - 3
src/SDrpManagement/salerExpenditure/detail/index.vue

@@ -12,15 +12,15 @@
         :mainAreaData="mainAreaData"
         :titleText="mainData.billno"
         @pageChange="pageChange"
-        :tabs="['收入','详细信息']"
+        :tabs="['收入明细','详细信息']"
         @onEditSuccess="queryMainData"
         :statusCheck="[{key:'status',value:'审核'}]"
     >
       <div slot="customOperation">
-        <toExamine class="inline-16" v-if="tool.checkAuth($route.name,'toExamine')" @examineSuccess="queryMainData" :status="mainData.status"></toExamine>
+        <toExamine class="inline-16" v-if="tool.checkAuth($route.name,'toExamine')" @examineSuccess="examineSuccess" :status="mainData.status"></toExamine>
       </div>
       <div slot="slot0" class="normal-panel">
-        <income></income>
+        <income  ref="incomeRef" :data="mainData" @onSuccess="queryMainData"></income>
       </div>
       <div slot="slot1" class="normal-panel">
         <baseInfo  :detailInfo="detailInfo"></baseInfo>
@@ -190,6 +190,10 @@ export default {
         ]
       }
 
+    },
+    examineSuccess(){
+      this.queryMainData()
+      this.$refs.incomeRef.listData(this.$refs.incomeRef.param.content.pageNumber = 1)
     }
   },
   mounted() {

+ 165 - 0
src/SDrpManagement/salerExpenditure/detail/modules/income/add.vue

@@ -0,0 +1,165 @@
+<template>
+  <div>
+    <el-button size="small" :type="data.status == '审核'?'':'primary'"  @click="addShow" :disabled="data.status == '审核'">添 加</el-button>
+    <el-drawer
+        title="添加收入明细"
+        :visible.sync="drawerVisible"
+        size="70%"
+        direction="rtl"
+        append-to-body
+        @close="onClose">
+      <div class="drawer__panel" style="margin-bottom: 0!important;">
+        <el-input  style="width:200px;margin-bottom: 10px" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+        </el-input>
+        <tableNewLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 235px)" :width="true" :custom="true" :checkbox="true" @selectionChange="selectionChange">
+          <template v-slot:customcol="scope">
+            <div v-if="scope.column.columnname === 'amount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'orderprice'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'orderamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'price'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'rewardamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'payapplyamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'rate'">
+              {{scope.column.data[[scope.column.columnname]]?Math.round(tool.formatAmount(scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'allocation_rate'">
+              {{scope.column.data[[scope.column.columnname]]?Math.round(tool.formatAmount(scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+            </div>
+            <div v-else>
+              {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
+            </div>
+          </template>
+        </tableNewLayout>
+        <div  class="container normal-panel" style="text-align:right">
+          <el-pagination
+              background
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              :page-sizes="[50, 100, 150, 200]"
+              :page-size="100"
+              layout="total,sizes, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="onClose" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary"  @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add",
+  props:['data'],
+  data(){
+    return {
+      drawerVisible:false,
+      param:{
+        "id": 20240111143204,
+        "content": {
+          "hrid": "",
+          "sa_hraccountclassid":"",
+          "sa_hrcashbillid":"",
+          "pageNumber": 1,
+          "pageSize": 100,
+          "where": {
+            "condition": ""
+          }
+        }
+      },
+      currentPage:0,
+      total:0,
+      selectData:[],
+      tablecols:'',
+      list:[],
+    }
+  },
+  methods:{
+    addShow(){
+      this.drawerVisible = true
+      this.listData(this.param.content.pageNumber = 1)
+    },
+    async listData(){
+      this.param.content.hrid = this.data.hrid
+      this.param.content.sa_hraccountclassid = this.data.sa_hraccountclassid
+      this.param.content.sa_hrcashbillid = this.data.sa_hrcashbillid
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    async onSubmit(){
+      const res = await this.$api.requested({
+        "id": 20240111131204,
+        "content": {
+          "sa_hrcashbillid": this.$route.query.id,
+          "hrcashbilldetail": this.selectData
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.drawerVisible = false
+        this.listData(this.param.content.pageNumber = 1)
+        this.$emit('onSuccess')
+      })
+    },
+    onClose(){
+
+    },
+    selectionChange(data){
+      this.selectData = data.map(item=>{
+        return {
+          "sa_hrcashbilldetailid": 0,
+          "allocation_rate": item.allocation_rate,
+          "ownerid": item.sa_hrcashbilldetailid,
+          "rate": item.rate,
+          "price": item.price,
+          "sa_orderitemsid": item.sa_orderitemsid,
+          "sa_orderid": item.sa_orderid,
+          "remarks": '',
+          "orderprice": item.orderprice,
+          "amount": item.amount
+        }
+      })
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).incomeSelectTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 101 - 9
src/SDrpManagement/salerIncome/detail/components/commissionDetails.vue

@@ -4,7 +4,16 @@
       <el-input  style="width:200px;" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
       </el-input>
     </div>
-    <tableNewLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 376px)" :width="true" :custom="true" fixedName="operation">
+    <div class="mt-10 inline-16">
+      <add @onSuccess="onSuccess"  :status="data.status"></add>
+    </div>
+    <div class="mt-10 inline-16">
+      <el-button size="small"  :type="data.status == '审核' || delData.length == 0?'':'primary'"  @click="onDel" :disabled="data.status == '审核' || delData.length == 0">删除</el-button>
+    </div>
+    <div class="mt-10 inline-16">
+      <exportFile  :param="param" :columns="tablecols" fileName="提成明细"></exportFile>
+    </div>
+    <tableNewLayout :checkbox="true" :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 376px)" :width="true" :custom="true" fixedName="operation" @selectionChange="selectionChange">
       <template v-slot:customcol="scope">
         <div v-if="scope.column.columnname === 'remarks'">
           {{scope.column.data[[scope.column.columnname]]?scope.column.data[[scope.column.columnname]]:'--'}}
@@ -12,16 +21,39 @@
             scope.column.data.sourcenote !== ''?'系统备注:' + scope.column.data.sourcenote : scope.column.data.remarks !== ''?'人工备注:' + scope.column.data.remarks:'&#45;&#45;'}}-->
         </div>
         <div v-else-if="scope.column.columnname === 'orderprice'">
-          {{tool.formatAmount(scope.column.data[[scope.column.columnname]],2)}}
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
         </div>
         <div v-else-if="scope.column.columnname === 'price'">
-          {{tool.formatAmount(scope.column.data[[scope.column.columnname]],2)}}
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'orderamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
         </div>
         <div v-else-if="scope.column.columnname === 'rate'">
-          {{Math.round((scope.column.data[[scope.column.columnname]]*100)*100)/100}}%
+          {{scope.column.data[[scope.column.columnname]]?Math.round((scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
         </div>
         <div v-else-if="scope.column.columnname === 'allocation_rate'">
-          {{Math.round((scope.column.data[[scope.column.columnname]]*100)*100)/100}}%
+          {{scope.column.data[[scope.column.columnname]]?Math.round((scope.column.data[[scope.column.columnname]]*100)*100)/100 + '%':scope.column.data[[scope.column.columnname]] == 0?'0%':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'amount'">
+          <div v-if="data.status != '审核' ">
+            <el-input v-model="scope.column.data.amount" placeholder="提成金额" @change="amountChange(scope.column.data.amount,scope.column.data)"></el-input>
+          </div>
+          <div v-else>
+            {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+          </div>
+        </div>
+        <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'rewardamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'payapplyamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
         </div>
         <div v-else>
           {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
@@ -34,8 +66,8 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="currentPage"
-          :page-sizes="[20, 20, 100, 200]"
-          :page-size="20"
+          :page-sizes="[50, 100, 150, 200]"
+          :page-size="50"
           layout="total,sizes, prev, pager, next, jumper"
           :total="total">
       </el-pagination>
@@ -44,8 +76,12 @@
 </template>
 
 <script>
+import add from '../modules/commissionDetails/add'
+import exportFile from '@/components/export_file/index'
 export default {
   name: "commissionDetails",
+  props:['data'],
+  components:{add,exportFile},
   data(){
     return {
       param:{
@@ -53,7 +89,7 @@ export default {
         "content": {
           "sa_hrcashbillid":"",
           "pageNumber": 1,
-          "pageSize": 20,
+          "pageSize": 50,
           "where": {
             "condition": ""
           }
@@ -62,7 +98,8 @@ export default {
       tablecols:[],
       list:[],
       total:0,
-      currentPage:0
+      currentPage:0,
+      delData:[]
     }
   },
   methods:{
@@ -83,6 +120,61 @@ export default {
       this.param.content.pageNumber = val
       this.listData()
     },
+    onSuccess(){
+      this.listData()
+      this.$emit('onSuccess')
+    },
+    selectionChange(val){
+      this.delData = val.map(item=>item.sa_hrcashbilldetailid)
+    },
+    onDel(){
+      this.$confirm('删除所选明细,是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const res = await this.$api.requested({
+          "id": 20240111131404,
+          "content": {
+            "sa_hrcashbillid": this.$route.query.id,
+            "sa_hrcashbilldetailids":this.delData
+          }
+        })
+        this.tool.showMessage(res,()=>{
+          this.listData(this.param.content.pageNumber = 1)
+          this.$emit('onSuccess')
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });
+      });
+    },
+    async amountChange(val,data){
+      if (data.amount < 0){
+        data.amount = -Math.abs(data.amount).toFixed(4)
+      }else {
+        data.amount = Math.abs(data.amount).toFixed(4)
+      }
+      const res = await this.$api.requested({
+        "id": 20240111131204,
+        "content": {
+          "sa_hrcashbillid": this.$route.query.id,
+          "hrcashbilldetail": [
+            {
+              "sa_hrcashbilldetailid":data.sa_hrcashbilldetailid,
+              "sa_orderitemsid": data.sa_orderitemsid,
+              "remarks":data.remarks,
+              "sa_orderid":data.sa_orderid,
+              "amount":data.amount
+            }
+          ]
+        }
+      })
+      this.listData(this.param.content.pageNumber = 1)
+      this.$emit('onSuccess')
+    }
   },
   mounted() {
     this.listData()

+ 7 - 3
src/SDrpManagement/salerIncome/detail/index.vue

@@ -17,13 +17,13 @@
         :statusCheck="[{key:'status',value:'审核'}]"
     >
       <div slot="customOperation">
-        <toExamine class="inline-16" v-if="tool.checkAuth($route.name,'toExamine')" @examineSuccess="queryMainData" :status="mainData.status"></toExamine>
+        <toExamine class="inline-16" v-if="tool.checkAuth($route.name,'toExamine')" @examineSuccess="examineSuccess" :status="mainData.status"></toExamine>
       </div>
       <div slot="slot0" class="normal-panel">
-        <commissionDetails></commissionDetails>
+        <commissionDetails ref="commissionRef" @onSuccess="queryMainData" :data="mainData"></commissionDetails>
       </div>
       <div slot="slot1" class="normal-panel">
-        <expenditure></expenditure>
+        <expenditure ></expenditure>
       </div>
       <div slot="slot2" class="normal-panel">
         <baseInfo  :detailInfo="detailInfo"></baseInfo>
@@ -194,6 +194,10 @@ export default {
         ]
       }
 
+    },
+    examineSuccess(){
+      this.queryMainData()
+      this.$refs.commissionRef.listData(this.$refs.commissionRef.param.content.pageNumber = 1)
     }
   },
   mounted() {

+ 138 - 0
src/SDrpManagement/salerIncome/detail/modules/commissionDetails/add.vue

@@ -0,0 +1,138 @@
+<template>
+  <div>
+    <el-button size="small" :type="status == '审核'?'':'primary'"  @click="addShow" :disabled="status == '审核'">添 加</el-button>
+    <el-drawer
+        title="新增提成明细"
+        :visible.sync="drawerVisible"
+        size="70%"
+        direction="rtl"
+        append-to-body
+        @close="onClose">
+      <div class="drawer__panel" style="margin-bottom: 0!important;">
+        <el-input  style="width:200px;margin-bottom: 10px" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+        </el-input>
+        <tableNewLayout :layout="tablecols" :data="list" :opwidth="200" height="calc(100vh - 235px)" :width="true" :custom="true" :checkbox="true" @selectionChange="selectionChange">
+          <template v-slot:customcol="scope">
+            <div v-if="scope.column.columnname === 'price'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else-if="scope.column.columnname === 'amount'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):scope.column.data[[scope.column.columnname]] == 0?'¥ 0.00':'--'}}
+            </div>
+            <div v-else>
+              {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
+            </div>
+          </template>
+        </tableNewLayout>
+        <div  class="container normal-panel" style="text-align:right">
+          <el-pagination
+              background
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              :page-sizes="[20, 50, 100, 200]"
+              :page-size="100"
+              layout="total,sizes, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="onClose" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary"  @click="onSubmit" class="normal-btn-width" :loading="loading" :disabled="selectData.length == 0">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import {mapGetters} from "vuex";
+
+export default {
+  name: "add",
+  props:['status'],
+  data(){
+    return {
+      drawerVisible:false,
+      param:{
+        "id": 20240624152304,
+        "content": {
+          "sa_hrcashbillid": "",
+          "pageNumber": 1,
+          "pageSize": 100,
+          "where": {
+            "condition": ""
+          }
+        }
+      },
+      tablecols:'',
+      list:[],
+      currentPage:0,
+      total:0,
+      selectData:[]
+    }
+  },
+  computed:{
+    ...mapGetters({
+      loading:'loading'
+    })
+  },
+  methods:{
+    addShow(){
+      this.drawerVisible = true
+      this.listData(this.param.content.pageNumber = 1)
+    },
+    async listData(){
+      this.param.content.sa_hrcashbillid = this.$route.query.id
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    selectionChange(data){
+      this.selectData = data.map(item => {
+        return {
+          "sa_hrcashbilldetailid":0,
+          "sa_orderitemsid":item.sa_orderitemsid,
+          "remarks":item.remarks,
+          "amount":'',
+          "sa_orderid":item.sa_orderid
+        }
+      })
+    },
+    async onSubmit(){
+      this.$store.commit('setLoading',true)
+      const res = await this.$api.requested({
+        "id": 20240111131204,
+        "content": {
+          "sa_hrcashbillid": this.$route.query.id,
+          "hrcashbilldetail": this.selectData
+        }
+      })
+      this.$store.commit('setLoading',false)
+      this.tool.showMessage(res,() => {
+        this.drawerVisible = false
+        this.$emit('onSuccess')
+      })
+    },
+    onClose(){}
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).commissionAddTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 44 - 16
src/components/commissionSetNew/index.vue

@@ -6,7 +6,7 @@
         设置提成
       </div>
       <el-row :gutter="20">
-        <el-form :model="form" :rules="rules" ref="form" label-width="130px" label-position="right" size="mini">
+        <el-form :model="form" :rules="rules" ref="form" label-width="130px" label-position="right" size="mini" @submit.native.prevent>
           <el-col :span="24">
             <el-form-item label="提成计算节点:" prop="reward_point">
               <el-checkbox-group v-model="form.reward_point" @change="rewardChange">
@@ -19,8 +19,13 @@
             </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 label="修正比例:" prop="reward_rate">
+              <el-button-group class="inline-16">
+                <el-button :type="isAdd?'primary':''" @click="addRate">加</el-button>
+                <el-button :type="isMinus?'primary':''" @click="minusRate" >减</el-button>
+              </el-button-group>
+              <el-input-number v-model="form.reward_rate" :min="0" controls-position="right" :precision="2"
+                               :step="0.1"></el-input-number>&nbsp;%
             </el-form-item>
           </el-col>
         </el-form>
@@ -47,18 +52,20 @@ export default {
       callback()
     }
     return {
-      dialogFormVisible:false,
-      isReward:false,
-      isPoint:false,
-      form:{
+      dialogFormVisible: false,
+      isReward: false,
+      isPoint: false,
+      isAdd: true,
+      isMinus: false,
+      form: {
         ownertable: "",
         ownerid: '',
         reward_point: [],
-        reward_rate:'0'
+        reward_rate: '0'
       },
-      rules:{
-        reward_point:[
-          { required: true, message: '选择提成计算节点', trigger: 'change'},
+      rules: {
+        reward_point: [
+          {required: true, message: '选择提成计算节点', trigger: 'change'},
         ],
         reward_rate:[
           { required: false, message: '设置提成比例', trigger: 'change'},
@@ -90,7 +97,14 @@ export default {
           this.isPoint = false
         }
       }
-      this.form.reward_rate = this.data.reward_rate || this.data.reward_rate == 0?Math.round((this.data.reward_rate * 100)*100)/100:0
+      if (this.data.reward_rate <0){
+        this.isMinus = true
+        this.isAdd = false
+      }else {
+        this.isAdd = true
+        this.isMinus = false
+      }
+      this.form.reward_rate = this.data.reward_rate || this.data.reward_rate == 0?this.data.reward_rate>=0?Math.round((this.data.reward_rate * 100)*100)/100:Math.round((Math.abs(this.data.reward_rate) * 100)*100)/100:+0
     },
     rewardChange(val){
       if (this.isPoint){
@@ -122,21 +136,35 @@ export default {
         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)
+        this.form.reward_rate = (parseFloat(this.form.reward_rate) / 100).toFixed(4)
+        if (this.isMinus) {this.form.reward_rate = - this.form.reward_rate}
         const res = await this.$api.requested({
           "id": 20240111084904,
           "content": this.form
         })
-        this.tool.showMessage(res,()=>{
+        this.tool.showMessage(res, () => {
           this.dialogFormVisible = false
+          this.isMinus = false;
+          this.isAdd = true;
           this.$refs.form.resetFields()
           this.$emit('setSuccess')
         })
       })
     },
-    onClose(){
+    addRate() {
+      this.isAdd = true;
+      this.isMinus = false;
+    },
+    minusRate() {
+      this.isMinus = true;
+      this.isAdd = false;
+    },
+    onClose() {
       this.$refs.form.resetFields()
-    }
+      this.dialogFormVisible = false
+      this.isMinus = false;
+      this.isAdd = true;
+    },
   }
 }
 </script>