billisme пре 4 година
родитељ
комит
4007a52efc

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

@@ -103,3 +103,11 @@ export const listBussiness = (params) => {
     }
   })
 }
+
+export const testSubmit = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/testSubmit',
+    method: 'post',
+    data: row
+  })
+}

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

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

+ 1 - 1
src/views/activity/activity.vue

@@ -21,7 +21,7 @@
       </template>
 
       <template slot="menuLeft">
-        <el-button type="primary" size="small" icon="el-icon-delete" v-if="permission.activity_add" @click="showAdd">新增
+        <el-button type="primary" size="small" icon="el-icon-plus" v-if="permission.activity_add" @click="showAdd">新增
         </el-button>
       </template>
 

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

@@ -8,7 +8,7 @@
       </template>
 
       <template slot="menuLeft">
-        <el-button type="primary" size="small" icon="el-icon-delete" v-if="permission.bussinessinfo_add && data.length <= 0"
+        <el-button type="primary" size="small" icon="el-icon-plus" v-if="permission.bussinessinfo_add && data.length <= 0"
                    @click="showAdd">新增
         </el-button>
       </template>

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

@@ -60,7 +60,7 @@
     remove,
     generateApi,
     enableBussiness
-  } from "@/api/guosen/bussiness";
+  } from "@/api/bussinessmng/bussiness";
   import {
     mapGetters
   } from "vuex";

+ 1 - 1
src/views/bussinessmng/bussinessinfo.vue

@@ -8,7 +8,7 @@
       </template>
 
       <template slot="menuLeft">
-        <el-button type="primary" size="small" icon="el-icon-delete" v-if="permission.bussinessinfo_add && data.length <= 0"
+        <el-button type="primary" size="small" icon="el-icon-plus" v-if="permission.bussinessinfo_add && data.length <= 0"
                    @click="showAdd">新增
         </el-button>
       </template>

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

@@ -202,7 +202,7 @@
                                         <el-button size="small" type="primary">点击上传</el-button>
                                     </el-upload>
                                 </el-form-item>
-                                <span style="color: red; font-size: 12px;">特定情况下,申请开通付款业务的易宝审批完成截图</span>
+                                <span style="font-size: 12px;">特定情况下,申请开通付款业务的审批完成截图</span>
                             </el-col>
                         </el-row>
                     </el-form>
