li.shaoyi 1 년 전
부모
커밋
b58ae67813

+ 27 - 0
src/packages/pc/views/investor/manage/modification/components/audit/index.vue

@@ -0,0 +1,27 @@
+<!-- 交易商管理-交易商管理-交易商管理-审核 -->
+<template>
+    <DetailsView v-bind="{ userId: record.userid, modifyStatus: record.modifystatus }">
+        <el-button type="primary" @click="openComponent('Operate')">审核</el-button>
+        <component ref="componentRef" :is="componentMap.get(componentId)" v-bind="{ record }" @closed="closeComponent"
+            v-if="componentId" />
+    </DetailsView>
+</template>
+
+<script lang="ts" setup>
+import { PropType,defineAsyncComponent } from 'vue'
+import { useComponent } from '@/hooks/component'
+import DetailsView from '@pc/views/investor/manage/user/components/details/view.vue'
+
+defineProps({
+    record: {
+        type: Object as PropType<Model.ModifyPageRsp>,
+        required: true
+    }
+})
+
+const componentMap = new Map<string, unknown>([
+    ['Operate', defineAsyncComponent(() => import('./operate/index.vue'))], // 操作
+])
+
+const { componentRef, componentId, openComponent, closeComponent } = useComponent()
+</script>

+ 85 - 0
src/packages/pc/views/investor/manage/modification/components/audit/operate/index.vue

@@ -0,0 +1,85 @@
+<!-- 交易商管理-交易商管理-交易商管理-审核-操作 -->
+<template>
+    <app-drawer title="审核" width="480" v-model:show="show" :refresh="refresh" :loading="loading">
+        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules"
+            :show-message="false">
+            <el-form-item label="审核状态" prop="auditflag">
+                <el-radio-group v-model="formData.auditflag">
+                    <el-radio :value="1">通过</el-radio>
+                    <el-radio :value="0">不通过</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <el-form-item label="不通过原因" prop="msg">
+                <el-input type="textarea" v-model="formData.msg" :rows="3" :disabled="!!formData.auditflag"
+                    maxlength="200" placeholder="请输入" />
+            </el-form-item>
+        </el-form>
+        <template #footer>
+            <el-button @click="onCancel(false)">取消</el-button>
+            <el-button type="primary" @click="onSubmit">提交</el-button>
+        </template>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { ref, PropType, toRaw } from 'vue'
+import { ElMessage, FormInstance, FormRules } from 'element-plus'
+import { modifyAudit } from '@/services/api/investor'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+
+const props = defineProps({
+    record: {
+        type: Object as PropType<Model.ModifyPageRsp>,
+        required: true
+    }
+})
+
+const formRef = ref<FormInstance>()
+const show = ref(true)
+const refresh = ref(false)
+const loading = ref(false)
+
+const formData = ref<Model.ModifyAuditReq>({
+    auditflag: 1,
+    auditid: props.record.userid,
+})
+
+// 表单验证规则
+const formRules: FormRules = {
+    msg: [{
+        required: true,
+        validator: (rule, value, callback) => {
+            if (formData.value.auditflag || formData.value.msg) {
+                callback()
+            } else {
+                callback(new Error('请输入不通过原因'))
+            }
+        },
+    }],
+}
+
+const onCancel = (isRefresh = false) => {
+    show.value = false
+    refresh.value = isRefresh
+}
+
+const onSubmit = () => {
+    formRef.value?.validate((valid) => {
+        if (valid) {
+            const rawData = toRaw(formData.value)
+            loading.value = true
+            modifyAudit({
+                data: rawData
+            }).then(() => {
+                ElMessage.success('提交成功')
+                onCancel(true)
+            }).catch((err) => {
+                ElMessage.error('提交失败:' + err)
+                onCancel()
+            }).finally(() => {
+                loading.value = false
+            })
+        }
+    })
+}
+</script>

+ 4 - 197
src/packages/pc/views/investor/manage/user/components/details/index.vue

@@ -1,209 +1,16 @@
 <!-- 交易商管理-交易商管理-交易商管理-详情 -->
 <template>
