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

业务员支出凭证、业务员收入凭证调整

qymljy 1 год назад
Родитель
Сommit
45af4d5366

+ 50 - 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,50 @@
               </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):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'orderprice'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'price'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'rewardamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'payapplyamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </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 + '%':'--'}}
+                    </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 + '%':'--'}}
+                    </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 +133,7 @@ export default {
         "subclass": "",
         "remarks": "",
         "amount": "",
-        "source_hrcashbill": [ ] //用于建支出凭证时传选择的收入凭证信息
+        "hrcashbilldetail": [] //用于建支出凭证时传选择的收入凭证信息
       },
       rules:{
         hrid:[
@@ -118,8 +142,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 +176,7 @@ export default {
           "id": 20240111143204,
           "content": {
             "pageNumber": 1,
-            "pageSize": 999,
+            "pageSize": 99999,
             "sa_hraccountclassid":"",
             "hrid":"",
             "where": {
@@ -233,10 +257,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>

+ 74 - 11
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):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'orderExpectedamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'rewardamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'payapplyamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </div>
+                    <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+                      {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+                    </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">
@@ -98,12 +121,7 @@ export default {
         "subclass": "",
         "remarks": "",
         "amount": "",
-        "source_hrcashbill": [  //用于建支出凭证时传选择的收入凭证信息
-          {
-            "ownerid": "",
-            "amount": ""
-          }
-        ]
+        'sa_orderid':"",
       },
       rules:{
         hrid:[
@@ -135,7 +153,21 @@ export default {
           "where": {}
         }
       },
-      accountData:[]
+      accountData:[],
+      orderParam:{
+        "id": 20240625140304,
+        "content": {
+          "hrid":"",
+          "sa_hraccountclassid":"",
+          "pageNumber": 1,
+          "pageSize": 999999,
+          "where": {
+            "condition": ""
+          }
+        }
+      },
+      orderList:[],
+      orderTablecols:[]
     }
   },
   methods:{
@@ -154,6 +186,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,6 +203,9 @@ 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)=>{
@@ -182,6 +219,8 @@ export default {
           this.$refs.formRef.resetFields()
           this.form.name = ''
           this.form.hrid = ''
+          this.form.sa_orderid = ''
+          this.orderList = []
           this.$emit('onSuccess')
         })
       })
@@ -190,6 +229,29 @@ 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
+      }
     }
   },
   watch:{
@@ -202,6 +264,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>

+ 2 - 2
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>

+ 5 - 3
src/SDrpManagement/commissionDistribution/detail/components/income.vue

@@ -56,11 +56,13 @@
           {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
         </div>
         <div v-else-if="scope.column.columnname === 'amount'">
-          <div v-if="data.status == '发放'"> {{scope.column.data[[scope.column.columnname]]?'¥&nbsp;'+ tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}</div>
-          <div v-else>
+          <div v-if="data.status != '发放' && tool.checkAuth($route.name,'revenueDetails')">
             <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):'--'}}
+          </div>
         </div>
         <div v-else>
           {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
@@ -196,7 +198,6 @@ export default {
       this.delData = val.map(item=>item.sa_hrpayapplydetailid)
     },
     async amountChange(val,data){
-      console.log(val,data)
       if (val > data.unpayapplyamount){
         this.isCheck = true
         this.sa_hrcashbilldetailid = data.sa_hrcashbilldetailid
@@ -215,6 +216,7 @@ export default {
             ]
           }
         })
+        this.isCheck = false
         this.listData(this.param.content.pageNumner = 1)
         this.$emit('delSuccess')
       }

+ 6 - 6
src/SDrpManagement/myaccountclass/index.vue

@@ -95,10 +95,10 @@
             </el-input>
             <exportFile class="inline-16" :columns="drawType?tablecolsIncome:tablecolsPay" :param="paramInfo" :fileName="drawTitle"></exportFile>
           </div>
-          <div>
+<!--          <div>
             <span class="search__label">审核日期:</span>
             <span style="font-size: 14px">{{checkDate}}</span>
-          </div>
+          </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">
@@ -115,7 +115,7 @@
                 <span v-if="scope.column.data[scope.column.columnname]">
                   ¥{{tool.formatAmount(scope.column.data[scope.column.columnname],2)}}
                 </span>