@@ -545,7 +545,7 @@
                         break;
                     }
                     case 2:{
-                        let validForm3 = this.validForm('form4');
+                        let validForm3 = this.validForm('form3');
                         if(validForm3){
                             this.form3.contactType = 11;
                             this.form3.bussinessInfoId = this.form1.id;

+ 1 - 1
src/views/bussinessmng/platformbussinessinfo.vue

@@ -8,7 +8,7 @@
       </template>
 
       <template slot="menuLeft">
-        <el-button type="primary" size="small" icon="el-icon-delete"
+        <el-button type="primary" size="small" icon="el-icon-plus"
                    @click="showAdd">新增
         </el-button>
       </template>

+ 1 - 1
src/views/present/present.vue

@@ -19,7 +19,7 @@
       </template>
 
       <template slot="menuLeft">
-        <el-button type="primary" size="small" icon="el-icon-delete" v-if="permission.present_add"
+        <el-button type="primary" size="small" icon="el-icon-plus" v-if="permission.present_add"
           @click="showAdd">新增
         </el-button>
       </template>

+ 624 - 0
src/views/test/bussinessmng/comps/platform-bussinessinfo-add.vue

@@ -0,0 +1,624 @@
+<template>
+    <basic-container>
+        <el-dialog title="商户进件信息" :append-to-body="true" :visible.sync="dialogFormVisible" top="1vh" @close="dialogClose" @open="openDialog" :close-on-click-modal="false">
+            <!-- 步骤条 -->
+            <div class="steps">
+                <el-steps :active="active" process-status="finish" align-center>
+                    <el-step title="商户主体信息"></el-step>
+                    <el-step title="商户法人信息"></el-step>
+                    <el-step title="商户联系人信息"></el-step>
+                    <el-step title="商户产品资质信息"></el-step>
+                </el-steps>
+            </div>
+            <!-- 商户主体信息 -->
+            <el-card style="margin-top: 40px;" v-if="active==0">
+                <div style="margin-top:10px;">
+                    <el-form  :model="form1" :rules="rules1" ref="form1" label-width="120px" label-position="right" size="small">
+                        <el-form-item label="所属商户" prop="bussinessId">
+                            <el-select v-model="form1.bussinessId" placeholder="请选择商户角色" clearable="true">
+                                <el-option v-for="item in bussinessOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="商户角色" prop="signType">
+                            <el-select v-model="form1.bussinessRole" placeholder="请选择商户角色" clearable="true">
+                                <el-option v-for="item in bussinessRoleOptions" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="商户签约类型" prop="signType">
+                            <el-select v-model="form1.signType" placeholder="请输入商户类型" clearable="true">
+                                <el-option v-for="item in signTypeOptions" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="商户证件编号" prop="licenceNo">
+                            <el-input v-model="form1.licenceNo" placeholder="请输入商户证件编号"></el-input>
+                        </el-form-item>
+                        <el-form-item label="开户许可证编号" prop="openAccountLicenceNo">
+                            <el-input v-model="form1.openAccountLicenceNo" placeholder="如无开户许可证编号,可传基本存款账户编号"></el-input>
+                        </el-form-item>
+                        <el-form-item label="商户签约名称" prop="signName">
+                            <el-input v-model="form1.signName" placeholder="请输入商户签约名称"></el-input>
+                        </el-form-item>
+                        <el-form-item label="商户简称" prop="shortName">
+                            <el-input v-model="form1.shortName" placeholder="请输入商户简称"></el-input>
+                        </el-form-item>
+                        <el-row>
+                            <el-col span="8">
+                                <el-form-item label="经营地所在省" prop="province">
+                                    <el-select v-model="form1.province" placeholder="请选择经营地所在省" clearable @change="loadCity">
+                                        <el-option
+                                                v-for="item in provinceOptions"
+                                                :key="item.provinceCode"
+                                                :label="item.provinceName"
+                                                :value="item.provinceCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="8">
+                                <el-form-item label="经营地所在市" prop="city">
+                                    <el-select v-model="form1.city" placeholder="请选择经营地所在市" clearable @change="loadDistrict">
+                                        <el-option
+                                                v-for="item in cityOptions"
+                                                :key="item.cityCode"
+                                                :label="item.cityName"
+                                                :value="item.cityCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="8">
+                                <el-form-item label="经营地所在区" prop="district">
+                                    <el-select v-model="form1.district" placeholder="请选择经营地所在区" clearable>
+                                        <el-option
+                                                v-for="item in districtOptions"
+                                                :key="item.districtCode"
+                                                :label="item.districtName"
+                                                :value="item.districtCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-form-item label="经营地址" prop="address">
+                            <el-input v-model="form1.address" placeholder="请输入经营地址"></el-input>
+                        </el-form-item>
+                        <el-row>
+                            <el-col span="12">
+                                <el-form-item prop="licenceUrl" label="商户证件照片" style="width: 45%;">
+                                    <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                               :on-success="uploadLicenceUrl" :before-upload="beforeUploadLicenceUrl">
+                                        <img v-if="form1.licenceUrl" :src="form1.licenceUrl" class="avatar">
+                                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                                    </el-upload>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="12">
+                                <el-form-item prop="handLicenceUrl" label="手持营业执照在经营场所的照片" style="width: 45%;">
+                                    <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                               :on-success="uploadHandLicenceUrl" :before-upload="beforeUploadLicenceUrl">
+                                        <img v-if="form1.handLicenceUrl" :src="form1.handLicenceUrl" class="avatar">
+                                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                                    </el-upload>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-form-item prop="openAccountLicenceUrl" label="开户许可证照片" style="width: 45%;">
+                            <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                       :on-success="uploadOpenAccountLicenceUrl" :before-upload="beforeUploadLicenceUrl">
+                                <img v-if="form1.openAccountLicenceUrl" :src="form1.openAccountLicenceUrl" class="avatar">
+                                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                            </el-upload>
+                        </el-form-item>
+                        <span style="color: red">如无开户许可证,请上传基本存款账户信息表照片</span>
+                    </el-form>
+                </div>
+            </el-card>
+
+            <!-- 商户法人信息 -->
+            <div style="margin-top: 40px;" v-if="active==1">
+                <el-card style="margin-top: 10px;">
+                    <el-form ref="form2"  :model="form2" :rules="rules2">
+                        <el-form-item label="法人姓名" prop="legalName">
+                            <el-input v-model="form2.legalName" placeholder="请输入法人姓名"></el-input>
+                        </el-form-item>
+                        <el-row>
+                            <el-col span="8">
+                                <el-form-item label="法人证件类型" prop="legalLicenceType">
+                                    <el-select v-model="form2.legalLicenceType" placeholder="请输入法人证件类型" clearable="true">
+                                        <el-option v-for="item in legalLicenceTypeOptions" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="16">
+                                <el-form-item label="法人证件号码" prop="legalLicenceNo">
+                                    <el-input v-model="form2.legalLicenceNo" placeholder="请输入法人证件号码"></el-input>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col span="12">
+                                <el-form-item prop="legalLicenceFrontUrl" label="请上传法人证件正面照片" style="width: 45%;">
+                                    <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                               :on-success="uploadLegalLicenceFrontUrl" :before-upload="beforeUploadContactUrl">
+                                        <img v-if="form2.legalLicenceFrontUrl" :src="form2.legalLicenceFrontUrl" class="avatar">
+                                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                                    </el-upload>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="12">
+                                <el-form-item prop="legalLicenceBackUrl" label="法人证件反面照片" style="width: 45%;">
+                                    <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                               :on-success="uploadLegalLicenceBackUrl" :before-upload="beforeUploadContactUrl">
+                                        <img v-if="form2.legalLicenceBackUrl" :src="form2.legalLicenceBackUrl" class="avatar">
+                                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                                    </el-upload>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </el-form>
+                </el-card>
+            </div>
+
+            <!-- 商户联系人信息 -->
+            <div style="margin-top: 40px;" v-if="active==2">
+                <el-card style="margin-top: 10px;">
+                    <el-form ref="form3" :model="form3" :rules="rules3"  label-width="120px">
+                        <el-form-item label="联系人姓名" prop="contactName">
+                            <el-input v-model="form3.contactName" placeholder="请输入联系人姓名"></el-input>
+                        </el-form-item>
+                        <el-form-item label="联系人证件号" prop="contactLicenceNo">
+                            <el-input v-model="form3.contactLicenceNo" placeholder="请输入联系人证件号码"></el-input>
+                        </el-form-item>
+                        <el-form-item label="联系人手机号" prop="contactMobile">
+                            <el-input v-model="form3.contactMobile" placeholder="请输入联系人手机号"></el-input>
+                        </el-form-item>
+                        <el-form-item label="联系人邮箱" prop="contactEmail">
+                            <el-input v-model="form3.contactEmail" placeholder="请输入联系人邮箱"></el-input>
+                        </el-form-item>
+                    </el-form>
+                </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-form-item label="付款场景" prop="paymentScene">
+                            <el-select v-model="form4.paymentScene" placeholder="请选择付款场景" clearable="true">
+                                <el-option v-for="item in bussinessPaymentSceneOptions" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-col span="12">
+                            <el-form-item prop="agreementPhotoUrl" label="付款业务协议图片/附件" style="width: 45%;">
+                                <el-upload class="avatar-uploader" action="/api/putObject" :limit="1"
+                                           :on-preview="handlePreview" :file-list="form4.agreementPhotoUrlArray" :on-success="uploadLegalLicenceBackUrl" :before-upload="beforeUploadContactUrl">
+                                    <el-button size="small" type="primary">点击上传</el-button>
+                                </el-upload>
+                            </el-form-item>
+                        </el-col>
+                        <el-col span="12">
+                            <el-form-item prop="systemScreenshotUrl" label="付款业务系统截图/附件" style="width: 45%;">
+                                <el-upload class="avatar-uploader" action="/api/putObject" :limit="1"
+                                           :on-preview="handlePreview" :file-list="form4.systemScreenshotUrlArray" :on-success="uploadLegalLicenceBackUrl" :before-upload="beforeUploadContactUrl">
+                                    <el-button size="small" type="primary">点击上传</el-button>
+                                </el-upload>
+                            </el-form-item>
+                        </el-col>
+                        <el-col span="12">
+                            <el-form-item prop="specialPermitProcessUrl" label="特批开通流程/截图" style="width: 45%;">
+                                <el-upload class="avatar-uploader" action="/api/putObject" :limit="1"
+                                           :on-preview="handlePreview" :file-list="form4.specialPermitProcessUrlArray" :on-success="uploadLegalLicenceBackUrl" :before-upload="beforeUploadContactUrl">
+                                    <el-button size="small" type="primary">点击上传</el-button>
+                                </el-upload>
+                            </el-form-item>
+                        </el-col>
+                    </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 v-if="active!=3" type="primary" @click="next">保存</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==3" type="primary" @click="submit()">提交申请</el-button>
+                </div>
+            </div>
+        </el-dialog>
+    </basic-container>
+</template>
+
+
+<script>
+    import {
+        getProvinceList,
+        getCityList,
+        getDistrictList
+    } from "@/api/bussinessregion/bussinessregion";
+    import {getDictionary} from "@/api/system/dictbiz";
+    import {platformAdd as savePlatformBussInfo, platformUpdate as updatePlatformBussInfo} from "@/api/bussinessmng/bussinessinfo"
+    import {add as saveContactInfo} from "@/api/bussinessmng/bussinesscontactinfo"
+    import {listBussiness} from "@/api/bussinessmng/bussiness"
+    export default {
+        props:{
+            form1:Object,
+            form2:Object,
+            form3:Object,
+            form4:Object,
+            curEvent: 'add',
+        },
+        data() {
+            var validatemobile = (rule, value, callback) => {
+                let isPhone = /^0\d{2,3}-?\d{7,8}$/;
+                if (value.length == 11) {
+                    if (isPhone.test(value)) {
+                        callback(new Error('手机号码格式不正确'));
+                    } else {
+                        callback();
+                    }
+                } else {
+                    callback(new Error('手机号码长度不为11位'));
+                }
+
+            };
+            var validateEmail = (rule, value, callback) => {
+                let result = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(value)
+                if(!result){
+                    callback(new Error("邮箱为空或邮箱格式有误!"));
+                }else{
+                    callback();
+                }
+            };
+            return {
+                form:{bussinessInfoId: null},
+                provinceOptions:[],
+                bussinessOptions:[],
+                cityOptions:[],
+                districtOptions:[],
+                provinceProps: {
+                    lazy: true,
+                    label: 'provinceName',
+                    value: 'provinceCode',
+                },
+                cityProps: {
+                    label: 'cityName',
+                    value: 'cityCode',
+                    children: 'children'
+                },
+                districtProps: {
+                    label: 'cityName',
+                    value: 'cityCode',
+                },
+                bussinessRoleOptions: [],
+                signTypeOptions: [],
+                legalLicenceTypeOptions: [],
+                bussinessPaymentSceneOptions: [],
+                agreementPhotoUrlArray: [],
+                systemScreenshotUrlArray: [],
+                specialPermitProcessUrlArray: [],
+                dialogFormVisible: false,
+                //步骤条
+                active: 0,
+                //表单
+                rules1:{
+                    bussinessId: [
+                        { required: true, message: '请选择所属商户', trigger: 'blur' },
+                    ],
+                    signType: [
+                        { required: true, message: '请输入商户类型', trigger: 'blur' },
+                    ],
+                    licenceNo: [
+                        { required: true, message: '请输入商户证件编号', trigger: 'blur' },
+                    ],
+                    signName: [
+                        { required: true, message: '请输入商户签约名称', trigger: 'blur' },
+                    ],
+                    shortName: [
+                        { required: true, message: '请输入商户简称', trigger: 'blur' },
+                    ],
+                    province: [
+                        { required: true, message: '请选择商户实际经营地所在省', trigger: 'blur' },
+                    ],
+                    city: [
+                        { required: true, message: '请选择商户实际经营地所在市', trigger: 'blur' },
+                    ],
+                    district: [
+                        { required: true, message: '请选择商户实际经营地所在区', trigger: 'blur' },
+                    ],
+                    address: [
+                        { required: true, message: '请输入经营地址', trigger: 'blur' },
+                    ],
+                    openAccountLicenceNo: [
+                        { required: true, message: '请输入开户许可证编号', trigger: 'blur' },
+                    ],
+                    licenceUrl: [
+                        { required: false, message: '请上传商户证件照片', trigger: 'blur' },
+                    ],
+                    openAccountLicenceUrl: [
+                        { required: false, message: '请上传法人证件照正面照片', trigger: 'blur' },
+                    ],
+                    handLicenceUrl: [
+                        { required: false, message: '请上传法人证件照反面照片', trigger: 'blur' },
+                    ],
+                },
+                rules2:{
+                    legalName:[
+                        {required: true, message: '请输入法人姓名', trigger: 'blur' },
+                    ],
+                    legalLicenceType:[
+                        {required: true, message: '请选择法人证件类型', trigger: 'blur' },
+                    ],
+                    legalLicenceNo:[
+                        {required: true, message: '请输入法人证件号码', trigger: 'blur' },
+                    ],
+                    legalLicenceFrontUrl:[
+                        {required: false, message: '请上传法人证件正面照片', trigger: 'blur' },
+                    ],
+                    legalLicenceBackUrl:[
+                        {required: false, message: '请上传法人证件反面照片', trigger: 'blur' },
+                    ]
+                },
+                rules3:{
+                    contactName:[
+                        {required: true, message: '请输入联系人姓名', trigger: 'blur' },
+                    ],
+                    contactMobile: [
+                        { required: true, trigger: 'blur', validator: validatemobile, min: 11, max: 11},
+                    ],
+                    contactEmail:[
+                        {required: true, trigger: 'blur', validator: validateEmail },
+                    ]
+                },
+                //勋章配置
+                medalList:[],
+            }
+        },
+        created() {
+            this.loadProvince();
+            this.loadDict("business_sign_type");
+            this.loadDict("legal_licence_type");
+            this.loadDict("yee_business_role");
+            this.loadDict("yee_payment_scene_code");
+            this.loadBussinessList();
+        },
+        methods: {
+            loadBussinessList(){
+                listBussiness({}).then(res => {
+                    this.bussinessOptions = res.data.data;
+                })
+            },
+            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){
+                    this.$message.error("图片大小不能超过2.5M");
+                    return false;
+                }else{
+                    return true;
+                }
+            },
+            beforeUploadContactUrl(file){
+                if(file.size > 1048576){
+                    this.$message.error("图片大小不能超过1M");
+                    return false;
+                }else{
+                    return true;
+                }
+            },
+            openDialog(){
+                if(this.curEvent == 'edit'){
+                    this.loadCity(this.form1.province);
+                    this.loadDistrict(this.form1.city);
+                }
+            },
+            loadDict(code){
+                getDictionary({"code":code}).then(res =>{
+                    if(code === 'business_sign_type'){
+                        this.signTypeOptions = res.data.data;
+                    }else if(code === 'legal_licence_type'){
+                        this.legalLicenceTypeOptions = res.data.data;
+                    }else if(code === 'yee_business_role'){
+                        this.bussinessRoleOptions = res.data.data;
+                    }else if(code === 'yee_payment_scene_code'){
+                        this.bussinessPaymentSceneOptions = res.data.data;
+                    }
+                })
+            },
+            loadProvince(){
+                getProvinceList().then(res =>{
+                    this.provinceOptions = res.data.data;
+                })
+            },
+            loadCity(provinceCode){
+                getCityList(provinceCode).then(res =>{
+                    this.cityOptions = res.data.data;
+                })
+            },
+            loadDistrict(cityCode){
+                getDistrictList(cityCode).then(res =>{
+                    this.districtOptions = res.data.data;
+                })
+            },
+            open() {
+                this.dialogFormVisible = true
+            },
+            close() {
+                this.dialogFormVisible = false;
+                this.active = 0;
+            },
+            // confirm() {
+            //     let validForm3 = this.validForm('form3');
+            //     if(validForm3){
+            //         let contactBody = {};
+            //         saveContactInfo(Object.assign(contactBody, this.form2, this.form3)).then(res =>{
+            //             this.handelNext();
+            //         })
+            //     }
+            // },
+            //上传商户证件照片
+            uploadLicenceUrl(res) {
+                this.form1.licenceUrl=res.data
+            },
+            //上传手持照片
+            uploadHandLicenceUrl(res){
+                this.form1.handLicenceUrl=res.data
+            },
+            //上传开户凭证图片
+            uploadOpenAccountLicenceUrl(res){
+                this.form1.openAccountLicenceUrl=res.data
+            },
+            //上传法人证件正面照片
+            uploadLegalLicenceFrontUrl(res) {
+                this.form2.legalLicenceFrontUrl = res.data
+            },
+            //上传法人证件反面照片
+            uploadLegalLicenceBackUrl(res) {
+                this.form2.legalLicenceBackUrl = res.data
+            },
+            next(){
+                switch (this.active){
+                    case 0: {
+                        let validForm1 = this.validForm('form1');
+                        if(validForm1){
+                            if(this.curEvent == "add"){
+                                savePlatformBussInfo(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.form2.bussinessInfoId = res.data.data.id;
+                                    this.form3.bussinessInfoId = res.data.data.id;
+                                    this.handelNext()
+                                });
+                            }else if(this.curEvent == "edit" && this.form1.id != null){
+                                updatePlatformBussInfo(this.form1).then(res => {
+                                    this.$message({
+                                        type: "success",
+                                        message: res.data.msg
+                                    });
+                                    this.form.bussinessInfoId = res.data.data.id;
+                                    this.form2.bussinessInfoId = res.data.data.id;
+                                    this.form3.bussinessInfoId = res.data.data.id;
+                                    this.handelNext()
+                                });
+                            }
+                        }
+                        break;
+                    }
+                    case 1: {
+                        let validForm2 = this.validForm('form2');
+                        if(validForm2){
+                            this.form2.contactType = 10;
+                            this.form2.bussinessInfoId = this.form1.id
+                            saveContactInfo(this.form2).then(res => {
+                                this.$message({
+                                    type: "success",
+                                    message: res.data.msg
+                                });
+                                this.form2.id = res.data.data.id;
+                                this.handelNext()
+                            });
+                        }
+                        break;
+                    }
+                    case 2:{
+                        let validForm3 = this.validForm('form3');
+                        if(validForm3){
+                            this.form3.contactType = 11;
+                            this.form3.bussinessInfoId = this.form1.id
+                            this.form3.servicePhone = this.form3.contactMobile;
+                            saveContactInfo(this.form3).then(res => {
+                                this.$message({
+                                    type: "success",
+                                    message: res.data.msg
+                                });
+                                this.form3.id = res.data.data.id;
+                                this.handelNext()
+                            });
+                        }
+                        break;
+                    }
+                    default:
+                        break;
+                }
+            },
+            validForm(formName) {
+                let result = false;
+                this.$refs[formName].validate((valid) => {
+                    if (!valid) {
+                        result = false;
+                        return false;
+                    }else{
+                        result = true;
+                        return true;
+                    }
+                });
+                return result;
+            },
+            handelNext(){
+                if (this.active !=3) {
+                    this.active++
+                }
+            },
+            submit(){
+                this.$confirm("确定提交进件申请吗?如果需要修改,请先点击保存后再提交申请", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                }).then(() => {
+                    this.form.bussinessInfoId = this.form1.id;
+                    this.$emit('submit', this.form)
+                    this.active = 0;
+                });
+            },
+            dialogClose(){
+                this.active = 0;
+                this.dialogFormVisible = false;
+                this.$emit('closeDialog', null)
+            }
+        }
+
+    }
+</script>
+
+<style lang="scss">
+    .avatar-uploader .el-upload {
+        border: 1px dashed #d9d9d9;
+        border-radius: 6px;
+        cursor: pointer;
+        position: relative;
+        overflow: hidden;
+    }
+
+    .avatar-uploader .el-upload:hover {
+        border-color: #409EFF;
+    }
+
+    .avatar-uploader-icon {
+        font-size: 28px;
+        color: #8c939d;
+        width: 178px;
+        height: 178px;
+        line-height: 178px;
+        text-align: center;
+    }
+
+    .avatar {
+        width: 178px;
+        height: 178px;
+        display: block;
+    }
+</style>

