billisme пре 4 година
родитељ
комит
730411f073

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

@@ -0,0 +1,95 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const generateApi = (ids) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/generateApi',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+
+export const getByAccount = () => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/getByAccount',
+    method: 'get',
+
+  })
+}
+
+export const enableBussiness = (params) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/enableBussiness',
+    method: 'get',
+    params: {
+      ...params
+    }
+  })
+}
+
+export const queryBusinessBalance = (bussinessId) => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/queryBusinessBalance',
+    method: 'get',
+    params: {
+      bussinessId
+    }
+  })
+}
+
+export const queryPlatformBalance = () => {
+  return request({
+    url: '/api/cyzh-guosen/bussiness/queryPlatformBalance',
+    method: 'get',
+  })
+}

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

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

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

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

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

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

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

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

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

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

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

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

+ 30 - 14
src/views/bussiness/bussinessinfo.vue

@@ -18,32 +18,39 @@
         <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"
+        <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"
+        <el-button v-if="row.registerStatus === 101" type="text" size="small" icon="el-icon-edit" plain class="none-border"
                    @click.stop="handleSign(row)">签署协议
         </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-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>
+        <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>
 
-    <bussinessinfo-add @submit="submit" :form1="data1" :form2="data2" :form3="data3" :curEvent="currentEvent" ref="addDialog" @closeDialog="closeDialog"></bussinessinfo-add>
-    <bussinessinfo-detail :form1="detailData" ref="detailDialog"></bussinessinfo-detail>
+    <bussinessinfo-add v-if="addVisible" @submit="submit" :form1="data1" :form2="data2" :form3="data3" :curEvent="currentEvent" ref="addDialog" @closeDialog="closeDialog"></bussinessinfo-add>
+    <bussinessinfo-detail v-if="detailVisible" :form1="detailData" ref="detailDialog"></bussinessinfo-detail>
+    <el-dialog title="商户进件申请记录" :append-to-body="true" :visible.sync="registerRequestVisible" top="1vh" @close="dialogClose" :close-on-click-modal="false">
+      <bussiness-register-request :bussiness-info-id="bussinessInfoId" v-if="registerRequestVisible"></bussiness-register-request>
+    </el-dialog>
   </basic-container>
 </template>
 
 <script>
   import bussinessinfoAdd from "../bussiness/comps/bussinessinfo-add.vue"
   import bussinessinfoDetail from "../bussiness/comps/bussinessinfo-detail.vue"