-    <app-drawer title="详情" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
-        <app-table-details title="基本信息" :data="oldData?.userAccountDetailVo" :label-width="160"
-            :cell-props="detailProps1" :column="2">
-            <!-- 交易商名称 -->
-            <template #accountName="{ value }">
-                <p>{{ value }}</p>
-                <p class="red" v-if="newData && newData.userAccountDetailVo.accountName !== value">
-                    {{ newData.userAccountDetailVo.accountName }}
-                </p>
-            </template>
-            <!-- 开户方式 -->
-            <template #openMode>
-                {{ oldData?.userinfoDetailVo.openMode }}
-            </template>
-            <!-- 申请人 -->
-            <template #createName="{ value }">
-                <span v-if="oldData?.userinfoDetailVo.openMode === 1">{{ value }}</span>
-                <span v-else>{{ oldData?.userAccountDetailVo.accountName }}</span>
-            </template>
-        </app-table-details>
-        <app-table-details :title="oldData?.userinfoDetailVo.userinfoType === UserInfoType.Personal ? '个人资料' : '企业资料'"
-            :data="oldData?.userinfoDetailVo" :label-width="160" :cell-props="detailProps2" :column="2">
-            <!-- 证件照正面 -->
-            <template #cardFrontPhotoUrl="{ value }">
-                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
-            </template>
-            <!-- 证件照反面 -->
-            <template #cardBackPhotoUrl="{ value }">
-                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
-            </template>
-            <!-- 通迅地址 -->
-            <template #address="{ value }">
-                {{ handleNoneValue(oldData?.userinfoDetailVo.pathName + value) }}
-            </template>
-            <!-- 法人身份证正面 -->
-            <template #legalcardfrontphotourl="{ value }">
-                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
-            </template>
-            <!-- 法人身份证反面 -->
-            <template #legalcardbackphotourl="{ value }">
-                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
-            </template>
-            <!-- 法人授权书 -->
-            <template #otherUrl="{ value }">
-                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
-            </template>
-        </app-table-details>
-        <template #footer>
-            <el-button @click="onCancel(false)">关闭</el-button>
-        </template>
-    </app-drawer>
+    <DetailsView v-bind="{ userId: record.userId, modifyStatus: record.modifyStatus }" />
 </template>
 
 <script lang="ts" setup>
-import { ref, PropType, computed } from 'vue'
-import { handleNoneValue, formatDate } from '@/filters'
-import { decryptAES } from '@/services/crypto'
-import { useEnum } from '@/hooks/enum'
-import { UserInfoType, getGenderName } from '@/constants/member'
-import { useRequest } from '@/hooks/request'
-import { queryInvestorListDetail } from '@/services/api/investor'
-import { CellProp } from '@pc/components/base/table-details/types'
-import AppDrawer from '@pc/components/base/drawer/index.vue'
-import AppTableDetails from '@pc/components/base/table-details/index.vue'
-import service from '@/services'
+import { PropType } from 'vue'
+import DetailsView from './view.vue'
 
