li.shaoyi 8 місяців тому
батько
коміт
efb24af6ef

+ 20 - 0
src/business/common/index.ts

@@ -0,0 +1,20 @@
+import { ref, onUnmounted } from 'vue'
+import { queryConfig } from '@/services/api/common'
+
+export function getConfigValue(configid: number) {
+    const configValue = ref('')
+
+    const controller = new AbortController()
+
+    // 获取配置项
+    queryConfig({
+        controller,
+        data: { configid }
+    }).then((res) => {
+        configValue.value = res.data.configvalue
+    })
+
+    onUnmounted(() => controller.abort())
+
+    return configValue
+}

+ 4 - 0
src/packages/pc/assets/themes/global/global.less

@@ -15,6 +15,10 @@
     }
 }
 
+.g-red {
+    color: red;
+}
+
 .g-fieldset {
     min-width: auto;
     width: 100%;

+ 1 - 1
src/packages/pc/views/investor/manage/transfer/components/edit/index.vue

@@ -62,7 +62,7 @@
                     {{ inUserInfo ? decryptAES(inUserInfo.cardnum) : handleNoneValue() }}
                 </el-form-item>
                 <el-form-item class="el-form-item--row">
-                    <span class="red">*交易商转移将会在系统结算时处理</span>
+                    <span class="g-red">*交易商转移将会在系统结算时处理</span>
                 </el-form-item>
             </fieldset>
         </el-form>

+ 120 - 15
src/packages/pc/views/investor/manage/user/components/details/view.vue

@@ -7,10 +7,24 @@
             <!-- 交易商名称 -->
             <template #accountName="{ value }">
                 <p>{{ value }}</p>
-                <p class="red" v-if="newData && newData.userAccountDetailVo.accountName !== value">
+                <p class="g-red" v-if="newData && newData.userAccountDetailVo.accountName !== value">
                     {{ newData.userAccountDetailVo.accountName }}
                 </p>
             </template>
+            <!-- 所属机构 -->
+            <template #parentUserName="{ value }">
+                <p>{{ value }}</p>
+                <p class="g-red" v-if="newData && newData.userAccountDetailVo.parentUserName !== value">
+                    {{ newData.userAccountDetailVo.parentUserName }}
+                </p>
+            </template>
+            <!-- 是否认证 -->
+            <template #isAuth="{ value }">
+                <p>{{ flagEnum.getEnumTypeName(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userAccountDetailVo.isAuth !== value">
+                    {{ flagEnum.getEnumTypeName(newData.userAccountDetailVo.isAuth) }}
+                </p>
+            </template>
             <!-- 开户方式 -->
             <template #openMode>
                 {{ openmodeEnum.getEnumTypeName(oldData?.userinfoDetailVo.openMode) }}
@@ -24,29 +38,122 @@
         <app-table-details
             :title="oldData?.userinfoDetailVo.userinfoType === UserInfoType.Personal ? t('investor.manage.user.details.subtitle1') : t('investor.manage.user.details.subtitle2')"
             :data="oldData?.userinfoDetailVo" :label-width="160" :cell-props="detailProps2" :column="2">
+            <!-- 证件类型 -->
+            <template #cardTypeId="{ value }">
+                <p>{{ certificatetypeEnum.getEnumTypeName(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.cardTypeId !== value">
+                    {{ certificatetypeEnum.getEnumTypeName(newData.userinfoDetailVo.cardTypeId) }}
+                </p>
+            </template>
+            <!-- 证件号码 -->
+            <template #cardNum="{ value }">
+                <p>{{ value }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.cardNum !== value">
+                    {{ newData.userinfoDetailVo.cardNum }}
+                </p>
+            </template>
+            <!-- 公司 -->
+            <template #company="{ value }">
+                <p>{{ handleNoneValue(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.company !== value">
+                    {{ handleNoneValue(newData.userinfoDetailVo.company) }}
+                </p>
+            </template>
+            <!-- 联系人 -->
+            <template #contactName="{ value }">
+                <p>{{ handleNoneValue(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.contactName !== value">
+                    {{ handleNoneValue(newData.userinfoDetailVo.contactName) }}
+                </p>
+            </template>
+            <!-- 性别 -->
+            <template #sex="{ value }">
+                <p>{{ getGenderName(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.sex !== value">
+                    {{ getGenderName(newData.userinfoDetailVo.sex) }}
+                </p>
+            </template>
+            <!-- 手机号 -->
+            <template #mobile="{ value }">
+                <p>{{ handleNoneValue(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.mobile !== value">
+                    {{ handleNoneValue(newData.userinfoDetailVo.mobile) }}
+                </p>
+            </template>
+            <!-- 联系电话 -->
+            <template #telPhone="{ value }">
+                <p>{{ handleNoneValue(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.telPhone !== value">
+                    {{ handleNoneValue(newData.userinfoDetailVo.mobile) }}
+                </p>
+            </template>
+            <!-- 地址 -->
+            <template #address="{ value }">
+                <p>{{ handleNoneValue(oldData?.userinfoDetailVo.pathName + value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.address !== value">
+                    {{ handleNoneValue(newData.userinfoDetailVo.pathName + newData.userinfoDetailVo.address) }}
+                </p>
+            </template>
+            <!-- 邮政编码 -->
+            <template #postalCode="{ value }">
+                <p>{{ handleNoneValue(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.postalCode !== value">
+                    {{ handleNoneValue(newData.userinfoDetailVo.postalCode) }}
+                </p>
+            </template>
+            <!-- 邮箱 -->
+            <template #email="{ value }">
+                <p>{{ handleNoneValue(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.email !== value">
+                    {{ handleNoneValue(newData.userinfoDetailVo.email) }}
+                </p>
+            </template>
+            <!-- 备注 -->
+            <template #remark="{ value }">
+                <p>{{ handleNoneValue(value) }}</p>
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.remark !== value">
+                    {{ handleNoneValue(newData.userinfoDetailVo.remark) }}
+                </p>
+            </template>
             <!-- 证件照正面 -->
             <template #cardFrontPhotoUrl="{ value }">
                 <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
+                <template v-if="newData && newData.userinfoDetailVo.cardFrontPhotoUrl !== value">
+                    <el-image :src="newData.userinfoDetailVo.cardFrontPhotoUrl" fit="cover" lazy
+                        style="width: 128px; height: 72px" />
+                </template>
             </template>
             <!-- 证件照反面 -->
             <template #cardBackPhotoUrl="{ value }">
                 <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
+                <template v-if="newData && newData.userinfoDetailVo.cardFrontPhotoUrl !== value">
+                    <el-image :src="newData.userinfoDetailVo.cardFrontPhotoUrl" fit="cover" lazy
+                        style="width: 128px; height: 72px" />
+                </template>
             </template>
-            <!-- 通迅地址 -->
-            <template #address="{ value }">
-                {{ handleNoneValue(oldData?.userinfoDetailVo.pathName + value) }}
+            <!-- 手持证件照 -->
+            <template #halfBodyPhotoUrl="{ value }">
+                <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
+                <template v-if="newData && newData.userinfoDetailVo.halfBodyPhotoUrl !== value">
+                    <el-image :src="newData.userinfoDetailVo.halfBodyPhotoUrl" fit="cover" lazy
+                        style="width: 128px; height: 72px" />
+                </template>
             </template>
             <!-- 法人身份证正面 -->
             <template #legalCardFrontPhotoUrl="{ value }">
                 <el-image :src="value" fit="cover" lazy style="width: 128px; height: 72px" />
+                <template v-if="newData && newData.userinfoDetailVo.legalCardFrontPhotoUrl !== value">
+                    <el-image :src="newData.userinfoDetailVo.legalCardFrontPhotoUrl" fit="cover" lazy
+                        style="width: 128px; height: 72px" />
+                </template>
             </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 v-if="newData && newData.userinfoDetailVo.legalCardBackPhotoUrl !== value">
+                    <el-image :src="newData.userinfoDetailVo.legalCardBackPhotoUrl" fit="cover" lazy
+                        style="width: 128px; height: 72px" />
+                </template>
             </template>
         </app-table-details>
         <template #footer>
@@ -98,10 +205,8 @@ const areastatusEnum = useEnum('areastatus')
 const modifystatusEnum = useEnum('modifystatus')
 // 企业性质枚举
 const biznatureEnum = useEnum('biznature')
-// 个人证件类型
-const certypepersonEnum = useEnum('certypeperson')
-// 企业证件类型
-const certypecompanyEnum = useEnum('certypecompany')
+// 证件类型
+const certificatetypeEnum = useEnum('certificatetype')
 
 useRequest(queryInvestorListDetail, {
     params: {
@@ -157,7 +262,7 @@ const detailProps1: CellProp[] = [
     { prop: 'createName', formatLabel: () => oldData.value?.userinfoDetailVo.openMode === 1 ? 'investor.manage.user.details.createName1' : 'investor.manage.user.details.createName2' },
     { prop: 'accountStatus', label: 'investor.manage.user.details.accountStatus', formatValue: (val) => areastatusEnum.getEnumTypeName(val), show: !hideField },
     { prop: 'modifyStatus', label: 'investor.manage.user.details.modifyStatus', formatValue: (val) => modifystatusEnum.getEnumTypeName(val) },
-    { prop: 'isAuth', label: 'investor.manage.user.details.isAuth', formatValue: (val) => flagEnum.getEnumTypeName(val) },
+    { prop: 'isAuth', label: 'investor.manage.user.details.isAuth' },
     { prop: 'modifyTime', label: 'investor.manage.user.details.modifyTime', formatValue: (val) => formatDate(val) },
     { prop: 'modifyName', label: 'investor.manage.user.details.modifyName' },
     { prop: 'auditTime', label: 'investor.manage.user.details.auditTime', formatValue: (val) => formatDate(val), show: !hideField },
@@ -169,7 +274,7 @@ const detailProps2 = computed<CellProp[]>(() => {
     const type = oldData.value?.userinfoDetailVo.userinfoType
     if (type === UserInfoType.Personal) {
         return [
-            { prop: 'cardTypeId', label: 'investor.manage.user.details.cardTypeId', formatValue: (val) => certypepersonEnum.getEnumTypeName(val) },
+            { prop: 'cardTypeId', label: 'investor.manage.user.details.cardTypeId' },
             { prop: 'cardNum', label: 'investor.manage.user.details.cardNum' },
             { prop: 'company', label: 'investor.manage.user.details.company' },
             { prop: 'sex', label: 'investor.manage.user.details.sex', formatValue: (val) => getGenderName(val) },
@@ -187,7 +292,7 @@ const detailProps2 = computed<CellProp[]>(() => {
     if (type === UserInfoType.Company) {
         return [
             { prop: 'needInvoice', label: 'investor.manage.user.details.needInvoice' },
-            { prop: 'cardTypeId', label: 'investor.manage.user.details.cardTypeId', formatValue: (val) => certypecompanyEnum.getEnumTypeName(val) },
+            { prop: 'cardTypeId', label: 'investor.manage.user.details.cardTypeId' },
             { prop: 'cardNum', label: 'investor.manage.user.details.cardNum' },
             { prop: 'customerName', label: 'investor.manage.user.details.customerName' },
             { prop: 'bizNature', label: 'investor.manage.user.details.bizNature', formatValue: (val) => biznatureEnum.getEnumTypeName(val) },

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

@@ -115,7 +115,8 @@
                         <app-upload v-model="uploadFiles.cardFrontPhotoUrl" :file-types="['image']"
                             :type-message="t('common.tips21')" />
                     </el-form-item>
-                    <el-form-item :label="t('investor.manage.user.edit.halfBodyPhotoUrl')" prop="halfBodyPhotoUrl">
+                    <el-form-item :label="config78 || t('investor.manage.user.edit.halfBodyPhotoUrl')"
+                        prop="halfBodyPhotoUrl" v-if="config54 === '1'">
                         <app-upload v-model="uploadFiles.halfBodyPhotoUrl" :file-types="['image']"
                             :type-message="t('common.tips21')" />
                     </el-form-item>
@@ -153,6 +154,7 @@ import { ElMessage, FormInstance, FormRules, UploadUserFile } from 'element-plus
 import { handleNoneValue, parseFilePaths, extractFilePaths } from '@/filters'
 import { useEnum } from '@/hooks/enum'
 import { useRequest } from '@/hooks/request'
+import { getConfigValue } from '@/business/common'
 import { investorEdit, queryInvestorListDetail } from '@/services/api/investor'
 import { getGenderList, UserInfoType } from '@/constants/member'
 import AppDrawer from '@pc/components/base/drawer/index.vue'
@@ -194,6 +196,9 @@ const uploadFiles = reactive<{
     otherUrl: []
 })
 
+const config54 = getConfigValue(54)
+const config78 = getConfigValue(78)
+
 // 是否个人
 const isPerson = computed(() => formData.value.userinfoDetailVo.userinfoType === UserInfoType.Personal)
 

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


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

@@ -62,7 +62,7 @@ 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'
+import AduitDialog from './aduit/index.vue'
 
 const props = defineProps({
     record: {

+ 16 - 16
src/packages/pc/views/member/subinstitution/manage/components/details/index.vue

@@ -7,7 +7,7 @@
             <!-- 机构名称 -->
             <template #accountName="{ value }">
                 <p>{{ value }}</p>
-                <p class="red" v-if="newData && newData.userAccountDetailVo.accountName !== value">
+                <p class="g-red" v-if="newData && newData.userAccountDetailVo.accountName !== value">
                     {{ newData.userAccountDetailVo.accountName }}
                 </p>
             </template>
@@ -19,14 +19,14 @@
             <!-- 名称 -->
             <template #customerName="{ value }">
                 <p>{{ value }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.customerName !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.customerName !== value">
                     {{ newData.userinfoDetailVo.customerName }}
                 </p>
             </template>
             <!-- 公司 -->
             <template #company="{ value }">
                 <p>{{ handleNoneValue(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.company !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.company !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.company) }}
                 </p>
             </template>
@@ -34,7 +34,7 @@
             <template #bizNature="{ value }">
                 <template v-if="value">
                     <p>{{ biznatureEnum.getEnumTypeName(value) }}</p>
-                    <p class="red" v-if="newData && newData.userinfoDetailVo.bizNature !== value">
+                    <p class="g-red" v-if="newData && newData.userinfoDetailVo.bizNature !== value">
                         {{ biznatureEnum.getEnumTypeName(newData.userinfoDetailVo.bizNature) }}
                     </p>
                 </template>
@@ -43,70 +43,70 @@
             <!-- 证件类型 -->
             <template #cardTypeId="{ value }">
                 <p>{{ certificatetypeEnum.getEnumTypeName(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.cardTypeId !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.cardTypeId !== value">
                     {{ certificatetypeEnum.getEnumTypeName(newData.userinfoDetailVo.cardTypeId) }}
                 </p>
             </template>
             <!-- 证件号码 -->
             <template #cardNum="{ value }">
                 <p>{{ value }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.cardNum !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.cardNum !== value">
                     {{ newData.userinfoDetailVo.cardNum }}
                 </p>
             </template>
             <!-- 联系人 -->
             <template #contactName="{ value }">
                 <p>{{ handleNoneValue(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.contactName !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.contactName !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.contactName) }}
                 </p>
             </template>
             <!-- 性别 -->
             <template #sex="{ value }">
                 <p>{{ getGenderName(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.sex !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.sex !== value">
                     {{ getGenderName(newData.userinfoDetailVo.sex) }}
                 </p>
             </template>
             <!-- 手机号 -->
             <template #mobile="{ value }">
                 <p>{{ handleNoneValue(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.mobile !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.mobile !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.mobile) }}
                 </p>
             </template>
             <!-- 联系电话 -->
             <template #telPhone="{ value }">
                 <p>{{ handleNoneValue(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.telPhone !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.telPhone !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.mobile) }}
                 </p>
             </template>
             <!-- 地址 -->
             <template #address="{ value }">
                 <p>{{ handleNoneValue(oldData?.userinfoDetailVo.pathName + value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.address !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.address !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.pathName + newData.userinfoDetailVo.address) }}
                 </p>
             </template>
             <!-- 邮政编码 -->
             <template #postalCode="{ value }">
                 <p>{{ handleNoneValue(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.postalCode !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.postalCode !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.postalCode) }}
                 </p>
             </template>
             <!-- 邮箱 -->
             <template #email="{ value }">
                 <p>{{ handleNoneValue(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.email !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.email !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.email) }}
                 </p>
             </template>
             <!-- 备注 -->
             <template #remark="{ value }">
                 <p>{{ handleNoneValue(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.remark !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.remark !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.remark) }}
                 </p>
             </template>
@@ -157,14 +157,14 @@
             <!-- 银行名称 -->
             <template #bankName="{ value }">
                 <p>{{ handleNoneValue(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.bankName !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.bankName !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.bankName) }}
                 </p>
             </template>
             <!-- 银行账户 -->
             <template #bankAccount="{ value }">
                 <p>{{ handleNoneValue(value) }}</p>
-                <p class="red" v-if="newData && newData.userinfoDetailVo.bankAccount !== value">
+                <p class="g-red" v-if="newData && newData.userinfoDetailVo.bankAccount !== value">
                     {{ handleNoneValue(newData.userinfoDetailVo.bankAccount) }}
                 </p>
             </template>

+ 1 - 1
src/packages/pc/views/member/subinstitution/transfer/components/edit/index.vue

@@ -58,7 +58,7 @@
                     {{ inUserInfo ? decryptAES(inUserInfo.cardnum) : handleNoneValue() }}
                 </el-form-item>
                 <el-form-item class="el-form-item--row">
-                    <span class="red">{{ t('member.subinstitution.transfer.edit.tips1') }}</span>
+                    <span class="g-red">{{ t('member.subinstitution.transfer.edit.tips1') }}</span>
                 </el-form-item>
             </fieldset>
         </el-form>

+ 4 - 0
src/services/api/common/index.ts

@@ -86,4 +86,8 @@ export function queryExchSonOrgin(options: CommonFetchOptions<{ request: Model.E
  */
 export function queryUserinfoByUserId(options: CommonFetchOptions<{ request: Model.UserinfoByUserIdReq; response: Model.UserinfoByUserIdRsp; }>) {
     return httpClient.commonRequest('/common/queryUserinfoByUserId', 'get', options)
+}
+
+export function queryConfig(options: CommonFetchOptions<{ request: Model.ConfigReq; response: Model.ConfigRsp; }>) {
+    return httpClient.commonRequest('/common/queryConfig', 'get', options)
 }

+ 14 - 0
src/types/model/common.d.ts

@@ -302,4 +302,18 @@ declare namespace Model {
         wechat: string; // 微信(加密存储)
         wskhinfo: string; // 开户申请信息(JSON)
     }
+
+    interface ConfigReq {
+        configid: number;
+    }
+
+    interface ConfigRsp {
+        configid: number; // 配置ID
+        configtype: number; // 配置类型
+        configvalue: string; // 配置值
+        createtime: string; // 创建时间
+        modifiedby: number; // 修改人帐号
+        modifiedtime: string; // 修改时间
+        remark: string; // 备注
+    }
 }