Browse Source

代码提交;

Handy_Cao 3 years ago
parent
commit
69e3764f73

+ 323 - 5
src/business/bank/index.ts

@@ -1,9 +1,11 @@
-import { shallowRef } from 'vue'
+import { reactive, shallowRef } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
-import { useLoginStore } from '@/stores'
-import { queryHisAmountLog } from '@/services/api/bank'
+import { useLoginStore, useUserStore } from '@/stores'
+import { queryHisAmountLog, t2bBankWithdraw, queryBankAccountSign, t2bBankDeposit, queryAccountInOutApply, queryCusBankSignBank, t2bBankSign, t2bBankCancelSign } from '@/services/api/bank'
+import { formatDate } from '@/filters'
+import { Model } from 'echarts'
 
-// 资金流水列表
+// 历史资金流水列表
 export function useBankStatementList() {
     const { getFirstAccountId } = useLoginStore()
     const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.HisAmountLogRsp>()
@@ -36,4 +38,320 @@ export function useBankStatementList() {
         pageCount,
         getBankStatementList,
     }
-}
+}
+
+// 获取出入金流水列表
+export function getAccountInOutApplyList() {
+
+    const { getUserId } = useLoginStore()
+    const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.AccountOutInApplyRsp>()
+    const loading = shallowRef(false)
+
+    const getAccouuntInOutApplyList = () => {
+        loading.value = true
+        return queryAccountInOutApply({
+            data:{
+                userid: getUserId()
+            },
+            success: (res) => {
+                total.value = res.total
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading, 
+        dataList,
+        total, 
+        pageIndex, 
+        pageSize, 
+        pageCount, 
+        getAccouuntInOutApplyList
+    }
+}
+
+// 查询可签约的托管银行列表
+export function getCusBankSignBankList() {
+    const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.CusBankSignBankRsp>()
+    const loading = shallowRef(false)
+
+    const getCusBankSignBankList = () => {
+        loading.value = true
+        return queryCusBankSignBank({
+            success: (res) => {
+                total.value = res.total
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading, 
+        dataList,
+        total, 
+        pageIndex, 
+        pageSize, 
+        pageCount, 
+        getCusBankSignBankList
+    }
+}
+
+// 查询当前已经签约信息列表
+export function getBankAccountList() {
+    const { dataList, total, pageIndex, pageSize, pageCount } = useDataTable<Model.BankAccountSignRsp>()
+    const loading = shallowRef(false)
+
+    const getBankAccountList = () => {
+        loading.value = true
+        return queryBankAccountSign({
+            success: (res) => {
+                total.value = res.total
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading, 
+        dataList,
+        total, 
+        pageIndex, 
+        pageSize, 
+        pageCount, 
+        getBankAccountList
+    }
+}
+
+// 提现请求
+export function doWithdraw() {
+
+    /// 获取UserId
+    const {getUserId} = useLoginStore()
+    const loading = shallowRef(false)
+
+    /// 获取当前是否已签约
+    const bankAccountSign = shallowRef<Model.BankAccountSignRsp[]>([])
+
+    /// 查询签约信息
+    const request = queryBankAccountSign({
+        data: {
+            userid: getUserId()
+        },
+        success:(res)=>{
+            bankAccountSign.value=res.data,
+            ({
+                bankaccountname2:formData.BankAccoutName,
+                branchbankname: formData.BranchBankName,
+                accountcode: formData.AccountCode,
+                cusbankid: formData.CusBankID,
+                bankid: formData.OpenCardBankId
+            }=res.data[0])
+        }
+    })
+
+    const formData = reactive<Partial<Proto.t2bBankWithdrawReq>>({
+        AccountType: 0,
+        ExtOperatorID: new Date().getTime(),
+        AppDateTime: formatDate(Date(), 'yyyy-MM-dd HH:mm:ss'),
+        extend_info: JSON.stringify({"sex": 1})
+    })
+
+    const onSubmit = async () => {
+        await request
+        loading.value = true
+        return t2bBankWithdraw({
+            data: {
+                ...formData,
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading, 
+        onSubmit, 
+        formData, 
+        bankAccountSign
+    }
+}
+
+// 充值请求
+export function doDeposit(url: string) {
+    /// 获取UserId
+    const {getUserId} = useLoginStore()
+    const loading = shallowRef(false)
+    /// 获取当前是否已签约
+    const bankAccountSign = shallowRef<Model.BankAccountSignRsp[]>([])
+
+    const formData = reactive<Partial<Proto.t2bBankDepositReq>>({
+        ExtOperatorID: new Date().getTime(),
+        extend_info: JSON.stringify({'certificate_photo_url': url, "sex": 1})
+    })
+
+    const request = queryBankAccountSign({
+        data: {
+            userid: getUserId()
+        },
+        success:(res)=>{
+            bankAccountSign.value=res.data,
+            ({
+                amount: formData.Amount,
+                cusbankid: formData.CusBankID,
+                currency: formData.Currency,
+                bankaccountname2: formData.BankAccoutName,
+                bankaccountno2: formData.BankAccoutNum,
+                accountcode: formData.AccountCode
+            })
+        }
+    })
+
+    const onSubmit = async () => {
+        await request
+        loading.value = true
+        return t2bBankDeposit({
+            data: {
+                ...formData
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading, 
+        onSubmit, 
+        formData,
+        bankAccountSign
+    }
+}
+
+/// 银行签约请求
+export function doBankSign() {
+
+    const loading = shallowRef(false)
+    const {getUserInfo} = useUserStore()
+    const {getFirstAccountId} = useLoginStore()
+
+    /// 数据
+    const formData = reactive <Partial<Proto.t2bBankSignReq>>({
+        AccountType: 1,
+        IsForce: 0,
+        AgentCertType: 0,
+        OperateType: 1,
+        BankCardType: 0,
+        BankAccountType: 1,
+        extend_info: JSON.stringify({"sex": 1}),
+        ExtOperatorID: new Date().getTime(),
+        AccountCode: getFirstAccountId().toString(),
+        CertID: getUserInfo()?.cardnum,
+        CertType: getUserInfo()?.cardtypeid.toString()
+    })
+
+    const cusSignBank = shallowRef<Model.CusBankSignBankRsp[]>([])
+
+    /// 查询签约银行信息
+    const request = queryCusBankSignBank({
+        success: (res) => {
+            cusSignBank.value = res.data,
+            ({
+                accountName: formData.AccountName,
+                branchBankName: formData.OpenBankName,
+                bankNo: formData.BankAccountNo,
+                currency: formData.Currency,
+                tradedate: formData.TradeDate,
+                bankid: formData.OpenBankAccId,
+                cusbankid: formData.CusBankID
+            })
+        }
+    })
+
+    const onSubmit = async () => {
+        await request
+        loading.value = true
+        return t2bBankSign({
+            data: {
+                ...formData
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading,
+        formData,
+        cusSignBank,
+        onSubmit
+    }
+}
+
+/// 银行解约请求
+export function doCancelBankSign() {
+    /// 获取UserId
+    const {getUserId} = useLoginStore()
+    const loading = shallowRef(false)
+    /// 获取当前是否已签约
+    const bankAccountSign = shallowRef<Model.BankAccountSignRsp[]>([])
+    const formData = reactive<Partial<Proto.t2bBankCancelSignReq>>({})
+    
+    /// 请求签约信息
+    const request = queryBankAccountSign({
+        data: {
+            userid: getUserId()
+        },
+        success:(res)=>{
+            bankAccountSign.value=res.data,
+            ({
+                cusbankid: formData.CusBankID,
+                currency: formData.Currency,
+                tradedate: formData.TradeDate,
+                accountcode: formData.AccountCode,
+                bankaccountno: formData.BankChildAcc,
+                bankaccountname: formData.BankChildAccName
+            })
+        }
+    })
+
+    const formSubmit = async () => {
+        await request
+        const { cusbankid, currency, accountcode, bankaccountno, bankaccountname } = bankAccountSign.value[0]
+        loading.value = true
+        /// 发起请求
+        return t2bBankCancelSign({
+            data: {
+                IsForce: 0,
+                ExtOperatorID: new Date().getTime(),
+                ...formData,
+                CusBankID: cusbankid,
+                Currency: currency,
+                AccountCode: accountcode,
+                BankChildAcc: bankaccountno,
+                BankChildAccName: bankaccountname
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading, 
+        formSubmit, 
+        formData,
+        bankAccountSign
+    }
+}

+ 76 - 1
src/business/user/account.ts

@@ -1,8 +1,83 @@
 import { shallowRef, reactive } from 'vue'
 import { useLoginStore } from '@/stores'
-import { investorDel, modifyPassword } from '@/services/api/account'
+import { useDataTable } from '@/hooks/datatable'
+import { investorDel, modifyPassword, queryWrDraftUserInfo, requestAddAuth } from '@/services/api/account'
 import cryptojs from 'crypto-js'
 
+// 查询用户实名认证信息
+export function getWrDraftUserInfo(userstatus?: number) {
+    const { getUserId } = useLoginStore()
+    const { dataList } = useDataTable<Model.UserInfo>()
+    const loading = shallowRef(false)
+   
+    const formData = reactive<Model.WrDraftUserInfoReq>({
+        userstatus: userstatus,
+        userid: getUserId()
+    })
+
+    const getWrDraftUserInfoList = () => {
+        const {userstatus, userid} = formData
+        loading.value = true
+
+        return queryWrDraftUserInfo({
+            data: {
+                userid: userid,
+                userstatus: userstatus
+            },
+            success: (res) => {
+                dataList.value = res.data
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading, 
+        formData, 
+        dataList, 
+        getWrDraftUserInfoList
+    }
+}
+
+// 用户实名认证
+export function addAuthReq() {
+    const { getUserId } = useLoginStore()
+    const loading = shallowRef(false)
+   
+    const formData = reactive<Partial<Model.AddAuthReq>>({
+        userid: getUserId()
+    })
+
+    const formSubmit = () => {
+        loading.value = true
+
+        return requestAddAuth({
+            data: {
+                ...formData,
+                username: formData.username,
+                cardtype: formData.cardtype,
+                cardbackphotourl: formData.cardbackphotourl,
+                cardfrontphotourl: formData.cardfrontphotourl,
+                cardnum: formData.cardnum
+            },
+            success: (res) => {
+                console.log(res)
+            },
+            complete: () => {
+                loading.value = false
+            }
+        })
+    }
+
+    return {
+        loading, 
+        formData, 
+        formSubmit
+    }
+}
+
 // 修改密码
 export function useAccountPassword(ModifyPwdType: 0 | 1 | 2) {
     const { getLoginId, getFirstAccountId } = useLoginStore()

+ 1 - 1
src/business/user/index.ts

@@ -1,2 +1,2 @@
-export { useAccountCancellation, useAccountPassword } from './account'
+export { useAccountCancellation, useAccountPassword, addAuthReq } from './account'
 export { useAddress } from './address'

+ 29 - 0
src/constants/account.ts

@@ -0,0 +1,29 @@
+import { useEnumStore } from '@/stores'
+
+const { getEnumTypeList, getEnumTypeName, getEnumTypeValue } = useEnumStore()
+
+/**
+ * 获取对应的证件类型列表
+ * @returns 
+ */
+export function getCertificateTypeList() {
+    return getEnumTypeList('certificatetype')
+}
+
+/**
+ * 获取对应的证件类型名称
+ * @returns 
+ */
+export function getCertificateTypeCodeName(value: number) {
+    const enums = getCertificateTypeList()
+    return getEnumTypeName(enums, value)
+}
+
+/**
+ * 获取对应的证件类型名称的值
+ * @returns 
+ */
+ export function getCertificateTypeCodeValue(label: string) {
+    const enums = getCertificateTypeList()
+    return getEnumTypeValue(enums, label)
+}

+ 6 - 1
src/packages/mobile/router/index.ts

@@ -84,7 +84,7 @@ const routes: Array<RouteRecordRaw> = [
         meta: {
           ignoreAuth: true,
         },
-      }
+      },
     ]
   },
   {
@@ -146,6 +146,11 @@ const routes: Array<RouteRecordRaw> = [
         component: () => import('../views/bank/sign/index.vue'),
       },
       {
+        path: 'edit',
+        name: 'add-banksign',
+        component: () => import('../views/bank/sign/components/edit/index.vue'),
+      },
+      {
         path: 'statement',
         name: 'bank-statement',
         component: () => import('../views/bank/statement/index.vue'),

+ 66 - 12
src/packages/mobile/views/account/certification/index.vue

@@ -3,25 +3,29 @@
         <template #header>
             <app-navbar title="实名认证" />
         </template>
-        <Form ref="formRef" class="g-form__container" @submit="formSubmit">
+        <Form ref="formRef" class="g-form__container" @submit="onSubmit">
             <CellGroup inset>
-                <Field v-model="formData.mobilephone" name="mobilephone" label="姓名" placeholder="必填"
-                    :rules="formRules.mobilephone" />
-                <Field v-model="formData.vcode" name="vcode" label="证件类型" placeholder="必填" :rules="formRules.vcode"
-                    is-link readonly />
-                <Field v-model="formData.loginpwd" name="loginpwd" label="证件号码" placeholder="必填"
-                    :rules="formRules.loginpwd" />
-                <Field v-model="formData.refernum" name="refernum" label="证件照片" placeholder="必填"
-                    :rules="formRules.refernum">
+                <Field v-model="formData.username" name="username" label="姓名" placeholder="必填" :rules="formRules.username"/>
+                <Field v-model="formData.cardtype" name="cardtype" label="证件类型" placeholder="请选择证件类型" is-link readonly @click="showPicker = true"/>
+                <Field v-model="formData.cardnum" name="cardnum" label="证件号码" placeholder="必填" :rules="formRules.cardnum"/>
+                <Field v-model="formData.cardbackphotourl" name="cardbackphotourl" label="证件正面照片" :rules="formRules.cardbackphotourl">
                     <template #input>
-                        <Uploader v-model="value" />
+                        <Uploader/>
+                    </template>
+                </Field>
+                <Field v-model="formData.cardfrontphotourl" name="cardfrontphotourl" label="证件反面照片" :rules="formRules.cardfrontphotourl">
+                    <template #input>
+                        <Uploader />
                     </template>
                 </Field>
             </CellGroup>
         </Form>
+        <Popup v-model:show="showPicker" round position="bottom">
+            <Picker  title="请选择证件类型" :columns="enums" @cancel="showPicker = false" @confirm="onConfirm" />
+        </Popup>
         <template #footer>
             <div class="g-form__footer">
-                <Button type="primary" @click="formRef?.submit" round block>提交审核</Button>
+                <Button type="primary" @click="formRef?.submit" round block>提交实名认证</Button>
             </div>
         </template>
     </app-view>
@@ -29,7 +33,57 @@
 
 <script lang="ts" setup>
 import { reactive, shallowRef } from 'vue'
-import { CellGroup, Button, Field, Form, FormInstance, Uploader, Toast, FieldRule, ActionSheet, ActionSheetAction } from 'vant'
+import { CellGroup, Button, Field, Form, FormInstance, Uploader, Toast, FieldRule, Picker, Popup } from 'vant'
+import { addAuthReq } from '@/business/user'
+import { Model } from 'echarts/core';
+import { fullloading, dialog } from '@/utils/vant';
+import { ref } from 'vue';
+import { getCertificateTypeList } from "@/constants/account";
 
 const formRef = shallowRef<FormInstance>()
+const { formData, formSubmit } = addAuthReq()
+const showPicker = ref(false);
+const result = ref('');
+
+/// 获取对应的证件枚举类型
+const enums = getCertificateTypeList().map(obj=>{ return obj.label })
+
+
+// 表单验证规则
+const formRules: { [key in keyof Model.AddAuthReq]?: FieldRule[] } = {
+    username: [{
+        required: true,
+        message: '请输入用户姓名',
+    }],
+    cardnum: [{
+        required: true,
+        message: '请输入证件号码',
+    }],
+    cardbackphotourl: [{
+        required: true,
+        message: '请上传证件正面照片',
+    }],
+    cardfrontphotourl: [{
+        required: true,
+        message: '请上传证件背面照片',
+    }],
+}
+
+const onConfirm = (value: any) => {
+    result.value = value;
+    showPicker.value = false;
+    formData.cardtype = value
+}
+
+const onSubmit = () => {
+    fullloading((hideLoading) => {
+        formSubmit().then(() => {
+            hideLoading()
+            dialog('实名认证提交请求成功')
+        }).catch((err) => {
+            Toast.fail(err)
+        })
+    })
+}
+
 </script>

+ 69 - 0
src/packages/mobile/views/bank/sign/components/edit/index.vue

@@ -3,8 +3,77 @@
         <template #header>
             <app-navbar title="添加签约用户" />
         </template>
+        <Form ref="formRef" class="g-form__container" @submit="formSubmit">
+            <CellGroup inset>
+                <Field name="BankName" is-link label="开户银行" placeholder="请选择银行信息" @click="showPicker = true" />
+                <Field name="BankNo" label="银行卡号" v-model="formData.BankAccountNo" placeholder="请输入银行卡账号" :rules="formRules.BankAccountNo" />
+                <Field name="AccountName" label="姓名" v-model="formData.BankAccountName" placeholder="请输入银行卡账户名" :rules="formRules.BankAccountName" />
+                <Field name="BranchBankName" label="支行名称" v-model="formData.OpenBankName" placeholder="请输入银行卡支行名称" :rules="formRules.OpenBankName" />
+                <Field name="SignStatus" label="签约状态" readonly model-value="签约中" />
+            </CellGroup>
+        </Form>
+        <Popup v-model:show="showPicker" round position="bottom">
+            <Picker  title="可签约银行" :columns="columns" @cancel="showPicker = false" @confirm="onConfirm" />
+        </Popup>
+        <template #footer>
+            <div class="g-form__footer">
+                <Button type="success" round block>解约</Button>
+                <Button type="primary" round block @click="formRef?.submit()">提交</Button>
+            </div>
+        </template>
     </app-view>
 </template>
 
 <script lang="ts" setup>
+
+import { shallowRef } from 'vue'
+import { CellGroup, Button, Field, Form, FormInstance, FieldRule, Toast, Picker, Popup } from 'vant'
+import { fullloading, dialog } from '@/utils/vant'
+import { doBankSign } from '@/business/bank'
+import { ref } from 'vue';
+import { useNavigation } from '@/hooks/navigation'
+
+const {router}=useNavigation()
+const { formData, onSubmit, cusSignBank } = doBankSign()
+const result = ref('');
+const showPicker = ref(false);
+const formRef = shallowRef<FormInstance>()
+
+/// 获取银行信息
+const columns = ['杭州', '宁波', '温州', '绍兴', '湖州', '嘉兴', '金华'];
+
+const onConfirm = (value: any) => {
+    result.value = value;
+    showPicker.value = false;
+}
+
+// 表单验证规则
+const formRules: { [key in keyof Proto.t2bBankSignReq]?: FieldRule[] } = {
+    BankAccountNo: [{
+        required: true,
+        message: '请输入银行卡账号',
+    }],
+    BankAccountName: [{
+        required: true,
+        message: '请输入银行卡账户名',
+    }],
+    OpenBankName: [{
+        required: true,
+        message: '请输入银行卡支行名称',
+    }],
+}
+
+const formSubmit = () => {
+    fullloading((hideLoading) => {
+        onSubmit().then(() => {
+            hideLoading()
+            dialog('签约提交成功,请耐心等待审核。').then(() => {
+                router.back()
+            })
+        }).catch((err) => {
+            Toast.fail(err)
+        })
+    })
+}
+
 </script>

+ 1 - 1
src/packages/mobile/views/bank/sign/index.vue

@@ -3,7 +3,7 @@
         <template #header>
             <app-navbar title="签约账户管理" />
         </template>
-        <Button @click="routerTo('accountBank')">添加签约账户</Button>
+        <Button @click="routerTo('add-banksign')">添加签约账户</Button>
     </app-view>
 </template>
 

+ 37 - 8
src/packages/mobile/views/bank/wallet/components/withdraw/index.vue

@@ -1,20 +1,49 @@
 <template>
     <app-view>
-        <Form>
+        <Form class="g-form__container" @submit="formSubmit">
             <CellGroup inset>
-                <Field label="提现金额" placeholder="请填写提现金额" />
-                <Field label="开户银行" placeholder="请填写开户银行" />
-                <Field label="银行卡号" placeholder="请填写银行卡号" />
-                <Field label="姓名" placeholder="请填写姓名" />
-                <Field label="支行名称" placeholder="请填写支行名称" />
+                <Field label="提现金额" v-model="formData.Amount" placeholder="请填写提现金额" :rules="formRules.Amount"/>
+                <Field label="开户银行" v-model="formData.BankAccoutName" readonly placeholder="请填写开户银行" />
+                <Field label="银行卡号" v-model="formData.BankAccoutNum" readonly placeholder="请填写银行卡号" />
+                <Field label="姓名" v-model="formData.BankChildAccountName" readonly placeholder="请填写姓名" />
+                <Field label="支行名称"  v-model="formData.BranchBankName" readonly placeholder="请填写支行名称" />
             </CellGroup>
         </Form>
         <template #footer>
-            <Button round block type="primary">确定</Button>
+            <Button round block type="primary" @click="formRef?.submit()">确定</Button>
         </template>
     </app-view>
 </template>
 
 <script lang="ts" setup>
-import { Form, Field, CellGroup, Button } from 'vant'
+import { doWithdraw } from '@/business/bank';
+import { Form, Field, CellGroup, FormInstance, Button, FieldRule, Toast } from 'vant'
+import { shallowRef } from 'vue'
+import { fullloading, dialog } from '@/utils/vant'
+import { useNavigation } from '@/hooks/navigation'
+
+const { formData, onSubmit } = doWithdraw()
+const {router}=useNavigation()
+const formRef = shallowRef<FormInstance>()
+
+// 表单验证规则
+const formRules: { [key in keyof Proto.t2bBankWithdrawReq]?: FieldRule[] } = {
+    Amount: [{
+        required: true,
+        message: '请输入出金金额',
+    }]
+}
+
+const formSubmit = () => {
+    fullloading((hideLoading) => {
+        onSubmit().then(() => {
+            hideLoading()
+            dialog('出金成功。').then(() => {
+                router.back()
+            })
+        }).catch((err) => {
+            Toast.fail(err)
+        })
+    })
+}
 </script>

+ 9 - 9
src/packages/mobile/views/home/components/mine/index.vue

@@ -40,10 +40,10 @@
             <span></span>
           </div>
         </div>
-        <!-- <div class="button">
+        <div class="button">
           <Button size="small" @click="routerTo('bank-wallet')" round>提现</Button>
           <Button type="primary" size="small" color="#00577C" @click="routerTo('bank-wallet')" round>充值</Button>
-        </div> -->
+        </div>
       </div>
     </div>
     <div class="home-mine__iconbar">
@@ -51,32 +51,32 @@
         <li @click="routerTo('mine-generalize')" style="align-items:flex-start">
           <app-iconfont icon="icon-wodetuiguang" label-direction="bottom">我的推广</app-iconfont>
         </li>
-        <!-- <li>
+        <li>
           <app-iconfont icon="icon-wodedingdan" label-direction="bottom">我的订单</app-iconfont>
         </li>
         <li>
           <app-iconfont icon="icon-wodecangdan" label-direction="bottom">我的仓单</app-iconfont>
-        </li> -->
-        <!-- <li>
+        </li>
+        <li>
           <app-iconfont icon="icon-fapiaoxinxi" label-direction="bottom">发票信息</app-iconfont>
         </li>
         <li @click="routerTo('mine-address')">
           <app-iconfont icon="icon-shouhuodizhi" label-direction="bottom">收货地址</app-iconfont>
-        </li> -->
+        </li>
       </ul>
     </div>
     <div class="g-navmenu">
       <CellGroup>
-        <!-- <Cell is-link>
+        <Cell is-link  :to="{ name: 'account-certification' }">
           <template #title>
             <app-iconfont icon="icon-shimingrenzheng">实名认证</app-iconfont>
           </template>
         </Cell>
-        <Cell is-link>
+        <Cell is-link :to="{ name: 'bank-sign' }">
           <template #title>
             <app-iconfont icon="icon-qianyuezhanghu">签约账户</app-iconfont>
           </template>
-        </Cell> -->
+        </Cell>
         <Cell is-link :to="{ name: 'rules-zcxy' }">
           <template #title>
             <app-iconfont icon="icon-yonghuzhucexieyi">用户注册协议</app-iconfont>

+ 16 - 2
src/services/api/account/index.ts

@@ -1,5 +1,5 @@
-import { httpRequest } from '@/services/http'
-import { HttpParams } from '@/services/http/interface'
+import { httpRequest, commonRequest, getServiceUrl } from '@/services/http'
+import { HttpParams, CommonParams } from '@/services/http/interface'
 import { tradeServerRequest } from '@/services/socket/trade'
 import { TradeParams } from '@/services/socket/trade/interface'
 
@@ -60,6 +60,20 @@ export function queryAccountRole(params: HttpParams<{ rsp: Model.UserRole[] }>)
 }
 
 /**
+ * 查询实名认证信息
+ */
+ export function queryWrDraftUserInfo(params: HttpParams<{ req: Model.WrDraftUserInfoReq, rsp: Model.UserInfo[] }>) {
+    return httpRequest('/WrTrade2/QueryWrDraftUserInfo', 'get', params);
+}
+
+/**
+ * 实名认证请求
+ */
+ export function requestAddAuth(params: CommonParams<{ req: Model.AddAuthReq }>) {
+    return commonRequest(getServiceUrl('openApiUrl') + '/onlineopen/userInfo/addAuth', 'post', params);
+}
+
+/**
  * 投资者销户申请
  */
 export function investorDel(params: TradeParams<Proto.InvestorDelReq, Proto.InvestorDelRsp>) {

+ 6 - 1
src/stores/modules/enum.ts

@@ -17,7 +17,7 @@ interface StoreState {
     allEnums: ShallowRef<Model.EnumRsp[]>;
 }
 
-const enumKeys = ['clientType', 'scoreConfigType', 'accountBusinessCode'] as const
+const enumKeys = ['clientType', 'scoreConfigType', 'accountBusinessCode', 'certificatetype'] as const
 
 /**
  * 枚举存储类
@@ -91,6 +91,11 @@ const store = new (class extends VueStore<StoreState>{
         getEnumTypeName: (enums: EnumType[], value?: number) => {
             const item = enums.find((e) => e.value === value)
             return item?.label ?? value
+        },
+        /** 根据枚举名称获取对应的值 */
+        getEnumTypeValue: (enums: EnumType[], label?: string) => {
+            const item = enums.find((e) => e.label === label)
+            return item?.value ?? label
         }
     }
 })

+ 5 - 0
src/stores/modules/user.ts

@@ -51,6 +51,11 @@ const store = new (class extends VueStore<StoreState>{
         getAccountName: () => {
             const { userAccount } = this.state.userData
             return userAccount?.accountname
+        },
+        /** 获取登录用户信息 */
+        getUserInfo: () => {
+            const { userInfo } = this.state.userData
+            return userInfo
         }
     }
 })

+ 23 - 0
src/types/model/bank.d.ts

@@ -191,4 +191,27 @@ declare namespace Model {
         remark: string; // 备注
         trademode: number; // 交易模式
     }
+
+    /// 查询实名认证信息
+    interface WrDraftUserInfoReq {
+        // 用户状态 1:正常 2:注销
+        userstatus?: number,
+        // 用户id
+        userid: number 
+    }
+
+    interface AddAuthReq {
+        /// 用户姓名
+        username?: string,
+        /// 证件类型
+        cardtype?: number,
+        /// 证件号码
+        cardnum?: string,
+        /// 证件正面照
+        cardfrontphotourl?: string,
+        /// 证件反面照
+        cardbackphotourl?: string,
+        // 用户id
+        userid?: number
+    }
 }