-const props = defineProps({
+defineProps({
     record: {
         type: Object as PropType<Model.InvestorListRsp>,
         required: true
     }
 })
-
-const show = ref(true)
-const refresh = ref(false)
-const loading = ref(false)
-const hideField = [2, 3, 4].includes(props.record.modifyStatus) // 根据状态是否隐藏字段
-const newData = ref<Model.InvestorListDetailRsp['newResult']>()
-const oldData = ref<Model.InvestorListDetailRsp['oldResult']>()
-
-// 是否实名
-const hasauthEnum = useEnum('hasauth')
-// 状态
-const areastatusEnum = useEnum('areastatus')
-// 变更状态
-const modifystatusEnum = useEnum('modifystatus')
-// 企业性质枚举
-const biznatureEnum = useEnum('biznature')
-// 个人证件类型
-const certypepersonEnum = useEnum('certypeperson')
-// 企业证件类型
-const certypecompanyEnum = useEnum('certypecompany')
-
-useRequest(queryInvestorListDetail, {
-    params: {
-        userid: props.record.userId,
-        modifyFlag: props.record.modifyStatus
-    },
-    onSuccess: (res) => {
-        const { newResult, oldResult } = res.data
-        const baseUrl = service.getConfig('apiUrl')
-        const getUrl = (value: string) => value && new URL(value, baseUrl).href
-
-        if (newResult) {
-            const detail = newResult.userinfoDetailVo
-            detail.cardFrontPhotoUrl = getUrl(detail.cardFrontPhotoUrl)
-            detail.cardBackPhotoUrl = getUrl(detail.cardBackPhotoUrl)
-            detail.halfBodyPhotoUrl = getUrl(detail.halfBodyPhotoUrl)
-            detail.legalCardFrontPhotoUrl = getUrl(detail.legalCardFrontPhotoUrl)
-            detail.legalCardBackPhotoUrl = getUrl(detail.legalCardBackPhotoUrl)
-            detail.otherUrl = getUrl(detail.otherUrl)
-
-            detail.cardNum = decryptAES(detail.cardNum)
-            detail.mobile = decryptAES(detail.mobile)
-            detail.telPhone = decryptAES(detail.telPhone)
-            detail.wechat = decryptAES(detail.wechat)
-            detail.email = decryptAES(detail.email)
-        }
-        if (oldResult) {
-            const detail = oldResult.userinfoDetailVo
-            detail.cardFrontPhotoUrl = getUrl(detail.cardFrontPhotoUrl)
-            detail.cardBackPhotoUrl = getUrl(detail.cardBackPhotoUrl)
-            detail.halfBodyPhotoUrl = getUrl(detail.halfBodyPhotoUrl)
-            detail.legalCardFrontPhotoUrl = getUrl(detail.legalCardFrontPhotoUrl)
-            detail.legalCardBackPhotoUrl = getUrl(detail.legalCardBackPhotoUrl)
-            detail.otherUrl = getUrl(detail.otherUrl)
-
-            detail.cardNum = decryptAES(detail.cardNum)
-            detail.mobile = decryptAES(detail.mobile)
-            detail.telPhone = decryptAES(detail.telPhone)
-            detail.wechat = decryptAES(detail.wechat)
-            detail.email = decryptAES(detail.email)
-        }
-
-        newData.value = newResult
-        oldData.value = oldResult
-    }
-})
-
-const detailProps1: CellProp[] = [
-    { prop: 'userId', label: '交易商代码:' },
-    { prop: 'accountName', label: '交易商名称:' },
-    { prop: 'memberUserName', label: '所属会员:' },
-    { prop: 'parentUserName', label: '所属机构:' },
-    { prop: 'openMode', label: '开户方式:' },
-    { prop: 'createTime', label: '开户时间:', formatValue: (val) => formatDate(val) },
-    { prop: 'createName', formatLabel: () => oldData.value?.userinfoDetailVo.openMode === 1 ? '开户人' : '申请人' },
-    { prop: 'accountStatus', label: '机构状态:', formatValue: (val) => areastatusEnum.getEnumTypeName(val), show: !hideField },
-    { prop: 'modifyStatus', label: '变更状态:', formatValue: (val) => modifystatusEnum.getEnumTypeName(val) },
-    { prop: 'isAuth', label: '是否认证:', formatValue: (val) => hasauthEnum.getEnumTypeName(val) },
-    { prop: 'modifyTime', label: '修改时间:', formatValue: (val) => formatDate(val) },
-    { prop: 'modifyName', label: '修改人:' },
-    { prop: 'auditTime', label: '审核时间:', formatValue: (val) => formatDate(val), show: !hideField },
-    { prop: 'auditAccountName', label: '审核人:', show: !hideField },
-    { prop: 'modifyRemark', label: '变更审核备注:', show: hideField },
-]
-
-const detailProps2 = computed<CellProp[]>(() => {
-    const type = oldData.value?.userinfoDetailVo.userinfoType
-    if (type === UserInfoType.Personal) {
-        return [
-            { prop: 'cardTypeId', label: '证件类型:', formatValue: (val) => certypepersonEnum.getEnumTypeName(val) },
-            { prop: 'cardNum', label: '证件号码:' },
-            { prop: 'company', label: '所属公司:' },
-            { prop: 'sex', label: '性别:', formatValue: (val) => getGenderName(val) },
-            { prop: 'mobile', label: '手机号:' },
-            { prop: 'telPhone', label: '联系电话:' },
-            { prop: 'address', label: '通迅地址:' },
-            { prop: 'postalCode', label: '邮政编码:' },
-            { prop: 'wechat', label: '微信:' },
-            { prop: 'email', label: '邮箱:' },
-            { prop: 'cardFrontPhotoUrl', label: '证件照正面:' },
-            { prop: 'cardBackPhotoUrl', label: '证件照反面:' },
-            { prop: 'remark', label: '备注:' },
-        ]
-    }
-    if (type === UserInfoType.Company) {
-        return [
-            { prop: 'needInvoice', label: '是否需要发票:' },
-            { prop: 'cardTypeId', label: '证件类型:', formatValue: (val) => certypecompanyEnum.getEnumTypeName(val) },
-            { prop: 'cardNum', label: '证件号码:' },
-            { prop: 'customerName', label: '企业名称:' },
-            { prop: 'bizNature', label: '企业性质:', formatValue: (val) => biznatureEnum.getEnumTypeName(val) },
-            { prop: 'legalPersonName', label: '法人姓名:' },
-            { prop: 'contactName', label: '联系人:' },
-            { prop: 'sex', label: '性别:', formatValue: (val) => getGenderName(val) },
-            { prop: 'mobile', label: '手机号:' },
-            { prop: 'telPhone', label: '联系电话:' },
-            { prop: 'address', label: '通迅地址:' },
-            { prop: 'postalCode', label: '邮政编码:' },
-            { prop: 'email', label: '邮箱:' },
-            { prop: 'wechat', label: '微信:' },
-            { prop: 'cardFrontPhotoUrl', label: '营业执照:' },
-            { prop: 'legalCardFrontPhotoUrl', label: '法人身份证正面照:' },
-            { prop: 'legalCardBackPhotoUrl', label: '法人身份证背面照:' },
-            { prop: 'otherUrl', label: '法人授权书:' },
-            { prop: 'remark', label: '备注:' },
-        ]
-    }
-    return []
-})
-
-const onCancel = (isRefresh = false) => {
-    show.value = false
-    refresh.value = isRefresh
-}
 </script>

+ 214 - 0
src/packages/pc/views/investor/manage/user/components/details/view.vue

@@ -0,0 +1,214 @@
+<!-- 交易商管理-交易商管理-交易商管理-详情 -->
+<template>
+    <app-drawer title="详情" width="900" v-model:show="show" :loading="loading" :refresh="refresh">
+        <app-table-details title="基本信息" :data="oldData?.userAccountDetailVo" :label-width="160"
+            :cell-props="detailProps1" :column="2">
+            <!-- 交易商名称 -->
+            <template #accountName="{ value }">
+                <p>{{ value }}</p>
+                <p class="red" v-if="newData && newData.userAccountDetailVo.accountName !== value">
+                    {{ newData.userAccountDetailVo.accountName }}
+                </p>
+            </template>
+            <!-- 开户方式 -->
+            <template #openMode>
+                {{ oldData?.userinfoDetailVo.openMode }}
+            </template>
+            <!-- 申请人 -->
+            <template #createName="{ value }">
+                <span v-if="oldData?.userinfoDetailVo.openMode === 1">{{ value }}</span>
+                <span v-else>{{ oldData?.userAccountDetailVo.accountName }}</span>
+            </template>
+        </app-table-details>
+        <app-table-details :title="oldData?.userinfoDetailVo.userinfoType === UserInfoType.Personal ? '个人资料' : '企业资料'"
+            :data="oldData?.userinfoDetailVo" :label-width="160" :cell-props="detailProps2" :column="2">
+            <!-- 证件照正面 -->
+            <template #cardFrontPhotoUrl="{ value }">
+                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
+            </template>
+            <!-- 证件照反面 -->
+            <template #cardBackPhotoUrl="{ value }">
+                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
+            </template>
+            <!-- 通迅地址 -->
+            <template #address="{ value }">
+                {{ handleNoneValue(oldData?.userinfoDetailVo.pathName + value) }}
+            </template>
+            <!-- 法人身份证正面 -->
+            <template #legalcardfrontphotourl="{ value }">
+                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
+            </template>
+            <!-- 法人身份证反面 -->
+            <template #legalcardbackphotourl="{ value }">
+                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
+            </template>
+            <!-- 法人授权书 -->
+            <template #otherUrl="{ value }">
+                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
+            </template>
+        </app-table-details>
+        <template #footer>
+            <el-button @click="onCancel(false)">关闭</el-button>
+            <slot></slot>
+        </template>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { ref, computed } from 'vue'
+import { handleNoneValue, formatDate } from '@/filters'
+import { decryptAES } from '@/services/crypto'
+import { useEnum } from '@/hooks/enum'
+import { UserInfoType, getGenderName } from '@/constants/member'
+import { useRequest } from '@/hooks/request'
+import { queryInvestorListDetail } from '@/services/api/investor'
+import { CellProp } from '@pc/components/base/table-details/types'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+import AppTableDetails from '@pc/components/base/table-details/index.vue'
+import service from '@/services'
+
+const props = defineProps({
+    userId: {
+        type: Number,
+        required: true
+    },
+    modifyStatus: {
+        type: Number,
+        required: true
+    }
+})
+
+const show = ref(true)
+const refresh = ref(false)
+const loading = ref(false)
+const hideField = [2, 3, 4].includes(props.modifyStatus) // 根据状态是否隐藏字段
+const newData = ref<Model.InvestorListDetailRsp['newResult']>()
+const oldData = ref<Model.InvestorListDetailRsp['oldResult']>()
+
+// 是否实名
+const hasauthEnum = useEnum('hasauth')
+// 状态
+const areastatusEnum = useEnum('areastatus')
+// 变更状态
+const modifystatusEnum = useEnum('modifystatus')
+// 企业性质枚举
+const biznatureEnum = useEnum('biznature')
+// 个人证件类型
+const certypepersonEnum = useEnum('certypeperson')
+// 企业证件类型
+const certypecompanyEnum = useEnum('certypecompany')
+
+useRequest(queryInvestorListDetail, {
+    params: {
+        userid: props.userId,
+        modifyFlag: props.modifyStatus
+    },
+    onSuccess: (res) => {
+        const { newResult, oldResult } = res.data
+        const baseUrl = service.getConfig('apiUrl')
+        const getUrl = (value: string) => value && new URL(value, baseUrl).href
+
+        if (newResult) {
+            const detail = newResult.userinfoDetailVo
+            detail.cardFrontPhotoUrl = getUrl(detail.cardFrontPhotoUrl)
+            detail.cardBackPhotoUrl = getUrl(detail.cardBackPhotoUrl)
+            detail.halfBodyPhotoUrl = getUrl(detail.halfBodyPhotoUrl)
+            detail.legalCardFrontPhotoUrl = getUrl(detail.legalCardFrontPhotoUrl)
+            detail.legalCardBackPhotoUrl = getUrl(detail.legalCardBackPhotoUrl)
+            detail.otherUrl = getUrl(detail.otherUrl)
+
+            detail.cardNum = decryptAES(detail.cardNum)
+            detail.mobile = decryptAES(detail.mobile)
+            detail.telPhone = decryptAES(detail.telPhone)
+            detail.wechat = decryptAES(detail.wechat)
+            detail.email = decryptAES(detail.email)
+        }
+        if (oldResult) {
+            const detail = oldResult.userinfoDetailVo
+            detail.cardFrontPhotoUrl = getUrl(detail.cardFrontPhotoUrl)
+            detail.cardBackPhotoUrl = getUrl(detail.cardBackPhotoUrl)
+            detail.halfBodyPhotoUrl = getUrl(detail.halfBodyPhotoUrl)
+            detail.legalCardFrontPhotoUrl = getUrl(detail.legalCardFrontPhotoUrl)
+            detail.legalCardBackPhotoUrl = getUrl(detail.legalCardBackPhotoUrl)
+            detail.otherUrl = getUrl(detail.otherUrl)
+
+            detail.cardNum = decryptAES(detail.cardNum)
+            detail.mobile = decryptAES(detail.mobile)
+            detail.telPhone = decryptAES(detail.telPhone)
+            detail.wechat = decryptAES(detail.wechat)
+            detail.email = decryptAES(detail.email)
+        }
+
+        newData.value = newResult
+        oldData.value = oldResult
+    }
+})
+
+const detailProps1: CellProp[] = [
+    { prop: 'userId', label: '交易商代码:' },
+    { prop: 'accountName', label: '交易商名称:' },
+    { prop: 'memberUserName', label: '所属会员:' },
+    { prop: 'parentUserName', label: '所属机构:' },
+    { prop: 'openMode', label: '开户方式:' },
+    { prop: 'createTime', label: '开户时间:', formatValue: (val) => formatDate(val) },
+    { prop: 'createName', formatLabel: () => oldData.value?.userinfoDetailVo.openMode === 1 ? '开户人' : '申请人' },
+    { prop: 'accountStatus', label: '机构状态:', formatValue: (val) => areastatusEnum.getEnumTypeName(val), show: !hideField },
+    { prop: 'modifyStatus', label: '变更状态:', formatValue: (val) => modifystatusEnum.getEnumTypeName(val) },
+    { prop: 'isAuth', label: '是否认证:', formatValue: (val) => hasauthEnum.getEnumTypeName(val) },
+    { prop: 'modifyTime', label: '修改时间:', formatValue: (val) => formatDate(val) },
+    { prop: 'modifyName', label: '修改人:' },
+    { prop: 'auditTime', label: '审核时间:', formatValue: (val) => formatDate(val), show: !hideField },
+    { prop: 'auditAccountName', label: '审核人:', show: !hideField },
+    { prop: 'modifyRemark', label: '变更审核备注:', show: hideField },
+]
+
+const detailProps2 = computed<CellProp[]>(() => {
+    const type = oldData.value?.userinfoDetailVo.userinfoType
+    if (type === UserInfoType.Personal) {
+        return [
+            { prop: 'cardTypeId', label: '证件类型:', formatValue: (val) => certypepersonEnum.getEnumTypeName(val) },
+            { prop: 'cardNum', label: '证件号码:' },
+            { prop: 'company', label: '所属公司:' },
+            { prop: 'sex', label: '性别:', formatValue: (val) => getGenderName(val) },
+            { prop: 'mobile', label: '手机号:' },
+            { prop: 'telPhone', label: '联系电话:' },
+            { prop: 'address', label: '通迅地址:' },
+            { prop: 'postalCode', label: '邮政编码:' },
+            { prop: 'wechat', label: '微信:' },
+            { prop: 'email', label: '邮箱:' },
+            { prop: 'cardFrontPhotoUrl', label: '证件照正面:' },
+            { prop: 'cardBackPhotoUrl', label: '证件照反面:' },
+            { prop: 'remark', label: '备注:' },
+        ]
+    }
+    if (type === UserInfoType.Company) {
+        return [
+            { prop: 'needInvoice', label: '是否需要发票:' },
+            { prop: 'cardTypeId', label: '证件类型:', formatValue: (val) => certypecompanyEnum.getEnumTypeName(val) },
+            { prop: 'cardNum', label: '证件号码:' },
+            { prop: 'customerName', label: '企业名称:' },
+            { prop: 'bizNature', label: '企业性质:', formatValue: (val) => biznatureEnum.getEnumTypeName(val) },
+            { prop: 'legalPersonName', label: '法人姓名:' },
+            { prop: 'contactName', label: '联系人:' },
+            { prop: 'sex', label: '性别:', formatValue: (val) => getGenderName(val) },
+            { prop: 'mobile', label: '手机号:' },
+            { prop: 'telPhone', label: '联系电话:' },
+            { prop: 'address', label: '通迅地址:' },
+            { prop: 'postalCode', label: '邮政编码:' },
+            { prop: 'email', label: '邮箱:' },
+            { prop: 'wechat', label: '微信:' },
+            { prop: 'cardFrontPhotoUrl', label: '营业执照:' },
+            { prop: 'legalCardFrontPhotoUrl', label: '法人身份证正面照:' },
+            { prop: 'legalCardBackPhotoUrl', label: '法人身份证背面照:' },
+            { prop: 'otherUrl', label: '法人授权书:' },
+            { prop: 'remark', label: '备注:' },
+        ]
+    }
+    return []
+})
+
+const onCancel = (isRefresh = false) => {
+    show.value = false
+    refresh.value = isRefresh
+}
+</script>

+ 7 - 0
src/services/api/investor/index.ts

@@ -279,4 +279,11 @@ export function resetPwd(options: CommonFetchOptions<{ request: Model.ResetPwdRe
  */
 export function restoreAccount(options: CommonFetchOptions<{ request: Model.RestoreAccountReq; }>) {
     return httpClient.commonRequest('/investor/restoreAccount', 'get', options)
+}
+
+/**
+ * 交易商管理-->交易商变更审核-->审核
+ */
+export function modifyAudit(options: CommonFetchOptions<{ request: Model.ModifyAuditReq; }>) {
+    return httpClient.commonRequest('/investor/modifyAudit', 'get', options)
 }

+ 7 - 0
src/types/model/investor.d.ts

@@ -897,4 +897,11 @@ declare namespace Model {
     interface RestoreAccountReq {
         loginid: number;
     }
+
+    /** 交易商管理-->交易商变更审核-->审核 请求 */
+    interface ModifyAuditReq {
+        auditflag: number; // 0不通过 1通过
+        auditid: number;
+        msg?: string; // 不通过原因
+    }
 }