+ 647 - 0
src/views/test/bussinessmng/comps/test-bussinessinfo-add.vue

@@ -0,0 +1,647 @@
+<template>
+    <basic-container>
+        <el-dialog title="商户进件信息" :append-to-body="true" :visible.sync="dialogFormVisible" top="1vh" @close="dialogClose" @open="openDialog" :close-on-click-modal="false">
+            <!-- 步骤条 -->
+            <div class="steps">
+                <el-steps :active="active" process-status="finish" align-center>
+                    <el-step title="商户主体信息"></el-step>
+                    <el-step title="商户法人信息"></el-step>
+                    <el-step title="商户联系人信息"></el-step>
+                    <el-step title="贸易证明信息"></el-step>
+                </el-steps>
+            </div>
+            <!-- 商户主体信息 -->
+            <el-card style="margin-top: 40px;" v-if="active==0">
+                <div style="margin-top:10px;">
+                    <el-form  :model="form1" :rules="rules1" ref="form1" label-width="120px" label-position="right" size="small">
+                        <el-form-item label="商户签约类型" prop="signType">
+                            <el-select v-model="form1.signType" placeholder="请输入商户类型" clearable="true">
+                                <el-option v-for="item in signTypeOptions" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="商户证件编号" prop="licenceNo">
+                            <el-input v-model="form1.licenceNo" placeholder="请输入商户证件编号"></el-input>
+                        </el-form-item>
+                        <el-form-item label="开户许可证编号" prop="openAccountLicenceNo">
+                            <el-input v-model="form1.openAccountLicenceNo" placeholder="如无开户许可证编号,可传基本存款账户编号"></el-input>
+                        </el-form-item>
+                        <el-form-item label="商户签约名称" prop="signName">
+                            <el-input v-model="form1.signName" placeholder="请输入商户签约名称"></el-input>
+                        </el-form-item>
+                        <el-form-item label="商户简称" prop="shortName">
+                            <el-input v-model="form1.shortName" placeholder="请输入商户简称"></el-input>
+                        </el-form-item>
+                        <el-row>
+                            <el-col span="8">
+                                <el-form-item label="经营地所在省" prop="province">
+                                    <el-select v-model="form1.province" placeholder="请选择经营地所在省" clearable @change="loadCity">
+                                        <el-option
+                                                v-for="item in provinceOptions"
+                                                :key="item.provinceCode"
+                                                :label="item.provinceName"
+                                                :value="item.provinceCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="8">
+                                <el-form-item label="经营地所在市" prop="city">
+                                    <el-select v-model="form1.city" placeholder="请选择经营地所在市" clearable @change="loadDistrict">
+                                        <el-option
+                                                v-for="item in cityOptions"
+                                                :key="item.cityCode"
+                                                :label="item.cityName"
+                                                :value="item.cityCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="8">
+                                <el-form-item label="经营地所在区" prop="district">
+                                    <el-select v-model="form1.district" placeholder="请选择经营地所在区" clearable>
+                                        <el-option
+                                                v-for="item in districtOptions"
+                                                :key="item.districtCode"
+                                                :label="item.districtName"
+                                                :value="item.districtCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-form-item label="经营地址" prop="address">
+                            <el-input v-model="form1.address" placeholder="请输入经营地址"></el-input>
+                        </el-form-item>
+                        <el-row>
+                            <el-col span="12">
+                                <el-form-item prop="licenceUrl" label="商户证件照片" style="width: 45%;">
+                                    <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                               :on-success="uploadLicenceUrl" :before-upload="beforeUploadLicenceUrl">
+                                        <img v-if="form1.licenceUrl" :src="form1.licenceUrl" class="avatar">
+                                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                                    </el-upload>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="12">
+                                <el-form-item prop="handLicenceUrl" label="手持营业执照在经营场所的照片" style="width: 45%;">
+                                    <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                               :on-success="uploadHandLicenceUrl" :before-upload="beforeUploadLicenceUrl">
+                                        <img v-if="form1.handLicenceUrl" :src="form1.handLicenceUrl" class="avatar">
+                                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                                    </el-upload>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-form-item prop="openAccountLicenceUrl" label="开户许可证照片" style="width: 45%;">
+                            <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                       :on-success="uploadOpenAccountLicenceUrl" :before-upload="beforeUploadLicenceUrl">
+                                <img v-if="form1.openAccountLicenceUrl" :src="form1.openAccountLicenceUrl" class="avatar">
+                                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                            </el-upload>
+                        </el-form-item>
+                        <span style="color: red">如无开户许可证,请上传基本存款账户信息表照片</span>
+                    </el-form>
+                </div>
+            </el-card>
+
+            <!-- 商户法人信息 -->
+            <div style="margin-top: 40px;" v-if="active==1">
+                <el-card style="margin-top: 10px;">
+                    <el-form ref="form2"  :model="form2" :rules="rules2">
+                        <el-form-item label="法人姓名" prop="legalName">
+                            <el-input v-model="form2.legalName" placeholder="请输入法人姓名"></el-input>
+                        </el-form-item>
+                        <el-row>
+                            <el-col span="8">
+                                <el-form-item label="法人证件类型" prop="legalLicenceType">
+                                    <el-select v-model="form2.legalLicenceType" placeholder="请输入法人证件类型" clearable="true">
+                                        <el-option v-for="item in legalLicenceTypeOptions" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="16">
+                                <el-form-item label="法人证件号码" prop="legalLicenceNo">
+                                    <el-input v-model="form2.legalLicenceNo" placeholder="请输入法人证件号码"></el-input>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col span="12">
+                                <el-form-item prop="legalLicenceFrontUrl" label="请上传法人证件正面照片" style="width: 45%;">
+                                    <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                               :on-success="uploadLegalLicenceFrontUrl" :before-upload="beforeUploadContactUrl">
+                                        <img v-if="form2.legalLicenceFrontUrl" :src="form2.legalLicenceFrontUrl" class="avatar">
+                                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                                    </el-upload>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="12">
+                                <el-form-item prop="legalLicenceBackUrl" label="法人证件反面照片" style="width: 45%;">
+                                    <el-upload class="avatar-uploader" action="/api/putObject" :show-file-list="false"
+                                               :on-success="uploadLegalLicenceBackUrl" :before-upload="beforeUploadContactUrl">
+                                        <img v-if="form2.legalLicenceBackUrl" :src="form2.legalLicenceBackUrl" class="avatar">
+                                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                                    </el-upload>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </el-form>
+                </el-card>
+            </div>
+
+            <!-- 商户联系人信息 -->
+            <div style="margin-top: 40px;" v-if="active==2">
+                <el-card style="margin-top: 10px;">
+                    <el-form ref="form3" :model="form3" :rules="rules3"  label-width="120px">
+                        <el-form-item label="联系人姓名" prop="contactName">
+                            <el-input v-model="form3.contactName" placeholder="请输入联系人姓名"></el-input>
+                        </el-form-item>
+                        <el-form-item label="联系人证件号" prop="contactLicenceNo">
+                            <el-input v-model="form3.contactLicenceNo" placeholder="请输入联系人证件号码"></el-input>
+                        </el-form-item>
+                        <el-form-item label="联系人手机号" prop="contactMobile">
+                            <el-input v-model="form3.contactMobile" placeholder="请输入联系人手机号"></el-input>
+                        </el-form-item>
+                        <el-form-item label="联系人邮箱" prop="contactEmail">
+                            <el-input v-model="form3.contactEmail" placeholder="请输入联系人邮箱"></el-input>
+                        </el-form-item>
+                    </el-form>
+                </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="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==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==3" type="primary" @click="submit()">提交申请</el-button>
+                </div>
+            </div>
+        </el-dialog>
+    </basic-container>
+</template>
+
+
+<script>
+    import {
+        getProvinceList,
+        getCityList,
+        getDistrictList
+    } from "@/api/bussinessregion/bussinessregion";
+    import {getDictionary} from "@/api/system/dictbiz";
+    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() {
+            var validatemobile = (rule, value, callback) => {
+                let isPhone = /^0\d{2,3}-?\d{7,8}$/;
+                if (value.length == 11) {
+                    if (isPhone.test(value)) {
+                        callback(new Error('手机号码格式不正确'));
+                    } else {
+                        callback();
+                    }
+                } else {
+                    callback(new Error('手机号码长度不为11位'));
+                }
+
+            };
+            var validateEmail = (rule, value, callback) => {
+                let result = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(value)
+                if(!result){
+                    callback(new Error("邮箱为空或邮箱格式有误!"));
+                }else{
+                    callback();
+                }
+            };
+            return {
+                form:{bussinessInfoId: null},
+                provinceOptions:[],
+                cityOptions:[],
+                districtOptions:[],
+                provinceProps: {
+                    lazy: true,
+                    label: 'provinceName',
+                    value: 'provinceCode',
+                },
+                cityProps: {
+                    label: 'cityName',
+                    value: 'cityCode',
+                    children: 'children'
+                },
+                districtProps: {
+                    label: 'cityName',
+                    value: 'cityCode',
+                },
+                paymentSceneOptions: [],
+                bussinessRoleOptions: [],
+                signTypeOptions: [],
+                legalLicenceTypeOptions: [],
+                dialogFormVisible: false,
+                //步骤条
+                active: 0,
+                //表单
+                rules1:{
+                    signType: [
+                        { required: true, message: '请输入商户类型', trigger: 'blur' },
+                    ],
+                    licenceNo: [
+                        { required: true, message: '请输入商户证件编号', trigger: 'blur' },
+                    ],
+                    signName: [
+                        { required: true, message: '请输入商户签约名称', trigger: 'blur' },
+                    ],
+                    shortName: [
+                        { required: true, message: '请输入商户简称', trigger: 'blur' },
+                    ],
+                    province: [
+                        { required: true, message: '请选择商户实际经营地所在省', trigger: 'blur' },
+                    ],
+                    city: [
+                        { required: true, message: '请选择商户实际经营地所在市', trigger: 'blur' },
+                    ],
+                    district: [
+                        { required: true, message: '请选择商户实际经营地所在区', trigger: 'blur' },
+                    ],
+                    address: [
+                        { required: true, message: '请输入经营地址', trigger: 'blur' },
+                    ],
+                    openAccountLicenceNo: [
+                        { required: true, message: '请输入开户许可证编号', trigger: 'blur' },
+                    ],
+                    licenceUrl: [
+                        { required: true, message: '请上传商户证件照片', trigger: 'blur' },
+                    ],
+                    openAccountLicenceUrl: [
+                        { required: true, message: '请上传开户许可证照片', trigger: 'change' },
+                    ],
+                    handLicenceUrl: [
+                        { required: true, message: '请上传手持营业执照在经营场所的照片', trigger: 'change' },
+                    ],
+                },
+                rules2:{
+                    legalName:[
+                        {required: true, message: '请输入法人姓名', trigger: 'blur' },
+                    ],
+                    legalLicenceType:[
+                        {required: true, message: '请选择法人证件类型', trigger: 'blur' },
+                    ],
+                    legalLicenceNo:[
+                        {required: true, message: '请输入法人证件号码', trigger: 'blur' },
+                    ],
+                    legalLicenceFrontUrl:[
+                        {required: true, message: '请上传法人证件正面照片', trigger: 'change' },
+                    ],
+                    legalLicenceBackUrl:[
+                        {required: true, message: '请上传法人证件反面照片', trigger: 'change' },
+                    ]
+                },
+                rules3:{
+                    contactName:[
+                        {required: true, message: '请输入联系人姓名', trigger: 'blur' },
+                    ],
+                    contactMobile: [
+                        { required: true, trigger: 'blur', validator: validatemobile, min: 11, max: 11},
+                    ],
+                    contactEmail:[
+                        {required: true, trigger: 'blur', validator: validateEmail },
+                    ]
+                },
+
+                rules4:{
+                    agreementPhotoUrl:[
+                        {required: true, message: '请上传付款业务协议图片/附件', trigger: 'change' },
+                    ],
+                    systemScreenshotUrl: [
+                        { required: true, message: '请上传付款业务系统截图/附件', trigger: 'change' },
+                    ],
+                },
+                //勋章配置
+                medalList:[],
+            }
+        },
+        created() {
+            this.loadProvince();
+            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 > 2621440){
+                    this.$message.error("图片大小不能超过2.5M");
+                    return false;
+                }else{
+                    return true;
+                }
+            },
+            beforeUploadContactUrl(file){
+                if(file.size > 1048576){
+                    this.$message.error("图片大小不能超过1M");
+                    return false;
+                }else{
+                    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);
+                    this.loadDistrict(this.form1.city);
+                }
+            },
+            loadDict(code){
+                getDictionary({"code":code}).then(res =>{
+                    if(code === 'business_sign_type'){
+                        this.signTypeOptions = res.data.data;
+                    }else if(code === 'legal_licence_type'){
+                        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;
+                    }
+                })
+            },
+            loadProvince(){
+                getProvinceList().then(res =>{
+                    this.provinceOptions = res.data.data;
+                })
+            },
+            loadCity(provinceCode){
+                getCityList(provinceCode).then(res =>{
+                    this.cityOptions = res.data.data;
+                })
+            },
+            loadDistrict(cityCode){
+                getDistrictList(cityCode).then(res =>{
+                    this.districtOptions = res.data.data;
+                })
+            },
+            open() {
+                this.dialogFormVisible = true
+            },
+            close() {
+                this.dialogFormVisible = false;
+                this.active = 0;
+            },
+            // confirm() {
+            //     let validForm3 = this.validForm('form3');
+            //     if(validForm3){
+            //         let contactBody = {};
+            //         saveContactInfo(Object.assign(contactBody, this.form2, this.form3)).then(res =>{
+            //             this.handelNext();
+            //         })
+            //     }
+            // },
+            //上传商户证件照片
+            uploadLicenceUrl(res) {
+                this.form1.licenceUrl=res.data
+            },
+            //上传手持照片
+            uploadHandLicenceUrl(res){
+                this.form1.handLicenceUrl=res.data
+            },
+            //上传开户凭证图片
+            uploadOpenAccountLicenceUrl(res){
+                this.form1.openAccountLicenceUrl=res.data
+            },
+            //上传法人证件正面照片
+            uploadLegalLicenceFrontUrl(res) {
+                this.form2.legalLicenceFrontUrl = res.data
+            },
+            //上传法人证件反面照片
+            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"){
+                                saveBussInfo(this.form1).then(res => {
+                                    this.$message({
+                                        type: "success",
+                                        message: res.data.msg
+                                    });
+                                    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){
+                                updateBussInfo(this.form1).then(res => {
+                                    this.$message({
+                                        type: "success",
+                                        message: res.data.msg
+                                    });
+                                    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()
+                                });
+                            }
+                        }
+                        break;
+                    }
+                    case 1: {
+                        let validForm2 = this.validForm('form2');
+                        if(validForm2){
+                            this.form2.contactType = 10;
+                            this.form2.bussinessInfoId = this.form1.id;
+                            saveContactInfo(this.form2).then(res => {
+                                this.$message({
+                                    type: "success",
+                                    message: res.data.msg
+                                });
+                                this.form2.id = res.data.data.id;
+                                this.handelNext()
+                            });
+                        }
+                        break;
+                    }
+                    case 2:{
+                        let validForm3 = this.validForm('form3');
+                        if(validForm3){
+                            this.form3.contactType = 11;
+                            this.form3.bussinessInfoId = this.form1.id;
+                            this.form3.servicePhone = this.form3.contactMobile;
+                            saveContactInfo(this.form3).then(res => {
+                                this.$message({
+                                    type: "success",
+                                    message: res.data.msg
+                                });
+                                this.form3.id = res.data.data.id;
+                                this.handelNext()
+                            });
+                        }
+                        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;
+                }
+            },
+            validForm(formName) {
+                let result = false;
+                this.$refs[formName].validate((valid) => {
+                    if (!valid) {
+                        result = false;
+                        return false;
+                    }else{
+                        result = true;
+                        return true;
+                    }
+                });
+                return result;
+            },
+            handelNext(){
+                if (this.active !=3) {
+                    this.active++
+                }
+            },
+            submit(){
+                this.$confirm("确定提交进件申请吗?如果需要修改,请先点击保存后再提交申请", {
+                    confirmButtonText: "确定",
+                    cancelButtonText: "取消",
+                    type: "warning"
+                }).then(() => {
+                    this.form.bussinessInfoId = this.form1.id;
+                    this.$emit('submit', this.form)
+                    this.active = 0;
+                });
+            },
+            dialogClose(){
+                this.active = 0;
+                this.dialogFormVisible = false;
+                this.$emit('closeDialog', null)
+            }
+        }
+
+    }
+</script>
+
+<style lang="scss">
+    .avatar-uploader .el-upload {
+        border: 1px dashed #d9d9d9;
+        border-radius: 6px;
+        cursor: pointer;
+        position: relative;
+        overflow: hidden;
+    }
+
+    .avatar-uploader .el-upload:hover {
+        border-color: #409EFF;
+    }
+
+    .avatar-uploader-icon {
+        font-size: 28px;
+        color: #8c939d;
+        width: 178px;
+        height: 178px;
+        line-height: 178px;
+        text-align: center;
+    }
+
+    .avatar {
+        width: 178px;
+        height: 178px;
+        display: block;
+    }
+</style>

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