+  import bussinessRegisterRequest from "../bussiness/bussinessregisterrequest.vue"
   import {
     getList,
     getDetail,
@@ -60,11 +67,11 @@
 
   export default {
     components: {
-      bussinessinfoAdd,bussinessinfoDetail
+      bussinessinfoAdd,bussinessinfoDetail,bussinessRegisterRequest
     },
     data() {
       return {
-        //编辑
+        bussinessInfoId: null,
         currentEvent: "add",
         data1: {
           id:'',
@@ -100,7 +107,9 @@
         },
         //详情
         detailData:{},
-
+        detailVisible: false,
+        addVisible: false,
+        registerRequestVisible: false,
         form: {},
         query: {},
         loading: true,
@@ -321,6 +330,10 @@
       }
     },
     methods: {
+      handleRegisterRequestView(bussinessInfoId){
+        this.bussinessInfoId = bussinessInfoId;
+        this.registerRequestVisible = true;
+      },
       handleView(item){
         let that = this;
         getDetail(item.id).then(res=>{
@@ -372,6 +385,9 @@
         this.onLoad(this.page);
         this.resetData();
       },
+      closeRequestDialog(){
+        this.registerRequestVisible = false;
+      },
       resetData(){
         this.data1= {
 

+ 31 - 122
src/views/bussiness/bussinessregisterrequest.vue

@@ -27,6 +27,15 @@
                    @click="handleDelete">删 除
         </el-button>
       </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>
@@ -36,6 +45,9 @@
   import {mapGetters} from "vuex";
 
   export default {
+    props:{
+      bussinessInfoId: null
+    },
     data() {
       return {
         form: {},
@@ -58,141 +70,34 @@
           viewBtn: true,
           selection: true,
           dialogClickModal: false,
+          editDisplay: false,
+          addDisplay: false,
           column: [
             {
-              label: "入网请求号	示例值:YBRWQQH20210622XXXXXX",
+              label: "进件请求号",
               prop: "requestNo",
-              rules: [{
-                required: true,
-                message: "请输入入网请求号	示例值:YBRWQQH20210622XXXXXX",
-                trigger: "blur"
-              }]
             },
             {
-              label: "商户主体ID",
+              label: "采购商主体名称",
               prop: "bussinessInfoId",
-              rules: [{
-                required: true,
-                message: "请输入商户主体ID",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "入网商户的业务角色:	SETTLED_MERCHANT:入驻商户;	SHARE_MERCHANT:分账接收方(仅允许开通结算产品,到银行账户)		非必填,不填默认为入驻商户		a. 入驻商户:	1、只能入驻到特定平台商的下级;2、目前仅支持事业单位/社会团体/企业/个体工商户的签约类型商户;	b. 分账接收方:	1、只能作为特定平台商的下级商户;2、目前仅支持事业单位/社会团体/企业/个体工商户的签约类型商户。	示例值:SETTLED_MERCHANT",
-              prop: "businessRole",
-              rules: [{
-                required: true,
-                message: "请输入入网商户的业务角色:	SETTLED_MERCHANT:入驻商户;	SHARE_MERCHANT:分账接收方(仅允许开通结算产品,到银行账户)		非必填,不填默认为入驻商户		a. 入驻商户:	1、只能入驻到特定平台商的下级;2、目前仅支持事业单位/社会团体/企业/个体工商户的签约类型商户;	b. 分账接收方:	1、只能作为特定平台商的下级商户;2、目前仅支持事业单位/社会团体/企业/个体工商户的签约类型商户。	示例值:SETTLED_MERCHANT",
-                trigger: "blur"
-              }]
+              labelWidth: 120,
+              type: "select",
+              filterable: true,
+              dicUrl: "/api/cyzh-bussiness-info/bussinessinfo/listBussinessInfo?size=500",
+              props:{
+                label: "signName",
+                value: "id"
+              },
             },
             {
-              label: "商户主体信息",
-              prop: "merchantSubjectInfo",
-              rules: [{
-                required: true,
-                message: "请输入商户主体信息",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "商户法人信息",
-              prop: "merchantCorporationInfo",
-              rules: [{
-                required: true,
-                message: "请输入商户法人信息",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "商户联系人信息",
-              prop: "merchantContactInfo",
-              rules: [{
-                required: true,
-                message: "请输入商户联系人信息",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "经营地址",
-              prop: "businessAddressInfo",
-              rules: [{
-                required: true,
-                message: "请输入经营地址",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "1、用于接收电子签章地址,完成协议签署;	2、用于接收审核已驳回状态下的原因;	3、用于接收入网完成的通知。",
-              prop: "notifyUrl",
-              rules: [{
-                required: true,
-                message: "请输入1、用于接收电子签章地址,完成协议签署;	2、用于接收审核已驳回状态下的原因;	3、用于接收入网完成的通知。",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "入网申请单号",
-              prop: "applicationNo",
-              rules: [{
-                required: true,
-                message: "请输入入网申请单号",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "第三方生成的入网商户编号",
-              prop: "merchantNo",
-              rules: [{
-                required: true,
-                message: "请输入第三方生成的入网商户编号",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "申请状态,10驳回,20协议待签署,30申请已完成",
+              label: "申请状态",
               prop: "applicationStatus",
-              rules: [{
-                required: true,
-                message: "请输入申请状态,10驳回,20协议待签署,30申请已完成",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "签约地址",
-              prop: "agreementSignUrl",
-              rules: [{
-                required: true,
-                message: "请输入签约地址",
-                trigger: "blur"
-              }]
+              slot: true,
+              display: false
             },
             {
               label: "审核意见",
               prop: "auditOpinion",
-              rules: [{
-                required: true,
-                message: "请输入审核意见",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "响应描述",
-              prop: "returnMsg",
-              rules: [{
-                required: true,
-                message: "请输入响应描述",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "回调日志",
-              prop: "thirdLog",
-              rules: [{
-                required: true,
-                message: "请输入回调日志",
-                trigger: "blur"
-              }]
             },
           ]
         },
@@ -318,6 +223,10 @@
         this.onLoad(this.page, this.query);
       },
       onLoad(page, params = {}) {
+        debugger
+        if(this.bussinessInfoId != null){
+          params['bussinessInfoId'] = this.bussinessInfoId;
+        }
         this.loading = true;
         getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
           const data = res.data.data;

+ 2 - 2
src/views/bussiness/bussinesstransferorder.vue

@@ -72,7 +72,7 @@
               label: "转出方商户编号",
               prop: "fromMerchantNo",
               type: "select",
-              dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500",
+              dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500&registerStatus=200",
               props:{
                 label: "name",
                 value: "merchantNo"
@@ -85,7 +85,7 @@
               label: "转入方商户编号",
               prop: "toMerchantNo",
               type: "select",
-              dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500",
+              dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500&registerStatus=200",
               props:{
                 label: "name",
                 value: "merchantNo"

+ 1 - 0
src/views/bussiness/comps/bussinessinfo-add.vue

@@ -171,6 +171,7 @@
             <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!=2" type="primary" @click="next">保存</el-button>
                     <el-button v-if="active==2" type="primary" @click="submit()">提交申请</el-button>
                 </div>

+ 429 - 0
src/views/bussinessmng/bussiness.vue

@@ -0,0 +1,429 @@
+<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.bussiness_delete" @click="handleDelete">删 除
+        </el-button>
+       <el-button type="success" size="small" icon="el-icon-upload" plain v-if="permission.bussiness_generateapi" @click="generateDoc">
+          生成api文档
+        </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.bussiness_enable"
+                @click="handleEnable(row.id, 0)">启用
+        </el-button>
+        <el-button
+                type ="text"
+                size="mini"
+                plain
+                v-if="row.enable == 0 && permission.bussiness_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,
+    add,
+    update,
+    remove,
+    generateApi,
+    enableBussiness
+  } from "@/api/guosen/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,
+              display: true,
+              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)
+        add(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)
+        }
+        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: "操作成功!"
+            });
+          });
+      },
+      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>

+ 281 - 0
src/views/bussinessmng/bussinesscontactinfo.vue

@@ -0,0 +1,281 @@
+<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.bussinesscontactinfo_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/bussinessmng/bussinesscontactinfo";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "法人姓名",
+              prop: "legalName",
+              rules: [{
+                required: true,
+                message: "请输入法人姓名",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "法人证件类型",
+              prop: "legalLicenceType",
+              rules: [{
+                required: true,
+                message: "请输入法人证件类型",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "法人证件号码",
+              prop: "legalLicenceNo",
+              rules: [{
+                required: true,
+                message: "请输入法人证件号码",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "法人证件正面照片",
+              prop: "legalLicenceFrontUrl",
+              rules: [{
+                required: true,
+                message: "请输入法人证件正面照片",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "法人证件反面照片",
+              prop: "legalLicenceBackUrl",
+              rules: [{
+                required: true,
+                message: "请输入法人证件反面照片",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "联系人姓名",
+              prop: "contactName",
+              rules: [{
+                required: true,
+                message: "请输入联系人姓名",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "联系人证件号码",
+              prop: "contactLicenceNo",
+              rules: [{
+                required: true,
+                message: "请输入商户联系人证件号码",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "联系人手机号",
+              prop: "contactMobile",
+              rules: [{
+                required: false,
+                message: "请输入商户联系人手机号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "联系人邮箱",
+              prop: "contactEmail",
+              rules: [{
+                required: true,
+                message: "请输入联系人邮箱",
+                trigger: "blur"
+              }]
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.bussinesscontactinfo_add, false),
+          viewBtn: this.vaildData(this.permission.bussinesscontactinfo_view, false),
+          delBtn: this.vaildData(this.permission.bussinesscontactinfo_delete, false),
+          editBtn: this.vaildData(this.permission.bussinesscontactinfo_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 300 - 0
src/views/bussinessmng/bussinessgoods.vue

@@ -0,0 +1,300 @@
+<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.bussinessgoods_delete"
+                   @click="handleDelete">删 除
+        </el-button>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/bussinessmng/bussinessgoods";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "商品编号",
+              prop: "goodsNo",
+              search:true,
+              rules: [{
+                required: false,
+                message: "请输入商品编号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商品名称",
+              prop: "goodsName",
+              search:true,
+              rules: [{
+                required: true,
+                message: "请输入商品名称",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商品类型",
+              prop: "goodsType",
+              rules: [{
+                required: false,
+                message: "请输入商品类型",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商品介绍",
+              prop: "goodsDesc",
+              rules: [{
+                required: false,
+                message: "请输入商品介绍",
+                trigger: "blur"
+              }],
+              hide: true
+            },
+            {
+              label: "商品单价",
+              prop: "goodsPrice",
+              rules: [{
+                required: true,
+                message: "请输入商品单价",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "商品备注",
+              prop: "goodsRemark",
+              rules: [{
+                required: false,
+                message: "请输入商品备注",
+                trigger: "blur"
+              }],
+              hide: true
+            },
+            {
+              label: "关联采购商",
+              prop: "bussinessId",
+              type: "select",
+              filterable: true,
+              search: true,
+              searchFilterable: true,
+              labelWidth: 110,
+              searchLabelWidth: 110,
+              dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500",
+              props:{
+                label: "name",
+                value: "id"
+              },
+              hide: true,
+              addDisplay: true,
+              editDisplay: true,
+              viewDisplay: false
+            },
+            {
+              label: "关联采购商",
+              prop: "bussinessName",
+              addDisplay: false,
+              editDisplay: false,
+              viewDisplay: true
+            },
+            {
+              label: "商品图片",
+              prop: "goodsPic",
+              type: "upload",
+              listType: "picture-img",
+              action: '/api/putObject',
+              propsHttp: {
+                url: 'data'
+              },
+              rules: [{
+                required: false,
+                message: "请上传商品图片",
+                trigger: "blur"
+              }],
+              hide: true
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.bussinessgoods_add, false),
+          viewBtn: this.vaildData(this.permission.bussinessgoods_view, false),
+          delBtn: this.vaildData(this.permission.bussinessgoods_delete, false),
+          editBtn: this.vaildData(this.permission.bussinessgoods_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 535 - 0
src/views/bussinessmng/bussinessinfo.vue

@@ -0,0 +1,535 @@
+<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-delete" v-if="permission.bussinessinfo_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)">签署协议
+        </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-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>
+
+    <bussinessinfo-add v-show="addVisible" @submit="submit" :form1="data1" :form2="data2" :form3="data3" :curEvent="currentEvent" ref="addDialog" @closeDialog="closeDialog"></bussinessinfo-add>
+    <bussinessinfo-detail v-show="detailVisible" :form1="detailData" ref="detailDialog"></bussinessinfo-detail>
+    <el-dialog title="商户进件申请记录" :append-to-body="true" :visible.sync="registerRequestVisible" top="1vh" @close="closeRequestDialog" :close-on-click-modal="false">
+      <bussiness-register-request :bussiness-info-id="bussinessInfoId" v-if="registerRequestVisible"></bussiness-register-request>
+    </el-dialog>
+  </basic-container>
+</template>
+
+<script>
+  import bussinessinfoAdd from "../bussinessmng/comps/bussinessinfo-add.vue"
+  import bussinessinfoDetail from "../bussinessmng/comps/bussinessinfo-detail.vue"
+  import bussinessRegisterRequest from "../bussinessmng/bussinessregisterrequest.vue"
+  import {
+    getList,
+    getDetail,
+    add,
+    update,
+    remove,
+    agreeSign
+  } from "@/api/bussinessmng/bussinessinfo";
+  import {add as merchantRegister} from "@/api/bussinessmng/bussinessregisterrequest";
+  import {getByTypeAndBussinessInfoId} from "@/api/bussinessmng/bussinesscontactinfo";
+  import {
+    mapGetters
+  } from "vuex";
+
+  export default {
+    components: {
+      bussinessinfoAdd,bussinessinfoDetail,bussinessRegisterRequest
+    },
+    data() {
+      return {
+        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: ''
+        },
+        //详情
+        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.bussinessinfo_add, false),
+          viewBtn: this.vaildData(this.permission.bussinessinfo_view, false),
+          delBtn: this.vaildData(this.permission.bussinessinfo_delete, false),
+          editBtn: this.vaildData(this.permission.bussinessinfo_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,
+        }
+        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(){
+        agreeSign().then(res =>{
+          window.open(res.data.data, '_blank');
+        });
+      },
+      closeDialog(){
+        this.onLoad(this.page);
+        this.resetData();
+      },
+      closeRequestDialog(){
+        this.registerRequestVisible = false;
+      },
+      resetData(){
+        this.data1= {
+
+        }
+        this.data2= {
+
+        }
+        this.data3= {
+
+        }
+      },
+      submit(item) {
+        merchantRegister(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>

+ 233 - 0
src/views/bussinessmng/bussinesspurchaserecord.vue

@@ -0,0 +1,233 @@
+<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>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/bussinessmng/bussinesspurchaserecord";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          delBtn: false,
+          selection: true,
+          dialogClickModal: false,
+          addDisplay: false,
+          editDisplay: false,
+          column: [
+            {
+              label: "采购单号",
+              prop: "orderNo",
+              search: true,
+            },
+            {
+              label: "商品编号",
+              prop: "goodsNo",
+              search: true,
+            },
+            {
+              label: "商品单价",
+              prop: "goodsPrice",
+            },
+            {
+              label: "采购数量",
+              prop: "purchaseNum",
+            },
+            {
+              label: "采购总额",
+              prop: "purchaseAmount",
+            },
+            {
+              label: "采购商",
+              prop: "bussinessName",
+              search: true,
+            },
+            {
+              label: "下单时间",
+              width: 150,
+              prop: "createTime",
+            },
+            {
+              label: "更新时间",
+              width: 150,
+              prop: "updateTime",
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.bussinesspurchaserecord_add, false),
+          viewBtn: this.vaildData(this.permission.bussinesspurchaserecord_view, false),
+          delBtn: this.vaildData(this.permission.bussinesspurchaserecord_delete, false),
+          editBtn: this.vaildData(this.permission.bussinesspurchaserecord_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

+ 249 - 0
src/views/bussinessmng/bussinessregisterrequest.vue

@@ -0,0 +1,249 @@
+<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
+    },
+    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: "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 = {}) {
+        debugger
+        if(this.bussinessInfoId != null){
+          params['bussinessInfoId'] = this.bussinessInfoId;
+        }
+        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>

+ 265 - 0
src/views/bussinessmng/bussinesstransferorder.vue

@@ -0,0 +1,265 @@
+<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="transferStatus" slot-scope="{row}">
+        <el-tag v-if="row.transferStatus === 'SUCCESS'" plain type="success">转账成功</el-tag>
+        <el-tag v-if="row.transferStatus === 'REQUEST_RECEIVE'" plain type="warning">处理中</el-tag>
+        <el-tag v-if="row.transferStatus === 'FAIL'" plain type="danger">失败</el-tag>
+      </template>
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import {getList, getDetail, add, update, remove} from "@/api/bussinessmng/bussinesstransferorder";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        selectionList: [],
+        option: {
+          height:'auto',
+          calcHeight: 30,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          delBtn: false,
+          selection: true,
+          dialogClickModal: false,
+          column: [
+            {
+              label: "商户请求号",
+              prop: "requestNo",
+            },
+            {
+              label: "转出方商户",
+              prop: "fromMerchantNo",
+              type: "select",
+              labelWidth: 120,
+              dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500&registerStatus=200",
+              props:{
+                label: "name",
+                value: "merchantNo"
+              },
+              addDisplay: false,
+              editDisplay: false,
+              viewDisplay: true
+            },
+            {
+              label: "转入方商户",
+              prop: "toMerchantNo",
+              type: "select",
+              labelWidth: 120,
+              dicUrl: "/api/cyzh-guosen/bussiness/listBussiness?size=500&registerStatus=200",
+              props:{
+                label: "name",
+                value: "merchantNo"
+              },
+              addDisplay: false,
+              editDisplay: false,
+              viewDisplay: true
+            },
+            {
+              label: "转账金额",
+              prop: "orderAmount",
+            },
+            {
+              label: "手续费",
+              prop: "fee",
+            },
+            {
+              label: "扣账金额",
+              prop: "debitAmount",
+            },
+            {
+              label: "入账金额	",
+              prop: "receiveAmount",
+            },
+            {
+              label: "完成时间",
+              prop: "finishTime",
+              width: 150,
+              search:true,
+            },
+            {
+              label: "转账状态",
+              prop: "transferStatus",
+              type: "select",
+              slot: true,
+              search: true,
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=yee_transfer_order_status",
+              props:{
+                label: "dictValue",
+                value: "dictKey"
+              },
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.bussinesstransferorder_add, false),
+          viewBtn: this.vaildData(this.permission.bussinesstransferorder_view, false),
+          delBtn: this.vaildData(this.permission.bussinesstransferorder_delete, false),
+          editBtn: this.vaildData(this.permission.bussinesstransferorder_edit, false)
+        };
+      },
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+      rowSave(row, done, loading) {
+        add(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          window.console.log(error);
+        });
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.onLoad(this.page);
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          });
+          done();
+        }, error => {
+          loading();
+          console.log(error);
+        });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+          .then(() => {
+            return remove(this.ids);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+            this.$refs.crud.toggleSelection();
+          });
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getDetail(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        this.$refs.crud.toggleSelection();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        this.loading = true;
+        getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>

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

@@ -0,0 +1,550 @@
+<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-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 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!=2" type="primary" @click="next">保存</el-button>
+                    <el-button v-if="active==2" type="primary" @click="submit()">提交申请</el-button>
+                </div>
+                <div v-if="curEvent === 'edit'">
+                    <el-button v-if="active!=0" @click="active--">上一步</el-button>
+                    <el-button type="primary" @click="handelNext">下一步</el-button>
+                    <el-button type="primary" @click="next">保存</el-button>
+                    <el-button v-if="active==2" type="primary" @click="submit()">提交申请</el-button>
+                </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} from "@/api/bussinessmng/bussinessinfo"
+    import {add as saveContactInfo} from "@/api/bussinessmng/bussinesscontactinfo"
+    export default {
+        props:{
+            form1:Object,
+            form2:Object,
+            form3: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',
+                },
+                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: 'blur' },
+                    ],
+                    handLicenceUrl: [
+                        { required: true, message: '请上传法人证件照反面照片', trigger: 'blur' },
+                    ],
+                },
+                rules2:{
+                    legalName:[
+                        {required: true, message: '请输入法人姓名', trigger: 'blur' },
+                    ],
+                    legalLicenceType:[
+                        {required: true, message: '请选择法人证件类型', trigger: 'blur' },
+                    ],
+                    legalLicenceNo:[
+                        {required: true, message: '请输入法人证件号码', trigger: 'blur' },
+                    ],
+                    legalLicenceFrontUrl:[
+                        {required: true, message: '请上传法人证件正面照片', trigger: 'blur' },
+                    ],
+                    legalLicenceBackUrl:[
+                        {required: true, 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");
+        },
+        methods: {
+            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;
+                    }
+                })
+            },
+            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"){
+                                saveBussInfo(this.form1).then(res => {
+                                    this.$message({
+                                        type: "success",
+                                        message: res.data.msg
+                                    });
+                                    this.form1.id = res.data.data.id;
+                                    this.form.bussinessInfoId = res.data.data.id;
+                                    this.form2.bussinessInfoId = res.data.data.id;
+                                    this.form3.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.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 !=2) {
+                    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>

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

@@ -0,0 +1,238 @@
+<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-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>