li.shaoyi 11 ay önce
ebeveyn
işleme
ae54c01b12
32 değiştirilmiş dosya ile 394 ekleme ve 458 silme
  1. 1 1
      src/packages/pc/components/base/table-filter-v2/index.vue
  2. 0 1
      src/packages/pc/components/modules/select-cusbank/index.vue
  3. 5 9
      src/packages/pc/components/modules/select-goods/index.vue
  4. 62 0
      src/packages/pc/components/modules/select-institution/index.vue
  5. 8 3
      src/packages/pc/components/modules/select-investor/index.vue
  6. 5 5
      src/packages/pc/components/modules/select-member/index.vue
  7. 1 1
      src/packages/pc/views/account/fundacct/components/bankinout/index.vue
  8. 1 1
      src/packages/pc/views/admin/user/components/edit/index.vue
  9. 8 5
      src/packages/pc/views/investor/custom/group/components/edit/index.vue
  10. 8 6
      src/packages/pc/views/investor/custom/riskcfg/components/edit/index.vue
  11. 42 28
      src/packages/pc/views/investor/manage/user/components/edit/index.vue
  12. 27 16
      src/packages/pc/views/investor/user/open/components/edit/index.vue
  13. 1 1
      src/packages/pc/views/marketrun/monitor/account/index.vue
  14. 5 5
      src/packages/pc/views/member/institution/goodscfg/components/edit/index.vue
  15. 7 4
      src/packages/pc/views/member/institution/goodscfg/index.vue
  16. 1 1
      src/packages/pc/views/member/institution/open/components/edit/index.vue
  17. 5 3
      src/packages/pc/views/member/institution/riskcfg/index.vue
  18. 72 33
      src/packages/pc/views/member/subinstitution/manage/components/edit/index.vue
  19. 0 262
      src/packages/pc/views/member/subinstitution/user/components/edit/index.vue
  20. 65 51
      src/packages/pc/views/member/subinstitution/user/index.vue
  21. 1 1
      src/packages/pc/views/profitshare/institution/group/components/edit/index.vue
  22. 1 1
      src/packages/pc/views/query/internal/goodssumm/index.vue
  23. 3 3
      src/packages/pc/views/query/internal/institutionsumm/index.vue
  24. 1 1
      src/packages/pc/views/query/order/close/index.vue
  25. 6 4
      src/packages/pc/views/query/order/report/index.vue
  26. 1 1
      src/packages/pc/views/query/order/terminate/index.vue
  27. 4 3
      src/packages/pc/views/query/other/institution_bank/index.vue
  28. 6 5
      src/packages/pc/views/query/other/investor_bank/index.vue
  29. 1 1
      src/packages/pc/views/system/menu/components/edit/index.vue
  30. 7 0
      src/services/api/common/index.ts
  31. 33 0
      src/types/model/common.d.ts
  32. 6 2
      src/types/model/member.d.ts

+ 1 - 1
src/packages/pc/components/base/table-filter-v2/index.vue

@@ -5,7 +5,7 @@
       <slot :name="item.field" :item="item">
         <el-form-item :label="item.label" :prop="item.field">
           <el-select :placeholder="item.placeholder ?? '请选择'" v-model="item.value" :multiple="item.multiple"
-            collapse-tags @change="item.onChange" v-if="item.options">
+            collapse-tags clearable @change="item.onChange" v-if="item.options">
             <el-option v-for="option in item.options()" :key="option.value" :value="option.value"
               :label="option.label" />
           </el-select>

+ 0 - 1
src/packages/pc/components/modules/select-cusbank/index.vue

