Procházet zdrojové kódy

1、新增采购商下的用户进件(小微)

billisme před 4 roky
rodič
revize
b1826794ac

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

@@ -55,3 +55,11 @@ export const agreeSign = () => {
   })
 }
 
+export const updateProductQual = (row) => {
+  return request({
+    url: '/api/cyzh-bussiness-info/bussinessinfo/updateProductQual',
+    method: 'post',
+    data: row
+  })
+}
+

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

@@ -48,3 +48,11 @@ export const update = (row) => {
   })
 }
 
+export const userRegister = (row) => {
+  return request({
+    url: '/api/cyzh-bussiness-register-request/bussinessregisterrequest/userRegister',
+    method: 'post',
+    data: row
+  })
+}
+

+ 50 - 0
src/api/bussinessmng/bussinessuserinfo.js

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

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

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

+ 20 - 2
src/views/bussinessmng/bussinessinfo.vue

@@ -39,7 +39,7 @@
       </template>
     </avue-crud>
 
-    <bussinessinfo-add v-show="addVisible" @submit="submit" :form1="data1" :form2="data2" :form3="data3" :curEvent="currentEvent" ref="addDialog" @closeDialog="closeDialog"></bussinessinfo-add>
+    <bussinessinfo-add v-show="addVisible" @submit="submit" :form1="data1" :form2="data2" :form3="data3" :form4="data4" :curEvent="currentEvent" ref="addDialog" @closeDialog="closeDialog"></bussinessinfo-add>
     <bussinessinfo-detail v-show="detailVisible" :form1="detailData" ref="detailDialog"></bussinessinfo-detail>
     <el-dialog title="商户进件申请记录" :append-to-body="true" :visible.sync="registerRequestVisible" top="1vh" @close="closeRequestDialog" :close-on-click-modal="false">
       <bussiness-register-request :bussiness-info-id="bussinessInfoId" v-if="registerRequestVisible"></bussiness-register-request>
@@ -105,6 +105,15 @@
           contactEmail: '',
           servicePhone: ''
         },
+        data4: {
+          agreementPhotoUrlList: [],
+          systemScreenshotUrlList: [],
+          specialPermitProcessUrlList: [],
+          bussinessInfoId: '',
+          agreementPhotoUrl: '',
+          systemScreenshotUrl: '',
+          specialPermitProcessUrl: ''
+        },
         //详情
         detailData:{},
         detailVisible: false,
@@ -323,7 +332,6 @@
           viewBtn: this.vaildData(this.permission.bussinessinfo_view, false),
           delBtn: this.vaildData(this.permission.bussinessinfo_delete, false),
           editBtn: this.vaildData(this.permission.bussinessinfo_edit, false),
