li.shaoyi 8 月之前
父節點
當前提交
a0d0ed6ad3

文件差異過大導致無法顯示
+ 0 - 0
src/packages/pc/assets/themes/base/iconfont.less


+ 2 - 2
src/packages/pc/components/base/upload/index.vue

@@ -107,7 +107,7 @@ const onExceed = (files: File[]) => {
         const el = uploadRef.value
         if (el) {
             const rawFile = files[0] as UploadRawFile
-            if (uploadTypes.includes(rawFile.type)) {
+            if (!uploadTypes.length || uploadTypes.includes(rawFile.type)) {
                 rawFile.uid = genFileId()
                 el.clearFiles()
                 el.handleStart(rawFile)
@@ -123,7 +123,7 @@ const onExceed = (files: File[]) => {
 
 // 上传之前判断文件类型
 const onBeforeUpload = (rawFile: UploadRawFile) => {
-    if (uploadTypes.includes(rawFile.type)) {
+    if (!uploadTypes.length || uploadTypes.includes(rawFile.type)) {
         return true
     }
     ElMessage.warning(props.typeMessage)

+ 15 - 5
src/packages/pc/components/layouts/header/index.vue

@@ -14,9 +14,9 @@
         <div class="app-header__right">
             <slot name="right"></slot>
             <div class="iconbar">
-                <el-badge type="danger" is-dot>
+                <!-- <el-badge type="danger" is-dot>
                     <span class="g-icon--notice"></span>
-                </el-badge>
+                </el-badge> -->
                 <span class="g-icon--minimize" @click="exitFullSreen" v-if="fullScreen"></span>
                 <span class="g-icon--maximize" @click="setFullSreen" v-else></span>
             </div>
@@ -40,29 +40,39 @@
                 </span>
                 <template #dropdown>
                     <el-dropdown-menu>
-                        <el-dropdown-item :icon="Key">{{ t('operation.modifypwd') }}</el-dropdown-item>
-                        <el-dropdown-item :icon="SwitchButton" @click="eventBus.$emit('Logout')">{{ t('operation.loginout') }}</el-dropdown-item>
+                        <el-dropdown-item :icon="Key" @click="openComponent('Password')">{{ t('operation.modifypwd')
+                        }}</el-dropdown-item>
+                        <el-dropdown-item :icon="SwitchButton" @click="eventBus.$emit('Logout')">{{
+                            t('operation.loginout') }}</el-dropdown-item>
                     </el-dropdown-menu>
                 </template>
             </el-dropdown>
         </div>
+        <component ref="componentRef" :is="componentMap.get(componentId)" @closed="closeComponent" v-if="componentId" />
     </div>
 </template>
 
 <script lang="ts" setup>
-import { ref, onMounted } from 'vue'
+import { ref, onMounted, defineAsyncComponent } from 'vue'
 import { ArrowRight, Key, SwitchButton, ArrowDown } from '@element-plus/icons-vue'
+import { useComponent } from '@/hooks/component'
 import { getLanguageList, Language } from '@/constants/language'
 import { useGlobalStore, useUserStore, i18n } from '@/stores'
 import { localData } from '@/stores/storage'
 import eventBus from '@/services/bus'
 
+const componentMap = new Map<string, unknown>([
+    ['Password', defineAsyncComponent(() => import('@pc/views/auth/password/index.vue'))], // 修改密码
+])
+
 const globalStore = useGlobalStore()
 const userStore = useUserStore()
 const fullScreen = ref(false)
 
 const { global: { t } } = i18n
 
+const { componentRef, componentId, openComponent, closeComponent } = useComponent()
+
 // 全屏
 const setFullSreen = () => {
     document.documentElement.requestFullscreen();

+ 9 - 5
src/packages/pc/views/account/fundacct/components/bankinout/index.vue

@@ -1,6 +1,7 @@
 <!-- 账号管理-资金账户管理-出入金 -->
 <template>
-    <app-drawer :title="t('account.fundacct.bankinout.title')" width="900" v-model:show="show" :refresh="refresh" :loading="loading">
+    <app-drawer :title="t('account.fundacct.bankinout.title')" width="900" v-model:show="show" :refresh="refresh"
+        :loading="loading">
         <el-form ref="formRef" class="el-form--horizontal" label-width="140px" :model="formData" :rules="formRules"
             :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
@@ -18,10 +19,11 @@
                     </el-radio-group>
                 </el-form-item>
                 <el-form-item :label="t('account.fundacct.bankinout.amount')" prop="money">
-                    <el-input-number v-model="formData.money" :placeholder="t('common.pleaseenter')" />
+                    <el-input-number v-model="formData.money" :placeholder="t('common.pleaseenter')" :min="0" />
                 </el-form-item>
                 <el-form-item :label="t('account.fundacct.bankinout.cusbankid')" prop="cusbankid">
-                    <el-select v-model="selectedBank" :placeholder="t('common.pleasechoice')" value-key="cusbankid" @change="onBankChange">
+                    <el-select v-model="selectedBank" :placeholder="t('common.pleasechoice')" value-key="cusbankid"
+                        @change="onBankChange">
                         <el-option v-for="item in bankList" :key="item.cusbankid" :label="item.cusbankname"
                             :value="item" />
                     </el-select>
@@ -53,14 +55,16 @@
                     </el-form-item>
                 </template>
                 <el-form-item class="el-form-item--row" :label="t('account.fundacct.bankinout.remark')" prop="remark">
-                    <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="3" :placeholder="t('common.pleaseenter')" />
+                    <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="3"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
             </fieldset>
             <fieldset class="g-fieldset el-form--horizontal" v-if="expandableList.length">
                 <legend class="g-fieldset__legend">{{ t('common.extendinfo') }}</legend>
                 <template v-for="(item, index) in expandableList" :key="index">
                     <el-form-item :label="item.fieldname" :prop="item.fieldcode">
-                        <el-input v-model="formData.extendInfo[item.fieldcode]" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                        <el-input v-model="formData.extendInfo[item.fieldcode]" maxlength="50"
+                            :placeholder="t('common.pleaseenter')" />
                     </el-form-item>
                 </template>
             </fieldset>

+ 1 - 1
src/packages/pc/views/account/fundacct/index.vue

@@ -66,7 +66,7 @@ const tableColumns = shallowRef<Model.TableColumn[]>([
     { field: 'tradeStatus', label: 'account.fundacct.tradeStatus', formatValue: (val) => traderstatusEnum.getEnumTypeName(val) },
     { field: 'currency', label: 'account.fundacct.currency' },
     { field: 'accountName', label: 'account.fundacct.accountName' },
-    { field: 'operate', label: 'common.operate', width: 220, fixed: 'right' }
+    { field: 'operate', label: 'common.operate', width: 240, fixed: 'right' }
 ])
 
 const { filterOption, getQueryParams } = useDataFilter<Model.TaAccountReq>({

+ 1 - 0
src/packages/pc/views/auth/components/layout/index.vue

@@ -34,6 +34,7 @@
 
 <script lang="ts" setup>
 import { computed } from 'vue'
+import { ArrowDown } from '@element-plus/icons-vue'
 import { getLanguageList, getLanguageLabelByValue, Language } from '@/constants/language'
 import { i18n } from '@/stores'
 import { localData } from '@/stores/storage'

+ 112 - 0
src/packages/pc/views/auth/password/index.vue

@@ -0,0 +1,112 @@
+<!-- 修改密码 -->
+<template>
+    <app-drawer title="修改密码" width="480" v-model:show="show" :loading="loading">
+        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules">
+            <el-form-item label="登录名" prop="membername">
+                <span>{{ userStore.userInfo.username }}</span>
+            </el-form-item>
+            <el-form-item label="用户名称" prop="membertags">
+                <span>{{ userStore.userInfo.logincode }}</span>
+            </el-form-item>
+            <el-form-item label="旧密码" prop="oldPwd">
+                <el-input type="password" v-model="formData.oldPwd" :placeholder="t('common.pleaseenter')" />
+            </el-form-item>
+            <el-form-item label="新密码" prop="newPwd">
+                <el-popover placement="top" trigger="click" :width="244" :hide-after="0"
+                    :content="validateRules.password.message">
+                    <template #reference>
+                        <el-input type="password" v-model="formData.newPwd" maxlength="50"
+                            :placeholder="t('common.pleaseenter')" />
+                    </template>
+                </el-popover>
+            </el-form-item>
+            <el-form-item label="新密码确认" prop="checkPwd">
+                <el-input type="password" v-model="checkPwd" :placeholder="t('common.pleaseenter')" />
+            </el-form-item>
+        </el-form>
+        <template #footer>
+            <el-button @click="onCancel">{{ t('operation.close') }}</el-button>
+            <el-button type="primary" @click="onSubmit">{{ t('operation.submit') }}</el-button>
+        </template>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormInstance, FormRules } from 'element-plus'
+import { validateRules } from '@/constants/regex'
+import { updatePwd } from '@/services/api/user'
+import { useUserStore, i18n } from '@/stores'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+
+const t = i18n.global.t
+const userStore = useUserStore()
+const formRef = ref<FormInstance>()
+const show = ref(true)
+const loading = ref(false)
+const checkPwd = ref('')
+
+const formData = ref<Model.UpdatePwdReq>({
+    newPwd: '',
+    oldPwd: ''
+})
+
+// 表单验证规则
+const formRules: FormRules = {
+    oldPwd: [{
+        required: true,
+        trigger: 'blur',
+        validator: (rule, value, callback) => {
+            if (value) {
+                callback()
+            } else {
+                callback('请输入旧密码')
+            }
+        },
+    }],
+    newPwd: [{
+        required: true,
+        trigger: 'blur',
+        validator: (rule, value, callback) => {
+            if (validateRules.password.validate(value)) {
+                callback()
+            } else {
+                callback('密码不符合规范')
+            }
+        },
+    }],
+    checkPwd: [{
+        required: true,
+        trigger: 'blur',
+        validator: (rule, value, callback) => {
+            if (formData.value.newPwd === checkPwd.value) {
+                callback()
+            } else {
+                callback('确认密码不一致')
+            }
+        },
+    }],
+}
+
+const onCancel = () => {
+    show.value = false
+}
+
+const onSubmit = () => {
+    formRef.value?.validate((valid) => {
+        if (valid) {
+            loading.value = true
+            updatePwd({
+                data: formData.value
+            }).then(() => {
+                ElMessage.success(t('common.tips3'))
+                onCancel()
+            }).catch((err) => {
+                ElMessage.error(t('common.tips4') + err)
+            }).finally(() => {
+                loading.value = false
+            })
+        }
+    })
+}
+</script>

+ 4 - 2
src/packages/pc/views/investor/manage/user/components/details/view.vue

@@ -13,7 +13,7 @@
             </template>
             <!-- 开户方式 -->
             <template #openMode>
-                {{ oldData?.userinfoDetailVo.openMode }}
+                {{ openmodeEnum.getEnumTypeName(oldData?.userinfoDetailVo.openMode) }}
             </template>
             <!-- 申请人 -->
             <template #createName="{ value }">
@@ -90,6 +90,8 @@ const oldData = ref<Investor.InvestorListDetailRsp['oldResult']>()
 
 // 是否认证
 const flagEnum = useEnum('flag')
+// 开户方式
+const openmodeEnum = useEnum('openmode')
 // 状态
 const areastatusEnum = useEnum('areastatus')
 // 变更状态
@@ -108,7 +110,7 @@ useRequest(queryInvestorListDetail, {
     },
     onSuccess: (res) => {
         const { newResult, oldResult } = res.data
-        
+
         if (newResult) {
             const detail = newResult.userinfoDetailVo
             detail.cardFrontPhotoUrl = getFirstPathFullUrl(detail.cardFrontPhotoUrl)

+ 1 - 1
src/packages/pc/views/investor/manage/user/components/login/index.vue

@@ -8,7 +8,7 @@
             <app-table :data="dataList" :columns="tableColumns">
                 <template #headerRight>
                     <div style="display: flex;">
-                        <el-button @click="emit('closed')">{{ t('operation.close') }}</el-button>
+                        <el-button @click="emit('closed', true)">{{ t('operation.close') }}</el-button>
                     </div>
                 </template>
                 <!-- 操作 -->

+ 90 - 0
src/packages/pc/views/investor/user/open/components/details/aduit.vue

@@ -0,0 +1,90 @@
+<!-- 交易商管理-开户管理-交易商开户-详情-审核 -->
+<template>
+    <app-drawer :title="t('common.alert')" width="480" v-model:show="show" :loading="loading" :refresh="refresh">
+        <div class="g-text-message" v-if="auditflag === 1">{{ t('investor.user.open.details.tips1') }}</div>
+        <el-form ref="formRef" label-width="100px" :model="formData" :rules="formRules" :show-message="false" v-else>
+            <el-form-item label="不通过原因" prop="msg">
+                <el-input type="textarea" v-model="formData.msg" maxlength="200" :rows="5" placeholder="请输入" />
+            </el-form-item>
+        </el-form>
+        <template #footer>
+            <el-button @click="show = false">取消</el-button>
+            <el-button type="primary" @click="onSubmit">提交</el-button>
+        </template>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { reactive, shallowRef, PropType, computed } from 'vue'
+import { ElMessage, FormInstance, FormRules } from 'element-plus'
+import { investorProcess } from '@/services/api/investor'
+import { i18n } from '@/stores'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+
+const props = defineProps({
+    modelValue: {
+        type: Boolean,
+        default: false
+    },
+    record: {
+        type: Object as PropType<Investor.InvestorRsp>,
+        required: true
+    },
+    auditflag: {
+        type: Number,
+        required: true
+    }
+})
+
+const emit = defineEmits(['update:modelValue'])
+
+const t = i18n.global.t
+const formRef = shallowRef<FormInstance>()
+const loading = shallowRef(false)
+const refresh = shallowRef(false)
+
+const show = computed({
+    get: () => props.modelValue,
+    set: (val) => emit('update:modelValue', val)
+})
+
+const formData = reactive<Investor.InvestorProcessReq>({
+    auditflag: props.auditflag,
+    auditid: props.record.userId,
+    msg: ''
+})
+
+// 表单验证规则
+const formRules: FormRules = {
+    msg: [{ required: true }],
+}
+
+const onSubmit = () => {
+    const run = () => {
+        loading.value = true
+        investorProcess({
+            data: {
+                ...formData,
+                auditflag: props.auditflag
+            }
+        }).then(() => {
+            ElMessage.success(t('investor.user.open.details.tips2'))
+            refresh.value = true
+        }).catch((err) => {
+            ElMessage.error(t('investor.user.open.details.tips3') + err)
+        }).finally(() => {
+            loading.value = false
+            show.value = false
+        })
+    }
+    if (formRef.value) {
+        formRef.value.validate((valid) => {
+            if (valid) {
+                run()
+            }
+        })
+    } else {
+        run()
+    }
+}
+</script>

+ 29 - 39
src/packages/pc/views/investor/user/open/components/details/index.vue

@@ -1,6 +1,7 @@
 <!-- 交易商管理-开户管理-交易商开户-详情 -->
 <template>
-    <app-drawer :title="t('investor.user.open.details.title')" width="900" v-model:show="show" :refresh="refresh">
+    <app-drawer :title="t('investor.user.open.details.title')" width="900" v-model:show="state.show"
+        :refresh="state.refresh">
         <app-table-details :data="data" :label-width="140" :cell-props="detailProps" :column="2">
             <!-- 证件照正面 -->
             <template #cardfrontphotourl="{ value }">
@@ -32,29 +33,36 @@
             </template>
         </app-table-details>
         <template #footer>
-            <el-button @click="onCancel(false)">{{ t('operation.close') }}</el-button>
+            <el-button @click="state.show = false">{{ t('operation.close') }}</el-button>
             <template
                 v-if="audit && (userStore.userInfo.releType === 1 || (userStore.userInfo.releType === 2 && [2, 4].includes(record.userState)))">
-                <el-button type="primary" @click="onAudit(1)">{{ t('investor.user.open.details.aduit') }}</el-button>
-                <el-button type="primary" @click="onAudit(0)">{{ t('investor.user.open.details.unaduit') }}</el-button>
+                <el-button type="primary" @click="openAduitDialog(1)">
+                    {{ t('investor.user.open.details.aduit') }}
+                </el-button>
+                <el-button type="primary" @click="openAduitDialog(0)">
+                    {{ t('investor.user.open.details.unaduit') }}
+                </el-button>
             </template>
         </template>
+        <AduitDialog v-model="state.dialogVisible" v-bind="{ record, auditflag: state.auditflag }" @closed="onCancel"
+            v-if="audit" />
     </app-drawer>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, PropType, computed } from 'vue'
-import { ElMessage, ElMessageBox } from 'element-plus'
+import { reactive, PropType, computed } from 'vue'
+import { ElMessage } from 'element-plus'
 import { getFirstPathFullUrl } from '@/filters'
 import { decryptAES } from '@/services/crypto'
 import { getUserInfoTypeName, getGenderName, UserInfoType } from '@/constants/member'
 import { useEnum } from '@/hooks/enum'
 import { useRequest } from '@/hooks/request'
-import { queryInvestorDetail, investorProcess } from '@/services/api/investor'
+import { queryInvestorDetail } from '@/services/api/investor'
 import { CellProp } from '@pc/components/base/table-details/types'
 import { useUserStore, i18n } from '@/stores'
 import AppDrawer from '@pc/components/base/drawer/index.vue'
 import AppTableDetails from '@pc/components/base/table-details/index.vue'
+import AduitDialog from './aduit.vue'
 
 const props = defineProps({
     record: {
@@ -66,8 +74,12 @@ const props = defineProps({
 
 const { global: { t } } = i18n
 const userStore = useUserStore()
-const show = shallowRef(true)
-const refresh = shallowRef(false)
+const state = reactive({
+    show: true,
+    refresh: false,
+    dialogVisible: false,
+    auditflag: 0
+})
 
 // 证件类型
 const certificatetypeEnum = useEnum('certificatetype')
@@ -133,37 +145,15 @@ const detailProps = computed(() => {
     return result
 })
 
-const onAudit = (auditflag: number) => {
-    ElMessageBox({
-        title: t('common.alert'),
-        message: t('investor.user.open.details.tips1'),
-        showCancelButton: true,
-        beforeClose: (action, instance, done) => {
-            if (action === 'confirm') {
-                instance.confirmButtonLoading = true
-                investorProcess({
-                    data: {
-                        auditflag,
-                        auditid: props.record.userId,
-                        msg: ''
-                    }
-                }).then(() => {
-                    ElMessage.success(t('investor.user.open.details.tips2'))
-                    onCancel(true)
-                }).catch((err) => {
-                    ElMessage.error(t('investor.user.open.details.tips3') + err)
-                }).finally(() => {
-                    done()
-                })
-            } else {
-                done()
-            }
-        }
-    })
+const openAduitDialog = (value: number) => {
+    state.auditflag = value
+    state.dialogVisible = true
 }
 
-const onCancel = (isRefresh = false) => {
-    show.value = false
-    refresh.value = isRefresh
+const onCancel = (refresh: boolean) => {
+    if (refresh) {
+        state.show = false
+        state.refresh = true
+    }
 }
 </script>

+ 3 - 4
src/packages/pc/views/investor/user/open/components/edit/index.vue

@@ -82,15 +82,14 @@
                     <app-upload v-model="uploadFiles.legalcardbackphotourl" :file-types="['image']"
                         :type-message="t('common.tips21')" />
                 </el-form-item>
-                <el-form-item :label="t('investor.user.open.edit.otherurl')" prop="otherurl">
-                    <app-upload v-model="uploadFiles.otherurl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
-                </el-form-item>
             </template>
             <el-form-item class="el-form-item--row">
                 <p>{{ t('investor.user.open.edit.tips2') }}</p>
                 <p>{{ t('investor.user.open.edit.tips3') }}</p>
             </el-form-item>
+            <el-form-item :label="t('investor.user.open.edit.otherurl')" prop="otherurl" v-if="!isPerson">
+                <app-upload v-model="uploadFiles.otherurl" :type-message="t('common.tips21')" />
+            </el-form-item>
             <el-form-item class="el-form-item--row" :label="t('investor.user.open.edit.region')" prop="region">
                 <app-region class="el-form-item--col" v-model:country="formData.countryid"
                     v-model:province="formData.provinceid" v-model:city="formData.cityid"

+ 4 - 1
src/packages/pc/views/member/institution/open/components/details/index.vue

@@ -65,6 +65,7 @@
 import { shallowRef, PropType, defineAsyncComponent } from 'vue'
 import { ElMessage } from 'element-plus'
 import { formatDate, getFirstPathFullUrl } from '@/filters'
+import { decryptAES } from '@/services/crypto'
 import { useEnum } from '@/hooks/enum'
 import { useComponent } from '@/hooks/component'
 import { useRequest } from '@/hooks/request'
@@ -106,7 +107,7 @@ const { data } = useRequest(queryWskhUserinfoDetail, {
         userId: props.record.userid
     },
     onSuccess: (res) => {
-        const { cardfrontphotourl, cardbackphotourl, legalcardfrontphotourl, legalcardbackphotourl, attachment1, attachment2 } = res.data
+        const { cardfrontphotourl, cardbackphotourl, legalcardfrontphotourl, legalcardbackphotourl, attachment1, attachment2,cardnum } = res.data
         if (data.value) {
             data.value.cardfrontphotourl = getFirstPathFullUrl(cardfrontphotourl)
             data.value.cardbackphotourl = getFirstPathFullUrl(cardbackphotourl)
@@ -114,6 +115,8 @@ const { data } = useRequest(queryWskhUserinfoDetail, {
             data.value.legalcardbackphotourl = getFirstPathFullUrl(legalcardbackphotourl)
             data.value.attachment1 = getFirstPathFullUrl(attachment1)
             data.value.attachment2 = getFirstPathFullUrl(attachment2)
+
+            data.value.cardnum = decryptAES(cardnum)
         }
     },
     onError: (err) => {

+ 8 - 1
src/services/api/account/index.ts

@@ -4,7 +4,7 @@ import { CommonFetchOptions } from '@/services/http/types'
 /**
  * 资金账户管理查询
  */
-export function queryTaAccount(options: CommonFetchOptions<{ request: Model.TaAccountReq; response: Model.TaAccountRsp; }> = {}) {
+export function queryTaAccount(options: CommonFetchOptions<{ request: Model.TaAccountReq; response: Model.TaAccountRsp[]; }> = {}) {
     return httpClient.commonRequest('/taAccount/query', 'get', options)
 }
 
@@ -16,6 +16,13 @@ export function queryTaAccountDetail(options: CommonFetchOptions<{ request: Mode
 }
 
 /**
+ * 资金账户管理-->资金账户信息修改
+ */
+export function updateTaAccount(options: CommonFetchOptions<{ request: Partial<Model.UpdateTaAccountReq>; }>) {
+    return httpClient.commonRequest('/taAccount/updateTaAccount', 'post', options)
+}
+
+/**
  * 资金账户管理->银行签约-->初始化托管银行
  */
 export function dealAccountSignInit(options: CommonFetchOptions<{ request: Model.DealAccountSignInitReq; response: Model.DealAccountSignInitRsp[]; }> = {}) {

+ 1 - 1
src/services/api/member/index.ts

@@ -4,7 +4,7 @@ import { CommonFetchOptions } from '@/services/http/types'
 /**
  * 获取机构开户列表信息
  */
-export function queryWskhUserinfo(options: CommonFetchOptions<{ request: Member.WskhUserinfoReq; response: Member.MemberDetail; }>) {
+export function queryWskhUserinfo(options: CommonFetchOptions<{ request: Member.WskhUserinfoReq; response: Member.MemberDetail[]; }>) {
     return httpClient.commonRequest('/wskhUserinfo/query', 'get', options)
 }
 

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

@@ -23,6 +23,13 @@ export function loginIn(options: CommonFetchOptions<{ request: Model.LoginInReq;
 }
 
 /**
+ * 修改密码
+ */
+export function updatePwd(options: CommonFetchOptions<{ request: Model.UpdatePwdReq; }>) {
+    return httpClient.commonRequest('/systemmanager/updatePwd', 'post', options)
+}
+
+/**
  * token 校验
  */
 export function checkToken(options: CommonFetchOptions = {}) {

+ 28 - 2
src/types/model/account.d.ts

@@ -11,12 +11,18 @@ declare namespace Model {
     interface TaAccountRsp {
         accountId: number; // 资金账号
         accountName: string; // 所属用户
+        curRiskRate: number; // 风险率
         currency: string; // 币种
         isMain: number; // 账户类型 0 子账户,1 母账号
+        outThreshold: number; // 出金阈值
         parentAccountId: number; // 所属母账户
         relatedName: string; // 关联账户
-        taAccountType: string; // 内/外部 0 内部账户,1 外部账户
-        tradeStatus: string; // 交易状态 code:traderstatus
+        relatedaccountstatus: number;
+        relateduserid: number;
+        selfsupport: number; // 是否展示修改按钮
+        taAccountType: number; // 内/外部 0 内部账户,1 外部账户
+        tradeStatus: number; // 交易状态 code:traderstatus
+        userid: number;
     }
 
     /** 资金账户详情信息 请求 */
@@ -72,6 +78,26 @@ declare namespace Model {
         userId: number; // 资金账号
     }
 
+    /** 资金账户管理-->资金账户信息修改 请求 */
+    interface UpdateTaAccountReq {
+        accountId: number; // 资金账号
+        dtype: {
+            checked: number;
+            dtype: number;
+            fdType: number;
+            fspotRightType: number;
+            marketId: number;
+            marketName: string;
+            spotRightType: number; // code: marketbstype
+            tradeMode: number;
+            tradeProperty: number;
+        }[];
+        loginIds: number[];
+        relatedaccountstatus: number;
+        relateduserid: number;
+        userid: number;
+    }
+
     /** 资金账户管理->银行签约-->初始化托管银行 请求 */
     interface DealAccountSignInitReq {
         accountid: number;

+ 6 - 0
src/types/model/user.d.ts

@@ -32,6 +32,12 @@ declare global {
             username: string;
         }
 
+        /** 修改密码 请求 */
+        interface UpdatePwdReq {
+            newPwd: string; // 新密码
+            oldPwd: string; // 旧密码
+        }
+
         /** 获取菜单列表信息 响应 */
         interface MenusRsp {
             resourceCode: string; // 菜单编码

部分文件因文件數量過多而無法顯示