-              <span v-else>--</span>
+                <span v-else>--</span>
             </p>
             <p v-else-if="scope.column.columnname === 'outamount'">
                 <span v-if="scope.column.data[scope.column.columnname]">
@@ -139,7 +139,7 @@
               @current-change="voucherHandleCurrentChange"
               :current-page="voucherCurrentPage"
               :pager-count="5"
-              :page-sizes="[100, 50,100, 200]"
+              :page-sizes="[100, 150,200, 250]"
               :page-size="100"
               layout="total,sizes, prev, pager, next, jumper"
               :total="voucherTotal">
@@ -165,7 +165,7 @@ export default {
         "id":20230111103403,
         "content": {
           "pageNumber":1,
-          "pageSize":20,
+          "pageSize":100,
           "sa_accountclassid":"",
           "where":{
             "condition":"",
@@ -197,7 +197,7 @@ export default {
             "condition": ""
           },
           "pageNumber":1,
-          "pageSize":20
+          "pageSize":100
         }
       },
       total:0,

+ 109 - 20
src/SDrpManagement/salerExpenditure/detail/components/income.vue

@@ -1,31 +1,55 @@
 <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 v-if="tool.checkAuth($route.name,'incomeDetail')" :data="data" @onSuccess="listData"></add>
+      </div>
+      <div class="mt-10 inline-16">
+        <el-button v-if="tool.checkAuth($route.name,'incomeDetail')"  @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 v-if="tool.checkAuth($route.name,'incomeDetail')" :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" @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 != '审核' && tool.checkAuth($route.name,'incomeDetail')">
+            <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):'--'}}
+          </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):'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'orderprice'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'price'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'rewardamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'payapplyamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
         </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):'--'}}
         </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 + '%':'--'}}
+        </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 + '%':'--'}}
         </div>
         <div v-else>
           {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
@@ -51,12 +75,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 +100,9 @@ export default {
       tablecols:[],
       list:[],
       total:0,
-      currentPage:0
+      currentPage:0,
+      isCheck:false,
+      delData:[]
     }
   },
   methods:{
@@ -112,7 +142,66 @@ export default {
         })
         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() {

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

@@ -0,0 +1,138 @@
+<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 === 'price'">
+              {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+            </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>

+ 98 - 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" v-if="tool.checkAuth($route.name,'commissionDetails')" :status="data.status"></add>
+    </div>
+    <div class="mt-10 inline-16">
+      <el-button size="small" v-if="tool.checkAuth($route.name,'commissionDetails')" :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 v-if="tool.checkAuth($route.name,'commissionDetails')" :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,36 @@
             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):'--'}}
         </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):'--'}}
         </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 + '%':'--'}}
         </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 + '%':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'amount'">
+          <div v-if="data.status != '审核' && tool.checkAuth($route.name,'commissionDetails')">
+            <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):'--'}}
+          </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):'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'rewardamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'payapplyamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'unpayapplyamount'">
+          {{scope.column.data[[scope.column.columnname]]?'¥ '+tool.formatAmount(scope.column.data[[scope.column.columnname]],2):'--'}}
         </div>
         <div v-else>
           {{scope.column.data[[scope.column.columnname]] || scope.column.columnname === 'operation'?scope.column.data[[scope.column.columnname]]:'--'}}
@@ -34,8 +63,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 +73,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 +86,7 @@ export default {
         "content": {
           "sa_hrcashbillid":"",
           "pageNumber": 1,
-          "pageSize": 20,
+          "pageSize": 50,
           "where": {
             "condition": ""
           }
@@ -62,7 +95,8 @@ export default {
       tablecols:[],
       list:[],
       total:0,
-      currentPage:0
+      currentPage:0,
+      delData:[]
     }
   },
   methods:{
@@ -83,6 +117,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 = 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()

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

@@ -17,10 +17,10 @@
         :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>
@@ -194,6 +194,10 @@ export default {
         ]
       }
 
+    },
+    examineSuccess(){
+      this.queryMainData()
+      this.$refs.commissionRef.listData(this.$refs.commissionRef.param.content.pageNumber = 1)
     }
   },
   mounted() {

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

@@ -0,0 +1,126 @@
+<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):'--'}}
+            </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">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+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:[]
+    }
+  },
+  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(){
+      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.$emit('onSuccess')
+      })
+    },
+    onClose(){}
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).commissionAddTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>