Przeglądaj źródła

修改账户管理

huangbin 4 lat temu
rodzic
commit
7b37a24c3c

+ 47 - 0
src/router/index.ts

@@ -162,6 +162,52 @@ const routes: Array<RouteRecordRaw> = [
                 ],
             },
             {
+                path: '/account_info',
+                name: 'account_info',
+                component: Main,
+                meta: {
+                    requireAuth: true,
+                },
+                redirect: (to) => {
+                    return { name: 'account_info_business' };
+                },
+                children: [
+                    {
+                        path: '/account_info/business',
+                        name: 'account_info_business',
+                        component: () => import('@/views/information/account_info/list/account_info_business/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/account_info/futures',
+                        name: 'account_info_futures',
+                        component: () => import('@/views/information/account_info/list/account_info_futures/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/account_info/managers',
+                        name: 'account_info_manager',
+                        component: () => import('@/views/information/account_info/list/account_info_manager/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/account_info/trade',
+                        name: 'account_info_trade',
+                        component: () => import('@/views/information/account_info/list/account_info_trade/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ],
+            },
+
+            {
                 path: '/warehouse_info',
                 name: 'warehouse_info',
                 component: Main,
@@ -190,6 +236,7 @@ const routes: Array<RouteRecordRaw> = [
                     },
                 ],
             },
+
             {
                 path: '/outaccount_status',
                 name: 'outaccount_status',

+ 333 - 0
src/views/information/account_info/compoments/add/index.vue

@@ -0,0 +1,333 @@
+<template>
+  <!-- 新增客户资料 -->
+  <a-modal class="add-custom"
+           title="新增客户资料"
+           v-model:visible="visible"
+           @cancel="cancel"
+           centered
+           :maskClosable="false"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">完成</a-button>
+    </template>
+    <a-form class="inlineForm"
+            ref="formRef"
+            :model="formState"
+            :rules="rules">
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="客户类型"
+                       name="userinfotype">
+            <a-select class="typeSelect"
+                      style="width: 200px"
+                      v-model:value="formState.userinfotype"
+                      placeholder="请选择客户类型">
+              <a-select-option value="1">
+                个人
+              </a-select-option>
+              <a-select-option value="2">
+                企业
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <template v-if="!isPersonal()">
+          <a-col :span="12">
+            <a-form-item label="企业名称"
+                         name="customername">
+              <a-input class="dialogInput"
+                       v-model:value="formState.customername"
+                       style="width: 200px"
+                       placeholder="请输入企业名称" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="企业简称"
+                         name="nickname">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.nickname"
+                       placeholder="请输入企业简称" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="证件类型"
+                         name="cardtype">
+              <a-select class="inlineFormSelect"
+                        v-model:value="formState.cardtype"
+                        style="width: 200px"
+                        placeholder="请选择证件类型">
+                <a-select-option :value="item.enumitemname"
+                                 v-for="item in cardTypeList"
+                                 :key="item.autoid">
+                  {{item.enumdicname}}
+                </a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="法定代表人"
+                         name="legalpersonname">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.legalpersonname"
+                       placeholder="请输入法定代表人" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="证件号码"
+                         name="cardnum">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.cardnum"
+                       placeholder="请输入证件号码" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="纳税人识别号"
+                         name="taxpayernum">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.taxpayernum"
+                       placeholder="请输入纳税人识别号" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="营业执照">
+              <div class="upload">
+                <a-upload action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
+                          :transform-file="transformFile">
+                  <a-button class="uploadBtn">上传</a-button>
+                </a-upload>
+                <div class="look">查看附件</div>
+              </div>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="联系人"
+                         name="contactname">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.contactname"
+                       placeholder="请输入联系人" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="联系人手机号"
+                         name="mobilephone">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.mobilephone"
+                       placeholder="请输入联系人手机号" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="联系电话"
+                         name="telphone">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.telphone"
+                       placeholder="请输入联系电话" />
+            </a-form-item>
+          </a-col>
+        </template>
+        <template v-else>
+          <a-col :span="12">
+            <a-form-item label="姓名"
+                         name="username">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.username"
+                       placeholder="请输入姓名" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="身份证号码"
+                         name="cardnum">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.cardnum"
+                       placeholder="请输入身份证号码" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="手机号码"
+                         name="mobilephone">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.mobilephone"
+                       placeholder="请输入手机号码" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="身份证正面照"
+                         name="cardbackphotourl">
+              <div class="upload">
+                <a-upload action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
+                          :transform-file="transformFile">
+                  <a-button class="uploadBtn">上传</a-button>
+                </a-upload>
+                <div class="look">查看附件</div>
+              </div>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="邮箱"
+                         name="email">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.email"
+                       placeholder="请输入邮箱" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-item label="身份证反面照"
+                         name="cardfrontphotourl">
+              <div class="upload">
+                <a-upload action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
+                          :transform-file="transformFile">
+                  <a-button class="uploadBtn">上传</a-button>
+                </a-upload>
+                <div class="look">查看附件</div>
+              </div>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item label="联系电话"
+                         name="telphone">
+              <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.telphone"
+                       placeholder="请输入联系电话" />
+            </a-form-item>
+          </a-col>
+          <a-col :span="12">
+            <a-form-item>
+              &nbsp;
+            </a-form-item>
+          </a-col>
+        </template>
+        <a-col :span="24">
+          <a-form-item label="通讯地址">
+            <a-select class="inlineFormSelect"
+                      style="width: 205px"
+                      placeholder="请选择省">
+              <a-select-option value="1">
+                客户一
+              </a-select-option>
+              <a-select-option value="2">
+                客户二
+              </a-select-option>
+            </a-select>
+            <a-select class="inlineFormSelect ml10"
+                      style="width: 205px"
+                      placeholder="请选择市">
+              <a-select-option value="1">
+                客户一
+              </a-select-option>
+              <a-select-option value="2">
+                客户二
+              </a-select-option>
+            </a-select>
+            <a-select class="inlineFormSelect ml10"
+                      style="width: 205px"
+                      placeholder="请选择县(区)">
+              <a-select-option value="1">
+                客户一
+              </a-select-option>
+              <a-select-option value="2">
+                客户二
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="24">
+          <a-form-item label="&nbsp;"
+                       name="cardaddress">
+            <a-input class="dialogInput"
+                     style="width: 635px"
+                     v-model:value="formState.cardaddress"
+                     placeholder="请输入详细地址" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="24">
+          <a-form-item label="备注"
+                       name="remark">
+            <a-input class="dialogInput"
+                     style="width: 635px"
+                     v-model:value="formState.remark"
+                     placeholder="请输入备注" />
+          </a-form-item>
+        </a-col>
+      </a-row>
+    </a-form>
+  </a-modal>
+</template>
+
+<script lang="ts">
+import { closeModal } from '@/common/setup/modal/index';
+import { initData } from '@/common/methods/index';
+import { defineComponent, ref, reactive, toRaw, UnwrapRef } from 'vue';
+import { getCardType, initFormState, handleApply } from './setup';
+import { AllEnums } from '@/services/go/commonService/interface';
+import { FormState } from './interface';
+import { RuleObject, ValidateErrorEntity } from 'ant-design-vue/es/form/interface';
+
+export default defineComponent({
+    name: 'add-custom',
+    components: {},
+    setup() {
+        // 控制关闭弹窗
+        const { visible, cancel } = closeModal('custom_info_btn_add');
+        // 证件类型
+        const cardTypeList = ref<AllEnums[]>(getCardType());
+        // 表单
+        const formRef = ref();
+        const formState: UnwrapRef<FormState> = reactive(initFormState());
+        const rules = {
+            userinfotype: [{ required: true, message: '请选择客户类型', trigger: 'change' }],
+            customername: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
+            nickname: [{ required: true, message: '请输入企业简称', trigger: 'blur' }],
+            cardtype: [{ required: true, message: '请选择证件类型', trigger: 'change' }],
+        };
+        // 下单方法
+        const { loading, applyAction } = handleApply();
+        function isPersonal(): boolean {
+            return formState.userinfotype === '1';
+        }
+        function submit() {
+            formRef.value
+                .validate()
+                .then(() => {
+                    const param = toRaw(formState);
+                    applyAction(param);
+                    console.log('values', formState);
+                })
+                .catch((error: ValidateErrorEntity<FormState>) => {
+                    console.log('error', error);
+                });
+        }
+        initData(() => {});
+        return {
+            formState,
+            rules,
+            formRef,
+            cardTypeList,
+            isPersonal,
+            visible,
+            cancel,
+            submit,
+            loading,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.add-custom {
+}
+</style
+>;

+ 27 - 0
src/views/information/account_info/compoments/add/interface.ts

@@ -0,0 +1,27 @@
+export interface FormState {
+    userinfotype: string; //客户类型
+    customername: string; //客户名称(企业名称)
+    nickname: string; //企业简称
+    cardtype: number | undefined; //证件类型
+
+    cardnum: string; //证件号码 (加密存储)
+    legalpersonname: string; //法人姓名(企业)
+    taxpayernum: string; //纳税人识别号
+    attachment1: string; //附件1
+    attachment2: string; //附件2
+    attachment3: string; //附件3
+    attachment4: string; //附件4
+    attachment5: string; //附件5
+    contactname: string; //联系人
+    mobilephone: string; //手机号码 (加密存储)
+    telphone: string; //联系电话(加密存储)
+    provinceid: number; //省
+    cityid: number; //市
+    districtid: number; //地区
+    remark: string; //备注
+    cardaddress: string; //证件地址 (加密存储)
+    username: string;//用户姓名
+    cardbackphotourl: string;//背面证件照地址
+    cardfrontphotourl: string;//正面证件照地址
+    email: string;//Email地址(加密存储)
+}

+ 62 - 0
src/views/information/account_info/compoments/add/setup.ts

@@ -0,0 +1,62 @@
+
+import { getItemEnum } from '@/services/bus/allEnum';
+import { QueryAddUserInfoApply } from '@/services/go/ermcp/customInfo';
+import { AddUserInfoApplyReq } from '@/services/go/ermcp/customInfo/interface';
+import { message } from 'ant-design-vue';
+import { ref } from 'vue';
+import { FormState } from './interface';
+
+/**
+ * 获取证件类型
+ * @returns 
+ */
+export function getCardType() {
+    const arr = [2, 4, 18, 21];
+    return getItemEnum('certificatetype').filter(e => arr.includes(e.enumitemname))
+}
+
+/**
+ * 初始化表单数据
+ * @returns 
+ */
+export function initFormState(): FormState {
+    return {
+        userinfotype: '2',
+        customername: '',
+        nickname: '',
+        cardtype: undefined,
+        cardnum: '',
+        legalpersonname: '',
+        taxpayernum: '',
+        attachment1: '',
+        attachment2: '',
+        attachment3: '',
+        attachment4: '',
+        attachment5: '',
+        contactname: '',
+        mobilephone: '',
+        telphone: '',
+        provinceid: 0,
+        cityid: 0,
+        districtid: 0,
+        cardaddress: '',
+        remark: '',
+        username: '',
+        cardbackphotourl: '',
+        cardfrontphotourl: '',
+        email: '',
+    }
+}
+
+export function handleApply() {
+    const loading = ref<boolean>(false);
+    function applyAction(param: AddUserInfoApplyReq) {
+        loading.value = true;
+        QueryAddUserInfoApply(param).then(res => {
+            console.log('res', res);
+        }).catch(err => {
+            message.error(err)
+        }).finally(() => loading.value = false)
+    }
+    return { loading, applyAction }
+}

+ 186 - 0
src/views/information/account_info/compoments/cancel/index.vue

@@ -0,0 +1,186 @@
+<template>
+  <!-- 撤销客户资料-->
+  <a-modal class="custom_info_btn_cancel"
+           title="撤销客户资料"
+           v-model:visible="visible"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                @click="cancel">取消</a-button>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">确认撤销</a-button>
+    </template>
+      <a-form class="inlineForm"
+              :form="form"
+              @submit="handleSearch">
+          <a-row :gutter="24">
+              <a-col :span="12">
+                  <a-form-item label="客户类型">
+                      <span class="white">{{ selectedRow.userinfotype === '2' ? '企业' : '个人' }}</span>
+                  </a-form-item>
+              </a-col>
+              <a-col :span="12">
+                  <a-form-item label="企业名称">
+                      <span class="white">{{ formatValue(selectedRow.customername)}}</span>
+                  </a-form-item>
+              </a-col>
+          </a-row>
+          <a-row :gutter="24">
+              <a-col :span="12">
+                  <a-form-item label="企业简称">
+                      <span class="white">{{ formatValue(selectedRow.nickname) }}</span>
+                  </a-form-item>
+              </a-col>
+              <a-col :span="12">
+                  <a-form-item label="证件类型">
+                      <span class="white">{{ getCardTypeName(selectedRow.cardtype) }}</span>
+                  </a-form-item>
+              </a-col>
+          </a-row>
+          <a-row :gutter="24">
+              <a-col :span="12">
+                  <a-form-item label="法定代表人">
+                      <span class="white">{{ formatValue(selectedRow.legalpersonname) }}</span>
+                  </a-form-item>
+              </a-col>
+              <a-col :span="12">
+                  <a-form-item label="证件号码">
+                      <span class="white">{{ getCardTypeName(selectedRow.cardnum) }}</span>
+                  </a-form-item>
+              </a-col>
+          </a-row>
+          <a-row :gutter="24">
+              <a-col :span="12">
+                  <a-form-item label="纳税人识别号">
+                      <span class="white">{{ formatValue(selectedRow.taxpayernum) }}</span>
+                  </a-form-item>
+              </a-col>
+              <a-col :span="12">
+                  <a-form-item label="营业执照">
+                      <div class="upload">
+                          <div class="look">查看附件</div>
+                      </div>
+                  </a-form-item>
+              </a-col>
+          </a-row>
+          <a-row :gutter="24">
+              <a-col :span="12">
+                  <a-form-item label="联系人">
+                      <span class="white">{{ formatValue(selectedRow.contactname) }}</span>
+                  </a-form-item>
+              </a-col>
+              <a-col :span="12">
+                  <a-form-item label="联系人手机号">
+                      <span class="white">{{ formatValue(selectedRow.mobile) }}</span>
+                  </a-form-item>
+              </a-col>
+          </a-row>
+          <a-row :gutter="24">
+              <a-col :span="12">
+                  <a-form-item label="联系电话">
+                      <span class="white">{{ formatValue(selectedRow.telphone) }}</span>
+                  </a-form-item>
+              </a-col>
+              <a-col :span="12">
+                  <a-form-item label="状态">
+                      <span class="green">{{ formatValue(getStatusName(selectedRow.status)) }}</span>
+                  </a-form-item>
+              </a-col>
+          </a-row>
+          <a-row :gutter="24">
+              <a-col :span="24">
+                  <a-form-item label="通讯地址">
+                      <span class="white">{{ formatValue(selectedRow.address) }}</span>
+                  </a-form-item>
+              </a-col>
+          </a-row>
+          <a-row :gutter="24">
+              <a-col :span="24">
+                  <a-form-item label="备注">
+                      <span class="white">{{ formatValue(selectedRow.remark) }}</span>
+                  </a-form-item>
+              </a-col>
+          </a-row>
+      </a-form>
+  </a-modal>
+</template>
+
+<script lang="ts">
+import {defineComponent, PropType, ref} from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import {message, Modal} from 'ant-design-vue';
+import { ModifyUserInfoReq, QueryCustomInfoType} from "@/services/go/ermcp/customInfo/interface";
+import {formatValue} from "@/common/methods";
+import {getCardTypeName, getStatusName} from "@/views/information/custom/setup";
+import {cancelCustomInfo} from "@/views/information/custom/compoments/setup";
+
+export default defineComponent({
+    name: 'custom_info_btn_cancel',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props,context) {
+        const { visible, cancel } = closeModal('custom_info_btn_cancel');
+        const {loading, ModifyUserInfo} = cancelCustomInfo()
+        function submit() {
+            loading.value = true;
+            Modal.confirm({
+                title: '是否确认撤销客户资料',
+                content: '是否撤销',
+                okText: '确认撤销',
+                cancelText: '取消',
+                onOk() {
+                    console.log('OK');
+                    const req : ModifyUserInfoReq = {
+                        userid: props.selectedRow.userid,//用户ID
+                        userstate: 1,       //开户状态 - 1:未提交 2: 待初审 3:初审拒绝 4:待复审 5:复审拒绝 6:测评不通过 (必填)
+                    }
+                    // 撤销申请 将状态设置为未提交
+                    ModifyUserInfo(req)
+                        .then(res => {
+                            message.success(res)
+                            // 通知上层  刷新数据
+                            context.emit('refresh');
+                            cancel();
+                        }).catch(err => {
+                            message.error(err)
+                        })
+                },
+                onCancel() {
+                    console.log('Cancel');
+                    loading.value = false;
+                },
+                class: 'test',
+            });
+            // setTimeout(() => {
+            //     loading.value = false;
+            // }, 2000);
+        }
+
+
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            formatValue,
+            getStatusName,
+            getCardTypeName,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.custom_info_btn_cancel {
+}
+</style
+>;

+ 219 - 0
src/views/information/account_info/compoments/check/index.vue

@@ -0,0 +1,219 @@
+<template>
+    <!-- 审核客户资料-->
+    <a-modal class="custom_info_btn_check"
+             title="审核客户资料"
+             v-model:visible="visible"
+             @cancel="cancel"
+             width="890px">
+        <template #footer>
+            <a-button key="submit"
+                      type="primary"
+                      @click="cancel">取消
+            </a-button>
+            <a-button key="submit"
+                      type="primary"
+                      :loading="loading"
+                      @click="submit">审核通过
+            </a-button>
+            <a-button key="submit"
+                      type="primary"
+                      :loading="loading"
+                      @click="refuseSubmit">审核拒绝
+            </a-button>
+        </template>
+        <a-form class="inlineForm"
+                :form="form"
+                @submit="handleSearch">
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="客户类型">
+                        <span class="white">{{ selectedRow.userinfotype === '2' ? '企业' : '个人' }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="企业名称">
+                        <span class="white">{{ formatValue(selectedRow.customername) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="企业简称">
+                        <span class="white">{{ formatValue(selectedRow.nickname) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="证件类型">
+                        <span class="white">{{ getCardTypeName(selectedRow.cardtype) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="法定代表人">
+                        <span class="white">{{ formatValue(selectedRow.legalpersonname) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="证件号码">
+                        <span class="white">{{ formatValue(selectedRow.cardnum) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="纳税人识别号">
+                        <span class="white">{{ formatValue(selectedRow.taxpayernum) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="营业执照">
+                        <div class="upload">
+                            <div class="look">查看附件</div>
+                        </div>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="联系人">
+                        <span class="white">{{ formatValue(selectedRow.contactname) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="联系人手机号">
+                        <span class="white">{{ formatValue(selectedRow.mobile) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="联系电话">
+                        <span class="white">{{ formatValue(selectedRow.telphone) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="状态">
+                        <span class="green">{{ formatValue(getStatusName(selectedRow.status)) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="24">
+                    <a-form-item label="通讯地址">
+                        <span class="white">{{ formatValue(selectedRow.address) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="24">
+                    <a-form-item label="备注">
+                        <span class="white">{{ formatValue(selectedRow.remark) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+        </a-form>
+    </a-modal>
+</template>
+
+<script lang="ts">
+import {defineComponent, PropType, ref} from 'vue';
+import {closeModal} from '@/common/setup/modal/index';
+import {ModifyUserInfoReq, QueryCustomInfoType} from '@/services/go/ermcp/customInfo/interface';
+import {formatValue} from '@/common/methods';
+import {getCardTypeName, getStatusName} from '@/views/information/custom/setup';
+import {cancelCustomInfo, checkCustomInfo} from '@/views/information/custom/compoments/setup';
+import {UserInfoCheckMangeReq} from '@/services/proto/accountinfo/interface';
+import {getSelectedAccountId, getUserId} from '@/services/bus/account';
+import {message, Modal} from "ant-design-vue";
+
+export default defineComponent({
+    name: 'custom_info_btn_check',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props, context) {
+        const {loading, checkCustomerInfo} = checkCustomInfo();
+        const {visible, cancel} = closeModal('custom_info_btn_check');
+        const req: UserInfoCheckMangeReq = {
+            audituserid: getUserId(),
+            userid: props.selectedRow.userid,
+            auditflag: 1,
+            remark: '',
+        };
+
+        // 审核通过
+        function submit() {
+            Modal.confirm({
+                title: '是否确认审核通过',
+                okText: '确认通过',
+                cancelText: '取消',
+                onOk() {
+                    console.log('OK');
+                    req.auditflag = 1;
+                    req.userid = props.selectedRow.userid;
+                    checkCustomerInfo(req)
+                        .then(res => {
+                            message.success(res)
+                            context.emit('refresh');
+                            cancel();
+                        })
+                        .catch(err => {
+                            message.error(err)
+                        })
+                },
+                onCancel() {
+                    console.log('Cancel');
+                },
+            });
+        }
+
+        // 审核拒绝
+        function refuseSubmit() {
+            Modal.confirm({
+                title: '是否确认审核拒绝',
+                okText: '确认拒绝',
+                cancelText: '取消',
+                onOk() {
+                    console.log('OK');
+                    req.auditflag = 2;
+                    req.userid = props.selectedRow.userid;
+                    checkCustomerInfo(req)
+                        .then(res => {
+                            message.success(res)
+                            context.emit('refresh');
+                            cancel();
+                        })
+                        .catch(err => {
+                            message.error(err)
+                        })
+                },
+                onCancel() {
+                    console.log('Cancel');
+                },
+            });
+        }
+
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            refuseSubmit,
+            formatValue,
+            getStatusName,
+            getCardTypeName,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.custom_info_btn_check {
+}
+</style
+>;

+ 169 - 0
src/views/information/account_info/compoments/delete/index.vue

@@ -0,0 +1,169 @@
+<template>
+    <!-- 删除客户资料-->
+    <a-modal class="recover-custom"
+             title="删除客户资料"
+             v-model:visible="visible"
+             @cancel="cancel"
+             width="890px">
+        <template #footer>
+            <a-button key="submit"
+                      type="primary"
+                      :loading="loading"
+                      @click="submit">删除客户资料
+            </a-button>
+        </template>
+        <a-form class="inlineForm"
+                :form="form"
+                @submit="handleSearch">
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="客户类型">
+                        <span class="white">{{ selectedRow.userinfotype === '2' ? '企业' : '个人' }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="企业名称">
+                        <span class="white">{{ formatValue(selectedRow.customername) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="企业简称">
+                        <span class="white">{{ formatValue(selectedRow.nickname) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="证件类型">
+                        <span class="white">{{ formatValue(selectedRow.cardtypename) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="法定代表人">
+                        <span class="white">{{ formatValue(selectedRow.legalpersonname) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="证件号码">
+                        <span class="white">{{ formatValue(selectedRow.cardnum) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="纳税人识别号">
+                        <span class="white">{{ formatValue(selectedRow.taxpayernum) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="营业执照">
+                        <a class="blue">查看附件</a>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="联系人">
+                        <span class="white">{{ formatValue(selectedRow.contactname) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="联系人手机号">
+                        <span class="white">{{ formatValue(selectedRow.mobile) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="联系电话">
+                        <span class="white">{{ formatValue(selectedRow.telphone) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="状态">
+                        <span class="green">{{ formatValue(getStatusName(selectedRow.status)) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="24">
+                    <a-form-item label="通讯地址">
+                        <span class="white">{{ formatValue(selectedRow.address) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="24">
+                    <a-form-item label="备注">
+                        <span class="white">{{ formatValue(selectedRow.remark) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+        </a-form>
+    </a-modal>
+</template>
+
+<script lang="ts">
+import {defineComponent, PropType, ref} from 'vue';
+import {closeModal} from '@/common/setup/modal/index';
+import {deleteUserInfo} from '@/views/information/custom/compoments/setup';
+import {QueryCustomInfoType} from '@/services/go/ermcp/customInfo/interface';
+import {formatValue} from '@/common/methods';
+import {getStatusName} from '@/views/information/custom/setup';
+import {message, Modal} from 'ant-design-vue';
+
+export default defineComponent({
+    name: 'recover-custom',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props, context) {
+        const {visible, cancel} = closeModal('custom_info_btn_delete');
+        const {loading, deleteCustomerInfo} = deleteUserInfo();
+
+        function submit() {
+            Modal.confirm({
+                title: '是否确认删除客户资料',
+                okText: '确认删除',
+                cancelText: '取消',
+                onOk() {
+                    // 删除客户资料
+                    deleteCustomerInfo(props.selectedRow.userid)
+                        .then(res => {
+                            message.success(res);
+                            // 通知上层  刷新数据
+                            context.emit('refresh');
+                            cancel();
+                        }).catch(err => {
+                        message.error(err);
+                    });
+                },
+                onCancel() {
+                    console.log('Cancel');
+                },
+            });
+        }
+
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            formatValue,
+            getStatusName,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.recover-custom {
+}
+</style
+>;

+ 161 - 0
src/views/information/account_info/compoments/detail/index.vue

@@ -0,0 +1,161 @@
+<template>
+  <!-- 客户资料详情-->
+  <a-modal class="add-custom custom-detail"
+           title="客户资料详情"
+           v-model:visible="visible"
+           centered
+           :maskClosable="maskClosableFlag"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading.loading"
+                @click="submit">关闭</a-button>
+    </template>
+    <a-form class="inlineForm"
+            :form="form"
+            @submit="handleSearch">
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="客户类型">
+            <span class="white">{{ selectedRow.userinfotype === '2' ? '企业' : '个人' }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="企业名称">
+            <span class="white">{{ formatValue(selectedRow.customername)}}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="企业简称">
+            <span class="white">{{ formatValue(selectedRow.nickname) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="证件类型">
+            <span class="white">{{ getCardTypeName(selectedRow.cardtype) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="法定代表人">
+            <span class="white">{{ formatValue(selectedRow.legalpersonname) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="证件号码">
+            <span class="white">{{ formatValue(selectedRow.cardnum) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="纳税人识别号">
+            <span class="white">{{ formatValue(selectedRow.taxpayernum) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="营业执照">
+            <div class="upload">
+              <div class="look">查看附件</div>
+            </div>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="联系人">
+            <span class="white">{{ formatValue(selectedRow.contactname) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="联系人手机号">
+            <span class="white">{{ formatValue(selectedRow.mobile) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="联系电话">
+            <span class="white">{{ formatValue(selectedRow.telphone) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="状态">
+            <span class="green">{{ formatValue(getStatusName(selectedRow.status)) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="通讯地址">
+            <span class="white">{{ formatValue(selectedRow.address) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="备注">
+            <span class="white">{{ formatValue(selectedRow.remark) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+    </a-form>
+  </a-modal>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, reactive, ref, watchEffect } from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+import { mergeObj } from '@/utils/objHandle';
+import {getCardTypeName, getStatusName} from '@/views/information/custom/setup';
+import { formatValue, formatTime } from '@/common/methods';
+
+export default defineComponent({
+    name: 'custom-detail',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props) {
+        console.log('props', props.selectedRow);
+
+        const { visible, cancel } = closeModal('detail');
+        const loading = ref<boolean>(false);
+        const maskClosableFlag = ref<boolean>(false);
+        function submit() {
+            loading.value = true;
+            setTimeout(() => {
+                loading.value = false;
+                cancel();
+            }, 2000);
+        }
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            formatValue,
+            getStatusName,
+            maskClosableFlag,
+            getCardTypeName,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.custom-detail {
+    .ant-form.inlineForm {
+        margin-top: 20px;
+    }
+}
+</style>;

+ 171 - 0
src/views/information/account_info/compoments/disable/index.vue

@@ -0,0 +1,171 @@
+<template>
+  <!-- 停用客户资料-->
+  <a-modal class="commonModal warehouse-disable"
+           title="停用客户资料"
+           v-model:visible="visible"
+           centered
+           :maskClosable="maskClosableFlag"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                class="cancelBtn"
+                @click="cancel">取消</a-button>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">确认停用</a-button>
+    </template>
+    <a-form class="inlineForm"
+            :form="form"
+            @submit="handleSearch">
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="客户类型">
+            <span class="white">{{ selectedRow.userinfotype === '2' ? '企业' : '个人' }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="企业名称">
+            <span class="white">{{ formatValue(selectedRow.customername) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="企业简称">
+            <span class="white">{{ formatValue(selectedRow.nickname) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="证件类型">
+            <span class="white">{{ formatValue(selectedRow.cardtypename) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="法定代表人">
+            <span class="white">{{ formatValue(selectedRow.legalpersonname) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="证件号码">
+            <span class="white">{{ formatValue(selectedRow.cardnum) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="纳税人识别号">
+            <span class="white">{{ formatValue(selectedRow.taxpayernum) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="营业执照">
+            <a class="blue">查看附件</a>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="联系人">
+            <span class="white">{{ formatValue(selectedRow.contactname) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="联系人手机号">
+            <span class="white">{{ formatValue(selectedRow.mobile) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="联系电话">
+            <span class="white">{{ formatValue(selectedRow.telphone) }}</span>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="状态">
+            <span class="green">{{ formatValue(getStatusName(selectedRow.status)) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="通讯地址">
+            <span class="white">{{ formatValue(selectedRow.address) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="备注">
+            <span class="white">{{ formatValue(selectedRow.remark) }}</span>
+          </a-form-item>
+        </a-col>
+      </a-row>
+    </a-form>
+  </a-modal>
+</template>
+
+<script lang="ts">
+import {defineComponent, PropType, ref} from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import {updateUserAccount} from "@/views/information/custom/compoments/setup";
+import {QueryCustomInfoType} from "@/services/go/ermcp/customInfo/interface";
+import {formatValue} from "@/common/methods";
+import {getStatusName} from "@/views/information/custom/setup";
+import {message, Modal} from "ant-design-vue";
+
+export default defineComponent({
+    name: 'custom-disable',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props, context) {
+        const { visible, cancel } = closeModal('custom_info_btn_disable');
+        const maskClosableFlag = ref<boolean>(false);
+        const  {loading, ModifyUserInfo} = updateUserAccount();
+        function submit() {
+            Modal.confirm({
+                title: '是否确认停用客户资料',
+                okText: '确认停用',
+                cancelText: '取消',
+                onOk() {
+                    ModifyUserInfo(props.selectedRow.userid, 6)
+                        .then(res => {
+                            message.success(res)
+                            context.emit('refresh')
+                            cancel()
+                        })
+                        .catch(err => {
+                            message.error(err)
+                        })
+                },
+                onCancel() {
+                    console.log('Cancel');
+                },
+            });
+        }
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            maskClosableFlag,
+            formatValue,
+            getStatusName,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.warehouse-disable {
+}
+</style>

+ 48 - 0
src/views/information/account_info/compoments/filterTable/index.vue

@@ -0,0 +1,48 @@
+<template>
+  <!-- 过滤客户资料表格 -->
+  <div class="filterTable">
+    <FilterOption :selectList="selectList"
+                  :inputList="inputList"
+                  :fixedBtnList="fixedBtnList" />
+    <slot></slot>
+  </div>
+</template>
+
+<script lang="ts">
+import FilterOption from '@/common/components/filter/index.vue';
+import { defineComponent } from 'vue';
+import { handleFilter, InputList, SelectList } from '@/common/setup/filter';
+
+export default defineComponent({
+    name: 'filter-custom-table',
+    components: { FilterOption },
+    setup(props, context) {
+        const select: SelectList[] = [
+            {
+                value: undefined,
+                key: 'userinfotype',
+                placeholder: '全部客户类型',
+                list: [
+                    { value: 1, lable: '个人' },
+                    { value: 2, lable: '企业' },
+                ],
+            },
+        ];
+        const input: InputList[] = [
+            { value: '', placeholder: '模糊搜索客户简称', key: 'nickname' },
+            { value: '', placeholder: '模糊搜索客户名称', key: 'name' },
+            { value: '', placeholder: '模糊搜索手机号码', key: 'phone' },
+        ];
+        const { selectList, inputList, fixedBtnList } = handleFilter(select, input, context);
+        return {
+            selectList,
+            inputList,
+            fixedBtnList,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+
+</style>;

+ 15 - 0
src/views/information/account_info/compoments/index.ts

@@ -0,0 +1,15 @@
+import AddCustom from './add/index.vue';
+import Cancel from './cancel/index.vue';
+import Check from './check/index.vue';
+import DeleteCustom from './delete/index.vue';
+import CustomDetail from './detail/index.vue';
+import DisableCustom from './disable/index.vue';
+import filterCustomTable from './filterTable/index.vue';
+import ModifyCustom from './modify/index.vue';
+import RecoverCustom from './recover/index.vue';
+
+export {
+    filterCustomTable, CustomDetail, DeleteCustom, RecoverCustom, ModifyCustom,
+    DisableCustom, AddCustom, Cancel, Check
+};
+

+ 256 - 0
src/views/information/account_info/compoments/modify/index.vue

@@ -0,0 +1,256 @@
+<template>
+  <!-- 修改客户资料 -->
+  <a-modal class="commonModal modify-custom"
+           title="修改客户资料"
+           v-if="visible"
+           v-model:visible="visible"
+           centered
+           :maskClosable="maskClosableFlag"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading"
+                @click="submit">完成</a-button>
+    </template>
+    <a-form class="inlineForm"
+            :form="form"
+            @submit="handleSearch">
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="客户类型">
+            <a-select class="typeSelect"
+                      style="width: 200px"
+                      placeholder="请选择客户类型">
+              <a-select-option value="1">
+                客户一
+              </a-select-option>
+              <a-select-option value="2">
+                客户二
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="企业名称">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     placeholder="请输入企业名称" />
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="企业简称">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     placeholder="请输入企业简称" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="证件类型">
+            <a-select class="inlineFormSelect"
+                      style="width: 200px"
+                      placeholder="请选择证件类型">
+              <a-select-option value="1">
+                客户一
+              </a-select-option>
+              <a-select-option value="2">
+                客户二
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="法定代表人">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     placeholder="请输入法定代表人" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="证件号码">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     placeholder="请输入证件号码" />
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="纳税人识别号">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     placeholder="请输入纳税人识别号" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="营业执照">
+            <div class="upload">
+              <a-upload action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
+                        :transform-file="transformFile">
+                <a-button class="uploadBtn">上传</a-button>
+              </a-upload>
+              <div class="look">查看附件</div>
+            </div>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="联系人">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     placeholder="请输入联系人" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item label="联系人手机号">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     placeholder="请输入联系人手机号" />
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="12">
+          <a-form-item label="联系电话">
+            <a-input class="dialogInput"
+                     style="width: 200px"
+                     placeholder="请输入联系电话" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="12">
+          <a-form-item>
+            &nbsp;
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="通讯地址">
+            <a-select class="inlineFormSelect"
+                      style="width: 205px"
+                      placeholder="请选择省">
+              <a-select-option value="1">
+                客户一
+              </a-select-option>
+              <a-select-option value="2">
+                客户二
+              </a-select-option>
+            </a-select>
+            <a-select class="inlineFormSelect ml10"
+                      style="width: 205px"
+                      placeholder="请选择市">
+              <a-select-option value="1">
+                客户一
+              </a-select-option>
+              <a-select-option value="2">
+                客户二
+              </a-select-option>
+            </a-select>
+            <a-select class="inlineFormSelect ml10"
+                      style="width: 205px"
+                      placeholder="请选择县(区)">
+              <a-select-option value="1">
+                客户一
+              </a-select-option>
+              <a-select-option value="2">
+                客户二
+              </a-select-option>
+            </a-select>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="&nbsp;">
+            <a-input class="dialogInput"
+                     style="width: 635px"
+                     placeholder="请输入详细地址" />
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="24">
+          <a-form-item label="备注">
+            <a-input class="dialogInput"
+                     style="width: 635px"
+                     placeholder="请输入备注" />
+          </a-form-item>
+        </a-col>
+      </a-row>
+    </a-form>
+  </a-modal>
+</template>
+
+<script lang="ts">
+import { defineComponent, ref } from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import { initData } from '@/common/methods/index';
+
+export default defineComponent({
+    name: 'modify-custom',
+    components: {},
+    props: {
+        // selectedRow: {
+        //   type:
+        // }
+    },
+    setup() {
+        // const { visible, cancel } = closeModal('modifyCustomInfo');
+        const { visible, cancel } = closeModal('custom_info_btn_modify');
+
+        const loading = ref<boolean>(false);
+        const maskClosableFlag = ref<boolean>(false);
+        function submit() {
+            loading.value = true;
+            setTimeout(() => {
+                loading.value = false;
+                cancel();
+            }, 2000);
+        }
+        initData(() => {});
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            maskClosableFlag,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.modify-custom {
+    .upload {
+        display: inline-flex;
+        .ant-btn.uploadBtn {
+            width: 60px;
+            height: 30px;
+            background: @m-blue0;
+            border: 0;
+            padding: 0;
+            text-align: center;
+            font-size: 14px;
+            color: @m-white0;
+            .rounded-corners(3px);
+            &:hover {
+                background: rgba(@m-blue0, 0);
+                color: rgba(@m-white0, 0.8);
+            }
+        }
+        .look {
+            color: @m-blue0;
+            font-size: 14px;
+            margin-left: 10px;
+            cursor: pointer;
+        }
+    }
+}
+</style
+>;

+ 173 - 0
src/views/information/account_info/compoments/recover/index.vue

@@ -0,0 +1,173 @@
+<template>
+    <!-- 恢复客户资料-->
+    <a-modal class="modify-custom"
+             title="恢复客户资料"
+             v-model:visible="visible"
+             @cancel="cancel"
+             width="890px">
+        <template #footer>
+            <a-button key="submit"
+                      class="cancelBtn"
+                      @click="cancel">取消
+            </a-button>
+            <a-button key="submit"
+                      type="primary"
+                      :loading="loading"
+                      @click="recover">完成
+            </a-button>
+        </template>
+        <a-form class="inlineForm"
+                :form="form"
+                @submit="handleSearch">
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="客户类型">
+                        <span class="white">{{ selectedRow.userinfotype === '2' ? '企业' : '个人' }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="企业名称">
+                        <span class="white">{{ formatValue(selectedRow.customername) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="企业简称">
+                        <span class="white">{{ formatValue(selectedRow.nickname) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="证件类型">
+                        <span class="white">{{ formatValue(selectedRow.cardtypename) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="法定代表人">
+                        <span class="white">{{ formatValue(selectedRow.legalpersonname) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="证件号码">
+                        <span class="white">{{ formatValue(selectedRow.cardnum) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="纳税人识别号">
+                        <span class="white">{{ formatValue(selectedRow.taxpayernum) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="营业执照">
+                        <div class="upload">
+                            <div class="look">查看附件</div>
+                        </div>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="联系人">
+                        <span class="white">{{ formatValue(selectedRow.contactname) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="联系人手机号">
+                        <span class="white">{{ formatValue(selectedRow.mobile) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="12">
+                    <a-form-item label="联系电话">
+                        <span class="white">{{ formatValue(selectedRow.telphone) }}</span>
+                    </a-form-item>
+                </a-col>
+                <a-col :span="12">
+                    <a-form-item label="状态">
+                        <span class="green">{{ formatValue(getStatusName(selectedRow.status)) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="24">
+                    <a-form-item label="通讯地址">
+                        <span class="white">{{ formatValue(selectedRow.address) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+            <a-row :gutter="24">
+                <a-col :span="24">
+                    <a-form-item label="备注">
+                        <span class="white">{{ formatValue(selectedRow.remark) }}</span>
+                    </a-form-item>
+                </a-col>
+            </a-row>
+        </a-form>
+    </a-modal>
+</template>
+
+<script lang="ts">
+import {defineComponent, PropType, ref} from 'vue';
+import {closeModal} from '@/common/setup/modal/index';
+import {QueryCustomInfoType} from "@/services/go/ermcp/customInfo/interface";
+import {formatValue} from "@/common/methods";
+import {getStatusName} from "@/views/information/custom/setup";
+import {updateUserAccount} from "@/views/information/custom/compoments/setup";
+import {message, Modal} from "ant-design-vue";
+
+export default defineComponent({
+    name: 'modify-custom',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props, context) {
+        const {visible, cancel} = closeModal('custom_info_btn_recover');
+        const {loading, ModifyUserInfo} = updateUserAccount();
+        // 恢复方法
+        function recover(){
+            Modal.confirm({
+                title: '是否确认恢复客户资料',
+                okText: '确认恢复',
+                cancelText: '取消',
+                onOk() {
+                    ModifyUserInfo(props.selectedRow.userid, 4)
+                        .then(res => {
+                            message.success(res)
+                            context.emit('refresh')
+                            cancel()
+                        })
+                        .catch(err => {
+                            message.error(err)
+                        })
+                },
+                onCancel() {
+                    console.log('Cancel');
+                },
+            });
+        }
+        return {
+            visible,
+            cancel,
+            recover,
+            loading,
+            formatValue,
+            getStatusName,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.modify-custom {
+}
+</style
+>;

+ 103 - 0
src/views/information/account_info/compoments/setup.ts

@@ -0,0 +1,103 @@
+import {QueryDeleteUserInfoApply, QueryModifyUserInfo, UpdateUserAccountStatus} from "@/services/go/ermcp/customInfo";
+import {ModifyUserInfoReq} from "@/services/go/ermcp/customInfo/interface";
+import {userInfoCheck} from "@/services/proto/accountinfo";
+import {UserInfoCheckMangeReq} from "@/services/proto/accountinfo/interface";
+import {message} from 'ant-design-vue';
+import {ref} from "vue";
+import {BaseResponse} from "@/services/go";
+import {getRequestResultInfo} from "@/common/methods/request";
+import {GldContractStateSign} from "@/views/information/spot-contract/setup";
+import {ModifyUserInfoSign} from "@/views/information/custom/setup";
+
+/**
+ *  撤销客户资料 撤销后的数据会进入草稿(未提交)
+ */
+export function cancelCustomInfo() {
+    const loading = ref<boolean>(false);
+
+    // 这里调用的是修改客户申请接口
+    function ModifyUserInfo(req: ModifyUserInfoReq): Promise<string> {
+        return QueryModifyUserInfo(req)
+            .then((res) => {
+                return Promise.resolve("撤销成功")
+            })
+            .catch((err) => {
+                return Promise.reject("撤销失败:" + err)
+            }).finally(() => {
+                loading.value = false
+            })
+    }
+
+    return {loading, ModifyUserInfo}
+}
+
+/**
+ * 更新用户状态 用在停用或是启用
+ * 4:正常 6:注销(停用)
+ */
+export function updateUserAccount() {
+    const loading = ref<boolean>(false);
+
+    // 这里调用的是修改客户申请接口
+    function ModifyUserInfo(userID: number, accountStatus: number): Promise<string> {
+        const sign = getRequestResultInfo(ModifyUserInfoSign, accountStatus)  // 接口请求后的返回提示 这里统一进行管理
+        return UpdateUserAccountStatus(userID, accountStatus)
+            .then((res) => {
+                console.log('更新用户资料成功 accountStatus = ' + accountStatus);
+                return Promise.resolve(sign[0])
+            })
+            .catch((err) => {
+                return Promise.reject(sign[1])
+            }).finally(() => {
+                loading.value = false
+            })
+    }
+
+    return {loading, ModifyUserInfo}
+}
+
+/**
+ * 审核客户资料 这里是走proto接口
+ */
+export function checkCustomInfo() {
+    const loading = ref<boolean>(false);
+
+    // 这里调用的是修改客户申请接口
+    function checkCustomerInfo(req: UserInfoCheckMangeReq): Promise<string> {
+        return userInfoCheck(req)
+            .then((res) => {
+                return Promise.resolve("审核成功")
+            })
+            .catch((err) => {
+                return Promise.resolve("审核失败:" + err)
+            }).finally(() => {
+                loading.value = false
+            })
+    }
+
+    return {loading, checkCustomerInfo}
+}
+
+/**
+ * 删除客户资料
+ */
+export function deleteUserInfo() {
+    const loading = ref<boolean>(false);
+
+    // 这里调用的是修改客户申请接口
+    function deleteCustomerInfo(userID: number): Promise<string> {
+        return QueryDeleteUserInfoApply(userID)
+            .then((res) => {
+                return Promise.resolve("删除成功")
+            })
+            .catch((err) => {
+                return Promise.reject("删除失败:" + err)
+            }).finally(() => {
+                loading.value = false
+            })
+    }
+
+    return {loading, deleteCustomerInfo}
+}
+
+

+ 67 - 0
src/views/information/account_info/list/account_info_business/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <!-- 业务账户 -->
+  <div class="account_info_business"
+       :loading="loading">
+    业务账户
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
+
+// import {filterCustomTable, CustomDetail, ModifyCustom, DisableCustom, AddCustom} from '../../compoments';
+// import {queryTableList, getFilterTableCB, QueryCustomInfoType} from '../index';
+import { getCardTypeName, getStatusName } from '@/views/information/custom/setup';
+
+export default defineComponent({
+    name: 'account_info_business',
+    components: {
+        contextMenu,
+        BtnList,
+    },
+    setup() {
+        // // 表头数据
+        // const {columns, registerColumn, updateColumn, filteredInfo} = getTableColumns();
+        // // 表格事件
+        // const {expandedRowKeys, selectedRow, Rowclick} = getTableEvent<QueryCustomInfoType>({});
+        // // 表格操作按钮列表
+        // const {commonBtn, forDataBtn} = getBtnList('custom_info_normal', true);
+        // // 表格列表数据
+        // const {loading, tableList, queryTable} = queryTableList(3);
+        // initData(() => {
+        //     // 获取列表数据
+        //     queryTable();
+        //     // 注册表头信息 过滤
+        //     registerColumn('table_pcweb_userinfo', getFilterTableCB);
+        // });
+
+        // // 查询
+        // function search(value: any) {
+        //     filteredInfo.value = value;
+        //     // 更新表信息
+        //     updateColumn();
+        // }
+
+        return {
+            // columns,
+            // filteredInfo,
+            // expandedRowKeys,
+            // selectedRow,
+            // Rowclick,
+            // commonBtn,
+            // forDataBtn,
+            // loading,
+            // tableList,
+            // search,
+            // getStatusName,
+            // getCardTypeName,
+            // queryTable,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.account_info_business {
+}
+</style>

+ 67 - 0
src/views/information/account_info/list/account_info_futures/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <!-- 期货账户 -->
+  <div class="account_info_futures"
+       :loading="loading">
+    期货账户
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
+
+// import {filterCustomTable, CustomDetail, ModifyCustom, DisableCustom, AddCustom} from '../../compoments';
+// import {queryTableList, getFilterTableCB, QueryCustomInfoType} from '../index';
+import { getCardTypeName, getStatusName } from '@/views/information/custom/setup';
+
+export default defineComponent({
+    name: 'account_info_futures',
+    components: {
+        contextMenu,
+        BtnList,
+    },
+    setup() {
+        // // 表头数据
+        // const {columns, registerColumn, updateColumn, filteredInfo} = getTableColumns();
+        // // 表格事件
+        // const {expandedRowKeys, selectedRow, Rowclick} = getTableEvent<QueryCustomInfoType>({});
+        // // 表格操作按钮列表
+        // const {commonBtn, forDataBtn} = getBtnList('custom_info_normal', true);
+        // // 表格列表数据
+        // const {loading, tableList, queryTable} = queryTableList(3);
+        // initData(() => {
+        //     // 获取列表数据
+        //     queryTable();
+        //     // 注册表头信息 过滤
+        //     registerColumn('table_pcweb_userinfo', getFilterTableCB);
+        // });
+
+        // // 查询
+        // function search(value: any) {
+        //     filteredInfo.value = value;
+        //     // 更新表信息
+        //     updateColumn();
+        // }
+
+        return {
+            // columns,
+            // filteredInfo,
+            // expandedRowKeys,
+            // selectedRow,
+            // Rowclick,
+            // commonBtn,
+            // forDataBtn,
+            // loading,
+            // tableList,
+            // search,
+            // getStatusName,
+            // getCardTypeName,
+            // queryTable,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.account_info_futures {
+}
+</style>

+ 67 - 0
src/views/information/account_info/list/account_info_manager/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <!-- 管理账户 -->
+  <div class="account_info_manager"
+       :loading="loading">
+    管理账户
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
+
+// import {filterCustomTable, CustomDetail, ModifyCustom, DisableCustom, AddCustom} from '../../compoments';
+// import {queryTableList, getFilterTableCB, QueryCustomInfoType} from '../index';
+import { getCardTypeName, getStatusName } from '@/views/information/custom/setup';
+
+export default defineComponent({
+    name: 'account_info_manager',
+    components: {
+        contextMenu,
+        BtnList,
+    },
+    setup() {
+        // // 表头数据
+        // const {columns, registerColumn, updateColumn, filteredInfo} = getTableColumns();
+        // // 表格事件
+        // const {expandedRowKeys, selectedRow, Rowclick} = getTableEvent<QueryCustomInfoType>({});
+        // // 表格操作按钮列表
+        // const {commonBtn, forDataBtn} = getBtnList('custom_info_normal', true);
+        // // 表格列表数据
+        // const {loading, tableList, queryTable} = queryTableList(3);
+        // initData(() => {
+        //     // 获取列表数据
+        //     queryTable();
+        //     // 注册表头信息 过滤
+        //     registerColumn('table_pcweb_userinfo', getFilterTableCB);
+        // });
+
+        // // 查询
+        // function search(value: any) {
+        //     filteredInfo.value = value;
+        //     // 更新表信息
+        //     updateColumn();
+        // }
+
+        return {
+            // columns,
+            // filteredInfo,
+            // expandedRowKeys,
+            // selectedRow,
+            // Rowclick,
+            // commonBtn,
+            // forDataBtn,
+            // loading,
+            // tableList,
+            // search,
+            // getStatusName,
+            // getCardTypeName,
+            // queryTable,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.account_info_manager {
+}
+</style>

+ 67 - 0
src/views/information/account_info/list/account_info_trade/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <!-- 交易账户 -->
+  <div class="account_info_trade"
+       :loading="loading">
+    交易账户
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
+
+// import {filterCustomTable, CustomDetail, ModifyCustom, DisableCustom, AddCustom} from '../../compoments';
+// import {queryTableList, getFilterTableCB, QueryCustomInfoType} from '../index';
+import { getCardTypeName, getStatusName } from '@/views/information/custom/setup';
+
+export default defineComponent({
+    name: 'account_info_trade',
+    components: {
+        contextMenu,
+        BtnList,
+    },
+    setup() {
+        // // 表头数据
+        // const {columns, registerColumn, updateColumn, filteredInfo} = getTableColumns();
+        // // 表格事件
+        // const {expandedRowKeys, selectedRow, Rowclick} = getTableEvent<QueryCustomInfoType>({});
+        // // 表格操作按钮列表
+        // const {commonBtn, forDataBtn} = getBtnList('custom_info_normal', true);
+        // // 表格列表数据
+        // const {loading, tableList, queryTable} = queryTableList(3);
+        // initData(() => {
+        //     // 获取列表数据
+        //     queryTable();
+        //     // 注册表头信息 过滤
+        //     registerColumn('table_pcweb_userinfo', getFilterTableCB);
+        // });
+
+        // // 查询
+        // function search(value: any) {
+        //     filteredInfo.value = value;
+        //     // 更新表信息
+        //     updateColumn();
+        // }
+
+        return {
+            // columns,
+            // filteredInfo,
+            // expandedRowKeys,
+            // selectedRow,
+            // Rowclick,
+            // commonBtn,
+            // forDataBtn,
+            // loading,
+            // tableList,
+            // search,
+            // getStatusName,
+            // getCardTypeName,
+            // queryTable,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.account_info_trade {
+}
+</style>

+ 61 - 0
src/views/information/account_info/list/setup.ts

@@ -0,0 +1,61 @@
+import { Column, ColumnType } from '@/common/setup/table/index';
+import { QueryCustomInfo } from '@/services/go/ermcp/customInfo';
+import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+import { QueryCustomInfoEnum } from '@/services/go/ermcp/customInfo/type';
+import { message } from 'ant-design-vue';
+import { ref } from 'vue';
+import {getStatusName} from "@/views/information/custom/setup";
+
+/**
+ * 获取表格列表数据
+ * @param type 
+ * @returns 
+ */
+export function queryTableList(type: QueryCustomInfoEnum) {
+    // 加载状态
+    const loading = ref<boolean>(false);
+    // 表格数据
+    const tableList = ref<QueryCustomInfoType[]>([]);
+    function queryTable() {
+        QueryCustomInfo(type)
+            .then((res) => {
+                tableList.value = res.map((e, i) => {
+                    return { ...e, key: String(i) };
+                });
+                loading.value = false;
+                console.log('查询列表', tableList);
+            })
+            .catch((err) => {
+                message.error(err);
+                loading.value = false;
+            });
+    }
+    return { loading, tableList, queryTable }
+}
+
+/**
+ * 过滤表格的回调函数
+ * @param e 
+ * @param item 
+ * @param filtered 
+ */
+export function getFilterTableCB(e: Column, item: ColumnType, filtered: any) {
+    // 以下添加过滤数据对应的方法
+    if (e.columntitle === '客户类型') {
+        item.onFilter = (value: string, record: QueryCustomInfoType) => record.userinfotype.includes(String(value));
+        item.filteredValue = filtered.userinfotype || null;
+    }
+    if (e.columntitle === '客户简称') {
+        item.onFilter = (value: string, record: QueryCustomInfoType) => record.nickname.includes(value);
+        item.filteredValue = filtered.nickname || null;
+    }
+    if (e.columntitle === '客户名称') {
+        item.onFilter = (value: string, record: QueryCustomInfoType) => record.contactname.includes(value);
+        item.filteredValue = filtered.contactname || null;
+    }
+    if (e.columntitle === '手机号码') {
+        item.onFilter = (value: string, record: QueryCustomInfoType) => record.mobile.includes(value);
+        item.filteredValue = filtered.mobile || null;
+    }
+}
+