Răsfoiți Sursa

1、采购商用户收款

billisme 4 ani în urmă
părinte
comite
6f701d4aa6

+ 10 - 0
src/api/bussinessmng/bussiness.js

@@ -111,3 +111,13 @@ export const testSubmit = (row) => {
     data: row
   })
 }
+
+export const getByBussinessType = (bussinessType) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/getByBussinessType',
+    method: 'get',
+    params: {
+      bussinessType
+    }
+  })
+}

+ 8 - 0
src/api/bussinessmng/bussinessuserwithdraw.js

@@ -58,3 +58,11 @@ export const withdrawStat = (params) => {
   })
 }
 
+export const payToUser = (row) => {
+  return request({
+    url: '/api/cyzh-bussiness-user-withdraw/bussinessuserwithdraw/payToUser',
+    method: 'post',
+    data: row
+  })
+}
+

+ 60 - 0
src/api/bussinessmng/productratestrategy.js

@@ -0,0 +1,60 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/cyzh-product-rate-strategy/productratestrategy/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/cyzh-product-rate-strategy/productratestrategy/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/cyzh-product-rate-strategy/productratestrategy/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/cyzh-product-rate-strategy/productratestrategy/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/cyzh-product-rate-strategy/productratestrategy/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const listRateStrategy = (params) => {
+  return request({
+    url: '/api/cyzh-product-rate-strategy/productratestrategy/listRateStrategy',
+    method: 'get',
+    params: {
+      ...params
+    }
+  })
+}
+

+ 1 - 1
src/views/bussiness/order.vue

@@ -42,7 +42,7 @@
           },*/
             {
               icon: 'el-icon-warning',
-              label: '扣款明细',
+              label: '代付明细',
               prop: 'tab3',
             }]
         },

+ 91 - 3
src/views/bussinessmng/bussiness.vue

@@ -59,7 +59,8 @@
     update,
     remove,
     generateApi,
-    enableBussiness
+    enableBussiness,
+    getByBussinessType
   } from "@/api/bussinessmng/bussiness";
   import {
     mapGetters
@@ -78,6 +79,7 @@
           total: 0
         },
         bussinessId: null,
+        parentBussiness:[],
         selectionList: [],
         option: {
           height: 'auto',
@@ -93,8 +95,52 @@
           dialogClickModal: false,
           dialogWidth: "30%",
           column: [
+            {
+              label: "商户类型",
+              labelWidth: 110,
+              prop: "bussinessType",
+              type: "select",
+              dicData:[
+                {
+                label:"平台商",
+                value:10
+              },
+                {
+                  label:"入驻商",
+                  value: 20
+                },
+              ],
+              rules: [{
+                required: true,
+                message: "请选择商户类型",
+                trigger: "blur"
+              }],
+              change:({value,column})=>{
+                if(value){
+                  this.bussinesssTypeChange(value);
+                }
+              }
+            },
+            {
+              label: "上级商户",
+              labelWidth: 110,
+              prop: "parentBussinessId",
+              clearable: true,
+              type: "select",
+              dicData:[],
+              span: 24,
+              props:{
+                label: "name",
+                value: "id"
+              },
+              rules: [{
+                required: false,
+                message: "请选择上级商户",
+                trigger: "blur"
+              }]
+            },
            {
-              label: "采购商名称",
+              label: "商名称",
               labelWidth: 110,
               search: true,
               searchLabelWidth: 110,
@@ -102,7 +148,7 @@
               span: 24,
               rules: [{
                 required: true,
-                message: "请输入采购商名称",
+                message: "请输入商名称",
                 trigger: "blur"
               }]
             },
@@ -167,6 +213,23 @@
                 trigger: "blur"
               }]
             },