@@ -0,0 +1,265 @@
+<template>
+    <basic-container>
+        <el-dialog title="商户进件信息" :append-to-body="true" :visible.sync="dialogFormVisible" top="1vh" @open="openDialog">
+            <el-tabs type="border-card">
+                <el-tab-pane label="商户主体信息">
+                    <el-form :model="form1" ref="form" label-width="120px" label-position="right" size="small">
+                        <el-form-item label="商户类型" prop="signType">
+                            <el-select v-model="form1.signType" placeholder="请输入商户类型" clearable="true" disabled>
+                                <el-option v-for="item in signTypeOptions" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="商户证件编号" prop="licenceNo">
+                            <el-input disabled v-model="form1.licenceNo" placeholder="请输入商户证件编号"></el-input>
+                        </el-form-item>
+                        <el-form-item label="开户许可证编号" prop="openAccountLicenceNo">
+                            <el-input disabled v-model="form1.openAccountLicenceNo" placeholder="请输入开户许可证编号"></el-input>
+                        </el-form-item>
+                        <el-form-item label="商户签约名称" prop="signName">
+                            <el-input disabled v-model="form1.signName" placeholder="请输入商户签约名称"></el-input>
+                        </el-form-item>
+                        <el-form-item label="商户简称" prop="shortName">
+                            <el-input disabled v-model="form1.shortName" placeholder="请输入商户简称"></el-input>
+                        </el-form-item>
+                        <el-row>
+                            <el-col span="8">
+                                <el-form-item label="经营地所在省" prop="province">
+                                    <el-select disabled v-model="form1.province" placeholder="请选择经营地所在省" clearable>
+                                        <el-option
+                                                v-for="item in provinceOptions"
+                                                :key="item.provinceCode"
+                                                :label="item.provinceName"
+                                                :value="item.provinceCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="8">
+                                <el-form-item label="经营地所在市" prop="city">
+                                    <el-select disabled v-model="form1.city" placeholder="请选择经营地所在市" clearable>
+                                        <el-option
+                                                v-for="item in cityOptions"
+                                                :key="item.cityCode"
+                                                :label="item.cityName"
+                                                :value="item.cityCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="8">
+                                <el-form-item label="经营地所在区" prop="district">
+                                    <el-select disabled v-model="form1.district" placeholder="请选择经营地所在区" clearable>
+                                        <el-option
+                                                v-for="item in districtOptions"
+                                                :key="item.districtCode"
+                                                :label="item.districtName"
+                                                :value="item.districtCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-form-item label="经营地址" prop="address">
+                            <el-input disabled v-model="form1.address" placeholder="请输入经营地址"></el-input>
+                        </el-form-item>
+                        <el-row>
+                            <el-col span="12">
+                                <el-form-item prop="licenceUrl" label="商户证件照片" style="width: 45%;">
+                                    <img v-if="form1.licenceUrl" :src="form1.licenceUrl" class="avatar">
+                                    <span v-else>暂无图片</span>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="12">
+                                <el-form-item prop="handLicenceUrl" label="手持营业执照在经营场所的照片" style="width: 45%;">
+                                    <img v-if="form1.handLicenceUrl" :src="form1.handLicenceUrl" class="avatar">
+                                    <span v-else>暂无图片</span>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-form-item prop="openAccountLicenceUrl" label="开户许可证照片" style="width: 45%;">
+                            <img v-if="form1.openAccountLicenceUrl" :src="form1.openAccountLicenceUrl" class="avatar">
+                            <span v-else>暂无图片</span>
+                        </el-form-item>
+                        <span style="color: red">如无开户许可证,请上传基本存款账户信息表照片</span>
+                    </el-form>
+                </el-tab-pane>
+                <el-tab-pane label="法人信息">
+                    <el-form ref="form2" :model="form2">
+                        <el-form-item label="法人姓名" prop="legalName">
+                            <el-input disabled v-model="form2.legalName" placeholder="请输入法人姓名"></el-input>
+                        </el-form-item>
+                        <el-row>
+                            <el-col span="8">
+                                <el-form-item label="法人证件类型" prop="legalLicenceType">
+                                    <el-select disabled v-model="form2.legalLicenceType" placeholder="请输入法人证件类型" clearable="true">
+                                        <el-option v-for="item in legalLicenceTypeOptions" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="16">
+                                <el-form-item label="法人证件号码" prop="legalLicenceNo">
+                                    <el-input disabled v-model="form2.legalLicenceNo" placeholder="请输入法人证件号码"></el-input>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col span="12">
+                                <el-form-item prop="legalLicenceFrontUrl" label="请上传法人证件正面照片" style="width: 45%;">
+                                    <img v-if="form2.legalLicenceFrontUrl" :src="form2.legalLicenceFrontUrl" class="avatar">
+                                    <span v-else>暂无图片</span>
+                                </el-form-item>
+                            </el-col>
+                            <el-col span="12">
+                                <el-form-item prop="legalLicenceBackUrl" label="法人证件反面照片" style="width: 45%;">
+                                    <img v-if="form2.legalLicenceBackUrl" :src="form2.legalLicenceBackUrl" class="avatar">
+                                    <span v-else>暂无图片</span>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </el-form>
+                </el-tab-pane>
+                <el-tab-pane label="联系人信息">
+                    <el-form ref="form3" :model="form3" label-width="100px">
+                        <el-form-item label="联系人姓名" prop="contactName">
+                            <el-input disabled v-model="form3.contactName" placeholder="请输入联系人姓名"></el-input>
+                        </el-form-item>
+                        <el-form-item label="联系人证件号" prop="contactLicenceNo">
+                            <el-input disabled v-model="form3.contactLicenceNo" placeholder="请输入联系人证件号码"></el-input>
+                        </el-form-item>
+                        <el-form-item label="联系人手机号" prop="contactMobile">
+                            <el-input disabled v-model="form3.contactMobile" placeholder="请输入联系人手机号"></el-input>
+                        </el-form-item>
+                        <el-form-item label="联系人邮箱" prop="contactEmail">
+                            <el-input disabled v-model="form3.contactEmail" placeholder="请输入联系人邮箱"></el-input>
+                        </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>
+</template>
+
+<script>
+    import {
+        getProvinceList,
+        getCityList,
+        getDistrictList
+    } from "@/api/bussinessregion/bussinessregion";
+    import {getDictionary} from "@/api/system/dictbiz";
+    import {getByTypeAndBussinessInfoId} from "@/api/bussinessmng/bussinesscontactinfo";
+    export default {
+        props:{
+            form1:Object
+        },
+        data() {
+            return {
+                form2: {},
+                form3: {},
+                provinceOptions:[],
+                cityOptions:[],
+                districtOptions:[],
+                provinceProps: {
+                    lazy: true,
+                    label: 'provinceName',
+                    value: 'provinceCode',
+                },
+                cityProps: {
+                    label: 'cityName',
+                    value: 'cityCode',
+                    children: 'children'
+                },
+                districtProps: {
+                    label: 'cityName',
+                    value: 'cityCode',
+                },
+                signTypeOptions: [],
+                legalLicenceTypeOptions: [],
+                dialogFormVisible: false
+            }
+        },
+        created() {
+            this.loadProvince();
+            this.loadSignTypeList("business_sign_type");
+            this.loadLegalLicenceTypeList("legal_licence_type");
+        },
+        methods: {
+            openDialog(){
+                this.loadCity(this.form1.province);
+                this.loadDistrict(this.form1.city);
+                this.loadLegalDetail();
+                this.loadContactDetail();
+            },
+            loadLegalLicenceTypeList(code){
+                getDictionary({"code":code}).then(res =>{
+                    this.legalLicenceTypeOptions = res.data.data;
+                })
+            },
+            loadSignTypeList(code){
+                getDictionary({"code":code}).then(res =>{
+                    this.signTypeOptions = res.data.data;
+                })
+            },
+            loadProvince(){
+                getProvinceList().then(res =>{
+                    this.provinceOptions = res.data.data;
+                })
+            },
+            loadCity(provinceCode){
+                getCityList(provinceCode).then(res =>{
+                    this.cityOptions = res.data.data;
+                })
+            },
+            loadDistrict(cityCode){
+                getDistrictList(cityCode).then(res =>{
+                    this.districtOptions = res.data.data;
+                })
+            },
+            open() {
+                this.dialogFormVisible = true;
+            },
+            close() {
+                this.dialogFormVisible = false
+            },
+            loadLegalDetail(){
+                getByTypeAndBussinessInfoId(10, this.form1.id).then(res =>{
+                    this.form2 = res.data.data;
+                })
+            },
+            loadContactDetail(){
+                getByTypeAndBussinessInfoId(11, this.form1.id).then(res =>{
+                    this.form3 = res.data.data;
+                })
+            },
+        }
+    }
+</script>
+
+<style>
+</style>