-          submitBtn: this.vaildData(this.permission.bussinessinfo_submit, false),
         };
       },
       ids() {
@@ -372,6 +380,16 @@
           licenceUrl: item.licenceUrl,
           handLicenceUrl: item.handLicenceUrl,
           openAccountLicenceUrl: item.openAccountLicenceUrl,
+        };
+        this.data4.bussinessInfoId = item.id;
+        if(item.agreementPhotoUrl){
+            this.data4.agreementPhotoUrlList = [{name: "附件1", url: item.agreementPhotoUrl, response: {data: item.agreementPhotoUrl}}];
+        }
+        if(item.agreementPhotoUrl){
+            this.data4.systemScreenshotUrlList = [{name: "附件2", url: item.systemScreenshotUrl, response: {data: item.agreementPhotoUrl}}];
+        }
+        if(item.specialPermitProcessUrl){
+            this.data4.specialPermitProcessUrlList = [{name: "附件3", url: item.specialPermitProcessUrl, response: {data: item.specialPermitProcessUrl}}];
         }
         getByTypeAndBussinessInfoId(10, item.id).then(res =>{
           that.data2 = res.data.data;

+ 16 - 2
src/views/bussinessmng/bussinessregisterrequest.vue

@@ -39,7 +39,8 @@
 
   export default {
     props:{
-      bussinessInfoId: null
+      bussinessInfoId: null,
+      userInfoId: null
     },
     data() {
       return {
@@ -84,6 +85,17 @@
                 value: "id"
               },
             },
+            {
+              label: "用户名称",
+              prop: "userInfoId",
+              type: "select",
+              filterable: true,
+              dicUrl: "/api/cyzh-bussiness-user-info/bussinessuserinfo/listUserInfo",
+              props:{
+                label: "userName",
+                value: "id"
+              },
+            },
             {
               label: "申请状态",
               prop: "applicationStatus",
@@ -228,10 +240,12 @@
         this.onLoad(this.page, this.query);
       },
       onLoad(page, params = {}) {
-        debugger
         if(this.bussinessInfoId != null){
           params['bussinessInfoId'] = this.bussinessInfoId;
         }
+        if(this.userInfoId != null){
+          params['userInfoId'] = this.userInfoId;
+        }
         this.loading = true;
         getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
           const data = res.data.data;

+ 560 - 0
src/views/bussinessmng/bussinessuserinfo.vue

@@ -0,0 +1,560 @@
+<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="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.bussinessuserinfo_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+      <template slot="registerStatus" slot-scope="{row}">
+        <el-tag plain type="warning" size="small" v-if="row.registerStatus === 100">资料完善中</el-tag>
+        <el-tag plain type="primary" size="small" v-if="row.registerStatus === 98">送审中</el-tag>
+        <el-tag plain type="warning" size="small" v-if="row.registerStatus === 102">审核中</el-tag>
+        <el-tag plain type="success" size="small" v-if="row.registerStatus === 200">审核成功</el-tag>
+        <el-tag plain type="danger" size="small" v-if="row.registerStatus === 400">审核失败</el-tag>
+        <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>
+      </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="bussinessInfoId" v-if="registerRequestVisible"></bussiness-register-request>
+    </el-dialog>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/bussinessmng/bussinessuserinfo";
+  import {mapGetters} from "vuex";
+  import {userRegister} from "@/api/bussinessmng/bussinessregisterrequest";
+  import bussinessRegisterRequest from "../bussinessmng/bussinessregisterrequest.vue"
+
+  export default {
+    components: {
+      bussinessRegisterRequest
+    },
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        bussinessInfoId: null,
+        registerRequestVisible: false,
+        isLoading: false,
+        selectionList: [],
+        option: {
+          height:'auto',
+          menuWidth: 300,
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          delBtn: false,
+          selection: true,
+          dialogClickModal: false,
+          group:[
+            {
+              label: '主体信息',
+              collapse:true,
+              prop: "merchantSubjectInfo",
+              column: [ {
+                label: "用户名称",
+                prop: "userName",
+                hide: true,
+                rules: [{
+                  required: true,
+                  message: "请输入用户名称",
+                  trigger: "blur"
+                }]
+              },
+                {
+                  label: "用户简称",
+                  prop: "userShortName",
+                  rules: [{
+                    required: true,
+                    message: "请输入用户简称",
+                    trigger: "blur"
+                  }]
+                },]
+            },
+            {
+              label: '法人信息',
+              collapse: true,
+              prop: "merchantCorporationInfo",
+              column: [
+                {
+                  label: "证件类型",
+                  prop: "userLicenceType",
+                  type: "select",
+                  span: 8,
+                  dicData:[
+                    {
+                      label:"身份证",
+                      value:"ID_CARD"
+                    },
+                    {
+                      label:"护照",
+                      value: "PASSPORT"
+                    },
+                    {
+                      label:"港澳居民往来内地通行证",
+                      value: "HM_VISITORPASS"
+                    },
+                    {
+                      label:"台胞证",
+                      value: "TAIWAN"
+                    },
+                    {
+                      label:"士兵证",
+                      value: "SOLDIER"
+                    },
+                    {
+                      label:"军官证",
+                      value: "OFFICERS"
+                    }
+                  ],
+                  hide: true,
+                  rules: [{
+                    required: true,
+                    message: "请输入用户证件号",
+                    trigger: "blur"
+                  }]
+                },
+                {
+                  label: "证件号",
+                  prop: "userLicenceNo",
+                  span: 8,
+                  labelWidth: 100,
+                  hide: true,
+                  rules: [{
+                    required: true,
+                    message: "请输入用户证件号",
+                    trigger: "blur"
+                  }]
+                },
+                {
+                  label: "手机号",
+                  prop: "userPhone",
+                  span: 8,
+                  labelWidth: 100,
+                  hide: true,
+                  rules: [{
+                    required: true,
+                    message: "请输入银行留手机号码",
+                    trigger: "blur"
+                  }]
+                },
+                {
+                  label: "法人证件正面照",
+                  prop: "userCardFrontUrl",
+                  type: "upload",
+                  hide:true,
+                  labelWidth: 130,
+                  listType: "picture-img",
+                  action: '/api/putObject',
+                  propsHttp: {
+                    url: 'data'
+                  },
+                  rules: [{
+                    required: true,
+                    message: "请上传法人证件正面照",
+                    trigger: "blur"
+                  }]
+                },
+                {
+                  label: "法人证件反面照",
+                  prop: "userCardBackUrl",
+                  type: "upload",
+                  hide:true,
+                  labelWidth: 130,
+                  listType: "picture-img",
+                  action: '/api/putObject',
+                  propsHttp: {
+                    url: 'data'
+                  },
+                  rules: [{
+                    required: true,
+                    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: "用户名称",
+              prop: "userName",
+              search: true,
+              display: false,
+              rules: [{
+                required: true,
+                message: "请输入用户名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "所属采购商",
+              prop: "bussinessId",
+              labelWidth: 100,
+              search: true,
+              searchLabelWidth: 100,
+              type: "select",
+              filterable: true,
+              dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500",
+              props:{
+                label: "name",
+                value: "id"
+              },
+              rules: [{
+                required: true,
+                message: "请选择所属采购商",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "进件状态",
+              prop: "registerStatus",
+              type: "select",
+              search: true,
+              slot: true,
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=merchant_register_status",
+              display: false,
+              props:{
+                label: "dictValue",
+                value: "dictKey"
+              },
+            },
+            {
+              label: "审核意见",
+              prop: "auditOpinion",
+              disabled: true,
+              rules: [{
+                required: false,
+                message: "请输入审核意见",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.bussinessuserinfo_add, false),
+          viewBtn: this.vaildData(this.permission.bussinessuserinfo_view, false),
+          delBtn: this.vaildData(this.permission.bussinessuserinfo_delete, false),
+          editBtn: this.vaildData(this.permission.bussinessuserinfo_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      closeRequestDialog(){
+        this.registerRequestVisible = false;
+      },
+      handleRegisterRequestView(bussinessInfoId){
+        this.bussinessInfoId = bussinessInfoId;
+        this.registerRequestVisible = true;
+      },
+      submitRegister(userInfoId) {
+        this.$confirm("确定提交进件申请吗?如果需要修改,请先点击保存后再提交申请", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(() => {
+          userRegister({"userInfoId": userInfoId}).then(() => {
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.onLoad(this.page);
+          });
+        });
+      },
+      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();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 425 - 0
src/views/bussinessmng/bussinessuserwithdraw.vue

@@ -0,0 +1,425 @@
+<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="danger"
+                   size="small"
+                   icon="el-icon-delete"
+                   plain
+                   v-if="permission.bussinessuserwithdraw_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/bussinessmng/bussinessuserwithdraw";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "商户请求号",
+              prop: "requestNo",
+              rules: [{
+                required: true,
+                message: "请输入商户请求号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商户号",
+              prop: "merchantNo",
+              rules: [{
+                required: true,
+                message: "请输入商户号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "提现卡ID",
+              prop: "bankCardId",
+              rules: [{
+                required: true,
+                message: "请输入提现卡ID",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "提现账号",
+              prop: "bankAccountNo",
+              rules: [{
+                required: true,
+                message: "请输入提现账号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "到账类型	REAL_TIME:实时	TWO_HOUR:2小时到账	NEXT_DAY:次日到账(无特殊情况资金于次日上午7点左右到提现银行账户中)",
+              prop: "receiveType",
+              rules: [{
+                required: true,
+                message: "请输入到账类型	REAL_TIME:实时	TWO_HOUR:2小时到账	NEXT_DAY:次日到账(无特殊情况资金于次日上午7点左右到提现银行账户中)",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "提现金额,单位:元(RMB)",
+              prop: "orderAmount",
+              rules: [{
+                required: true,
+                message: "请输入提现金额,单位:元(RMB)",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "银行附言	展示在收款银行系统中的附言,由数字、字母、汉字组成(最终附言内容以银行实际账单为准)。",
+              prop: "remark",
+              rules: [{
+                required: true,
+                message: "请输入银行附言	展示在收款银行系统中的附言,由数字、字母、汉字组成(最终附言内容以银行实际账单为准)。",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "小微用户信息id",
+              prop: "userInfoId",
+              rules: [{
+                required: true,
+                message: "请输入小微用户信息id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "提现状态",
+              prop: "withdrawStatus",
+              rules: [{
+                required: true,
+                message: "请输入提现状态",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "第三方提现订单号",
+              prop: "thirdOrderNo",
+              rules: [{
+                required: true,
+                message: "请输入第三方提现订单号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "第三方提现日志",
+              prop: "thirdLog",
+              rules: [{
+                required: true,
+                message: "请输入第三方提现日志",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "失败原因",
+              prop: "failReason",
+              rules: [{
+                required: true,
+                message: "请输入失败原因",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "返回的失败信息",
+              prop: "returnMsg",
+              rules: [{
+                required: true,
+                message: "请输入返回的失败信息",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "真实提现金额",
+              prop: "thirdOrderAmount",
+              rules: [{
+                required: true,
+                message: "请输入真实提现金额",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "扣账金额,返回易宝账户扣账金额(包含提现金额和手续费(若有))",
+              prop: "thirdDebitAmount",
+              rules: [{
+                required: true,
+                message: "请输入扣账金额,返回易宝账户扣账金额(包含提现金额和手续费(若有))",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "到账金额,返回提现银行账户入账金额",
+              prop: "thirdReceiveAmount",
+              rules: [{
+                required: true,
+                message: "请输入到账金额,返回提现银行账户入账金额",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "手续费",
+              prop: "fee",
+              rules: [{
+                required: true,
+                message: "请输入手续费",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "手续费承担方商编	",
+              prop: "feeUndertakerMerchantNo",
+              rules: [{
+                required: true,
+                message: "请输入手续费承担方商编	",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "冲退标识,1冲退,0没冲退",
+              prop: "isReversed",
+              rules: [{
+                required: true,
+                message: "请输入冲退标识,1冲退,0没冲退",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "返回银行通知冲退的时间",
+              prop: "reverseTime",
+              rules: [{
+                required: true,
+                message: "请输入返回银行通知冲退的时间",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "所属入驻商户",
+              prop: "bussinessId",
+              rules: [{
+                required: true,
+                message: "请输入所属入驻商户",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "第一次转账订单ID",
+              prop: "firstTransferOrderId",
+              rules: [{
+                required: true,
+                message: "请输入第一次转账订单ID",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "第二次转账订单ID",
+              prop: "secondTransferOrderId",
+              rules: [{
+                required: true,
+                message: "请输入第二次转账订单ID",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "小微用户进件请求ID",
+              prop: "userRegisterRequestId",
+              rules: [{
+                required: true,
+                message: "请输入小微用户进件请求ID",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商户提供的订单号",
+              prop: "bussinessOrderId",
+              rules: [{
+                required: true,
+                message: "请输入商户提供的订单号",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.bussinessuserwithdraw_add, false),
+          viewBtn: this.vaildData(this.permission.bussinessuserwithdraw_view, false),
+          delBtn: this.vaildData(this.permission.bussinessuserwithdraw_delete, false),
+          editBtn: this.vaildData(this.permission.bussinessuserwithdraw_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      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();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 112 - 15
src/views/bussinessmng/comps/bussinessinfo-add.vue

@@ -7,6 +7,7 @@
                     <el-step title="商户主体信息"></el-step>
                     <el-step title="商户法人信息"></el-step>
                     <el-step title="商户联系人信息"></el-step>
+                    <el-step title="贸易证明信息"></el-step>
                 </el-steps>
             </div>
             <!-- 商户主体信息 -->
@@ -168,18 +169,58 @@
                 </el-card>
             </div>
 
+            <!-- 贸易证明信息 -->
+            <div style="margin-top: 40px;" v-if="active==3">
+                <el-card style="margin-top: 10px;">
+                    <el-form ref="form4" :model="form4" :rules="rules4"  label-width="120px">
+                        <el-row>
+                            <el-col span="12">
+                                <el-form-item prop="agreementPhotoUrl" label="业务协议图片/附件" label-width="140px">
+                                    <el-upload class="upload-demo" action="/api/putObject" :limit="1"
+                                               :on-preview="handlePreview" :file-list="form4.agreementPhotoUrlList" :on-success="uploadAgreementPhotoUrl" :before-upload="beforeUploadProductQualUrl">
+                                        <el-button size="small" type="primary">点击上传</el-button>
+                                    </el-upload>
+                                </el-form-item>
+                                <span style="color: red; font-size: 12px;">使用付款作业时与上下游签署的协议扫面件<br>或者复印件或者照片压缩包等</span>
+                            </el-col>
+                            <el-col span="12">
+                                <el-form-item prop="systemScreenshotUrl" label="业务系统截图/附件" label-width="140px">
+                                    <el-upload class="upload-demo" action="/api/putObject" :limit="1"
+                                               :on-preview="handlePreview" :file-list="form4.systemScreenshotUrlList" :on-success="uploadSystemScreenshotUrl" :before-upload="beforeUploadProductQualUrl">
+                                        <el-button size="small" type="primary">点击上传</el-button>
+                                    </el-upload>
+                                </el-form-item>
+                                <span style="color: red; font-size: 12px;">使用到付款业务的系统截图等证明资料</span>
+                            </el-col>
+                        </el-row>
+                        <el-divider></el-divider>
+                        <el-row>
+                            <el-col>
+                                <el-form-item prop="specialPermitProcessUrl" label="特批开通流程/截图" label-width="130px">
+                                    <el-upload class="upload-demo" action="/api/putObject" :limit="1"
+                                               :on-preview="handlePreview" :file-list="form4.specialPermitProcessUrlList" :on-success="uploadSpecialPermitProcessUrl" :before-upload="beforeUploadProductQualUrl">
+                                        <el-button size="small" type="primary">点击上传</el-button>
+                                    </el-upload>
+                                </el-form-item>
+                                <span style="color: red; font-size: 12px;">特定情况下,申请开通付款业务的易宝审批完成截图</span>
+                            </el-col>
+                        </el-row>
+                    </el-form>
+                </el-card>
+            </div>
+
             <div slot="footer" class="dialog-footer">
                 <div v-if="curEvent === 'add'">
                     <el-button v-if="active!=0" @click="active--">上一步</el-button>
                     <el-button type="primary" @click="handelNext" v-if="this.form1.id != null && this.form1.id.length > 0">下一步</el-button>
                     <el-button type="primary" @click="next">保存</el-button>
-                    <el-button v-if="active==2" type="primary" @click="submit()">提交申请</el-button>
+                    <el-button v-if="active==3" type="primary" @click="submit()">提交申请</el-button>
                 </div>
                 <div v-if="curEvent === 'edit'">
                     <el-button v-if="active!=0" @click="active--">上一步</el-button>
                     <el-button type="primary" @click="handelNext">下一步</el-button>
                     <el-button type="primary" @click="next">保存</el-button>
-                    <el-button v-if="active==2" type="primary" @click="submit()">提交申请</el-button>
+                    <el-button v-if="active==3" type="primary" @click="submit()">提交申请</el-button>
                 </div>
             </div>
         </el-dialog>
@@ -194,13 +235,14 @@
         getDistrictList
     } from "@/api/bussinessregion/bussinessregion";
     import {getDictionary} from "@/api/system/dictbiz";
-    import {add as saveBussInfo, update as updateBussInfo} from "@/api/bussinessmng/bussinessinfo"
+    import {add as saveBussInfo, update as updateBussInfo, updateProductQual as updateBussInfoProductQual} from "@/api/bussinessmng/bussinessinfo"
     import {add as saveContactInfo} from "@/api/bussinessmng/bussinesscontactinfo"
     export default {
         props:{
             form1:Object,
             form2:Object,
             form3:Object,
+            form4:Object,
             curEvent: 'add',
         },
         data() {
@@ -244,6 +286,7 @@
                     label: 'cityName',
                     value: 'cityCode',
                 },
+                paymentSceneOptions: [],
                 bussinessRoleOptions: [],
                 signTypeOptions: [],
                 legalLicenceTypeOptions: [],
@@ -283,10 +326,10 @@
                         { required: true, message: '请上传商户证件照片', trigger: 'blur' },
                     ],
                     openAccountLicenceUrl: [
-                        { required: true, message: '请上传法人证件照正面照片', trigger: 'blur' },
+                        { required: true, message: '请上传开户许可证照片', trigger: 'change' },
                     ],
                     handLicenceUrl: [
-                        { required: true, message: '请上传法人证件照反面照片', trigger: 'blur' },
+                        { required: true, message: '请上传手持营业执照在经营场所的照片', trigger: 'change' },
                     ],
                 },
                 rules2:{
@@ -300,10 +343,10 @@
                         {required: true, message: '请输入法人证件号码', trigger: 'blur' },
                     ],
                     legalLicenceFrontUrl:[
-                        {required: true, message: '请上传法人证件正面照片', trigger: 'blur' },
+                        {required: true, message: '请上传法人证件正面照片', trigger: 'change' },
                     ],
                     legalLicenceBackUrl:[
-                        {required: true, message: '请上传法人证件反面照片', trigger: 'blur' },
+                        {required: true, message: '请上传法人证件反面照片', trigger: 'change' },
                     ]
                 },
                 rules3:{
@@ -317,6 +360,15 @@
                         {required: true, trigger: 'blur', validator: validateEmail },
                     ]
                 },
+
+                rules4:{
+                    agreementPhotoUrl:[
+                        {required: true, message: '请上传付款业务协议图片/附件', trigger: 'change' },
+                    ],
+                    systemScreenshotUrl: [
+                        { required: true, message: '请上传付款业务系统截图/附件', trigger: 'change' },
+                    ],
+                },
                 //勋章配置
                 medalList:[],
             }
@@ -326,10 +378,18 @@
             this.loadDict("business_sign_type");
             this.loadDict("legal_licence_type");
             this.loadDict("yee_business_role");
+            this.loadDict("yee_payment_scene");
         },
         methods: {
+            handlePreview(file){
+                let fileTag = document.createElement('a')
+                let event = new MouseEvent('click');
+                fileTag.download = file.name
+                fileTag.href = file.response.data;
+                fileTag.dispatchEvent(event)
+            },
             beforeUploadLicenceUrl(file){
-                if(file.size > 5242880){
+                if(file.size > 2621440){
                     this.$message.error("图片大小不能超过2.5M");
                     return false;
                 }else{
@@ -344,6 +404,14 @@
                     return true;
                 }
             },
+            beforeUploadProductQualUrl(file){
+                if(file.size > 31457280){
+                    this.$message.error("文件大小不能超过30M");
+                    return false;
+                }else{
+                    return true;
+                }
+            },
             openDialog(){
                 if(this.curEvent == 'edit'){
                     this.loadCity(this.form1.province);
@@ -358,6 +426,8 @@
                         this.legalLicenceTypeOptions = res.data.data;
                     }else if(code === 'yee_business_role'){
                         this.bussinessRoleOptions = res.data.data;
+                    }else if(code === 'yee_payment_scene'){
+                        this.paymentSceneOptions = res.data.data;
                     }
                 })
             },
@@ -412,24 +482,37 @@
             uploadLegalLicenceBackUrl(res) {
                 this.form2.legalLicenceBackUrl = res.data
             },
+            //上传付款业务协议图片/附件
+            uploadAgreementPhotoUrl(res) {
+                this.form4.agreementPhotoUrl = res.data
+            },
+            //上传付款业务系统截图/附件
+            uploadSystemScreenshotUrl(res) {
+                this.form4.systemScreenshotUrl = res.data
+            },
+            //上传特批开通流程/截图
+            uploadSpecialPermitProcessUrl(res) {
+                this.form4.specialPermitProcessUrl = res.data
+            },
             next(){
                 switch (this.active){
                     case 0: {
                         let validForm1 = this.validForm('form1');
                         if(validForm1){
-                            if(this.curEvent == "add"){
+                            if(this.curEvent === "add"){
                                 saveBussInfo(this.form1).then(res => {
                                     this.$message({
                                         type: "success",
                                         message: res.data.msg
                                     });
-                                    this.form1.id = res.data.data.id;
                                     this.form.bussinessInfoId = res.data.data.id;
+                                    this.form1.id = res.data.data.id;
                                     this.form2.bussinessInfoId = res.data.data.id;
                                     this.form3.bussinessInfoId = res.data.data.id;
+                                    this.form4.bussinessInfoId = res.data.data.id;
                                     this.handelNext()
                                 });
-                            }else if(this.curEvent == "edit" && this.form1.id != null){
+                            }else if(this.curEvent === "edit" && this.form1.id != null){
                                 updateBussInfo(this.form1).then(res => {
                                     this.$message({
                                         type: "success",
@@ -438,6 +521,7 @@
                                     this.form.bussinessInfoId = res.data.data.id;
                                     this.form2.bussinessInfoId = res.data.data.id;
                                     this.form3.bussinessInfoId = res.data.data.id;
+                                    this.form4.bussinessInfoId = res.data.data.id;
                                     this.handelNext()
                                 });
                             }
@@ -448,7 +532,7 @@
                         let validForm2 = this.validForm('form2');
                         if(validForm2){
                             this.form2.contactType = 10;
-                            this.form2.bussinessInfoId = this.form1.id
+                            this.form2.bussinessInfoId = this.form1.id;
                             saveContactInfo(this.form2).then(res => {
                                 this.$message({
                                     type: "success",
@@ -461,10 +545,10 @@
                         break;
                     }
                     case 2:{
-                        let validForm3 = this.validForm('form3');
+                        let validForm3 = this.validForm('form4');
                         if(validForm3){
                             this.form3.contactType = 11;
-                            this.form3.bussinessInfoId = this.form1.id
+                            this.form3.bussinessInfoId = this.form1.id;
                             this.form3.servicePhone = this.form3.contactMobile;
                             saveContactInfo(this.form3).then(res => {
                                 this.$message({
@@ -477,6 +561,19 @@
                         }
                         break;
                     }
+                    case 3:{
+                        let validForm4 = this.validForm('form4');
+                        if(validForm4){
+                            updateBussInfoProductQual(this.form4).then(res => {
+                                this.$message({
+                                    type: "success",
+                                    message: res.data.msg
+                                });
+                                this.handelNext()
+                            });
+                        }
+                        break;
+                    }
                     default:
                         break;
                 }
@@ -495,7 +592,7 @@
                 return result;
             },
             handelNext(){
-                if (this.active !=2) {
+                if (this.active !=3) {
                     this.active++
                 }
             },

+ 27 - 0
src/views/bussinessmng/comps/bussinessinfo-detail.vue

@@ -134,6 +134,33 @@
                         </el-form-item>
                     </el-form>
                 </el-tab-pane>
+                <el-tab-pane label="贸易证明信息">
+                    <el-form ref="form1" :model="form1">
+                        <el-row>
+                            <el-col span="12">
+                                <el-form-item prop="agreementPhotoUrl" label="付款业务协议图片/附件">
+                                    <el-link v-if="form1.agreementPhotoUrl" :href="form1.agreementPhotoUrl" type="primary">下载附件</el-link>
+                                    <span v-else>暂无上传文件</span>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="12">
+                                <el-form-item prop="systemScreenshotUrl" label="付款业务系统截图/附件">
+                                    <el-link v-if="form1.systemScreenshotUrl" :href="form1.systemScreenshotUrl" type="primary">下载附件</el-link>
+                                    <span v-else>暂无上传文件</span>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-divider></el-divider>
+                        <el-row>
+                            <el-col>
+                                <el-form-item prop="specialPermitProcessUrl" label="特批开通流程/截图">
+                                    <el-link v-if="form1.specialPermitProcessUrl" :href="form1.specialPermitProcessUrl" type="primary">下载附件</el-link>
+                                    <span v-else>暂无上传文件</span>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </el-form>
+                </el-tab-pane>
             </el-tabs>
         </el-dialog>
     </basic-container>

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

@@ -27,7 +27,7 @@
         <div>
           <el-row :gutter="50">
             <el-col span="12">
-              <div style="background-color: #4d4dff;border-radius: 30px;">
+              <div style="background: linear-gradient(-125deg, #2f9de2, #4d4dff);border-radius: 30px;">
                 <avue-avatar style="margin:20px;" :size="128" :src="bussiness.icon"></avue-avatar>
                 <span style="color: white;">{{bussiness.name}}</span>
                 <span style="color: white;margin-left: 40px;">API密钥:</span> <span style="color: white;margin-left:10px">******</span>
@@ -38,7 +38,7 @@
                     </el-button>
                   </el-tooltip>
                 </span>
-                <span style="margin-left: 30px;background-color: #4d4dff;">
+                <span style="font-weight: bold; margin-left: 30px;">
                   <el-link target="_blank" type="success" :href="bussiness.apiFilePath">Api文档下载(打开需输入密钥)</el-link>
                 </span>
                 <div>
@@ -79,7 +79,7 @@
                   <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>-->

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

@@ -193,7 +193,7 @@
         let that = this;
         let newMoney = 0.00;
         list.forEach(item => {
-          newMoney = newMoney + parseFloat(item['amount']);
+          newMoney = newMoney + parseFloat(item['amount']).toFixed(2);
         });
         that.money = newMoney;
         that.moneyChina = that.digitUppercase(that.money);
@@ -234,7 +234,7 @@
               this.isLoading = false;
               this.chongzhiVisible = false;
               this.$emit('finishSubmit', null);
-              window.open(res.data.data);
+              location.href = res.data.data
             }).catch(err => {
               this.isLoading = false;
             })