+            {
+              label: "产品策略",
+              prop: "rateStrategyId",
+              type: "select",
+              dicUrl: "/api/cyzh-product-rate-strategy/productratestrategy/listRateStrategy",
+              props:{
+                label: "name",
+                value: "id"
+              },
+              span: 24,
+              hide: true,
+              rules: [{
+                required: true,
+                message: "请选择产品策略",
+                trigger: "blur"
+              }]
+            },
             {
               label: "api文档",
               prop: "apiFilePath",
@@ -205,6 +268,8 @@
               type: "select",
               slot: true,
               search: true,
+              addDisplay: false,
+              editDisplay: false,
               dicData: [
                 {
                   label: "禁用",
@@ -252,7 +317,30 @@
         return ids.join(",");
       }
     },
+    created(){
+      getByBussinessType(10).then(res=>{
+        let parentBussinessIdCol = this.findObject(this.option.column, "parentBussinessId");
+        parentBussinessIdCol.dicData = res.data.data;
+      })
+    },
     methods: {
+      bussinesssTypeChange(value, column){
+        let parentBussinessIdCol = this.findObject(this.option.column, "parentBussinessId");
+        if (value === 10){
+          parentBussinessIdCol.rules[0].required = false;
+          this.form.parentBussinessId = null;
+        }else{
+          parentBussinessIdCol.rules[0].required = true;
+          if(this.parentBussiness.length > 0){
+
+          }else{
+            getByBussinessType(10).then(res=>{
+              this.parentBussiness = res.data.data;
+              parentBussinessIdCol.dicData = res.data.data;
+            })
+          }
+        }
+      },
       handleEnable(bussinessId, enable){
         if(enable == 1){
           this.$confirm("确定要禁用吗?", {

+ 137 - 195
src/views/bussinessmng/bussinessuserinfo.vue

@@ -36,25 +36,49 @@
         <el-tag plain type="danger" size="small" v-if="row.registerStatus === 99">送审失败</el-tag>
       </template>
       <!-- 操作菜单 -->
-      <template slot-scope="{row}" slot="menu">
-        <el-button style="color:green;" type="text" v-if="row.registerStatus != null && row.registerStatus !== 98 && row.registerStatus !== 102 && row.registerStatus !== 200" size="small" plain class="none-border"
-                   @click.stop="submitRegister(row.id)">提交申请
-        </el-button>
-        <el-button style="color:orange;"type="text" size="small" plain class="none-border" @click.stop="handleRegisterRequestView(row.id)">进件记录</el-button>
-        <el-button v-if="permission.bussinessuserinfo_withdraw" style="color:red;"type="text" size="small" plain class="none-border" @click.stop="handleWithdrawView(row.id)">账单记录</el-button>
-      </template>
+        <template slot-scope="{row}" slot="menu">
+          <div>
+              <el-button v-if="row.registerStatus !== 200" style="color:orange;"type="text" size="small" plain class="none-border" @click.stop="submitRegister(row.id)">提交申请</el-button>
+              <el-button v-if="row.registerStatus === 200 && permission.bussinessuserinfo_withdraw" style="color:green;" type="text" size="small" plain class="none-border" @click.stop="showPay(row.id)">发起代付</el-button>
+              <el-button v-if="row.registerStatus === 200 && permission.bussinessuserinfo_withdrawrecords" style="color:red;"type="text" size="small" plain class="none-border" @click.stop="handleWithdrawRecordsView(row.id)">账单记录</el-button>
+          </div>
+        </template>
     </avue-crud>
     <el-dialog title="用户进件申请记录" :append-to-body="true" :visible.sync="registerRequestVisible" top="1vh" @close="closeRequestDialog" :close-on-click-modal="false">
       <bussiness-register-request :user-info-id="userInfoId" v-if="registerRequestVisible"></bussiness-register-request>
     </el-dialog>
-    <el-dialog title="用户账单记录" :append-to-body="true" :visible.sync="withdrawVisible" top="1vh" @close="closeWithdrawDialog" :close-on-click-modal="false" width="80%">
-      <bussiness-user-withdraw :user-info-id="userInfoId" v-if="withdrawVisible"></bussiness-user-withdraw>
+    <el-dialog title="用户账单记录" :append-to-body="true" :visible.sync="withdrawRecordsVisible" top="1vh" @close="closeWithdrawRecordsDialog" :close-on-click-modal="false" width="80%">
+      <bussiness-user-withdraw :user-info-id="userInfoId" v-if="withdrawRecordsVisible"></bussiness-user-withdraw>
+    </el-dialog>
+    <el-dialog title="发起用户收款" :append-to-body="true" :visible.sync="withdrawVisible" top="5vh" @close="closeWithdrawDialog" :close-on-click-modal="false" width="50%">
+      <el-form ref="payForm" :model="payForm" :rules="payRules" label-width="120px">
+        <el-form-item label="收款账户名:" prop="userName">
+          <span>{{payForm.userName}}</span>
+        </el-form-item>
+        <el-form-item label="收款账户:" prop="bankCardNo">
+          <span>{{payForm.bankCardNo}}</span>
+        </el-form-item>
+        <el-form-item label="开户行编码:" prop="bankCode">
+          <span>{{payForm.bankCode}}</span>
+        </el-form-item>
+        <el-form-item label="预留手机号:" prop="userPhone">
+          <span>{{payForm.userPhone}}</span>
+        </el-form-item>
+        <el-form-item label="收款金额(元):" prop="orderAmount" label-width="140px">
+          <el-input v-model="payForm.orderAmount"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="withdrawOrder(payForm)">提交</el-button>
+          <el-button @click="resetWithdrawOrderForm('payForm')">重置</el-button>
+        </el-form-item>
+      </el-form>
     </el-dialog>
   </basic-container>
 </template>
 
 <script>
   import {getList, getDetail, add, update, remove} from "@/api/bussinessmng/bussinessuserinfo";
+  import {payToUser} from "@/api/bussinessmng/bussinessuserwithdraw";
   import {mapGetters} from "vuex";
   import {userRegister} from "@/api/bussinessmng/bussinessregisterrequest";
   import bussinessRegisterRequest from "../bussinessmng/bussinessregisterrequest.vue"
@@ -77,6 +101,7 @@
         userInfoId: null,
         registerRequestVisible: false,
         withdrawVisible: false,
+        withdrawRecordsVisible: false,
         isLoading: false,
         selectionList: [],
         option: {
@@ -94,100 +119,111 @@
           dialogClickModal: false,
           group:[
             {
-              label: '主体信息',
+              label: '收款人信息',
               collapse:true,
               prop: "merchantSubjectInfo",
               column: [ {
-                label: "用户名称",
+                label: "姓名",
                 prop: "userName",
                 hide: true,
                 rules: [{
                   required: true,
-                  message: "请输入用户名称",
+                  message: "请输入收款人姓名",
                   trigger: "blur"
                 }]
               },
                 {
-                  label: "用户简称",
-                  prop: "userShortName",
+                  label: "手机号",
+                  prop: "userPhone",
                   rules: [{
                     required: true,
-                    message: "请输入用户简称",
+                    message: "请输入手机号",
                     trigger: "blur"
                   }]
                 },]
             },
             {
-              label: '法人信息',
-              collapse: true,
-              prop: "merchantCorporationInfo",
+              label: '账户信息',
+              collapse:true,
+              prop: "accountInfo",
               column: [
                 {
-                  label: "证件类型",
-                  prop: "userLicenceType",
+                  label: "账户类型",
+                  prop: "bankAccountType",
                   type: "select",
-                  span: 8,
+                  labelWidth: 110,
+                  span:8,
+                  hide: true,
+                  value:"DEBIT_CARD",
                   dicData:[
                     {
-                      label:"身份证",
-                      value:"ID_CARD"
-                    },
-                    {
-                      label:"护照",
-                      value: "PASSPORT"
-                    },
-                    {
-                      label:"港澳居民往来内地通行证",
-                      value: "HM_VISITORPASS"
-                    },
-                    {
-                      label:"台胞证",
-                      value: "TAIWAN"
-                    },
-                    {
-                      label:"士兵证",
-                      value: "SOLDIER"
-                    },
-                    {
-                      label:"军官证",
-                      value: "OFFICERS"
+                      label:"借记卡",
+                      value:"DEBIT_CARD"
                     }
                   ],
+                  rules: [{
+                    required: true,
+                    message: "请输入银行账户类型",
+                    trigger: "blur"
+                  }]
+                },
+                {
+                  label: "开户行",
+                  prop: "bankCode",
+                  span:8,
+                  labelWidth: 110,
+                    type: "select",
+                    dicUrl: "/api/cyzh-guosen/bankcode/listBankCode?name={{key}}",
+                    props:{
+                      label: "name",
+                        value: "code"
+                    },
                   hide: true,
+                    remote:true,
+                    filterable: true,
+                    placeholder:"输入关键字可搜索",
                   rules: [{
                     required: true,
-                    message: "请输入用户证件号",
+                    message: "请输入开户总行编码",
                     trigger: "blur"
                   }]
                 },
                 {
-                  label: "证件号",
-                  prop: "userLicenceNo",
-                  span: 8,
-                  labelWidth: 100,
+                  label: "银行账户号码",
+                  prop: "bankCardNo",
+                  span:8,
+                  labelWidth: 110,
                   hide: true,
                   rules: [{
                     required: true,
-                    message: "请输入用户证件号",
+                    message: "请输入银行账户号码",
                     trigger: "blur"
                   }]
                 },
+              ]
+            },
+            {
+              label: '证件信息',
+              collapse: true,
+              prop: "merchantCorporationInfo",
+              column: [
                 {
-                  label: "手机号",
-                  prop: "userPhone",
+                  label: "身份证号",
+                  prop: "userLicenceNo",
                   span: 8,
                   labelWidth: 100,
                   hide: true,
                   rules: [{
                     required: true,
-                    message: "请输入银行留手机号码",
+                    message: "请输入用户证件号",
                     trigger: "blur"
                   }]
                 },
                 {
-                  label: "法人证件正面照",
+                  label: "身份证件正面照",
                   prop: "userCardFrontUrl",
                   type: "upload",
+                  span: 8,
                   hide:true,
                   labelWidth: 130,
                   listType: "picture-img",
@@ -197,14 +233,15 @@
                   },
                   rules: [{
                     required: true,
-                    message: "请上传法人证件正面照",
+                    message: "请上传身份证件正面照",
                     trigger: "blur"
                   }]
                 },
                 {
-                  label: "法人证件反面照",
+                  label: "身份证件反面照",
                   prop: "userCardBackUrl",
                   type: "upload",
+                  span: 8,
                   hide:true,
                   labelWidth: 130,
                   listType: "picture-img",
@@ -214,152 +251,20 @@
                   },
                   rules: [{
                     required: true,
-                    message: "请输入用户证件反面照",
+                    message: "请输入身份证件反面照",
                     trigger: "blur"
                   }]
                 },
               ],
             },
-            {
-              label: '经营地址信息',
-              collapse:true,
-              prop: "businessAddressInfo",
-              column: [
-                {
-                  label: "经营省",
-                  prop: "province",
-                  type: "select",
-                  filterable: true,
-                  dicUrl: "/api/cyzh-region/region/getProvinceList",
-                  cascaderItem: ['city', 'district'],
-                  props:{
-                    label: "provinceName",
-                    value: "provinceCode"
-                  },
-                  span: 8,
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请选择经营省",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "经营市",
-                  prop: "city",
-                  type: "select",
-                  span: 8,
-                  hide: true,
-                  filterable: true,
-                  cascaderIndex:0,
-                  dicUrl: "/api/cyzh-region/region/getCityList?provinceCode={{province}}",
-                  props:{
-                    label: "cityName",
-                    value: "cityCode"
-                  },
-                  rules: [{
-                    required: true,
-                    message: "请选择经营市",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "经营区",
-                  prop: "district",
-                  type: "select",
-                  span: 8,
-                  hide: true,
-                  cascaderIndex:0,
-                  dicUrl: "/api/cyzh-region/region/getDistrictList?cityCode={{city}}",
-                  props:{
-                    label: "districtName",
-                    value: "districtCode"
-                  },
-                  rules: [{
-                    required: true,
-                    message: "请选择经营区",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "经营地址",
-                  prop: "userAddress",
-                  span: 24,
-                  row: true,
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入经营地址",
-                    trigger: "blur"
-                  }]
-                },
-              ]
-            },
-            {
-              label: '结算账户信息',
-              collapse:true,
-              prop: "accountInfo",
-              column: [
-                {
-                  label: "银行账户类型",
-                  prop: "bankAccountType",
-                  type: "select",
-                  labelWidth: 110,
-                  span:8,
-                  hide: true,
-                  dicData:[
-                    {
-                      label:"借记卡",
-                      value:"DEBIT_CARD"
-                    },
-                    {
-                      label:"存折",
-                      value: "PASSBOOK"
-                    },
-                  ],
-                  rules: [{
-                    required: true,
-                    message: "请输入银行账户类型",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "开户总行编码",
-                  prop: "bankCode",
-                  span:8,
-                  labelWidth: 110,
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入开户总行编码",
-                    trigger: "blur"
-                  }]
-                },
-                {
-                  label: "银行账户",
-                  prop: "bankCardNo",
-                  span:8,
-                  hide: true,
-                  rules: [{
-                    required: true,
-                    message: "请输入银行账户号码",
-                    trigger: "blur"
-                  }]
-                },
-              ]
-            },
           ],
           column: [
             {
-              label: "用户名称",
+              label: "收款人姓名",
               prop: "userName",
               search: true,
+              searchLabelWidth: 100,
               display: false,
-              rules: [{
-                required: true,
-                message: "请输入用户名称",
-                trigger: "blur"
-              }]
             },
             {
               label: "所属采购商",
@@ -367,6 +272,8 @@
               labelWidth: 100,
               search: true,
               searchLabelWidth: 100,
+              addDisplay: false,
+              editDisplay: false,
               type: "select",
               filterable: true,
               dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500",
@@ -397,6 +304,8 @@
               label: "审核意见",
               prop: "auditOpinion",
               disabled: true,
+              addDisplay: false,
+              editDisplay: false,
               rules: [{
                 required: false,
                 message: "请输入审核意见",
@@ -405,7 +314,14 @@
             },
           ]
         },
-        data: []
+        data: [],
+        payForm:{userInfoId: '', orderAmount: '', userName:'', bankCode: '', userPhone: ''},
+        payRules: {
+          orderAmount: [
+            { required: true, message: '收款金额必填', trigger: 'blur' },
+            { pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请正确填写收款金额,可保留两位小数' },
+          ],
+        }
       };
     },
     computed: {
@@ -428,22 +344,39 @@
       }
     },
     methods: {
+      resetWithdrawOrderForm(formName){
+        this.payForm.orderAmount = '';
+      },
+      showPay(rowId){
+        let that = this;
+        getDetail(rowId).then(res => {
+          that.payForm.userInfoId = res.data.data.id;
+          that.payForm.userName = res.data.data.userName;
+          that.payForm.bankCardNo = res.data.data.bankCardNo;
+          that.payForm.bankCode = res.data.data.bankCode;
+          that.payForm.userPhone = res.data.data.userPhone;
+          that.withdrawVisible = true;
+        });
+      },
       closeRequestDialog(){
         this.registerRequestVisible = false;
       },
       closeWithdrawDialog(){
         this.withdrawVisible = false;
       },
+      closeWithdrawRecordsDialog(){
+        this.withdrawRecordsVisible = false;
+      },
       handleRegisterRequestView(userInfoId){
         this.userInfoId = userInfoId;
         this.registerRequestVisible = true;
       },
-      handleWithdrawView(userInfoId){
+      handleWithdrawRecordsView(userInfoId){
         this.userInfoId = userInfoId;
-        this.withdrawVisible = true;
+        this.withdrawRecordsVisible = true;
       },
       submitRegister(userInfoId) {
-        this.$confirm("确定提交进件申请吗?如果需要修改,请先点击保存后再提交申请", {
+        this.$confirm("确定提交进件申请吗?如果需要修改,请先修改后再提交申请", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
@@ -451,7 +384,7 @@
           userRegister({"userInfoId": userInfoId}).then(() => {
             this.$message({
               type: "success",
-              message: "操作成功!"
+              message: "提交成功,请等待审核结果"
             });
             this.onLoad(this.page);
           });
@@ -565,6 +498,15 @@
           this.loading = false;
           this.selectionClear();
         });
+      },
+      withdrawOrder(payForm){
+        payToUser(payForm).then(res =>{
+          this.$message({
+            type: "success",
+            message: res.data.msg
+          });
+          this.withdrawVisible = false;
+        })
       }
     }
   };

+ 4 - 4
src/views/bussinessmng/bussinessuserwithdraw.vue

@@ -71,7 +71,7 @@
               prop: "requestNo",
             },
             {
-              label: "提现账号",
+              label: "收款账号",
               prop: "bankAccountNo",
             },
             {
@@ -94,11 +94,11 @@
               ]
             },
             {
-              label: "提现金额(元)",
+              label: "收款金额(元)",
               prop: "orderAmount",
             },
             {
-              label: "用户名称",
+              label: "收款用户",
               prop: "userInfoId",
               type: "select",
               filterable: true,
@@ -109,7 +109,7 @@
               },
             },
             {
-              label: "提现状态",
+              label: "收款状态",
               prop: "withdrawStatus",
               dicData: [
                 {

+ 7 - 7
src/views/bussinessmng/comps/bussinessinfo-add.vue

@@ -323,13 +323,13 @@
                         { required: true, message: '请输入开户许可证编号', trigger: 'blur' },
                     ],
                     licenceUrl: [
-                        { required: true, message: '请上传商户证件照片', trigger: 'blur' },
+                        { required: false, message: '请上传商户证件照片', trigger: 'blur' },
                     ],
                     openAccountLicenceUrl: [
-                        { required: true, message: '请上传开户许可证照片', trigger: 'change' },
+                        { required: false, message: '请上传开户许可证照片', trigger: 'change' },
                     ],
                     handLicenceUrl: [
-                        { required: true, message: '请上传手持营业执照在经营场所的照片', trigger: 'change' },
+                        { required: false, message: '请上传手持营业执照在经营场所的照片', trigger: 'change' },
                     ],
                 },
                 rules2:{
@@ -343,10 +343,10 @@
                         {required: true, message: '请输入法人证件号码', trigger: 'blur' },
                     ],
                     legalLicenceFrontUrl:[
-                        {required: true, message: '请上传法人证件正面照片', trigger: 'change' },
+                        {required: false, message: '请上传法人证件正面照片', trigger: 'change' },
                     ],
                     legalLicenceBackUrl:[
-                        {required: true, message: '请上传法人证件反面照片', trigger: 'change' },
+                        {required: false, message: '请上传法人证件反面照片', trigger: 'change' },
                     ]
                 },
                 rules3:{
@@ -363,10 +363,10 @@
 
                 rules4:{
                     agreementPhotoUrl:[
-                        {required: true, message: '请上传付款业务协议图片/附件', trigger: 'change' },
+                        {required: false, message: '请上传付款业务协议图片/附件', trigger: 'change' },
                     ],
                     systemScreenshotUrl: [
-                        { required: true, message: '请上传付款业务系统截图/附件', trigger: 'change' },
+                        { required: false, message: '请上传付款业务系统截图/附件', trigger: 'change' },
                     ],
                 },
                 //勋章配置

+ 412 - 0
src/views/bussinessmng/productratestrategy.vue

@@ -0,0 +1,412 @@
+<template>
+    <basic-container>
+        <avue-crud :option="option"
+                   :table-loading="loading"
+                   :data="data"
+                   :page.sync="page"
+                   :permission="permissionList"
+                   :before-open="beforeOpen"
+                   v-model="form"
+                   ref="crud"
+                   @row-update="rowUpdate"
+                   @row-save="rowSave"
+                   @row-del="rowDel"
+                   @search-change="searchChange"
+                   @search-reset="searchReset"
+                   @selection-change="selectionChange"
+                   @current-change="currentChange"
+                   @size-change="sizeChange"
+                   @refresh-change="refreshChange"
+                   @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button type="primary" size="small" icon="el-icon-plus"
+                           v-if="permission.bussinessinfo_add"
+                           @click="showAdd">新增
+                </el-button>
+                <el-button type="danger"
+                           size="small"
+                           icon="el-icon-delete"
+                           plain
+                           v-if="permission.productratestrategy_delete"
+                           @click="handleDelete">删 除
+                </el-button>
+            </template>
+            <template slot-scope="{row}" slot="menu">
+                <el-button type="text" size="small" icon="el-icon-edit" plain class="none-border"
+                           @click.stop="handleEdit(row)">编辑
+                </el-button>
+            </template>
+        </avue-crud>
+        <el-dialog title="产品添加" :append-to-body="true" :visible.sync="formVisible" top="1vh"
+                   :close-on-click-modal="false" width="80%" @close="closeDialog">
+            <avue-form :option="formOption" v-model="formObj" @submit="submit">
+            </avue-form>
+        </el-dialog>
+    </basic-container>
+</template>
+
+<script>
+    import {getList, getDetail, add, update, remove} from "@/api/bussinessmng/productratestrategy";
+    import {mapGetters} from "vuex";
+
+    export default {
+        data() {
+            return {
+                form: {},
+                query: {},
+                loading: true,
+                page: {
+                    pageSize: 10,
+                    currentPage: 1,
+                    total: 0
+                },
+                formVisible: false,
+                selectionList: [],
+                isView: false,
+                option: {
+                    height: 'auto',
+                    calcHeight: 30,
+                    tip: false,
+                    searchShow: true,
+                    searchMenuSpan: 6,
+                    border: true,
+                    index: true,
+                    selection: true,
+                    addBtn: false,
+                    editBtn: false,
+                    viewBtn: false,
+                    dialogClickModal: false,
+                    column: [
+                        {
+                            label: "策略名称",
+                            prop: "name",
+                            rules: [{
+                                required: true,
+                                message: "请输入策略名称",
+                                trigger: "blur"
+                            }]
+                        },
+                        {
+                            label: "产品费率json字符串",
+                            prop: "productRateJson",
+                            rules: [{
+                                required: true,
+                                message: "请输入产品费率json字符串",
+                                trigger: "blur"
+                            }],
+                            display: false
+                        },
+                        {
+                            label: "付款场景",
+                            prop: "paymentScene",
+                            dicUrl: "/api/blade-system/dict-biz/dictionary?code=yee_payment_scene",
+                            props:{
+                                label: "dictValue",
+                                value: "dictKey"
+                            },
+                        },
+                    ]
+                },
+                data: [],
+                formObj: {
+                    id:null,
+                    name: null,
+                    rateList: []
+                },
+                formOption: {
+                    column: [
+                        {
+                            label: "策略名称",
+                            prop: "name",
+                            rules: [{
+                                required: true,
+                                message: "请输入策略名称",
+                                trigger: "blur"
+                            }]
+                        },
+                        {
+                            label: "付款场景",
+                            prop: "paymentScene",
+                            type: "select",
+                            dicUrl: "/api/blade-system/dict-biz/dictionary?code=yee_payment_scene",
+                            props:{
+                                label: "dictValue",
+                                value: "dictKey"
+                            },
+                            rules: [{
+                                required: false,
+                                message: "请选择付款场景",
+                                trigger: "blur"
+                            }]
+                        },
+                        {
+                            label: '产品列表',
+                            prop: 'rateList',
+                            type: 'dynamic',
+                            span: 24,
+                            children: {
+                                align: 'center',
+                                headerAlign: 'center',
+                                rowAdd:(done)=>{
+                                    done({
+                                        rateType:'SINGLE_PERCENT'
+                                    });
+                                },
+                                column: [
+                                    {
+                                        label: '产品',
+                                        type: "select",
+                                        prop: "productCode",
+                                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=yee_product_rate",
+                                        props:{
+                                            label: "dictValue",
+                                            value: "dictKey"
+                                        },
+                                        display: false,
+                                        rules: [{
+                                            required: true,
+                                            message: '请选择产品',
+                                        }],
+                                    },
+                                    {
+                                        label: '计费策略',
+                                        prop: "rateType",
+                                        type: 'select',
+                                        rules: [{
+                                            required: true,
+                                            message: '请选择计费策略',
+                                            trigger: "blur"
+                                        }],
+                                        dicData: [{
+                                            label: '单笔百分比',
+                                            value: "SINGLE_PERCENT"
+                                        }, {
+                                            label: '单笔固定值',
+                                            value: "SINGLE_FIXED"
+                                        }],
+                                    },
+                                    {
+                                        label: '单笔百分比',
+                                        prop: "percentRate",
+                                        placeholder: "0-100,0.21表示千分2.1,最多保留2位小数",
+                                        rules: [{
+                                            required: false,
+                                            message: '请填写单笔百分比',
+                                        }],
+                                    },
+                                    {
+                                        label: '单笔固定值',
+                                        prop: "fixedRate",
+                                        placeholder: "整数位最多6位,小数位最多保留2位",
+                                        rules: [{
+                                            required: false,
+                                            message: '请填写单笔固定值',
+                                        }],
+                                    }
+                                ]
+                            }
+                        },
+                    ]
+                },
+            };
+        },
+        computed: {
+            ...mapGetters(["permission"]),
+            permissionList() {
+                return {
+                    addBtn: this.vaildData(this.permission.productratestrategy_add, false),
+                    viewBtn: this.vaildData(this.permission.productratestrategy_view, false),
+                    delBtn: this.vaildData(this.permission.productratestrategy_delete, false),
+                    editBtn: this.vaildData(this.permission.productratestrategy_edit, false)
+                };
+            },
+            ids() {
+                let ids = [];
+                this.selectionList.forEach(ele => {
+                    ids.push(ele.id);
+                });
+                return ids.join(",");
+            }
+        },
+        methods: {
+        closeDialog(){
+            this.formObj = {id:null, name: null, rateList: []};
+        },
+          rateTypeChange(value, index){
+              let percentRateCol = this.findObject(this.formOption.column[1].children.column, "percentRate");
+              let fixedRateCol = this.findObject(this.formOption.column[1].children.column, "fixedRate");
+              if (value === "SINGLE_PERCENT"){
+                  percentRateCol.rules[0].required = true;
+                  fixedRateCol.rules[0].required = false;
+                  this.formObj.rateList[index].fixedRate = null;
+              }else{
+                  percentRateCol.rules[0].required = false;
+                  fixedRateCol.rules[0].required = true;
+                  this.formObj.rateList[index].percentRate = null;
+              }
+          },
+          showAdd() {
+              this.formObj = {id:null, name: null, rateList: []};
+              this.formVisible = true;
+              this.$forceUpdate();
+          },
+          handleEdit(row) {
+              getDetail(row.id).then(res =>{
+                  this.formObj = res.data.data;
+                  this.formVisible = true;
+              })
+          },
+            handleView(row) {
+                getDetail(row.id).then(res =>{
+                    this.formObj = res.data.data;
+                    this.formVisible = true;
+                })
+            },
+          rowSave(row, done, loading) {
+              add(row).then(() => {
+                  this.onLoad(this.page);
+                  this.$message({
+                      type: "success",
+                      message: "操作成功!"
+                  });
+                  done();
+              }, error => {
+                  loading();
+                  window.console.log(error);
+              });
+          },
+          rowUpdate(row, index, done, loading) {
+              update(row).then(() => {
+                  this.onLoad(this.page);
+                  this.$message({
+                      type: "success",
+                      message: "操作成功!"
+                  });
+                  done();
+              }, error => {
+                  loading();
+                  console.log(error);
+              });
+          },
+          rowDel(row) {
+              this.$confirm("确定将选择数据删除?", {
+                  confirmButtonText: "确定",
+                  cancelButtonText: "取消",
+                  type: "warning"
+              })
+                  .then(() => {
+                      return remove(row.id);
+                  })
+                  .then(() => {
+                      this.onLoad(this.page);
+                      this.$message({
+                          type: "success",
+                          message: "操作成功!"
+                      });
+                  });
+          },
+          handleDelete() {
+              if (this.selectionList.length === 0) {
+                  this.$message.warning("请选择至少一条数据");
+                  return;
+              }
+              this.$confirm("确定将选择数据删除?", {
+                  confirmButtonText: "确定",
+                  cancelButtonText: "取消",
+                  type: "warning"
+              })
+                  .then(() => {
+                      return remove(this.ids);
+                  })
+                  .then(() => {
+                      this.onLoad(this.page);
+                      this.$message({
+                          type: "success",
+                          message: "操作成功!"
+                      });
+                      this.$refs.crud.toggleSelection();
+                  });
+          },
+          beforeOpen(done, type) {
+              if (["edit", "view"].includes(type)) {
+                  getDetail(this.form.id).then(res => {
+                      this.form = res.data.data;
+                  });
+              }
+              done();
+          },
+          searchReset() {
+              this.query = {};
+              this.onLoad(this.page);
+          },
+          searchChange(params, done) {
+              this.query = params;
+              this.page.currentPage = 1;
+              this.onLoad(this.page, params);
+              done();
+          },
+          selectionChange(list) {
+              this.selectionList = list;
+          },
+          selectionClear() {
+              this.selectionList = [];
+              this.$refs.crud.toggleSelection();
+          },
+          currentChange(currentPage) {
+              this.page.currentPage = currentPage;
+          },
+          sizeChange(pageSize) {
+              this.page.pageSize = pageSize;
+          },
+          refreshChange() {
+              this.onLoad(this.page, this.query);
+          },
+          onLoad(page, params = {}) {
+              this.loading = true;
+              getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+                  const data = res.data.data;
+                  this.page.total = data.total;
+                  this.data = data.records;
+                  this.loading = false;
+                  this.selectionClear();
+              });
+          },
+          submit(data, done){
+              let canSubmit = true;
+              for(let index in data.rateList){
+                  let item = data.rateList[index];
+                  let rateType = item.rateType;
+                  if(rateType === 'SINGLE_FIXED'){
+                      this.formObj.rateList[item.$index].percentRate = null;
+                      let fixedRate = item.fixedRate;
+                      if(!fixedRate){
+                          this.$message.error('第' + (item.$index + 1) + "行数据中单笔固定值必填");
+                          canSubmit = false;
+                          break;
+                      }
+                  }else{
+                      this.formObj.rateList[item.$index].fixedRate = null;
+                      let percentRate = item.percentRate;
+                      if(!percentRate){
+                          this.$message.error('第' + (item.$index + 1) + "行数据中单笔百分比必填");
+                          canSubmit = false;
+                          break;
+                      }
+                  }
+              }
+              if(canSubmit){
+                  add(this.formObj).then(res =>{
+                      this.onLoad(this.page, this.query);
+                      this.formVisible = false;
+                      done();
+                  })
+              }else{
+                  done();
+              }
+          }
+        }
+    };
+</script>
+
+<style>
+</style>

+ 0 - 1
src/views/guosen/debit.vue

@@ -21,7 +21,6 @@
         </span>
 
       </div>
-
       <div>
         <span style="margin:10px;">
           <font size="3">

+ 5 - 5
src/views/guosen/withdraw.vue

@@ -152,7 +152,7 @@
               },
             },
             {
-              label: "收款账号",
+              label: "账号",
               prop: "bankAccountNo",
               hide: true
             },
@@ -181,7 +181,7 @@
               prop: "orderAmount",
             },
             {
-              label: "收款用户",
+              label: "收款账户名",
               prop: "userInfoId",
               type: "select",
               filterable: true,
@@ -202,15 +202,15 @@
                   value: 10
                 },
                 {
-                  label: '处理中',
+                  label: '请求已接收(处理中)',
                   value: 11
                 },
                 {
-                  label: '处理中',
+                  label: '请求已受理(处理中)',
                   value: 12
                 },
                 {
-                  label: '处理中',
+                  label: '银行处理中(处理中)',
                   value: 13
                 },
                 {

+ 10 - 10
src/views/wel/index.vue

@@ -75,14 +75,14 @@
             </el-col>
             <el-col span="12" height="400px">
               <el-row :gutter="50">
-                <!--<el-col span="12">
+                <el-col span="12" v-if="permission.bussinessinfo_recharge">
                   <div style="background-color: #4d4dff;border-radius: 30px;" align="center" @click="chongzhi">
                     <img style="margin:10px;" float="center" :size="30" src="/img/bg/qb.png" />
                     <div style="color: white;padding-bottom: 10px;">
                       商户采购
                     </div>
                   </div>
-                </el-col>-->
+                </el-col>
                 <el-col span="12">
                   <div style="background-color: #ff5050;border-radius: 30px;" align="center" @click="toMyOrder">
                     <img style="margin:10px;" float="center" :size="30" src="/img/bg/zd.png" />
@@ -93,14 +93,14 @@
                 </el-col>
               </el-row>
               <el-row :gutter="50">
-                <el-col span="12">
-                  <div style="background-color:  #d633ff;border-radius: 30px;" align="center" @click="toMyDebit">
-                    <img style="margin:10px;" float="center" :size="30" src="/img/bg/fxfr.png" />
-                    <div style="color: white;padding-bottom: 10px;">
-                      分销分润
-                    </div>
-                  </div>
-                </el-col>
+<!--                <el-col span="12">-->
+<!--                  <div style="background-color:  #d633ff;border-radius: 30px;" align="center" @click="toMyDebit">-->
+<!--                    <img style="margin:10px;" float="center" :size="30" src="/img/bg/fxfr.png" />-->
+<!--                    <div style="color: white;padding-bottom: 10px;">-->
+<!--                      分销分润-->
+<!--                    </div>-->
+<!--                  </div>-->
+<!--                </el-col>-->
                 <el-col span="12">
                   <div style="background-color: #8080ff;border-radius: 30px;" align="center" @click="toBin">
                     <img style="margin:10px;" float="center" :size="30" src="/img/bg/sm.png" />

+ 2 - 2
src/views/wel/purchase.vue

@@ -17,7 +17,7 @@
     <template>
       <div align="center" style="font-size: 20px;color: #0099FF;margin-bottom: 20px;">采购金额</div>
       <div align="center">
-        <div>说明:采购后账户余额 = 本次采购金额 - 技术服务费 - 手续费
+        <div>
           <div>
             <table style="width: 100%;" border="1" class="myTable">
               <tr v-for="(item,i) in statDatas" :key="i">
@@ -28,7 +28,7 @@
           </div>
         </div>
         <div align="center" style="margin: 20px;">
-          <el-span style="font-weight: bold">银行:</el-span>
+          <el-span style="font-weight: bold">支付银行:</el-span>
           <el-select v-model="billrecord.bankCode" placeholder="请选择银行" clearable="true" filterable="true">
             <el-option v-for="item in bankCodeList" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey">
             </el-option>