@@ -14,7 +14,6 @@ import { getAllBankCus } from '@/services/api/bank'
 
 const props = defineProps({
     modelValue: String,
-    usertype: String,
     placeholder: {
         type: String,
         default: '请选择'

+ 5 - 9
src/packages/pc/components/modules/select-goods/index.vue

@@ -12,16 +12,16 @@
 </template>
 
 <script lang="ts" setup>
-import { computed, toRaw } from 'vue'
+import { computed, toRaw, PropType } from 'vue'
 import { useRequest } from '@/hooks/request'
 import { queryGoodsSelect } from '@/services/api/common'
 import AppRemoteSelect from '@pc/components/base/remote-select/index.vue'
 
 const props = defineProps({
     modelValue: [Number, String],
-    marketid: Number,
-    trademodels: String,
-    status: String
+    params: {
+        type: Object as PropType<Model.GoodsSelectReq>
+    },
 })
 
 const emit = defineEmits(['update:modelValue', 'change'])
@@ -32,11 +32,7 @@ const selectedValue = computed({
 })
 
 const { dataList, loading, run } = useRequest(queryGoodsSelect, {
-    params: {
-        trademodels: props.trademodels,
-        marketId: props.marketid,
-        goodsStatusIds: props.status
-    }
+    params: props.params
 })
 
 const onReset = () => {

+ 62 - 0
src/packages/pc/components/modules/select-institution/index.vue

@@ -0,0 +1,62 @@
+<template>
+    <app-remote-select v-model="selectedValue" :options="dataList"
+        :option-props="{ label: 'accountname', value: 'userid' }" :disabled="disabled" :remote-method="remoteMethod"
+        @change="onChange" @reset="onReset">
+        <template #default="{ option }">
+            <div style="display: flex;justify-content: space-between;">
+                <span>{{ option.userid }}</span>
+                <span>{{ option.accountname }}</span>
+            </div>
+        </template>
+    </app-remote-select>
+</template>
+
+<script lang="ts" setup>
+import { computed, toRaw, PropType } from 'vue'
+import { useRequest } from '@/hooks/request'
+import { queryExchSonOrgin } from '@/services/api/common'
+import AppRemoteSelect from '@pc/components/base/remote-select/index.vue'
+
+const props = defineProps({
+    modelValue: [Number, String],
+    params: {
+        type: Object as PropType<Model.ExchSonOrginReq>
+    },
+    disabled: Boolean
+})
+
+const emit = defineEmits(['update:modelValue', 'change'])
+
+const selectedValue = computed({
+    get: () => props.modelValue,
+    set: (val) => emit('update:modelValue', val)
+})
+
+const { dataList, loading, run } = useRequest(queryExchSonOrgin, {
+    params: props.params
+})
+
+const onReset = () => {
+    if (!loading.value) {
+        selectedValue.value = undefined
+        run()
+    }
+}
+
+const remoteMethod = (query: string) => {
+    if (!loading.value) {
+        if (query) {
+            run({
+                searchcode: query
+            })
+        } else if (!dataList.value.length) {
+            onReset()
+        }
+    }
+}
+
+const onChange = (value?: number) => {
+    const item = dataList.value.find((e) => e.userid === value)
+    emit('change', toRaw(item))
+}
+</script>

+ 8 - 3
src/packages/pc/components/modules/select-investor/index.vue

@@ -13,13 +13,16 @@
 </template>
 
 <script lang="ts" setup>
-import { computed, toRaw } from 'vue'
+import { computed, toRaw, PropType } from 'vue'
 import { useRequest } from '@/hooks/request'
 import { queryInvestorSelect } from '@/services/api/common'
 import AppRemoteSelect from '@pc/components/base/remote-select/index.vue'
 
 const props = defineProps({
-    modelValue: String
+    modelValue: String,
+    params: {
+        type: Object as PropType<Model.InvestorSelectReq>
+    },
 })
 
 const emit = defineEmits(['update:modelValue', 'change'])
@@ -29,7 +32,9 @@ const selectedValue = computed({
     set: (val) => emit('update:modelValue', val)
 })
 
-const { dataList, loading, run } = useRequest(queryInvestorSelect)
+const { dataList, loading, run } = useRequest(queryInvestorSelect, {
+    params: props.params
+})
 
 const onReset = () => {
     if (!loading.value) {

+ 5 - 5
src/packages/pc/components/modules/select-member/index.vue

@@ -12,14 +12,16 @@
 </template>
 
 <script lang="ts" setup>
-import { computed, toRaw } from 'vue'
+import { computed, toRaw, PropType } from 'vue'
 import { useRequest } from '@/hooks/request'
 import { queryOrganSelect } from '@/services/api/common'
 import AppRemoteSelect from '@pc/components/base/remote-select/index.vue'
 
 const props = defineProps({
     modelValue: [Number, String],
-    usertype: String,
+    params: {
+        type: Object as PropType<Model.OrganSelectReq>
+    },
     disabled: Boolean
 })
 
@@ -31,9 +33,7 @@ const selectedValue = computed({
 })
 
 const { dataList, loading, run } = useRequest(queryOrganSelect, {
-    params: {
-        usertype: props.usertype
-    }
+    params: props.params
 })
 
 const onReset = () => {

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

@@ -53,7 +53,7 @@
                     </el-form-item>
                 </template>
                 <el-form-item class="el-form-item--row" :label="t('account.tradeacct.bankinout.remark')" prop="remark">
-                    <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="2" :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">

+ 1 - 1
src/packages/pc/views/admin/user/components/edit/index.vue

@@ -21,7 +21,7 @@
                 </el-select>
             </el-form-item>
             <el-form-item :label="t('admin.user.edit.remark')" prop="remark">
-                <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="2"
+                <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="3"
                     :placeholder="t('common.pleaseenter')" />
             </el-form-item>
         </el-form>

+ 8 - 5
src/packages/pc/views/investor/custom/group/components/edit/index.vue

@@ -1,11 +1,14 @@
 <!-- 交易商管理-个性化管理-交易商分组管理-编辑 -->
 <template>
-    <app-drawer :title="t('investor.custom.group.edit.title')" width="900" v-model:show="show" :refresh="refresh" :loading="loading">
+    <app-drawer :title="t('investor.custom.group.edit.title')" width="900" v-model:show="show" :refresh="refresh"
+        :loading="loading">
         <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.group.edit.subtitle1') }}</legend>
-                <el-form-item :label="t('investor.custom.group.edit.areauserid')" prop="areauserid" v-if="userStore.userInfo.releType !== 2">
-                    <app-select-member v-model="formData.areauserid" usertype="2" :placeholder="t('investor.custom.group.edit.tips1')" />
+                <el-form-item :label="t('investor.custom.group.edit.areauserid')" prop="areauserid"
+                    v-if="userStore.userInfo.releType !== 2">
+                    <app-select-member v-model="formData.areauserid" :params="{ usertype: '2' }"
+                        :placeholder="t('investor.custom.group.edit.tips1')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.custom.group.edit.groupname')" prop="groupname">
                     <el-input v-model="formData.groupname" maxlength="50" :placeholder="t('common.pleaseenter')" />
@@ -20,8 +23,8 @@
                 </el-form-item>
             </fieldset>
         </el-form>
-        <app-table-details :title="t('investor.custom.group.edit.subtitle2')" :data="selectedItem" :label-width="160" :cell-props="detailProps"
-                :column="2" v-if="selectedItem" />
+        <app-table-details :title="t('investor.custom.group.edit.subtitle2')" :data="selectedItem" :label-width="160"
+            :cell-props="detailProps" :column="2" v-if="selectedItem" />
         <template #footer>
             <el-button @click="onCancel(false)">{{ t('operation.close') }}</el-button>
             <el-button type="primary" @click="onSubmit">{{ t('operation.save') }}</el-button>

+ 8 - 6
src/packages/pc/views/investor/custom/riskcfg/components/edit/index.vue

@@ -1,12 +1,14 @@
 <!-- 交易商管理-个性化管理-风控个性化-编辑 -->
 <template>
-    <app-drawer :title="t('investor.custom.riskcfg.edit.title')" width="900" v-model:show="show" :refresh="refresh" :loading="loading">
+    <app-drawer :title="t('investor.custom.riskcfg.edit.title')" width="900" v-model:show="show" :refresh="refresh"
+        :loading="loading">
         <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('investor.custom.riskcfg.edit.subtitle1') }}</legend>
                 <el-form-item label="交易商" prop="userid">
-                    <app-select-member v-model="formData.userid" usertype="5" :placeholder="t('investor.custom.riskcfg.edit.tips1')"
-                        :disabled="!!record" @change="onMemberChange" />
+                    <app-select-member v-model="formData.userid" :params="{ usertype: '5' }"
+                        :placeholder="t('investor.custom.riskcfg.edit.tips1')" :disabled="!!record"
+                        @change="onMemberChange" />
                 </el-form-item>
                 <el-form-item :label="t('investor.custom.riskcfg.edit.accountid')" prop="accountid">
                     <el-select v-model="formData.accountid" :disabled="!!record">
@@ -25,8 +27,8 @@
                 </el-form-item>
             </fieldset>
         </el-form>
-        <app-table-details :title="t('investor.custom.riskcfg.edit.subtitle2')" :data="selectedItem" :label-width="160" :cell-props="detailProps" :column="2"
-            v-if="selectedItem" />
+        <app-table-details :title="t('investor.custom.riskcfg.edit.subtitle2')" :data="selectedItem" :label-width="160"
+            :cell-props="detailProps" :column="2" v-if="selectedItem" />
         <template #footer>
             <el-button @click="onCancel(false)">{{ t('operation.close') }}</el-button>
             <el-button type="primary" @click="onSubmit">{{ t('operation.save') }}</el-button>
@@ -63,7 +65,7 @@ const refresh = ref(false)
 const loading = ref(false)
 const configs = reactive<Model.RiskRatioTypeForMarketerRsp[]>([])
 
-const formData = ref<Partial<Model.AddAccountRiskConfigReq>>({})
+const formData = ref<Model.AddAccountRiskConfigReq>({})
 
 // 选中的风险率配置
 const selectedItem = computed(() => configs.find((e) => e.customertype === formData.value.customertype))

+ 42 - 28
src/packages/pc/views/investor/manage/user/components/edit/index.vue

@@ -1,6 +1,7 @@
 <!-- 交易商管理-交易商管理-交易商管理-编辑 -->
 <template>
-    <app-drawer :title="t('investor.manage.user.edit.title')" width="900" v-model:show="show" :refresh="refresh" :loading="loading">
+    <app-drawer :title="t('investor.manage.user.edit.title')" width="900" v-model:show="show" :refresh="refresh"
+        :loading="loading">
         <el-form ref="formRef" class="el-form--horizontal" label-width="140px" :model="formData.userinfoDetailVo"
             :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
@@ -9,13 +10,14 @@
                     {{ formData.userAccountDetailVo.userId }}
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.accountName')" prop="accountName">
-                    <el-input v-model="formData.userAccountDetailVo.accountName" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input v-model="formData.userAccountDetailVo.accountName" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.memberUserName')" prop="memberUserName">
                     {{ formData.userAccountDetailVo.memberUserName }}
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.parentuserid')" prop="parentuserid">
-                    <app-select-member v-model="formData.userAccountDetailVo.parentuserid" usertype="3"
+                    <app-select-member v-model="formData.userAccountDetailVo.parentuserid" :params="{ usertype: '3' }"
                         :placeholder="t('investor.manage.user.edit.tips2')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.refereeUserName')" prop="refereeUserName">
@@ -30,27 +32,31 @@
                 </el-form-item>
             </fieldset>
             <fieldset class="g-fieldset el-form--horizontal">
-                <legend class="g-fieldset__legend">{{ isPerson ? t('investor.manage.user.edit.person') : t('investor.manage.user.edit.company1') }}{{ t('investor.manage.user.edit.profile') }}</legend>
+                <legend class="g-fieldset__legend">{{ isPerson ? t('investor.manage.user.edit.person') :
+                    t('investor.manage.user.edit.company1') }}{{ t('investor.manage.user.edit.profile') }}</legend>
                 <el-form-item :label="t('investor.manage.user.edit.cardTypeId')" prop="cardTypeId">
                     <app-enum code="certypeperson" v-model="formData.userinfoDetailVo.cardTypeId" v-if="isPerson" />
                     <app-enum code="certypecompany" v-model="formData.userinfoDetailVo.cardTypeId" v-else />
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.cardNum')" prop="cardNum">
-                    <el-input v-model="formData.userinfoDetailVo.cardNum" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input v-model="formData.userinfoDetailVo.cardNum" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <template v-if="!isPerson">
                     <el-form-item :label="t('investor.manage.user.edit.customerName')" prop="customerName">
-                        <el-input v-model="formData.userinfoDetailVo.customerName" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                        <el-input v-model="formData.userinfoDetailVo.customerName" maxlength="50"
+                            :placeholder="t('common.pleaseenter')" />
                     </el-form-item>
                     <el-form-item :label="t('investor.manage.user.edit.bizNature')" prop="bizNature" v-if="!isPerson">
                         <app-enum code="biznature" v-model="formData.userinfoDetailVo.bizNature" :empty-values="[0]" />
                     </el-form-item>
                     <el-form-item :label="t('investor.manage.user.edit.legalPersonName')" prop="legalPersonName">
                         <el-input v-model="formData.userinfoDetailVo.legalPersonName" maxlength="50"
-                        :placeholder="t('common.pleaseenter')" />
+                            :placeholder="t('common.pleaseenter')" />
                     </el-form-item>
                     <el-form-item :label="t('investor.manage.user.edit.contactName')" prop="contactName">
-                        <el-input v-model="formData.userinfoDetailVo.contactName" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                        <el-input v-model="formData.userinfoDetailVo.contactName" maxlength="50"
+                            :placeholder="t('common.pleaseenter')" />
                     </el-form-item>
                 </template>
                 <el-form-item :label="t('investor.manage.user.edit.sex')" prop="sex">
@@ -61,15 +67,16 @@
                     </el-radio-group>
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.company')" prop="company" v-if="isPerson">
-                    <el-input v-model="formData.userinfoDetailVo.company" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input v-model="formData.userinfoDetailVo.company" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.mobile')" prop="mobile">
                     <el-input type="number" v-model="formData.userinfoDetailVo.mobile" maxlength="50"
-                    :placeholder="t('common.pleaseenter')" />
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.telPhone')" prop="telPhone">
                     <el-input type="number" v-model="formData.userinfoDetailVo.telPhone" maxlength="50"
-                    :placeholder="t('common.pleaseenter')" />
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item class="el-form-item--row" :label="t('investor.manage.user.edit.region')" prop="region">
                     <app-region class="el-form-item--col" v-model:province="formData.userinfoDetailVo.provinceid"
@@ -77,51 +84,58 @@
                         v-model:district="formData.userinfoDetailVo.districtid" />
                 </el-form-item>
                 <el-form-item class="el-form-item--row" :label="t('investor.manage.user.edit.address')" prop="address">
-                    <el-input v-model="formData.userinfoDetailVo.address" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input v-model="formData.userinfoDetailVo.address" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.postalCode')" prop="postalCode">
-                    <el-input v-model="formData.userinfoDetailVo.postalCode" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input v-model="formData.userinfoDetailVo.postalCode" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.manage.user.edit.email')" prop="email">
-                    <el-input v-model="formData.userinfoDetailVo.email" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input v-model="formData.userinfoDetailVo.email" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item class="el-form-item--row" :label="t('investor.manage.user.edit.wechat')" prop="wechat">
-                    <el-input v-model="formData.userinfoDetailVo.wechat" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input v-model="formData.userinfoDetailVo.wechat" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <template v-if="isPerson">
                     <el-form-item :label="t('investor.manage.user.edit.cardFrontPhotoUrl')" prop="cardFrontPhotoUrl">
                         <app-upload v-model="uploadFiles.cardFrontPhotoUrl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
+                            :type-message="t('common.tips21')" />
                     </el-form-item>
                     <el-form-item :label="t('investor.manage.user.edit.cardBackPhotoUrl')" prop="cardBackPhotoUrl">
                         <app-upload v-model="uploadFiles.cardBackPhotoUrl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
+                            :type-message="t('common.tips21')" />
                     </el-form-item>
                 </template>
                 <template v-else>
                     <el-form-item :label="t('investor.manage.user.edit.cardFrontPhotoUrl1')" prop="cardFrontPhotoUrl">
                         <app-upload v-model="uploadFiles.cardFrontPhotoUrl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
+                            :type-message="t('common.tips21')" />
                     </el-form-item>
                     <el-form-item :label="t('investor.manage.user.edit.halfBodyPhotoUrl')" prop="halfBodyPhotoUrl">
                         <app-upload v-model="uploadFiles.halfBodyPhotoUrl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
+                            :type-message="t('common.tips21')" />
                     </el-form-item>
-                    <el-form-item :label="t('investor.manage.user.edit.legalCardFrontPhotoUrl')" prop="legalCardFrontPhotoUrl">
+                    <el-form-item :label="t('investor.manage.user.edit.legalCardFrontPhotoUrl')"
+                        prop="legalCardFrontPhotoUrl">
                         <app-upload v-model="uploadFiles.legalCardFrontPhotoUrl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
+                            :type-message="t('common.tips21')" />
                     </el-form-item>
-                    <el-form-item :label="t('investor.manage.user.edit.legalCardBackPhotoUrl')" prop="legalCardBackPhotoUrl">
+                    <el-form-item :label="t('investor.manage.user.edit.legalCardBackPhotoUrl')"
+                        prop="legalCardBackPhotoUrl">
                         <app-upload v-model="uploadFiles.legalCardBackPhotoUrl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
+                            :type-message="t('common.tips21')" />
                     </el-form-item>
                     <el-form-item :label="t('investor.manage.user.edit.otherUrl')" prop="otherUrl">
-                        <app-upload v-model="uploadFiles.otherUrl" :file-types="['image']" :type-message="t('common.tips21')" />
+                        <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" :label="t('investor.manage.user.edit.remark')" prop="remark">
-                    <el-input type="textarea" v-model="formData.userinfoDetailVo.remark" maxlength="200" :rows="2"
-                    :placeholder="t('common.pleaseenter')" />
+                    <el-input type="textarea" v-model="formData.userinfoDetailVo.remark" maxlength="200" :rows="3"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
             </fieldset>
         </el-form>
@@ -224,7 +238,7 @@ const { loading, run } = useRequest(queryInvestorListDetail, {
 
 // 表单验证规则
 const formRules: FormRules = {
-    accountName: [{ 
+    accountName: [{
         required: true,
         validator: (rule, value, callback) => {
             if (formData.value.userAccountDetailVo.accountName) {
@@ -233,7 +247,7 @@ const formRules: FormRules = {
                 callback(new Error(t('investor.manage.user.edit.tips1')))
             }
         },
-     }],
+    }],
     cardTypeId: [{ required: true }],
     cardNum: [{ required: true }],
     mobile: [{ required: true }]

+ 27 - 16
src/packages/pc/views/investor/user/open/components/edit/index.vue

@@ -1,21 +1,25 @@
 <!-- 交易商管理-开户管理-交易商开户-编辑 -->
 <template>
-    <app-drawer :title="t('investor.user.open.edit.title')" width="900" v-model:show="show" :refresh="refresh" :loading="loading">
+    <app-drawer :title="t('investor.user.open.edit.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">
             <!-- <el-form-item :label="t('investor.user.open.edit.memberareaid')" prop="memberareaid">
                 <el-input v-model="formData.memberareaid" maxlength="50" :placeholder="t('common.pleaseenter')" />
             </el-form-item> -->
             <el-form-item :label="t('investor.user.open.edit.areaid')" prop="areaid">
-                <app-select-member v-model="formData.areaid" usertype="3" :placeholder="t('investor.user.open.edit.tips1')" />
+                <app-select-member v-model="formData.areaid" :params="{ usertype: '3' }"
+                    :placeholder="t('investor.user.open.edit.tips1')" />
             </el-form-item>
             <el-form-item :label="t('investor.user.open.edit.brokerid')" prop="brokerid">
-                <app-select-member v-model="formData.brokerid" usertype="4" :placeholder="t('investor.user.open.edit.tips1')" />
+                <app-select-member v-model="formData.brokerid" :params="{ usertype: '4' }"
+                    :placeholder="t('investor.user.open.edit.tips1')" />
             </el-form-item>
             <el-form-item :label="t('investor.user.open.edit.referral')" prop="referral">
                 <app-select-investor v-model="formData.referral" :placeholder="t('investor.user.open.edit.tips1')" />
             </el-form-item>
-            <el-form-item class="el-form-item--row" :label="t('investor.user.open.edit.userinfotype')" prop="userinfotype">
+            <el-form-item class="el-form-item--row" :label="t('investor.user.open.edit.userinfotype')"
+                prop="userinfotype">
                 <el-radio-group v-model="formData.userinfotype">
                     <template v-for="item in getUserInfoTypeList()" :key="item.value">
                         <el-radio :label="item.label" :value="item.value" />
@@ -39,7 +43,8 @@
                     <el-input v-model="formData.username" maxlength="50" :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.user.open.edit.legalpersonname')" prop="legalpersonname">
-                    <el-input v-model="formData.legalpersonname" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input v-model="formData.legalpersonname" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
             </template>
             <el-form-item :label="t('investor.user.open.edit.cardtype')" prop="cardtype">
@@ -52,28 +57,30 @@
             <template v-if="isPerson">
                 <el-form-item :label="t('investor.user.open.edit.cardfrontphotourl')" prop="cardfrontphotourl">
                     <app-upload v-model="uploadFiles.cardfrontphotourl" :file-types="['image']"
-                    :type-message="t('common.tips21')" />
+                        :type-message="t('common.tips21')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.user.open.edit.cardbackphotourl')" prop="cardbackphotourl">
                     <app-upload v-model="uploadFiles.cardbackphotourl" :file-types="['image']"
-                    :type-message="t('common.tips21')" />
+                        :type-message="t('common.tips21')" />
                 </el-form-item>
             </template>
             <template v-else>
                 <el-form-item :label="t('investor.user.open.edit.cardfrontphotourl1')" prop="cardfrontphotourl">
                     <app-upload v-model="uploadFiles.cardfrontphotourl" :file-types="['image']"
-                    :type-message="t('common.tips21')" />
+                        :type-message="t('common.tips21')" />
                 </el-form-item>
-                <el-form-item :label="t('investor.user.open.edit.legalcardfrontphotourl')" prop="legalcardfrontphotourl">
+                <el-form-item :label="t('investor.user.open.edit.legalcardfrontphotourl')"
+                    prop="legalcardfrontphotourl">
                     <app-upload v-model="uploadFiles.legalcardfrontphotourl" :file-types="['image']"
-                    :type-message="t('common.tips21')" />
+                        :type-message="t('common.tips21')" />
                 </el-form-item>
                 <el-form-item :label="t('investor.user.open.edit.legalcardbackphotourl')" prop="legalcardbackphotourl">
                     <app-upload v-model="uploadFiles.legalcardbackphotourl" :file-types="['image']"
-                    :type-message="t('common.tips21')" />
+                        :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')" />
+                    <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">
@@ -84,7 +91,8 @@
                 <app-region class="el-form-item--col" v-model:province="formData.provinceid"
                     v-model:city="formData.cityid" v-model:district="formData.districtid" />
             </el-form-item>
-            <el-form-item class="el-form-item--row" :label="t('investor.user.open.edit.cardaddress')" prop="cardaddress">
+            <el-form-item class="el-form-item--row" :label="t('investor.user.open.edit.cardaddress')"
+                prop="cardaddress">
                 <el-input v-model="formData.cardaddress" maxlength="50" :placeholder="t('common.pleaseenter')" />
             </el-form-item>
             <template v-if="!isPerson">
@@ -100,10 +108,12 @@
                 </el-form-item>
             </template>
             <el-form-item :label="t('investor.user.open.edit.mobilephone')" prop="mobilephone">
-                <el-input type="number" v-model="formData.mobilephone" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                <el-input type="number" v-model="formData.mobilephone" maxlength="50"
+                    :placeholder="t('common.pleaseenter')" />
             </el-form-item>
             <el-form-item :label="t('investor.user.open.edit.telphone')" prop="telphone">
-                <el-input type="number" v-model="formData.telphone" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                <el-input type="number" v-model="formData.telphone" maxlength="50"
+                    :placeholder="t('common.pleaseenter')" />
             </el-form-item>
             <el-form-item :label="t('investor.user.open.edit.postalcode')" prop="postalcode">
                 <el-input v-model="formData.postalcode" maxlength="50" :placeholder="t('common.pleaseenter')" />
@@ -118,7 +128,8 @@
                 <el-input v-model="formData.email" maxlength="50" :placeholder="t('common.pleaseenter')" />
             </el-form-item>
             <el-form-item class="el-form-item--row" :label="t('investor.user.open.edit.remark')" prop="remark">
-                <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="2" :placeholder="t('common.pleaseenter')" />
+                <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="3"
+                    :placeholder="t('common.pleaseenter')" />
             </el-form-item>
         </el-form>
         <template #footer>

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

@@ -22,7 +22,7 @@
                     </el-select>
                 </el-form-item>
                 <el-form-item :label="t('marketrun.monitor.account.puserid')" prop="puserid">
-                    <app-select-member v-model="queryParams.puserid" usertype="2,3"
+                    <app-select-member v-model="queryParams.puserid" :params="{ usertype: '2,3' }"
                         :placeholder="t('marketrun.monitor.account.tips2')" />
                 </el-form-item>
                 <el-form-item>

+ 5 - 5
src/packages/pc/views/member/institution/goodscfg/components/edit/index.vue

@@ -9,14 +9,14 @@
                 </el-form-item>
                 <el-form-item label="市场" prop="marketid">
                     <el-select v-model="formData.marketid">
-                        <template v-for="item in getMarketOptions()"
-                            :key="item.value">
+                        <template v-for="item in getMarketOptions()" :key="item.value">
                             <el-option :label="item.label" :value="item.value" />
                         </template>
                     </el-select>
                 </el-form-item>
                 <el-form-item label="商品" prop="goodsid">
-                    <app-select-goods v-model="formData.goodsid" :marketid="formData.marketid" status="3,6,7" />
+                    <app-select-goods v-model="formData.goodsid"
+                        :params="{ marketId: formData.marketid, goodsStatusIds: '3,6,7' }" />
                 </el-form-item>
                 <el-form-item label="是否不显示" prop="isnodisplay">
                     <el-radio-group v-model="formData.isnodisplay">
@@ -40,7 +40,7 @@
                     </el-radio-group>
                 </el-form-item>
             </fieldset>
-        </el-form> 
+        </el-form>
         <template #footer>
             <el-button @click="onCancel(false)">{{ t('operation.cancel') }}</el-button>
             <el-button type="primary" @click="onSubmit">{{ t('operation.save') }}</el-button>
@@ -110,7 +110,7 @@ const onSubmit = () => {
 }
 
 onMounted(() => {
-    const { autoid,  } = props.record ?? {}
+    const { autoid, } = props.record ?? {}
     if (autoid) {
         formData.value.autoid = autoid
     }

+ 7 - 4
src/packages/pc/views/member/institution/goodscfg/index.vue

@@ -2,15 +2,17 @@
 <template>
     <app-view>
         <template #header>
-            <app-filter :option="filterOption" >
+            <app-filter :option="filterOption">
                 <template #userid="{ item }">
                     <el-form-item :label="item.label" prop="userid">
-                        <app-select-member v-model="item.value" usertype="2,3" :placeholder="t('member.institution.goodscfg.tips2')" />
+                        <app-select-member v-model="item.value" :params="{ usertype: '2,3' }"
+                            :placeholder="t('member.institution.goodscfg.tips2')" />
                     </el-form-item>
                 </template>
                 <template #goodsid="{ item }">
                     <el-form-item :label="item.label" prop="goodsid">
-                        <app-select-goods v-model="item.value" trademodels="52" status="3,6,7" />
+                        <app-select-goods v-model="item.value"
+                            :params="{ trademodels: '52', goodsStatusIds: '3,6,7' }" />
                     </el-form-item>
                 </template>
             </app-filter>
@@ -22,7 +24,8 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-operation size="small" :data-list="getActionButtons(['member_institution_goodscfg_modify', 'member_institution_goodscfg_delete'])"
+                <app-operation size="small"
+                    :data-list="getActionButtons(['member_institution_goodscfg_modify', 'member_institution_goodscfg_delete'])"
                     @click="(code: string) => openComponent(code, row)" circle />
             </template>
             <template #footer>

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

@@ -87,7 +87,7 @@
                     <el-input v-model="formData.email" maxlength="50" :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item class="el-form-item--row" :label="t('member.institution.open.edit.remark')" prop="remark">
-                    <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="2" :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">

+ 5 - 3
src/packages/pc/views/member/institution/riskcfg/index.vue

@@ -2,10 +2,11 @@
 <template>
     <app-view>
         <template #header>
-            <app-filter :option="filterOption" >
+            <app-filter :option="filterOption">
                 <template #memberuserid="{ item }">
                     <el-form-item :label="item.label" prop="memberuserid">
-                        <app-select-member v-model="item.value" usertype="2,3" :placeholder="t('member.institution.riskcfg.tips2')" />
+                        <app-select-member v-model="item.value" :params="{ usertype: '2,3' }"
+                            :placeholder="t('member.institution.riskcfg.tips2')" />
                     </el-form-item>
                 </template>
             </app-filter>
@@ -17,7 +18,8 @@
             </template>
             <!-- 操作 -->
             <template #operate="{ row }">
-                <app-operation size="small" :data-list="getActionButtons(['member_institution_riskcfg_details', 'member_institution_riskcfg_modify', 'member_institution_riskcfg_delete'])"
+                <app-operation size="small"
+                    :data-list="getActionButtons(['member_institution_riskcfg_details', 'member_institution_riskcfg_modify', 'member_institution_riskcfg_delete'])"
                     @click="(code: string) => openComponent(code, row)" circle />
             </template>
             <template #footer>

+ 72 - 33
src/packages/pc/views/member/subinstitution/manage/components/edit/index.vue

@@ -1,38 +1,52 @@
 <!-- 会员机构管理-子机构管理-子机构管理-编辑 -->
 <template>
-    <app-drawer :title="t('member.subinstitution.manage.edit.title')" width="900" v-model:show="show" :refresh="refresh" :loading="loading">
+    <app-drawer :title="t('member.subinstitution.manage.edit.title')" width="900" v-model:show="show" :refresh="refresh"
+        :loading="loading">
         <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('common.baseinfo') }}</legend>
-                <el-form-item :label="t('member.subinstitution.manage.edit.referral')" prop="referral">
-                    {{ selectedParent?.accountname }}
+                <el-form-item :label="t('member.subinstitution.manage.edit.referral')" prop="parentuserid"
+                    v-if="!record">
+                    <span v-if="selectedParent">{{ selectedParent.accountname }}</span>
+                    <app-select-institution v-model="formData.parentuserid"
+                        :params="{ usertype: '3', level: 5, roles: '7' }"
+                        :placeholder="t('member.subinstitution.manage.edit.tips1')" v-else />
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.userinfotype')" prop="userinfotype">
-                    <el-radio-group v-model="formData.userinfotype" :disabled="!!record">
+                    <span v-if="record">{{ getUserInfoTypeName(formData.userinfotype) }}</span>
+                    <el-radio-group v-model="formData.userinfotype" v-else>
                         <template v-for="item in getUserInfoTypeList()" :key="item.value">
                             <el-radio :label="item.label" :value="item.value" />
                         </template>
                     </el-radio-group>
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.userid')" prop="userid">
-                    <el-input v-model="formData.userid" maxlength="4" :placeholder="t('common.pleaseenter')" :disabled="!!record" />
+                    <span v-if="record">{{ formData.userid }}</span>
+                    <el-input v-model="formData.userid" maxlength="4" :placeholder="t('common.pleaseenter')" v-else />
+                </el-form-item>
+                <el-form-item label="机构类型" v-if="record">
+                    {{ usertype2Enum.getEnumTypeName(record.usertype) }}
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.accountname')" prop="accountname">
                     <el-input v-model="formData.accountname" maxlength="50" :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.refereeuserid')" prop="refereeuserid">
-                    <app-select-member v-model="formData.refereeuserid" usertype="2,3" :placeholder="t('member.subinstitution.manage.edit.tips1')" />
+                    <app-select-member v-model="formData.refereeuserid" :params="{ usertype: '2,3' }"
+                        :placeholder="t('member.subinstitution.manage.edit.tips1')" />
                 </el-form-item>
             </fieldset>
             <fieldset class="g-fieldset el-form--horizontal">
-                <legend class="g-fieldset__legend">{{ isPerson ? t('member.subinstitution.manage.edit.person') : t('member.subinstitution.manage.edit.companny') }}{{ t('member.subinstitution.manage.edit.profile') }}</legend>
+                <legend class="g-fieldset__legend">{{ isPerson ? t('member.subinstitution.manage.edit.person') :
+                    t('member.subinstitution.manage.edit.companny') }}{{ t('member.subinstitution.manage.edit.profile')
+                    }}</legend>
                 <el-form-item :label="t('member.subinstitution.manage.edit.customername')" prop="customername">
                     <el-input v-model="formData.customername" maxlength="50" :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.company')" prop="company" v-if="isPerson">
                     <el-input v-model="formData.company" maxlength="50" :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
-                <el-form-item :label="t('member.subinstitution.manage.edit.biznature')" prop="biznature" v-if="!isPerson">
+                <el-form-item :label="t('member.subinstitution.manage.edit.biznature')" prop="biznature"
+                    v-if="!isPerson">
                     <app-enum code="biznature" v-model="formData.biznature" :empty-values="[0]" />
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.cardtypeid')" prop="cardtypeid">
@@ -42,28 +56,35 @@
                 <el-form-item :label="t('member.subinstitution.manage.edit.cardnum')" prop="cardnum">
                     <el-input v-model="formData.cardnum" maxlength="50" :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
-                <el-form-item :label="t('member.subinstitution.manage.edit.cardfrontphotourl')" prop="cardfrontphotourl">
+                <el-form-item :label="t('member.subinstitution.manage.edit.cardfrontphotourl')"
+                    prop="cardfrontphotourl">
                     <app-upload v-model="uploadFiles.cardfrontphotourl" :file-types="['image']"
-                    :type-message="t('common.tips21')" />
+                        :type-message="t('common.tips21')" />
                 </el-form-item>
-                <el-form-item :label="t('member.subinstitution.manage.edit.cardbackphotourl')" prop="cardbackphotourl" v-if="isPerson">
+                <el-form-item :label="t('member.subinstitution.manage.edit.cardbackphotourl')" prop="cardbackphotourl"
+                    v-if="isPerson">
                     <app-upload v-model="uploadFiles.cardbackphotourl" :file-types="['image']"
-                    :type-message="t('common.tips21')" />
+                        :type-message="t('common.tips21')" />
                 </el-form-item>
                 <template v-if="!isPerson">
-                    <el-form-item :label="t('member.subinstitution.manage.edit.legalpersonname')" prop="legalpersonname">
-                        <el-input v-model="formData.legalpersonname" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-form-item :label="t('member.subinstitution.manage.edit.legalpersonname')"
+                        prop="legalpersonname">
+                        <el-input v-model="formData.legalpersonname" maxlength="50"
+                            :placeholder="t('common.pleaseenter')" />
                     </el-form-item>
-                    <el-form-item :label="t('member.subinstitution.manage.edit.legalcardfrontphotourl')" prop="legalcardfrontphotourl">
+                    <el-form-item :label="t('member.subinstitution.manage.edit.legalcardfrontphotourl')"
+                        prop="legalcardfrontphotourl">
                         <app-upload v-model="uploadFiles.legalcardfrontphotourl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
+                            :type-message="t('common.tips21')" />
                     </el-form-item>
-                    <el-form-item :label="t('member.subinstitution.manage.edit.legalcardbackphotourl')" prop="legalcardbackphotourl">
+                    <el-form-item :label="t('member.subinstitution.manage.edit.legalcardbackphotourl')"
+                        prop="legalcardbackphotourl">
                         <app-upload v-model="uploadFiles.legalcardbackphotourl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
+                            :type-message="t('common.tips21')" />
                     </el-form-item>
                     <el-form-item :label="t('member.subinstitution.manage.edit.contactname')" prop="contactname">
-                        <el-input v-model="formData.contactname" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                        <el-input v-model="formData.contactname" maxlength="50"
+                            :placeholder="t('common.pleaseenter')" />
                     </el-form-item>
                 </template>
                 <el-form-item :label="t('member.subinstitution.manage.edit.sex')" prop="sex">
@@ -74,16 +95,20 @@
                     </el-radio-group>
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.mobile')" prop="mobile">
-                    <el-input type="number" v-model="formData.mobile" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input type="number" v-model="formData.mobile" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.telphone')" prop="telphone">
-                    <el-input type="number" v-model="formData.telphone" maxlength="50" :placeholder="t('common.pleaseenter')" />
+                    <el-input type="number" v-model="formData.telphone" maxlength="50"
+                        :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
-                <el-form-item class="el-form-item--row" :label="t('member.subinstitution.manage.edit.provinceid')" prop="provinceid">
+                <el-form-item class="el-form-item--row" :label="t('member.subinstitution.manage.edit.provinceid')"
+                    prop="provinceid">
                     <app-region class="el-form-item--col" v-model:province="formData.provinceid"
                         v-model:city="formData.cityid" v-model:district="formData.districtid" />
                 </el-form-item>
-                <el-form-item class="el-form-item--row" :label="t('member.subinstitution.manage.edit.address')" prop="address">
+                <el-form-item class="el-form-item--row" :label="t('member.subinstitution.manage.edit.address')"
+                    prop="address">
                     <el-input v-model="formData.address" maxlength="50" :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.postalcode')" prop="postalcode">
@@ -92,38 +117,46 @@
                 <el-form-item :label="t('member.subinstitution.manage.edit.email')" prop="email">
                     <el-input v-model="formData.email" maxlength="50" :placeholder="t('common.pleaseenter')" />
                 </el-form-item>
-                <el-form-item class="el-form-item--row" :label="t('member.subinstitution.manage.edit.remark')" prop="remark">
-                    <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="2" :placeholder="t('common.pleaseenter')" />
+                <el-form-item class="el-form-item--row" :label="t('member.subinstitution.manage.edit.remark')"
+                    prop="remark">
+                    <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">
                 <legend class="g-fieldset__legend">{{ t('member.subinstitution.manage.edit.subtitle') }}</legend>
                 <el-form-item :label="t('member.subinstitution.manage.edit.logincode')" prop="logincode">
-                    <el-input v-model="formData.logincode" maxlength="50" :placeholder="t('common.pleaseenter')" :disabled="!!record" />
+                    <span v-if="record">{{ formData.logincode }}</span>
+                    <el-input v-model="formData.logincode" maxlength="50" :placeholder="t('common.pleaseenter')"
+                        v-else />
                 </el-form-item>
                 <el-form-item :label="t('member.subinstitution.manage.edit.username')" prop="username">
-                    <el-input v-model="formData.username" maxlength="50" :placeholder="t('common.pleaseenter')" :disabled="!!record" />
+                    <span v-if="record">{{ formData.username }}</span>
+                    <el-input v-model="formData.username" maxlength="50" :placeholder="t('common.pleaseenter')"
+                        v-else />
                 </el-form-item>
-                <el-form-item :label="t('member.subinstitution.manage.edit.smpassword')" prop="smpassword" v-if="!record">
-                    <el-input value="123456" disabled />
+                <el-form-item :label="t('member.subinstitution.manage.edit.smpassword')" prop="smpassword"
+                    v-if="!record">
+                    <span>123456</span>
                 </el-form-item>
             </fieldset>
             <fieldset class="g-fieldset el-form--horizontal">
                 <legend class="g-fieldset__legend">{{ t('common.annex') }}</legend>
                 <el-form-item :label="t('common.annex1')" prop="attachment1">
                     <app-upload v-model="uploadFiles.attachment1" :file-types="['image', 'pdf']"
-                    :type-message="t('common.tips21')" />
+                        :type-message="t('common.tips21')" />
                 </el-form-item>
                 <el-form-item :label="t('common.annex2')" prop="attachment2">
                     <app-upload v-model="uploadFiles.attachment2" :file-types="['image', 'pdf']"
-                    :type-message="t('common.tips21')" />
+                        :type-message="t('common.tips21')" />
                 </el-form-item>
             </fieldset>
         </el-form>
         <template #footer>
             <el-button @click="onCancel(false)">{{ t('operation.cancel') }}</el-button>
             <el-button type="primary" @click="onSubmit(2)">{{ t('operation.save') }}</el-button>
-            <el-button type="primary" @click="onSubmit(4)" v-if="record?.accountstatus === 4">{{ t('operation.submitaduit') }}</el-button>
+            <el-button type="primary" @click="onSubmit(4)" v-if="record?.accountstatus === 4">{{
+                t('operation.submitaduit') }}</el-button>
         </template>
     </app-drawer>
 </template>
@@ -132,14 +165,16 @@
 import { ref, reactive, PropType, onMounted, computed } from 'vue'
 import { ElMessage, FormInstance, FormRules, UploadUserFile } from 'element-plus'
 import { decryptAES } from '@/services/crypto'
+import { useEnum } from '@/hooks/enum'
 import { useRequest } from '@/hooks/request'
 import { organSonViewson, organSonAdd, organSonSave, organSonEdit } from '@/services/api/member'
-import { getUserInfoTypeList, getGenderList, UserInfoType, Gender } from '@/constants/member'
+import { getUserInfoTypeList, getUserInfoTypeName, getGenderList, UserInfoType, Gender } from '@/constants/member'
 import AppDrawer from '@pc/components/base/drawer/index.vue'
 import AppUpload from '@pc/components/base/upload/index.vue'
 import AppEnum from '@pc/components/modules/enum/index.vue'
 import AppRegion from '@pc/components/modules/region/index.vue'
 import AppSelectMember from '@pc/components/modules/select-member/index.vue'
+import AppSelectInstitution from '@pc/components/modules/select-institution/index.vue'
 import service from '@/services'
 import { i18n } from '@/stores'
 
@@ -152,6 +187,9 @@ const props = defineProps({
     }
 })
 
+// 机构类型
+const usertype2Enum = useEnum('usertype2')
+
 const { global: { t } } = i18n
 const formRef = ref<FormInstance>()
 const show = ref(true)
@@ -247,6 +285,7 @@ const { loading, run } = useRequest(organSonViewson, {
 
 // 表单验证规则
 const formRules: FormRules = {
+    parentuserid: [{ required: true }],
     userid: [{ required: true }],
     accountname: [{ required: true }],
     cardtypeid: [{ required: true }],

+ 0 - 262
src/packages/pc/views/member/subinstitution/user/components/edit/index.vue

@@ -1,262 +0,0 @@
-<!-- 会员机构管理-机构管理-机构开户申请-编辑 -->
-<template>
-    <app-drawer :title="t('member.subinstitution.user.edit.title')" width="900" v-model:show="show" :refresh="refresh" :loading="loading">
-        <el-form ref="formRef" label-width="140px" :model="formData" :rules="formRules" :show-message="false">
-            <fieldset class="g-fieldset el-form--horizontal">
-                <legend class="g-fieldset__legend">{{ t('common.baseinfo') }}</legend>
-                <el-form-item :label="t('member.subinstitution.user.edit.referral')" prop="referral">
-                    <app-select-member v-model="formData.referral" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.username')" prop="username">
-                    <el-input v-model="formData.username" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.userinfotype')" prop="userinfotype">
-                    <el-radio-group v-model="formData.userinfotype">
-                        <template v-for="item in getUserInfoTypeList()" :key="item.value">
-                            <el-radio :label="item.label" :value="item.value" />
-                        </template>
-                    </el-radio-group>
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.username1')" prop="username">
-                    <el-input v-model="formData.username" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-            </fieldset>
-            <fieldset class="g-fieldset el-form--horizontal">
-                <legend class="g-fieldset__legend">{{ isPerson ? t('member.subinstitution.user.edit.person') : t('member.subinstitution.user.edit.company1') }}{{ t('member.subinstitution.user.edit.profile') }}</legend>
-                <el-form-item label="名称" prop="customername">
-                    <el-input v-model="formData.customername" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.company')" prop="company" v-if="isPerson">
-                    <el-input v-model="formData.company" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.biznature')" prop="biznature" v-if="!isPerson">
-                    <app-enum code="biznature" v-model="formData.biznature" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.cardtype')" prop="cardtype">
-                    <app-enum code="certypecompany" v-model="formData.cardtype" v-if="!isPerson" />
-                    <app-enum code="certypeperson" v-model="formData.cardtype" v-else />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.cardnum')" prop="cardnum">
-                    <el-input v-model="formData.cardnum" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.cardfrontphotourl')" prop="cardfrontphotourl">
-                    <app-upload v-model="uploadFiles.cardfrontphotourl" :file-types="['image']"
-                    :type-message="t('common.tips21')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.cardbackphotourl')" prop="cardbackphotourl" v-if="isPerson">
-                    <app-upload v-model="uploadFiles.cardbackphotourl" :file-types="['image']"
-                    :type-message="t('common.tips21')" />
-                </el-form-item>
-                <template v-if="!isPerson">
-                    <el-form-item :label="t('member.subinstitution.user.edit.legalpersonname')" prop="legalpersonname">
-                        <el-input v-model="formData.legalpersonname" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                    </el-form-item>
-                    <el-form-item :label="t('member.subinstitution.user.edit.legalcardfrontphotourl')" prop="legalcardfrontphotourl">
-                        <app-upload v-model="uploadFiles.legalcardfrontphotourl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
-                    </el-form-item>
-                    <el-form-item :label="t('member.subinstitution.user.edit.legalcardbackphotourl')" prop="legalcardbackphotourl">
-                        <app-upload v-model="uploadFiles.legalcardbackphotourl" :file-types="['image']"
-                        :type-message="t('common.tips21')" />
-                    </el-form-item>
-                    <el-form-item :label="t('member.subinstitution.user.edit.contactname')" prop="contactname">
-                        <el-input v-model="formData.contactname" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                    </el-form-item>
-                </template>
-                <el-form-item :label="t('member.subinstitution.user.edit.sex')" prop="sex">
-                    <el-radio-group v-model="formData.sex">
-                        <template v-for="item in getGenderList()" :key="item.value">
-                            <el-radio :label="item.label" :value="item.value" />
-                        </template>
-                    </el-radio-group>
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.mobilephone')" prop="mobilephone">
-                    <el-input type="number" v-model="formData.mobilephone" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.telphone')" prop="telphone">
-                    <el-input type="number" v-model="formData.telphone" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item class="el-form-item--row" :label="t('member.subinstitution.user.edit.provinceid')" prop="provinceid">
-                    <app-region class="el-form-item--col" v-model:province="formData.provinceid"
-                        v-model:city="formData.cityid" v-model:district="formData.districtid" />
-                </el-form-item>
-                <el-form-item class="el-form-item--row" :label="t('member.subinstitution.user.edit.cardaddress')" prop="cardaddress">
-                    <el-input v-model="formData.cardaddress" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.postalcode')" prop="postalcode">
-                    <el-input v-model="formData.postalcode" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.email')" prop="email">
-                    <el-input v-model="formData.email" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item class="el-form-item--row" :label="t('member.subinstitution.user.edit.remark')" prop="remark">
-                    <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="2" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-            </fieldset>
-            <fieldset class="g-fieldset el-form--horizontal">
-                <legend class="g-fieldset__legend">{{ t('member.subinstitution.user.edit.subtitle') }}</legend>
-                <el-form-item :label="t('member.subinstitution.user.edit.username2')" prop="username">
-                    <el-input v-model="formData.username" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.username3')" prop="username">
-                    <el-input v-model="formData.username" maxlength="50" :placeholder="t('common.pleaseenter')" />
-                </el-form-item>
-                <el-form-item :label="t('member.subinstitution.user.edit.smpassword')" prop="smpassword">
-                    <el-input v-model="formData.smpassword" maxlength="50" :placeholder="t('common.pleaseenter')" disabled />
-                </el-form-item>
-            </fieldset>
-            <fieldset class="g-fieldset el-form--horizontal">
-                <legend class="g-fieldset__legend">{{ t('common.annex') }}</legend>
-                <el-form-item :label="t('common.annex1')" prop="attachment1">
-                    <app-upload v-model="uploadFiles.attachment1" :file-types="['image', 'pdf']"
-                        :type-message="t('common.tips21')" />
-                </el-form-item>
-                <el-form-item :label="t('common.annex2')" prop="attachment2">
-                    <app-upload v-model="uploadFiles.attachment2" :file-types="['image', 'pdf']"
-                    :type-message="t('common.tips21')" />
-                </el-form-item>
-            </fieldset>
-        </el-form>
-        <template #footer>
-            <el-button @click="onCancel(false)">{{ t('operation.cancel') }}</el-button>
-            <el-button type="primary" @click="onSubmit">{{ t('operation.submitaduit') }}</el-button>
-        </template>
-    </app-drawer>
-</template>
-
-<script lang="ts" setup>
-import { ref, reactive, PropType, onMounted, computed } from 'vue'
-import { ElMessage, FormInstance, FormRules, UploadUserFile } from 'element-plus'
-import { useRequest } from '@/hooks/request'
-import { wskhUserinfoAdd, queryWskhUserinfoDetail } from '@/services/api/member'
-import { getUserInfoTypeList, getGenderList, UserInfoType, Gender } from '@/constants/member'
-import AppDrawer from '@pc/components/base/drawer/index.vue'
-import AppUpload from '@pc/components/base/upload/index.vue'
-import AppEnum from '@pc/components/modules/enum/index.vue'
-import AppRegion from '@pc/components/modules/region/index.vue'
-import AppSelectMember from '@pc/components/modules/select-member/index.vue'
-import service from '@/services'
-import { i18n } from '@/stores'
-
-const props = defineProps({
-    record: {
-        type: Object as PropType<Model.MemberDetail>
-    }
-})
-
-const { global: { t } } = i18n
-const formRef = ref<FormInstance>()
-const show = ref(true)
-const refresh = ref(false)
-
-const uploadFiles = reactive<{
-    cardfrontphotourl: UploadUserFile[];
-    cardbackphotourl: UploadUserFile[];
-    legalcardfrontphotourl: UploadUserFile[];
-    legalcardbackphotourl: UploadUserFile[];
-    attachment1: UploadUserFile[];
-    attachment2: UploadUserFile[];
-}>({
-    cardfrontphotourl: [],
-    cardbackphotourl: [],
-    legalcardfrontphotourl: [],
-    legalcardbackphotourl: [],
-    attachment1: [],
-    attachment2: []
-})
-
-
-// 是否个人
-const isPerson = computed(() => formData.value.userinfotype === UserInfoType.Personal)
-
-const formData = ref<Partial<Model.MemberDetail>>({
-    userinfotype: UserInfoType.Company,
-    sex: Gender.Male
-})
-
-const getUploadFiles = (value?: string) => {
-    const paths = value ? value.split(',') : []
-    return paths.map((url) => {
-        const urlObj = new URL(url, service.getConfig('apiUrl'))
-        const name = urlObj.pathname.split('/').pop()
-        return {
-            name: name ?? urlObj.href,
-            url: urlObj.href,
-            response: {
-                data: [{ filePath: value }]
-            }
-        }
-    })
-}
-
-const { loading, run } = useRequest(queryWskhUserinfoDetail, {
-    manual: true,
-    onSuccess: ((res) => {
-        formData.value = res.data
-        uploadFiles.cardfrontphotourl = getUploadFiles(res.data.cardfrontphotourl)
-        uploadFiles.cardbackphotourl = getUploadFiles(res.data.cardbackphotourl)
-        uploadFiles.legalcardfrontphotourl = getUploadFiles(res.data.legalcardfrontphotourl)
-        uploadFiles.legalcardbackphotourl = getUploadFiles(res.data.legalcardbackphotourl)
-        uploadFiles.attachment1 = getUploadFiles(res.data.attachment1)
-        uploadFiles.attachment2 = getUploadFiles(res.data.attachment2)
-    }),
-    onError: (err) => {
-        ElMessage.error(err)
-    }
-})
-
-// 表单验证规则
-const formRules: FormRules = {
-    cardtype: [{ required: true }],
-    username: [{ required: true }],
-    customername: [{ required: true }],
-    cardnum: [{ required: true }],
-}
-
-const onCancel = (isRefresh = false) => {
-    show.value = false
-    refresh.value = isRefresh
-}
-
-// 更新上传文件到表单中
-const updateUploadFiles = (uploadFiles: UploadUserFile[]) => {
-    return uploadFiles.map((e) => {
-        const res = e.response as { data: { filePath: string }[] }
-        return res.data.map((e) => e.filePath)
-    }).join(',')
-}
-
-const onSubmit = () => {
-    const rawData = { ...formData.value }
-    rawData.userstate = 2
-    rawData.cardfrontphotourl = updateUploadFiles(uploadFiles.cardfrontphotourl)
-    rawData.cardbackphotourl = updateUploadFiles(uploadFiles.cardbackphotourl)
-    rawData.legalcardfrontphotourl = updateUploadFiles(uploadFiles.legalcardfrontphotourl)
-    rawData.legalcardbackphotourl = updateUploadFiles(uploadFiles.legalcardbackphotourl)
-    rawData.attachment1 = updateUploadFiles(uploadFiles.attachment1)
-    rawData.attachment2 = updateUploadFiles(uploadFiles.attachment2)
-
-    formRef.value?.validate((valid) => {
-        if (valid) {
-            loading.value = true
-            wskhUserinfoAdd({
-                data: rawData
-            }).then(() => {
-                ElMessage.success(t('common.tips3'))
-                onCancel(true)
-            }).catch((err) => {
-                ElMessage.error(t('common.tips4') + err)
-            }).finally(() => {
-                loading.value = false
-            })
-        }
-    })
-}
-
-onMounted(() => {
-    const userId = props.record?.userid
-    if (userId) {
-        run({ userId })
-    }
-})
-</script>

+ 65 - 51
src/packages/pc/views/member/subinstitution/user/index.vue

@@ -2,25 +2,13 @@
 <template>
     <app-view>
         <template #header>
-            <app-filter :options="filterOptons" />
+            <app-filter :option="filterOption" />
         </template>
         <app-table :data="dataList" :columns="tableColumns" :loading="loading">
             <template #headerLeft>
                 <app-operation :data-list="getActionButtons(['member_subinstitution_user_add'])"
                     @click="openComponent" />
             </template>
-            <!-- 开户方式 -->
-            <template #openmode="{ value }">
-                {{ openmodeEnum.getEnumTypeName(value) }}
-            </template>
-            <!-- 开户状态 -->
-            <template #userstate="{ value }">
-                {{ userstateEnum.getEnumTypeName(value) }}
-            </template>
-            <!-- 申请时间 -->
-            <template #createtime="{ value }">
-                {{ formatDate(value) }}
-            </template>
             <!-- 操作 -->
             <template #operate="{ row }">
                 <app-operation size="small" :data-list="handleOperateButtons(row)"
@@ -40,31 +28,33 @@
 import { shallowRef } from 'vue'
 import { ElMessage } from 'element-plus'
 import { formatDate } from '@/filters'
+import { getUserInfoTypeName } from '@/constants/member'
 import { useEnum } from '@/hooks/enum'
+import { useMarket } from '@/hooks/market'
 import { useRequest } from '@/hooks/request'
-import { useDataFilter } from '@/hooks/datatable'
+import { useDataFilter } from '@/hooks/datatable-v2'
 import { useOperation } from '@/hooks/operation'
-import { queryWskhUserinfo } from '@/services/api/member'
+import { queryOrganSon } from '@/services/api/member'
 import AppTable from '@pc/components/base/table/index.vue'
-import AppFilter from '@pc/components/base/table-filter/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
 import AppPagination from '@pc/components/base/pagination/index.vue'
 import AppOperation from '@pc/components/base/operation/index.vue'
 import { i18n } from '@/stores'
 
 const { global: { t } } = i18n
 
-// 开户方式
-const openmodeEnum = useEnum('openmode')
-// 开户状态
-const userstateEnum = useEnum('investorOpenStatus')
+// 机构状态
+const areastatusEnum = useEnum('areastatus')
+// 机构类型
+const usertype2Enum = useEnum('usertype2')
 
-const { filterOptons, getQueryParams } = useDataFilter<Model.WskhUserinfoReq>()
+const { getMarketOptions } = useMarket()
 
-const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.MemberDetail>({
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.OrganSonRsp>({
     onClose: () => onSearch()
 })
 
-const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryWskhUserinfo, {
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryOrganSon, {
     params: {
         pageNum: 1,
         pageSize: 20
@@ -75,42 +65,66 @@ const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryW
 })
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
-    { field: 'username', label: 'member.subinstitution.user.username' },
-    { field: 'openmode', label: 'member.subinstitution.user.openmode' },
-    { field: 'userstate', label: 'member.subinstitution.user.userstate' },
-    { field: 'createtime', label: 'member.subinstitution.user.createtime' },
-    { field: 'operate', label: 'member.subinstitution.user.operate1' },
-    { field: 'operate', label: 'member.subinstitution.user.operate2' },
-    { field: 'operate', label: 'member.subinstitution.user.operate3' },
-    { field: 'operate', label: 'member.subinstitution.user.operate4' },
-    { field: 'operate', label: 'member.subinstitution.user.operate5' },
-    { field: 'operate', label: 'common.operate', fixed: 'right' }
+    { field: 'userid', label: '机构代码' },
+    { field: 'accountname', label: '机构名称' },
+    { field: 'parentname', label: '所属机构' },
+    { field: 'memberusername', label: '所属会员' },
+    { field: 'accountstatus', label: '机构状态', formatValue: (val) => areastatusEnum.getEnumTypeName(val) },
+    { field: 'usertype', label: '机构类型', formatValue: (val) => usertype2Enum.getEnumTypeName(val) },
+    { field: 'userinfotype', label: '所有者类型', formatValue: (val) => getUserInfoTypeName(val) },
+    { field: 'userName', label: '操作员' },
+    { field: 'modifytime', label: '最后更新时间', formatValue: (val) => formatDate(val) },
+    { field: 'operate', label: 'common.operate', width: 200, fixed: 'right' }
 ])
 
-filterOptons.inputList = [
-    { label: t('member.subinstitution.user.username1'), keys: ['username'] }
-]
-
-filterOptons.selectList = [
-    { label: '机构状态', key: 'username', options: () => [] }
-]
-
-filterOptons.buttonList = [
-    { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
-    { label: t('operation.reset'), className: 'el-button--primary', onClick: () => onSearch(true) }
-]
+const { filterOption, getQueryParams, resetFilters } = useDataFilter<Model.OrganSonReq>({
+    filters: [
+        {
+            field: 'accountname',
+            label: '机构'
+        },
+        {
+            field: 'markets',
+            label: '市场权限',
+            options: () => getMarketOptions()
+        },
+        {
+            field: 'accountstatus',
+            label: '机构状态',
+            options: () => areastatusEnum.getEnumOptions()
+        },
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
 
 // 处理操作按钮
-const handleOperateButtons = (row: Model.MemberDetail) => {
-    switch (row.userstate) {
+const handleOperateButtons = (row: Model.OrganSonRsp) => {
+    const buttons = ['member_subinstitution_user_details', 'member_subinstitution_user_account', 'member_subinstitution_user_login']
+
+    switch (row.modifystatus) {
+        case 0:
         case 1:
+            if (row.accountstatus === 6) {
+                buttons.push('member_subinstitution_user_recover')
+            } else {
+                buttons.push('member_subinstitution_user_modify')
+                if (![2, 3].includes(row.accountstatus)) {
+                    buttons.push('member_subinstitution_user_close')
+                }
+            }
+            break
         case 3:
-            return getActionButtons(['member_subinstitution_user_modify', 'member_subinstitution_user_delete'])
-        case 2:
-            return getActionButtons(['member_subinstitution_user_audit', 'member_subinstitution_user_cancel'])
+        case 4:
+            buttons.push('member_subinstitution_user_cancel')
+            break
         default:
-            return []
+            buttons.push('member_subinstitution_user_modify')
     }
+
+    return getActionButtons(buttons)
 }
 
 const onSearch = (clear = false) => {

+ 1 - 1
src/packages/pc/views/profitshare/institution/group/components/edit/index.vue

@@ -13,7 +13,7 @@
                 <el-input v-model="formData.subareagroupname" :placeholder="t('common.pleaseenter')" />
             </el-form-item>
             <el-form-item :label="t('profitshare.institution.group.edit.remark')" prop="remark">
-                <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="2"
+                <el-input type="textarea" v-model="formData.remark" maxlength="200" :rows="3"
                     :placeholder="t('common.pleaseenter')" />
             </el-form-item>
         </el-form>

+ 1 - 1
src/packages/pc/views/query/internal/goodssumm/index.vue

@@ -21,7 +21,7 @@
                     </el-select>
                 </el-form-item>
                 <el-form-item :label="t('query.internal.goodssumm.goodsid')" prop="goodsid">
-                    <app-select-goods v-model="queryParams.goodsid" :marketid="queryParams.marketid" status="3,6,7" />
+                    <app-select-goods v-model="queryParams.goodsid" :params="{ marketId: queryParams.marketid, goodsStatusIds: '3,6,7' }" />
                 </el-form-item>
                 <el-form-item :label="t('query.internal.goodssumm.excludeaccountidsstr')" prop="excludeaccountidsstr">
                     <el-input v-model="queryParams.excludeaccountidsstr" :placeholder="t('query.internal.goodssumm.tips1')" style="width: 260px;" />

+ 3 - 3
src/packages/pc/views/query/internal/institutionsumm/index.vue

@@ -11,14 +11,14 @@
                     </el-select>
                 </el-form-item>
                 <el-form-item :label="t('query.internal.institutionsumm.goodsid')" prop="goodsid">
-                    <app-select-goods v-model="queryParams.goodsid" :marketid="marketId" status="3,6,7" />
+                    <app-select-goods v-model="queryParams.goodsid" :params="{ marketId, goodsStatusIds: '3,6,7' }" />
                 </el-form-item>
                 <el-form-item :label="t('query.internal.institutionsumm.date')" prop="date">
                     <el-date-picker type="daterange" v-model="dateValue" value-format="YYYYMMDD"
-                    :start-placeholder="t('common.startdate')" :end-placeholder="t('common.enddate')" />
+                        :start-placeholder="t('common.startdate')" :end-placeholder="t('common.enddate')" />
                 </el-form-item>
                 <el-form-item :label="t('query.internal.institutionsumm.parentuserid')" prop="parentuserid">
-                    <app-select-member v-model="queryParams.parentuserid" usertype="2,3" />
+                    <app-select-member v-model="queryParams.parentuserid" :params="{ usertype: '2,3' }" />
                 </el-form-item>
                 <el-form-item>
                     <el-button type="primary" @click="onSearch">{{ t('operation.search') }}</el-button>

+ 1 - 1
src/packages/pc/views/query/order/close/index.vue

@@ -17,7 +17,7 @@
                 </template>
                 <template #goodsid="{ item }">
                     <el-form-item :label="item.label" prop="goodsid">
-                        <app-select-goods v-model="item.value" trademodels="52" status="3,6,7" />
+                        <app-select-goods v-model="item.value" :params="{ trademodels: '52', goodsStatusIds: '3,6,7' }" />
                     </el-form-item>
                 </template>
                 <template #areauserid="{ item }">

+ 6 - 4
src/packages/pc/views/query/order/report/index.vue

@@ -6,17 +6,19 @@
                 <template #startDate="{ item }">
                     <el-form-item :label="item.label" prop="date">
                         <el-date-picker type="daterange" v-model="dateValue" value-format="YYYYMMDD"
-                            :start-placeholder="t('query.order.report.startDate')" :end-placeholder="t('query.order.report.enddate')" />
+                            :start-placeholder="t('query.order.report.startDate')"
+                            :end-placeholder="t('query.order.report.enddate')" />
                     </el-form-item>
                 </template>
                 <template #goodsid="{ item }">
                     <el-form-item :label="item.label" prop="goodsid">
-                        <app-select-goods v-model="item.value" trademodels="52" status="3,6,7" />
+                        <app-select-goods v-model="item.value"
+                            :params="{ trademodels: '52', goodsStatusIds: '3,6,7' }" />
                     </el-form-item>
                 </template>
                 <template #areauserid="{ item }">
                     <el-form-item :label="item.label" prop="areauserid">
-                        <app-select-member v-model="item.value" usertype="2" />
+                        <app-select-member v-model="item.value" :params="{ usertype: '2' }" />
                     </el-form-item>
                 </template>
                 <template #currentUserId="{ item }">
@@ -115,7 +117,7 @@ const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilte
         },
         {
             field: 'goodsid',
-            label:  t('query.order.report.goodsid'),
+            label: t('query.order.report.goodsid'),
         },
         {
             field: 'tradeid',

+ 1 - 1
src/packages/pc/views/query/order/terminate/index.vue

@@ -17,7 +17,7 @@
                 </template>
                 <template #goodsid="{ item }">
                     <el-form-item :label="item.label" prop="goodsid">
-                        <app-select-goods v-model="item.value" trademodels="52" status="3,6,7" />
+                        <app-select-goods v-model="item.value" :params="{ trademodels: '52', goodsStatusIds: '3,6,7' }" />
                     </el-form-item>
                 </template>
             </app-filter>

+ 4 - 3
src/packages/pc/views/query/other/institution_bank/index.vue

@@ -2,10 +2,11 @@
 <template>
     <app-view>
         <template #header>
-            <app-filter :option="filterOption"  :rules="filterRules">
+            <app-filter :option="filterOption" :rules="filterRules">
                 <template #memberid="{ item }">
                     <el-form-item :label="item.label" prop="memberid">
-                        <app-select-member v-model="item.value" usertype="2" :placeholder="t('investor.custom.group.edit.tips1')" />
+                        <app-select-member v-model="item.value" :params="{ usertype: '2' }"
+                            :placeholder="t('investor.custom.group.edit.tips1')" />
                     </el-form-item>
                 </template>
             </app-filter>
@@ -110,7 +111,7 @@ const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilte
             required: true,
             value: 0,
             options: () => [
-                { label: t('query.other.institution_bank.nolimit'), value:  0 },
+                { label: t('query.other.institution_bank.nolimit'), value: 0 },
                 { label: t('query.other.institution_bank.currentbalance'), value: 1 },
                 { label: t('query.other.institution_bank.balance'), value: 2 },
                 { label: t('query.other.institution_bank.inamount'), value: 3 },

+ 6 - 5
src/packages/pc/views/query/other/investor_bank/index.vue

@@ -2,7 +2,7 @@
 <template>
     <app-view>
         <template #header>
-            <app-filter :option="filterOption"  :rules="filterRules">
+            <app-filter :option="filterOption" :rules="filterRules">
                 <template #accountid="{ item }">
                     <el-form-item :label="item.label" prop="accountid">
                         <app-select-account v-model="item.value" @change="onAccountChange" />
@@ -10,7 +10,8 @@
                 </template>
                 <template #memberid="{ item }">
                     <el-form-item :label="item.label" prop="memberid">
-                        <app-select-member v-model="item.value" usertype="2" :placeholder="t('investor.custom.group.edit.tips1')" />
+                        <app-select-member v-model="item.value" :params="{ usertype: '2' }"
+                            :placeholder="t('investor.custom.group.edit.tips1')" />
                     </el-form-item>
                 </template>
             </app-filter>
@@ -94,7 +95,7 @@ const onAccountChange = (item?: Model.TAAccountChildrenSelectRsp) => {
 
 // 表单验证规则
 const filterRules: FormRules = {
-    
+
 }
 
 const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.investorReq>({
@@ -115,7 +116,7 @@ const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilte
             required: true,
             value: 0,
             options: () => [
-                { label: t('query.other.investor_bank.nolimit'), value:  0 },
+                { label: t('query.other.investor_bank.nolimit'), value: 0 },
                 { label: t('query.other.investor_bank.balance'), value: 1 },
                 { label: t('query.other.investor_bank.balance'), value: 2 },
                 { label: t('query.other.investor_bank.inamount'), value: 3 },
@@ -144,7 +145,7 @@ const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilte
         },
         {
             field: 'parentarea',
-            label:  t('query.other.investor_bank.parentarea'),
+            label: t('query.other.investor_bank.parentarea'),
             placeholder: t('common.pleaseenter'),
         },
     ],

+ 1 - 1
src/packages/pc/views/system/menu/components/edit/index.vue

@@ -57,7 +57,7 @@
                 <el-input v-model="formData.component" placeholder="请输入" />
             </el-form-item>
             <!-- <el-form-item label="备注" prop="remark">
-                    <el-input type="textarea" :rows="2" v-model="formData.remark" placeholder="请输入" />
+                    <el-input type="textarea" :rows="3" v-model="formData.remark" placeholder="请输入" />
                 </el-form-item> -->
             <el-form-item label="排序" prop="sort">
                 <el-input-number v-model="formData.sort" placeholder="请输入" />

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

@@ -65,4 +65,11 @@ export function queryGoodsSelect(options: CommonFetchOptions<{ request: Model.Go
  */
 export function queryTAAccountChildren(options: CommonFetchOptions<{ request: Model.TAAccountChildrenReq; response: Model.TAAccountChildrenRsp[]; }>) {
     return httpClient.commonRequest('/common/queryTAAccountChildren', 'get', options)
+}
+
+/**
+ * 递归查询机构,用于交 易所子机构管理中添加子机构和经纪人
+ */
+export function queryExchSonOrgin(options: CommonFetchOptions<{ request: Model.ExchSonOrginReq; response: Model.ExchSonOrginRsp[]; }>) {
+    return httpClient.commonRequest('/common/queryExchSonOrgin', 'get', options)
 }

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

@@ -158,4 +158,37 @@ declare namespace Model {
         accountId: string;
         relatedName: string;
     }
+
+    /** 递归查询机构,用于交 易所子机构管理中添加子机构和经纪人 请求 */
+    interface ExchSonOrginReq {
+        accountname?: string; // 账户名称
+        allUsersButPlatform?: number; // 所有用户除了平台 0 否 1 是
+        companyexists?: string;
+        exists?: string;
+        isusertype?: number;
+        level?: number;
+        memberuserid?: number; // 会员 及子机构管理员
+        orgtype?: number;
+        orgztypes?: string; // 管理员所属机构角色类型
+        parentuserid?: number; // 所有子级
+        parentuseridfirst?: number;
+        planformanceuserid?: number; // 履约时查买卖方的
+        roles?: string;
+        roletypeid?: number;
+        searchcode?: string;
+        subarealevelpath?: string;
+        userid?: number; // 账户id
+        usertype?: string;
+        usertypeArray?: string[];
+        usertypeIds?: string;
+    }
+
+    /** 递归查询机构,用于交 易所子机构管理中添加子机构和经纪人 响应 */
+    interface ExchSonOrginRsp {
+        accountname: string; // 账户名称
+        memberuserid: number; // 会员 及子机构管理员
+        parentuserid: number; // 所有子级
+        userid: number; // 账户id
+        usertype: string; // 账户类型 (默认 2)-- 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
+    }
 }

+ 6 - 2
src/types/model/member.d.ts

@@ -217,8 +217,9 @@ declare namespace Model {
 
     /** 会员机构管理-->子机构管理-->获取机构列表 请求 */
     interface OrganSonReq {
-        accountName?: string; // 机构
-        accountStatus?: number; // 机构状态
+        accountname?: string; // 机构
+        accountstatus?: number; // 机构状态
+        markets?: number; // 市场权限
         memberuserid?: number; // 一级机构代码
         pageNum: number;
         pageSize: number;
@@ -252,12 +253,15 @@ declare namespace Model {
         maxLevel: number;
         maxinvestornum: number; // 最大用户数(经纪会员下投资者个数)
         memberuserid: number; // 所属会员ID
+        memberusername: string; // 所属会员
         modifierid: number; // 修改人
         modifyremark: string; // 变更备注
         modifysrc: number; // 修改来源 - 1:管理端 2:终端
         modifystatus: number; // 变更状态 1 未变更 2 变更中 3 变更待审核 4 变更待复核(投资者)
         modifytime: string; // 修改时间
         outeruserid: string; // 外部用户ID(千海金-外部门店ID)
+        parentid: number;
+        parentname: string;
         parenttopuser: string; // 上级顶级机构 [092=0,1时,默认为1, 092=2时若自已为顶级,则填入自己,自己不为顶级,填入ParentUserID的ParentTopUser]
         parentuserid: number; // 所属机构ID
         pathname: string; // 联系人