+ 425 - 0
src/views/test/bussinessmng/testbussiness.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.testbussiness_delete" @click="handleDelete">删 除
+        </el-button>
+      </template>
+      <template slot="maxLimitForm" slot-scope="scope">
+        <avue-input-number v-model="scope.row.maxLimit" precision="2" controls-position></avue-input-number>
+      </template>
+      <template slot="apiFilePath" slot-scope="scope">
+        <el-tab v-if="scope.row.apiFilePath == null">无</el-tab>
+        <el-tab v-if="scope.row.apiFilePath != null&&scope.row.apiFilePath != ''">有</el-tab>
+      </template>
+      <template slot="enable" slot-scope="scope">
+        <el-tag type="primary" v-if="scope.row.enable == 0">启用</el-tag>
+        <el-tag type="danger" v-if="scope.row.enable == 1">禁用</el-tag>
+      </template>
+      <template slot="menu" slot-scope="{row}">
+        <el-button
+                type ="text"
+                size="mini"
+                plain
+                v-if="row.enable == 1 && permission.testbussiness_enable"
+                @click="handleEnable(row.id, 0)">启用
+        </el-button>
+        <el-button
+                type ="text"
+                size="mini"
+                plain
+                v-if="row.enable == 0 && permission.testbussiness_enable"
+                @click="handleEnable(row.id, 1)">禁用
+        </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 == 101">协议待签署</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>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {
+    getList,
+    getDetail,
+    testSubmit,
+    remove,
+    generateApi,
+    enableBussiness
+  } from "@/api/bussinessmng/bussiness";
+  import {
+    mapGetters
+  } from "vuex";
+  import md5 from 'js-md5'
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        bussinessId: null,
+        selectionList: [],
+        option: {
+          height: 'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          delBtn: false,
+          dialogClickModal: false,
+          dialogWidth: "30%",
+          column: [
+           {
+              label: "采购商名称",
+              labelWidth: 110,
+              search: true,
+              searchLabelWidth: 110,
+              prop: "name",
+              span: 24,
+              rules: [{
+                required: true,
+                message: "请输入采购商名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "每日提现上限",
+              labelWidth: 130,
+              span: 24,
+              prop: "maxLimit",
+              formslot: true,
+              rules: [{
+                required: true,
+                message: "请输入每日提现上限",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "服务费率(千分比)",
+              prop: "serviceRate",
+              labelWidth: 130,
+              width: 300,
+              span: 24,
+              rules: [{
+                required: true,
+                message: "请输入关联账号的名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "账号",
+              prop: "userName",
+              labelWidth: 130,
+              editDisplay: false,
+              span: 24,
+              rules: [{
+                required: true,
+                message: "请输入关联账号的名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "密码",
+              prop: "userPassword",
+              labelWidth: 130,
+              span: 24,
+              display: true,
+              hide: true,
+              rules: [{
+                required: true,
+                message: "请输入关联账号的密码",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "最低采购金额",
+              prop: "leastPrice",
+              labelWidth: 130,
+              span: 24,
+              hide: true,
+              rules: [{
+                required: true,
+                message: "请输入最低采购金额",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "api文档",
+              prop: "apiFilePath",
+              slot: true,
+              display: false,
+              hide: true
+            },
+
+            {
+              label: "回调地址",
+              prop: "recallUrl",
+              labelWidth: 130,
+              span: 24,
+              hide: true,
+              addDisplay: false,
+              editDisplay: false,
+              rules: [{
+                required: false,
+                message: "请输入回调地址,比如:http://xxx.xxx.xxx.xxx/xxx",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "余额(元)",
+              prop: "remain",
+              display: false,
+              rules: [{
+                required: true,
+                message: "请输入关联账号的id",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "启用状态",
+              prop: "enable",
+              type: "select",
+              slot: true,
+              search: true,
+              dicData: [
+                {
+                  label: "禁用",
+                  value: 1
+                },
+                {
+                  label: "启用",
+                  value: 0
+                },
+              ],
+            },
+            {
+              label: "进件状态",
+              prop: "registerStatus",
+              type: "select",
+              search: true,
+              slot: true,
+              display: false,
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=merchant_register_status",
+              props:{
+                label: "dictValue",
+                value: "dictKey"
+              },
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.bussiness_add, false),
+          viewBtn: this.vaildData(this.permission.bussiness_view, false),
+          delBtn: this.vaildData(this.permission.bussiness_delete, false),
+          editBtn: this.vaildData(this.permission.bussiness_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      handleEnable(bussinessId, enable){
+        if(enable == 1){
+          this.$confirm("确定要禁用吗?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(() => {
+            let params = {"bussinessId": bussinessId, "enable": enable}
+            enableBussiness(params).then(() => {
+              this.onLoad(this.page);
+              this.$message({
+                type: "success",
+                message: "操作成功!"
+              });
+            })
+          })
+        }else{
+          let params = {"bussinessId": bussinessId, "enable": enable}
+          enableBussiness(params).then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          })
+        }
+      },
+      rowSave(row, done, loading) {
+        row.userPassword = md5(row.userPassword)
+        testSubmit(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        if(row.userPassword){
+          row.userPassword = md5(row.userPassword)
+        }
+        testSubmit(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: "操作成功!"
+            });
+          });
+      },
+      generateDoc(){
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定重新生成api文档吗?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return generateApi(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      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)) {
+          let userPasswordProp = this.findObject(this.option.column, "userPassword");
+          if(type == 'edit'){
+            userPasswordProp.rules[0].required = false;
+          }else{
+            userPasswordProp.rules[0].required = true;
+          }
+          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>

+ 561 - 0
src/views/test/bussinessmng/testbussinessinfo.vue

@@ -0,0 +1,561 @@
+<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">
+      </template>
+
+      <template slot="menuLeft">
+        <el-button type="primary" size="small" icon="el-icon-plus" v-if="permission.testbussinessinfo_add && data.length <= 0"
+                   @click="showAdd">新增
+        </el-button>
+      </template>
+
+      <!-- 操作菜单 -->
+      <template slot-scope="{row}" slot="menu">
+        <el-button type="text" size="small" icon="el-icon-view" plain class="none-border"
+                   @click.stop="handleView(row)">查看
+        </el-button>
+        <el-button v-if="row.registerStatus === 100 || row.registerStatus === 400 || row.registerStatus === 99" type="text" size="small" icon="el-icon-edit" plain class="none-border"
+                   @click.stop="handleEdit(row)">编辑
+        </el-button>
+        <el-button v-if="row.registerStatus === 101" type="text" size="small" icon="el-icon-edit" plain class="none-border"
+                   @click.stop="handleSign(row.agreementSignUrl)">签署协议
+        </el-button>
+        <el-button v-if="row.registerStatus != null && row.registerStatus !== 100" type="text" size="small" icon="el-icon-view" plain class="none-border"
+                   @click.stop="handleRegisterRequestView(row.id)">进件记录
+        </el-button>
+      </template>
+      <template slot="registerStatus" slot-scope="{row}">
+        <el-select v-model="row.registerStatus">
+          <el-option v-for="item in registerStatusOptions"
+                     :key="item.value"
+                     :label="item.label"
+                     :value="item.value">
+          </el-option>
+        </el-select>
+      </template>
+    </avue-crud>
+
+    <test-bussinessinfo-add v-show="addVisible" @submit="submit" :form1="data1" :form2="data2" :form3="data3" :form4="data4" :curEvent="currentEvent" ref="addDialog" @closeDialog="closeDialog"></test-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" width="80%">
+      <bussiness-register-request :bussiness-info-id="bussinessInfoId" v-if="registerRequestVisible"></bussiness-register-request>
+    </el-dialog>
+  </basic-container>
+</template>
+
+<script>
+  import testBussinessinfoAdd from "./comps/test-bussinessinfo-add.vue"
+  import bussinessinfoDetail from "./comps/test-bussinessinfo-detail.vue"
+  import bussinessRegisterRequest from "./testbussinessregisterrequest.vue"
+  import {
+    getList,
+    getDetail,
+    add,
+    update,
+    remove,
+    agreeSign
+  } from "@/api/bussinessmng/bussinessinfo";
+  import {testMerchantRegister} from "@/api/bussinessmng/bussinessregisterrequest";
+  import {getByTypeAndBussinessInfoId} from "@/api/bussinessmng/bussinesscontactinfo";
+  import {
+    mapGetters
+  } from "vuex";
+
+  export default {
+    components: {
+      testBussinessinfoAdd,bussinessinfoDetail,bussinessRegisterRequest
+    },
+    data() {
+      return {
+        registerStatusOptions:[
+          {"label":"资料完善中", "key":"100", "value":100},
+          {"label":"送审中", "key":"98", "value":98},
+          {"label":"协议待签署", "key":"101", "value":101},
+          {"label":"审核中", "key":"102", "value":102},
+          {"label":"审核成功", "key":"200", "value":200},
+          {"label":"审核失败", "key":"400", "value":400},
+          {"label":"送审失败", "key":"99", "value":99}
+        ],
+        bussinessInfoId: null,
+        currentEvent: "add",
+        data1: {
+          id:'',
+          signType: '',
+          licenceNo: '',
+          openAccountLicenceNo: '',
+          signName: '',
+          shortName: '',
+          province: '',
+          city: '',
+          district: '',
+          address: '',
+          licenceUrl: '',
+          handLicenceUrl: '',
+          openAccountLicenceUrl: '',
+        },
+        data2: {
+          id: '',
+          bussinessInfoId: '',
+          legalName: "",
+          legalLicenceType: '',
+          legalLicenceNo: '',
+          legalLicenceFrontUrl: '',
+          legalLicenceBackUrl: ''
+        },
+        data3: {
+          bussinessInfoId: '',
+          contactName: '',
+          contactLicenceNo: '',
+          contactMobile: '',
+          contactEmail: '',
+          servicePhone: ''
+        },
+        data4: {
+          agreementPhotoUrlList: [],
+          systemScreenshotUrlList: [],
+          specialPermitProcessUrlList: [],
+          bussinessInfoId: '',
+          agreementPhotoUrl: '',
+          systemScreenshotUrl: '',
+          specialPermitProcessUrl: ''
+        },
+        //详情
+        detailData:{},
+        detailVisible: false,
+        addVisible: false,
+        registerRequestVisible: false,
+        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: false,
+          editBtn: false,
+          addBtn: false,
+          delBtn: false,
+          selection: true,
+          dialogClickModal: false,
+          labelWidth: 150,
+          column: [
+            {
+              label: "采购商",
+              prop: "bussinessId",
+              type: "select",
+              filterable: true,
+              dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500",
+              props:{
+                label: "name",
+                value: "id"
+              },
+              addDisplay: false,
+              editDisplay: false,
+              viewDisplay: true
+            },
+            {
+              label: "商户签约类型",
+              prop: "signType",
+              type: "select",
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=business_sign_type",
+              props: {
+                label: "dictValue",
+                value: "dictKey"
+              },
+            },
+            {
+              label: "商户证件编号",
+              prop: "licenceNo",
+              placeholder: "统一社会信用代码证编号、事业单位法人证书编号、社会团体证书编号等,与商户签约类型匹配",
+              hide:true,
+              rules: [{
+                required: true,
+                message: "请输入商户证件编号,",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商户证件照片",
+              prop: "licenceUrl",
+              type: "upload",
+              hide:true,
+              listType: "picture-img",
+              action: '/api/putObject',
+              propsHttp: {
+                url: 'data'
+              },
+              rules: [{
+                required: true,
+                message: "请上传商户证件照片",
+                trigger: "blur"
+              }],
+            },
+            {
+              label: "商户签约名称",
+              prop: "signName",
+              labelWidth: 110,
+              searchLabelWidth: 110,
+              search:true,
+              placeholder: "与商户证件主体名称一致",
+              rules: [{
+                required: true,
+                message: "请输入商户签约名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商户简称",
+              prop: "shortName",
+              rules: [{
+                required: true,
+                message: "请输入商户简称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商户实际经营地所在省",
+              prop: "province",
+              placeholder: "要求按照商户实际经营地址选择对应的省编号",
+              hide:true,
+              rules: [{
+                required: true,
+                message: "请输入商户实际经营地所在省",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商户实际经营地所在市",
+              prop: "city",
+              placeholder: "要求按照商户实际经营地址选择对应的市编号",
+              hide:true,
+              rules: [{
+                required: true,
+                message: "请输入商户实际经营地所在市",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商户实际经营地所在区",
+              prop: "district",
+              placeholder: "要求按照商户实际经营地址选择对应的区编号",
+              hide:true,
+              rules: [{
+                required: true,
+                message: "请输入商户实际经营地所在区",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "经营地址",
+              prop: "address",
+              placeholder: "经营地址不需要再次上送省市区",
+              rules: [{
+                required: true,
+                message: "请输入经营地址",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "开户许可证编号",
+              prop: "openAccountLicenceNo",
+              placeholder: "如无开户许可证编号,可传基本存款账户编号",
+              hide:true,
+              rules: [{
+                required: true,
+                message: "请输入开户许可证编号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "开户许可证照片",
+              prop: "openAccountLicenceUrl",
+              placeholder: "如无开户许可证,请上传基本存款账户信息表照片",
+              hide:true,
+              listType: "picture-img",
+              action: '/api/putObject',
+              propsHttp: {
+                url: 'data'
+              },
+              rules: [{
+                required: true,
+                message: "请上传开户许可证照片",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "手持营业执照在经营场所的照片",
+              prop: "handLicenceUrl",
+              hide:true,
+              listType: "picture-img",
+              action: '/api/putObject',
+              propsHttp: {
+                url: 'data'
+              },
+              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",
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.testbussinessinfo_add, false),
+          viewBtn: this.vaildData(this.permission.testbussinessinfo_view, false),
+          delBtn: this.vaildData(this.permission.testbussinessinfo_delete, false),
+          editBtn: this.vaildData(this.permission.testbussinessinfo_edit, false),
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      handleRegisterRequestView(bussinessInfoId){
+        this.bussinessInfoId = bussinessInfoId;
+        this.registerRequestVisible = true;
+      },
+      handleView(item){
+        let that = this;
+        getDetail(item.id).then(res=>{
+          that.detailData = res.data.data
+          that.$refs.detailDialog.open()
+        })
+      },
+      showAdd(){
+        if (!this.$isEmpty(this.data1.id)) {
+          this.resetData()
+        }
+        this.currentEvent = "add";
+        this.$refs.addDialog.open()
+      },
+      //编辑
+      handleEdit(item) {
+        this.currentEvent = "edit";
+        let that = this;
+        this.data1= {
+          id:item.id,
+          signType: item.signType,
+          licenceNo: item.licenceNo,
+          openAccountLicenceNo: item.openAccountLicenceNo,
+          signName: item.signName,
+          shortName: item.shortName,
+          province: item.province,
+          registerStatus: item.registerStatus,
+          city: item.city,
+          district: item.district,
+          address: item.address,
+          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;
+        }),
+        getByTypeAndBussinessInfoId(11, item.id).then(res => {
+          that.data3= res.data.data;
+        })
+        that.$refs.addDialog.open()
+      },
+      handleSign(signUrl){
+        window.open(signUrl, '_blank');
+      },
+      closeDialog(){
+        this.onLoad(this.page);
+        this.resetData();
+      },
+      closeRequestDialog(){
+        this.registerRequestVisible = false;
+      },
+      resetData(){
+        this.data1= {
+
+        }
+        this.data2= {
+
+        }
+        this.data3= {
+
+        }
+      },
+      submit(item) {
+        testMerchantRegister(item).then(() => {
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+          this.$message({
+            type: "success",
+            message: "操作成功,请等待结果"
+          });
+          this.onLoad(this.page);
+          this.$refs.addDialog.close();
+          this.resetData();
+      },
+      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>

+ 263 - 0
src/views/test/bussinessmng/testbussinessregisterrequest.vue

@@ -0,0 +1,263 @@
+<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">
+      </template>
+      <template slot="applicationStatus" slot-scope="{row}">
+        <el-tag plain type="warning" size="small" v-if="row.applicationStatus == 100">资料完善中</el-tag>
+        <el-tag plain type="primary" size="small" v-if="row.applicationStatus == 98">送审中</el-tag>
+        <el-tag plain type="warning" size="small" v-if="row.applicationStatus == 101">协议待签署</el-tag>
+        <el-tag plain type="warning" size="small" v-if="row.applicationStatus == 102">审核中</el-tag>
+        <el-tag plain type="success" size="small" v-if="row.applicationStatus == 200">审核成功</el-tag>
+        <el-tag plain type="danger" size="small" v-if="row.applicationStatus == 400">审核失败</el-tag>
+        <el-tag plain type="danger" size="small" v-if="row.applicationStatus == 99">送审失败</el-tag>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/bussinessmng/bussinessregisterrequest";
+  import {mapGetters} from "vuex";
+
+  export default {
+    props:{
+      bussinessInfoId: null,
+      userInfoId: null
+    },
+    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,
+          editDisplay: false,
+          addDisplay: false,
+          delBtn: false,
+          menu: false,
+          column: [
+            {
+              label: "进件请求号",
+              prop: "requestNo",
+            },
+            {
+              label: "采购商主体名称",
+              prop: "bussinessInfoId",
+              labelWidth: 120,
+              type: "select",
+              filterable: true,
+              dicUrl: "/api/cyzh-bussiness-info/bussinessinfo/listBussinessInfo?size=500",
+              props:{
+                label: "signName",
+                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",
+              slot: true,
+              display: false
+            },
+            {
+              label: "审核意见",
+              prop: "auditOpinion",
+            },
+            {
+              label: "申请时间",
+              width: 150,
+              prop: "createTime",
+            },
+            {
+              label: "更新时间",
+              width: 150,
+              prop: "updateTime",
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.bussinessregisterrequest_add, false),
+          viewBtn: this.vaildData(this.permission.bussinessregisterrequest_view, false),
+          delBtn: this.vaildData(this.permission.bussinessregisterrequest_delete, false),
+          editBtn: this.vaildData(this.permission.bussinessregisterrequest_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 = {}) {
+        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;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>