Handy_Cao hace 11 meses
padre
commit
05e1d9e5b9

+ 91 - 20
public/locales/en-US.json

@@ -270,7 +270,7 @@
                     "areauserid": "经纪会员",
                     "groupname": "GroupName",
                     "customertype": "风险率类型",
-                    "riskcontrolmode": "风控模式:'",
+                    "riskcontrolmode": "风控模式:",
                     "customertype1": "客户类别:",
                     "riskratiocalcmode": "风险率计算方式:",
                     "notemarginriskratio": "提示保证金风险率:",
@@ -676,7 +676,7 @@
                     "cardnum": "ID number:",
                     "pathname": "Address:",
                     "legalpersonname": "Legal Person Name:",
-                    "contactname": "ContractName:'",
+                    "contactname": "ContractName:",
                     "sex": "Sex:",
                     "mobilephone": "Mobile:",
                     "postalcode": "PostalCode:",
@@ -826,11 +826,51 @@
     },
     "member": {
         "institution": {
-            "broker": {},
-            "goodscfg": {},
-            "industry": {},
-            "marketer": {},
-            "marketing": {},
+            "broker": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "goodscfg": {
+                "membername": "会员机构",
+                "roledisplay": "机构角色",
+                "goodsdisplay": "商品",
+                "nodisplay": "不显示",
+                "cannotbuy": "不能挂买",
+                "cannotsell": "不能挂卖",
+                "userid": "经济会员",
+                "marketid": "市场",
+                "goodsid": "商品",
+                "tips1": "请选择经济会员",
+                "tips2": "输入代码或名称"
+            },
+            "industry": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "marketer": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "marketing": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
             "open": {
                 "username": "UserName",
                 "openmode": "OpenMode",
@@ -912,18 +952,49 @@
                     "remark": "Remark"
                 }
             },
-            "operation": {},
-            "riskcfg": {},
+            "operation": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "riskcfg": {
+                "memberuserid": "会员",
+                "userid": "会员代码",
+                "username": "会员名称",
+                "accountid": "资金账户",
+                "customertype": "风险率类型(客户类别)",
+                "tips1": "请选择会员",
+                "tips2": "输入代码或名称"
+            },
             "role": {
                 "rolename": "RoleName",
                 "modifiername": "ModifierName",
                 "modifytime": "CreateTime",
                 "rolestatus": "Status"
             },
-            "self": {},
+            "self": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
             "tradecfg": {},
-            "user": {},
-            "warehouse": {}
+            "user": {
+                
+            },
+            "warehouse": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            }
         },
         "subinstitution": {
             "addition": {},
@@ -1575,7 +1646,7 @@
                 "holderamount": "订单金额",
                 "payeddeposit": "占用资金",
                 "tradetimestr": "订单时间",
-                "goodsid'": "商品",
+                "goodsid": "商品",
                 "parantareaid": "所属机构 ",
                 "validholderqty": "有效持仓 ",
                 "tips1": "请输入商品ID",
@@ -1609,10 +1680,10 @@
                 "parentusername": "所属机构"
             },
             "report": {
-                "startDate": "开始日期",
-                "enddate": "结束日期",
-                "reckondate": "日期",
-                "tradeid": "订单号",
+                "startDate": "StartDate",
+                "enddate": "EndDate",
+                "reckondate": "ReckonDate",
+                "tradeid": "TradeID",
                 "userfullname": "客户",
                 "areafullname": "所属会员",
                 "goodsfullname": "商品/代码",
@@ -1625,11 +1696,11 @@
                 "payeddeposit": "占用资金",
                 "freezenum": "冻结数量",
                 "deliverynum": "交收数量",
-                "closepl": "终止盈亏",
-                "floatpl": "浮动盈亏",
+                "closepl": "ClosePL",
+                "floatpl": "FloatPL",
                 "depositratedisplay": "风险率",
                 "operatorcode": "操作人",
-                "date": "日期",
+                "date": "Date",
                 "goodsid": "商品",
                 "currentUserId": "交易商",
                 "areauserid": "所属会员"

+ 88 - 17
public/locales/th-TH.json

@@ -1,8 +1,8 @@
 {
     "app": {
-        "name": "MTP后台管理系统",
-        "left1": "迎使用",
-        "left2": "MTP管理系"
+        "name": "MTP後臺管理系統",
+        "left1": "迎使用",
+        "left2": "MTP管理系"
     },
     "account": {
         "tradeacct": {
@@ -270,7 +270,7 @@
                     "areauserid": "经纪会员",
                     "groupname": "名称",
                     "customertype": "风险率类型",
-                    "riskcontrolmode": "风控模式:'",
+                    "riskcontrolmode": "风控模式:",
                     "customertype1": "客户类别:",
                     "riskratiocalcmode": "风险率计算方式:",
                     "notemarginriskratio": "提示保证金风险率:",
@@ -676,7 +676,7 @@
                     "cardnum": "证件号码:",
                     "pathname": "地址:",
                     "legalpersonname": "法人名称:",
-                    "contactname": "联系人:'",
+                    "contactname": "联系人:",
                     "sex": "性别:",
                     "mobilephone": "手机号:",
                     "postalcode": "邮政编码:",
@@ -826,11 +826,51 @@
     },
     "member": {
         "institution": {
-            "broker": {},
-            "goodscfg": {},
-            "industry": {},
-            "marketer": {},
-            "marketing": {},
+            "broker": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "goodscfg": {
+                "membername": "会员机构",
+                "roledisplay": "机构角色",
+                "goodsdisplay": "商品",
+                "nodisplay": "不显示",
+                "cannotbuy": "不能挂买",
+                "cannotsell": "不能挂卖",
+                "userid": "经济会员",
+                "marketid": "市场",
+                "goodsid": "商品",
+                "tips1": "请选择经济会员",
+                "tips2": "输入代码或名称"
+            },
+            "industry": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "marketer": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "marketing": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
             "open": {
                 "username": "用户名称",
                 "openmode": "开户方式",
@@ -912,18 +952,49 @@
                     "remark": "备注"
                 }
             },
-            "operation": {},
-            "riskcfg": {},
+            "operation": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "riskcfg": {
+                "memberuserid": "会员",
+                "userid": "会员代码",
+                "username": "会员名称",
+                "accountid": "资金账户",
+                "customertype": "风险率类型(客户类别)",
+                "tips1": "请选择会员",
+                "tips2": "输入代码或名称"
+            },
             "role": {
                 "rolename": "角色名称",
                 "modifiername": "创建人",
                 "modifytime": "创建时间",
                 "rolestatus": "状态"
             },
-            "self": {},
+            "self": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
             "tradecfg": {},
-            "user": {},
-            "warehouse": {}
+            "user": {
+                
+            },
+            "warehouse": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            }
         },
         "subinstitution": {
             "addition": {},
@@ -1244,7 +1315,7 @@
                     "cancelqty": "撤单数量",
                     "pricemode": "取价方式:",
                     "validtype": "有效期类型:",
-                    "validtime": "有效期限:'",
+                    "validtime": "有效期限:",
                     "operatetype": "操作类型:",
                     "orderstatus": "委托状态:",
                     "ordertime": "委托时间:",
@@ -1575,7 +1646,7 @@
                 "holderamount": "订单金额",
                 "payeddeposit": "占用资金",
                 "tradetimestr": "订单时间",
-                "goodsid'": "商品",
+                "goodsid": "商品",
                 "parantareaid": "所属机构 ",
                 "validholderqty": "有效持仓 ",
                 "tips1": "请输入商品ID",

+ 85 - 14
public/locales/zh-CN.json

@@ -270,7 +270,7 @@
                     "areauserid": "经纪会员",
                     "groupname": "名称",
                     "customertype": "风险率类型",
-                    "riskcontrolmode": "风控模式:'",
+                    "riskcontrolmode": "风控模式:",
                     "customertype1": "客户类别:",
                     "riskratiocalcmode": "风险率计算方式:",
                     "notemarginriskratio": "提示保证金风险率:",
@@ -676,7 +676,7 @@
                     "cardnum": "证件号码:",
                     "pathname": "地址:",
                     "legalpersonname": "法人名称:",
-                    "contactname": "联系人:'",
+                    "contactname": "联系人:",
                     "sex": "性别:",
                     "mobilephone": "手机号:",
                     "postalcode": "邮政编码:",
@@ -826,11 +826,51 @@
     },
     "member": {
         "institution": {
-            "broker": {},
-            "goodscfg": {},
-            "industry": {},
-            "marketer": {},
-            "marketing": {},
+            "broker": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "goodscfg": {
+                "membername": "会员机构",
+                "roledisplay": "机构角色",
+                "goodsdisplay": "商品",
+                "nodisplay": "不显示",
+                "cannotbuy": "不能挂买",
+                "cannotsell": "不能挂卖",
+                "userid": "经济会员",
+                "marketid": "市场",
+                "goodsid": "商品",
+                "tips1": "请选择经济会员",
+                "tips2": "输入代码或名称"
+            },
+            "industry": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "marketer": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "marketing": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
             "open": {
                 "username": "用户名称",
                 "openmode": "开户方式",
@@ -912,18 +952,49 @@
                     "remark": "备注"
                 }
             },
-            "operation": {},
-            "riskcfg": {},
+            "operation": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "riskcfg": {
+                "memberuserid": "会员",
+                "userid": "会员代码",
+                "username": "会员名称",
+                "accountid": "资金账户",
+                "customertype": "风险率类型(客户类别)",
+                "tips1": "请选择会员",
+                "tips2": "输入代码或名称"
+            },
             "role": {
                 "rolename": "角色名称",
                 "modifiername": "创建人",
                 "modifytime": "创建时间",
                 "rolestatus": "状态"
             },
-            "self": {},
+            "self": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
             "tradecfg": {},
-            "user": {},
-            "warehouse": {}
+            "user": {
+                
+            },
+            "warehouse": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            }
         },
         "subinstitution": {
             "addition": {},
@@ -1244,7 +1315,7 @@
                     "cancelqty": "撤单数量",
                     "pricemode": "取价方式:",
                     "validtype": "有效期类型:",
-                    "validtime": "有效期限:'",
+                    "validtime": "有效期限:",
                     "operatetype": "操作类型:",
                     "orderstatus": "委托状态:",
                     "ordertime": "委托时间:",
@@ -1575,7 +1646,7 @@
                 "holderamount": "订单金额",
                 "payeddeposit": "占用资金",
                 "tradetimestr": "订单时间",
-                "goodsid'": "商品",
+                "goodsid": "商品",
                 "parantareaid": "所属机构 ",
                 "validholderqty": "有效持仓 ",
                 "tips1": "请输入商品ID",

+ 85 - 14
public/locales/zh-TW.json

@@ -270,7 +270,7 @@
                     "areauserid": "經紀會員",
                     "groupname": "名稱",
                     "customertype": "風險率類型",
-                    "riskcontrolmode": "風控模式:'",
+                    "riskcontrolmode": "風控模式:",
                     "customertype1": "客戶類別:",
                     "riskratiocalcmode": "風險率計算方式:",
                     "notemarginriskratio": "提示保證金風險率:",
@@ -676,7 +676,7 @@
                     "cardnum": "證件號碼:",
                     "pathname": "地址:",
                     "legalpersonname": "法人名稱:",
-                    "contactname": "聯繫人:'",
+                    "contactname": "聯繫人:",
                     "sex": "性別:",
                     "mobilephone": "手機號:",
                     "postalcode": "郵政編碼:",
@@ -826,11 +826,51 @@
     },
     "member": {
         "institution": {
-            "broker": {},
-            "goodscfg": {},
-            "industry": {},
-            "marketer": {},
-            "marketing": {},
+            "broker": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "goodscfg": {
+                "membername": "会员机构",
+                "roledisplay": "机构角色",
+                "goodsdisplay": "商品",
+                "nodisplay": "不显示",
+                "cannotbuy": "不能挂买",
+                "cannotsell": "不能挂卖",
+                "userid": "经济会员",
+                "marketid": "市场",
+                "goodsid": "商品",
+                "tips1": "请选择经济会员",
+                "tips2": "输入代码或名称"
+            },
+            "industry": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "marketer": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "marketing": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
             "open": {
                 "username": "用戶名稱",
                 "openmode": "開戶方式",
@@ -912,18 +952,49 @@
                     "remark": "備註"
                 }
             },
-            "operation": {},
-            "riskcfg": {},
+            "operation": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
+            "riskcfg": {
+                "memberuserid": "会员",
+                "userid": "会员代码",
+                "username": "会员名称",
+                "accountid": "资金账户",
+                "customertype": "风险率类型(客户类别)",
+                "tips1": "请选择会员",
+                "tips2": "输入代码或名称"
+            },
             "role": {
                 "rolename": "角色名稱",
                 "modifiername": "創建人",
                 "modifytime": "創建時間",
                 "rolestatus": "狀態"
             },
-            "self": {},
+            "self": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            },
             "tradecfg": {},
-            "user": {},
-            "warehouse": {}
+            "user": {
+                
+            },
+            "warehouse": {
+                "memberuserid": "机构代码",
+                "accountname": "机构名称",
+                "accountid": "资金账户",
+                "accountstatus": "机构状态",
+                "operation": "操作员",
+                "rolemodifytime": "角色创建时间"
+            }
         },
         "subinstitution": {
             "addition": {},
@@ -1244,7 +1315,7 @@
                     "cancelqty": "撤單數量",
                     "pricemode": "取價方式:",
                     "validtype": "有效期類型:",
-                    "validtime": "有效期限:'",
+                    "validtime": "有效期限:",
                     "operatetype": "操作類型:",
                     "orderstatus": "委託狀態:",
                     "ordertime": "委託時間:",
@@ -1575,7 +1646,7 @@
                 "holderamount": "订单金额",
                 "payeddeposit": "占用资金",
                 "tradetimestr": "订单时间",
-                "goodsid'": "商品",
+                "goodsid": "商品",
                 "parantareaid": "所属机构 ",
                 "validholderqty": "有效持仓 ",
                 "tips1": "请输入商品ID",

+ 97 - 1
src/packages/pc/views/member/institution/broker/index.vue

@@ -1,7 +1,103 @@
 <!-- 会员机构管理-机构管理-经纪会员管理 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :option="filterOption" :rules="filterRules" />
+        </template>
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getActionButtons(['member_institution_open_add'])"
+                    @click="openComponent" />
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-operation size="small" :data-list="getActionButtons(['query_internal_liquidation_details'])"
+                    @click="(code: string) => openComponent(code, row)" circle />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ record, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormRules } from 'element-plus'
+import { useDataFilter } from '@/hooks/datatable-v2'
+import { useRequest } from '@/hooks/request'
+import { useOperation } from '@/hooks/operation'
+import { queryRole } from '@/services/api/member'
+import { i18n } from '@/stores'
+import { formatDate } from '@/filters'
+import { useEnum } from '@/hooks/enum'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
+
+const { global: { t } } = i18n
+// 状态
+const areastatusEnum = useEnum('areastatus')
+
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.OrganRoleReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryRole, {
+    params: {
+        roleid: 7,
+        pageNum: 1,
+        pageSize: 20
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = ref<Model.TableColumn[]>([
+    { field: 'memberuserid', label: 'member.institution.broker.memberuserid' },
+    { field: 'accountname', label: 'member.institution.broker.accountname' },
+    { field: 'accountid', label: 'member.institution.broker.accountid' },
+    { field: 'accountstatus', label: 'member.institution.broker.accountstatus', formatValue: (val) => areastatusEnum.getEnumTypeName(val) },
+    { field: 'operation', label: 'member.institution.broker.operation' },
+    { field: 'rolemodifytime', label: 'member.institution.broker.rolemodifytime', formatValue:(val) => formatDate(val) },
+    { field: 'operate', label: 'common.operate', fixed: 'right' }
+])
+
+// 表单验证规则
+const filterRules: FormRules = {
+    accountname: [{
+        required: true,
+    }]
+}
+
+const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.OrganRoleReq>({
+    filters: [
+        {
+            field: 'accountname',
+            label: t('member.institution.broker.memberuserid'),
+            required: true,
+        }
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
+
+// 处理请求参数
+const processRequiredParams = () => {
+    const qs = getQueryParams()
+    return qs
+}
+
+const onSearch = () => {
+    const qs = processRequiredParams()
+    run(qs)
+}
+
 </script>

+ 119 - 1
src/packages/pc/views/member/institution/goodscfg/index.vue

@@ -1,7 +1,125 @@
 <!-- 会员机构管理-机构管理-商品限制设置 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :option="filterOption" :rules="filterRules">
+                <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')" />
+                    </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" />
+                    </el-form-item>
+                </template>
+            </app-filter>
+        </template>
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getActionButtons(['member_institution_open_add'])"
+                    @click="openComponent" />
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-operation size="small" :data-list="getActionButtons(['query_internal_liquidation_details'])"
+                    @click="(code: string) => openComponent(code, row)" circle />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ record, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormRules } from 'element-plus'
+import { useDataFilter } from '@/hooks/datatable-v2'
+import { useRequest } from '@/hooks/request'
+import { useOperation } from '@/hooks/operation'
+import { useMarket } from '@/hooks/market'
+import { queryMemberGoodsLimit } from '@/services/api/member'
+import { i18n } from '@/stores'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
+import AppSelectGoods from '@pc/components/modules/select-goods/index.vue'
+import AppSelectMember from '@pc/components/modules/select-member/index.vue'
+
+const { getMarketOptions } = useMarket()
+const { global: { t } } = i18n
+
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.MemberGoodsLimitReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryMemberGoodsLimit, {
+    params: {
+        pageNum: 1,
+        pageSize: 20
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = ref<Model.TableColumn[]>([
+    { field: 'membername', label: 'member.institution.goodscfg.membername' },
+    { field: 'roledisplay', label: 'member.institution.goodscfg.roledisplay' },
+    { field: 'goodsdisplay', label: 'member.institution.goodscfg.goodsdisplay' },
+    { field: 'nodisplay', label: 'member.institution.goodscfg.nodisplay' },
+    { field: 'cannotbuy', label: 'member.institution.goodscfg.cannotsell' },
+    { field: 'cannotsell', label: 'member.institution.goodscfg.tips1' },
+    { field: 'operate', label: 'common.operate', fixed: 'right' }
+])
+
+// 表单验证规则
+const filterRules: FormRules = {
+    userid: [{
+        required: true,
+        message: t('member.institution.goodscfg.tips1')
+    }]
+}
+
+const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.MemberGoodsLimitReq>({
+    filters: [
+        {
+            field: 'userid',
+            label: t('member.institution.goodscfg.userid'),
+            required: true,
+        },
+        {
+            field: 'marketid',
+            label: t('member.institution.goodscfg.marketid'),
+            required: true,
+            options: () => getMarketOptions()
+        },
+        {
+            field: 'goodsid',
+            label: t('member.institution.goodscfg.goodsid'),
+            required: true,
+        }
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
+
+// 处理请求参数
+const processRequiredParams = () => {
+    const qs = getQueryParams()
+    return qs
+}
+
+const onSearch = () => {
+    const qs = processRequiredParams()
+    run(qs)
+}
+
 </script>

+ 97 - 1
src/packages/pc/views/member/institution/industry/index.vue

@@ -1,7 +1,103 @@
 <!-- 会员机构管理-机构管理-产业会员管理 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :option="filterOption" :rules="filterRules" />
+        </template>
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getActionButtons(['member_institution_open_add'])"
+                    @click="openComponent" />
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-operation size="small" :data-list="getActionButtons(['query_internal_liquidation_details'])"
+                    @click="(code: string) => openComponent(code, row)" circle />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ record, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormRules } from 'element-plus'
+import { useDataFilter } from '@/hooks/datatable-v2'
+import { useRequest } from '@/hooks/request'
+import { useOperation } from '@/hooks/operation'
+import { queryRole } from '@/services/api/member'
+import { i18n } from '@/stores'
+import { formatDate } from '@/filters'
+import { useEnum } from '@/hooks/enum'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
+
+const { global: { t } } = i18n
+// 状态
+const areastatusEnum = useEnum('areastatus')
+
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.OrganRoleReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryRole, {
+    params: {
+        roleid: 9,
+        pageNum: 1,
+        pageSize: 20
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = ref<Model.TableColumn[]>([
+    { field: 'memberuserid', label: 'member.institution.industry.memberuserid' },
+    { field: 'accountname', label: 'member.institution.industry.accountname' },
+    { field: 'accountid', label: 'member.institution.industry.accountid' },
+    { field: 'accountstatus', label: 'member.institution.industry.accountstatus', formatValue: (val) => areastatusEnum.getEnumTypeName(val) },
+    { field: 'operation', label: 'member.institution.industry.operation' },
+    { field: 'rolemodifytime', label: 'member.institution.industry.rolemodifytime', formatValue:(val) => formatDate(val) },
+    { field: 'operate', label: 'common.operate', fixed: 'right' }
+])
+
+// 表单验证规则
+const filterRules: FormRules = {
+    accountname: [{
+        required: true,
+    }]
+}
+
+const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.OrganRoleReq>({
+    filters: [
+        {
+            field: 'accountname',
+            label: t('member.institution.industry.accountname'),
+            required: true,
+        }
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
+
+// 处理请求参数
+const processRequiredParams = () => {
+    const qs = getQueryParams()
+    return qs
+}
+
+const onSearch = () => {
+    const qs = processRequiredParams()
+    run(qs)
+}
+
 </script>

+ 97 - 1
src/packages/pc/views/member/institution/marketer/index.vue

@@ -1,7 +1,103 @@
 <!-- 会员机构管理-机构管理-做市会员管理 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :option="filterOption" :rules="filterRules" />
+        </template>
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getActionButtons(['member_institution_open_add'])"
+                    @click="openComponent" />
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-operation size="small" :data-list="getActionButtons(['query_internal_liquidation_details'])"
+                    @click="(code: string) => openComponent(code, row)" circle />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ record, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormRules } from 'element-plus'
+import { useDataFilter } from '@/hooks/datatable-v2'
+import { useRequest } from '@/hooks/request'
+import { useOperation } from '@/hooks/operation'
+import { queryRole } from '@/services/api/member'
+import { i18n } from '@/stores'
+import { formatDate } from '@/filters'
+import { useEnum } from '@/hooks/enum'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
+
+const { global: { t } } = i18n
+// 状态
+const areastatusEnum = useEnum('areastatus')
+
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.OrganRoleReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryRole, {
+    params: {
+        roleid: 8,
+        pageNum: 1,
+        pageSize: 20
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = ref<Model.TableColumn[]>([
+    { field: 'memberuserid', label: 'member.institution.marketer.memberuserid' },
+    { field: 'accountname', label: 'member.institution.marketer.accountname' },
+    { field: 'accountid', label: 'member.institution.marketer.accountid' },
+    { field: 'accountstatus', label: 'member.institution.marketer.accountstatus', formatValue: (val) => areastatusEnum.getEnumTypeName(val) },
+    { field: 'operation', label: 'member.institution.marketer.operation' },
+    { field: 'rolemodifytime', label: 'member.institution.marketer.rolemodifytime', formatValue:(val) => formatDate(val) },
+    { field: 'operate', label: 'common.operate', fixed: 'right' }
+])
+
+// 表单验证规则
+const filterRules: FormRules = {
+    accountname: [{
+        required: true,
+    }]
+}
+
+const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.OrganRoleReq>({
+    filters: [
+        {
+            field: 'accountname',
+            label: t('member.institution.marketer.accountname'),
+            required: true,
+        }
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
+
+// 处理请求参数
+const processRequiredParams = () => {
+    const qs = getQueryParams()
+    return qs
+}
+
+const onSearch = () => {
+    const qs = processRequiredParams()
+    run(qs)
+}
+
 </script>

+ 97 - 1
src/packages/pc/views/member/institution/marketing/index.vue

@@ -1,7 +1,103 @@
 <!-- 会员机构管理-机构管理-营销中心管理 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :option="filterOption" :rules="filterRules" />
+        </template>
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getActionButtons(['member_institution_open_add'])"
+                    @click="openComponent" />
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-operation size="small" :data-list="getActionButtons(['query_internal_liquidation_details'])"
+                    @click="(code: string) => openComponent(code, row)" circle />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ record, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormRules } from 'element-plus'
+import { useDataFilter } from '@/hooks/datatable-v2'
+import { useRequest } from '@/hooks/request'
+import { useOperation } from '@/hooks/operation'
+import { queryRole } from '@/services/api/member'
+import { i18n } from '@/stores'
+import { formatDate } from '@/filters'
+import { useEnum } from '@/hooks/enum'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
+
+const { global: { t } } = i18n
+// 状态
+const areastatusEnum = useEnum('areastatus')
+
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.OrganRoleReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryRole, {
+    params: {
+        roleid: 3,
+        pageNum: 1,
+        pageSize: 20
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = ref<Model.TableColumn[]>([
+    { field: 'memberuserid', label: 'member.institution.marketing.memberuserid' },
+    { field: 'accountname', label: 'member.institution.marketing.accountname' },
+    { field: 'accountid', label: 'member.institution.marketing.accountid' },
+    { field: 'accountstatus', label: 'member.institution.marketing.accountstatus', formatValue: (val) => areastatusEnum.getEnumTypeName(val) },
+    { field: 'operation', label: 'member.institution.marketing.operation' },
+    { field: 'rolemodifytime', label: 'member.institution.marketing.rolemodifytime', formatValue:(val) => formatDate(val) },
+    { field: 'operate', label: 'common.operate', fixed: 'right' }
+])
+
+// 表单验证规则
+const filterRules: FormRules = {
+    accountname: [{
+        required: true,
+    }]
+}
+
+const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.OrganRoleReq>({
+    filters: [
+        {
+            field: 'accountname',
+            label: t('member.institution.marketing.accountname'),
+            required: true,
+        }
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
+
+// 处理请求参数
+const processRequiredParams = () => {
+    const qs = getQueryParams()
+    return qs
+}
+
+const onSearch = () => {
+    const qs = processRequiredParams()
+    run(qs)
+}
+
 </script>

+ 97 - 1
src/packages/pc/views/member/institution/operation/index.vue

@@ -1,7 +1,103 @@
 <!-- 会员机构管理-机构管理-运营机构管理 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :option="filterOption" :rules="filterRules" />
+        </template>
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getActionButtons(['member_institution_open_add'])"
+                    @click="openComponent" />
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-operation size="small" :data-list="getActionButtons(['query_internal_liquidation_details'])"
+                    @click="(code: string) => openComponent(code, row)" circle />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ record, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormRules } from 'element-plus'
+import { useDataFilter } from '@/hooks/datatable-v2'
+import { useRequest } from '@/hooks/request'
+import { useOperation } from '@/hooks/operation'
+import { queryRole } from '@/services/api/member'
+import { i18n } from '@/stores'
+import { formatDate } from '@/filters'
+import { useEnum } from '@/hooks/enum'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
+
+const { global: { t } } = i18n
+// 状态
+const areastatusEnum = useEnum('areastatus')
+
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.OrganRoleReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryRole, {
+    params: {
+        roleid: 2,
+        pageNum: 1,
+        pageSize: 20
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = ref<Model.TableColumn[]>([
+    { field: 'memberuserid', label: 'member.institution.operation.memberuserid' },
+    { field: 'accountname', label: 'member.institution.operation.accountname' },
+    { field: 'accountid', label: 'member.institution.operation.accountid' },
+    { field: 'accountstatus', label: 'member.institution.operation.accountstatus', formatValue: (val) => areastatusEnum.getEnumTypeName(val) },
+    { field: 'operation', label: 'member.institution.operation.operation' },
+    { field: 'rolemodifytime', label: 'member.institution.operation.rolemodifytime', formatValue:(val) => formatDate(val) },
+    { field: 'operate', label: 'common.operate', fixed: 'right' }
+])
+
+// 表单验证规则
+const filterRules: FormRules = {
+    accountname: [{
+        required: true,
+    }]
+}
+
+const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.OrganRoleReq>({
+    filters: [
+        {
+            field: 'accountname',
+            label: t('member.institution.operation.accountname'),
+            required: true,
+        }
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
+
+// 处理请求参数
+const processRequiredParams = () => {
+    const qs = getQueryParams()
+    return qs
+}
+
+const onSearch = () => {
+    const qs = processRequiredParams()
+    run(qs)
+}
+
 </script>

+ 103 - 1
src/packages/pc/views/member/institution/riskcfg/index.vue

@@ -1,7 +1,109 @@
 <!-- 会员机构管理-机构管理-风控个性化设置 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :option="filterOption" :rules="filterRules">
+                <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')" />
+                    </el-form-item>
+                </template>
+            </app-filter>
+        </template>
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getActionButtons(['member_institution_open_add'])"
+                    @click="openComponent" />
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-operation size="small" :data-list="getActionButtons(['query_internal_liquidation_details'])"
+                    @click="(code: string) => openComponent(code, row)" circle />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ record, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormRules } from 'element-plus'
+import { useDataFilter } from '@/hooks/datatable-v2'
+import { useRequest } from '@/hooks/request'
+import { useOperation } from '@/hooks/operation'
+import { queryAccountRiskConfig } from '@/services/api/member'
+import { i18n } from '@/stores'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
+import AppSelectMember from '@pc/components/modules/select-member/index.vue'
+
+const { global: { t } } = i18n
+
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.AccountRiskConfigReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryAccountRiskConfig, {
+    params: {
+        pageNum: 1,
+        pageSize: 20
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = ref<Model.TableColumn[]>([
+    { field: 'userid', label: 'member.institution.riskcfg.userid' },
+    { field: 'username', label: 'member.institution.riskcfg.username' },
+    { field: 'accountid', label: 'member.institution.riskcfg.accountid' },
+    { field: 'customertype', label: 'member.institution.riskcfg.customertype' },
+    { field: 'operate', label: 'common.operate', fixed: 'right' }
+])
+
+// 表单验证规则
+const filterRules: FormRules = {
+    memberuserid: [{
+        required: true,
+        message: '请选择会员'
+    }]
+}
+
+const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.AccountRiskConfigReq>({
+    filters: [
+        {
+            field: 'memberuserid',
+            label: t('member.institution.riskcfg.memberuserid'),
+            required: true,
+        },
+        {
+            field: 'accountid',
+            label: t('member.institution.riskcfg.accountid'),
+            required: true,
+        }
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
+
+// 处理请求参数
+const processRequiredParams = () => {
+    const qs = getQueryParams()
+    return qs
+}
+
+const onSearch = () => {
+    const qs = processRequiredParams()
+    run(qs)
+}
+
 </script>

+ 97 - 1
src/packages/pc/views/member/institution/self/index.vue

@@ -1,7 +1,103 @@
 <!-- 会员机构管理-机构管理-自营会员管理 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :option="filterOption" :rules="filterRules" />
+        </template>
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getActionButtons(['member_institution_open_add'])"
+                    @click="openComponent" />
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-operation size="small" :data-list="getActionButtons(['query_internal_liquidation_details'])"
+                    @click="(code: string) => openComponent(code, row)" circle />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ record, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormRules } from 'element-plus'
+import { useDataFilter } from '@/hooks/datatable-v2'
+import { useRequest } from '@/hooks/request'
+import { useOperation } from '@/hooks/operation'
+import { queryRole } from '@/services/api/member'
+import { i18n } from '@/stores'
+import { formatDate } from '@/filters'
+import { useEnum } from '@/hooks/enum'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
+
+const { global: { t } } = i18n
+// 状态
+const areastatusEnum = useEnum('areastatus')
+
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.OrganRoleReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryRole, {
+    params: {
+        roleid: 6,
+        pageNum: 1,
+        pageSize: 20
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = ref<Model.TableColumn[]>([
+    { field: 'memberuserid', label: 'member.institution.self.memberuserid' },
+    { field: 'accountname', label: 'member.institution.self.accountname' },
+    { field: 'accountid', label: 'member.institution.self.accountid' },
+    { field: 'accountstatus', label: 'member.institution.self.accountstatus', formatValue: (val) => areastatusEnum.getEnumTypeName(val) },
+    { field: 'operation', label: 'member.institution.self.operation' },
+    { field: 'rolemodifytime', label: 'member.institution.self.rolemodifytime', formatValue:(val) => formatDate(val) },
+    { field: 'operate', label: 'common.operate', fixed: 'right' }
+])
+
+// 表单验证规则
+const filterRules: FormRules = {
+    accountname: [{
+        required: true,
+    }]
+}
+
+const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.OrganRoleReq>({
+    filters: [
+        {
+            field: 'accountname',
+            label: t('member.institution.self.accountname'),
+            required: true,
+        }
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
+
+// 处理请求参数
+const processRequiredParams = () => {
+    const qs = getQueryParams()
+    return qs
+}
+
+const onSearch = () => {
+    const qs = processRequiredParams()
+    run(qs)
+}
+
 </script>

+ 98 - 1
src/packages/pc/views/member/institution/warehouse/index.vue

@@ -1,7 +1,104 @@
 <!-- 会员机构管理-机构管理-仓库机构管理 -->
+<!-- 会员机构管理-机构管理-营销中心管理 -->
 <template>
-    <app-view></app-view>
+    <app-view>
+        <template #header>
+            <app-filter :option="filterOption" :rules="filterRules" />
+        </template>
+        <app-table :data="dataList" :columns="tableColumns" :loading="loading">
+            <template #headerLeft>
+                <app-operation :data-list="getActionButtons(['member_institution_open_add'])"
+                    @click="openComponent" />
+            </template>
+            <!-- 操作 -->
+            <template #operate="{ row }">
+                <app-operation size="small" :data-list="getActionButtons(['query_internal_liquidation_details'])"
+                    @click="(code: string) => openComponent(code, row)" circle />
+            </template>
+            <template #footer>
+                <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
+                    @change="onSearch" />
+            </template>
+        </app-table>
+        <component :is="componentMap.get(componentId)" v-bind="{ record, queryParams }" @closed="closeComponent"
+            v-if="componentId" />
+    </app-view>
 </template>
 
 <script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage, FormRules } from 'element-plus'
+import { useDataFilter } from '@/hooks/datatable-v2'
+import { useRequest } from '@/hooks/request'
+import { useOperation } from '@/hooks/operation'
+import { queryRole } from '@/services/api/member'
+import { i18n } from '@/stores'
+import { formatDate } from '@/filters'
+import { useEnum } from '@/hooks/enum'
+import AppTable from '@pc/components/base/table/index.vue'
+import AppPagination from '@pc/components/base/pagination/index.vue'
+import AppOperation from '@pc/components/base/operation/index.vue'
+import AppFilter from '@pc/components/base/table-filter-v2/index.vue'
+
+const { global: { t } } = i18n
+// 状态
+const areastatusEnum = useEnum('areastatus')
+
+const { componentMap, componentId, record, openComponent, closeComponent, getActionButtons } = useOperation<Model.OrganRoleReq>({
+    onClose: () => onSearch()
+})
+
+const { dataList, total, pageSize, pageIndex, loading, run } = useRequest(queryRole, {
+    params: {
+        roleid: 4,
+        pageNum: 1,
+        pageSize: 20
+    },
+    onError: (err) => {
+        ElMessage.error(err)
+    }
+})
+
+const tableColumns = ref<Model.TableColumn[]>([
+    { field: 'memberuserid', label: 'member.institution.warehouse.memberuserid' },
+    { field: 'accountname', label: 'member.institution.warehouse.accountname' },
+    { field: 'accountid', label: 'member.institution.warehouse.accountid' },
+    { field: 'accountstatus', label: 'member.institution.warehouse.accountstatus', formatValue: (val) => areastatusEnum.getEnumTypeName(val) },
+    { field: 'operation', label: 'member.institution.warehouse.operation' },
+    { field: 'rolemodifytime', label: 'member.institution.warehouse.rolemodifytime', formatValue:(val) => formatDate(val) },
+    { field: 'operate', label: 'common.operate', fixed: 'right' }
+])
+
+// 表单验证规则
+const filterRules: FormRules = {
+    accountname: [{
+        required: true,
+    }]
+}
+
+const { queryParams, filterOption, getQueryParams, resetFilters } = useDataFilter<Model.OrganRoleReq>({
+    filters: [
+        {
+            field: 'accountname',
+            label: t('member.institution.warehouse.accountname'),
+            required: true,
+        }
+    ],
+    buttons: [
+        { label: t('operation.search'), className: 'el-button--primary', onClick: () => onSearch() },
+        { label: t('operation.reset'), className: 'el-button--primary', validateEvent: false, onClick: () => resetFilters() }
+    ]
+})
+
+// 处理请求参数
+const processRequiredParams = () => {
+    const qs = getQueryParams()
+    return qs
+}
+
+const onSearch = () => {
+    const qs = processRequiredParams()
+    run(qs)
+}
+
 </script>

+ 26 - 26
src/packages/pc/views/query/order/monitor/index.vue

@@ -5,12 +5,12 @@
             <app-filter :option="filterOption">
                 <template #risk="{ item }">
                     <el-form-item :label="item.label" prop="risk">
-                        ><el-input-number v-model="item.value" :laceholder="t('common.pleaseenter')" />{{ t('query.orer.monitor.tips1') }} {{ countDown.time }})
+                        ><el-input-number v-model="item.value" :laceholder="t('common.pleaseenter')" />{{ t('query.order.monitor.tips1') }} {{ countDown.time }})
                     </el-form-item>
                 </template>
                 <el-form-item>
-                    <el-button type="primary" @click="countDown.stop" v-if="countDown.status.value">{{ t('query.orer.monitor.start') }}</el-button>
-                    <el-button type="primary" @click="startCountDown" v-else>{{ t('query.orer.monitor.stop') }}</el-button>
+                    <el-button type="primary" @click="countDown.stop" v-if="countDown.status.value">{{ t('query.order.monitor.start') }}</el-button>
+                    <el-button type="primary" @click="startCountDown" v-else>{{ t('query.order.monitor.stop') }}</el-button>
                 </el-form-item>
             </app-filter>
         </template>
@@ -18,23 +18,23 @@
             <template #headerLeft>
                 <ul style="display: flex;gap: 20px;" v-if="data">
                     <li>
-                        <span>{{ t('query.orer.monitor.buyBackCount') }}</span>
+                        <span>{{ t('query.order.monitor.buyBackCount') }}</span>
                         <span>{{ data.buyBackCount }}</span>
                     </li>
                     <li>
-                        <span>{{ t('query.orer.monitor.sellCount') }}</span>
+                        <span>{{ t('query.order.monitor.sellCount') }}</span>
                         <span>{{ data.sellCount }}</span>
                     </li>
                     <li>
-                        <span>{{ t('query.orer.monitor.netcurpositionqty') }}</span>
+                        <span>{{ t('query.order.monitor.netcurpositionqty') }}</span>
                         <span>{{ data.netcurpositionqty }}</span>
                     </li>
                     <li>
-                        <span>{{ t('query.orer.monitor.avgholderprice') }}</span>
+                        <span>{{ t('query.order.monitor.avgholderprice') }}</span>
                         <span>{{ data.avgholderprice }}</span>
                     </li>
                     <li>
-                        <span>{{ t('query.orer.monitor.totalfloatpl') }}</span>
+                        <span>{{ t('query.order.monitor.totalfloatpl') }}</span>
                         <span>{{ data.floatpl }}</span>
                     </li>
                 </ul>
@@ -64,44 +64,44 @@ const countDown = useCountDown(10)
 const { global: { t } } = i18n
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
-    { field: 'userfullname', label: 'query.orer.monitor.userfullname' },
-    { field: 'goodsfullname', label: 'query.orer.monitor.goodsfullname' },
-    { field: 'buyorselldisplay', label: 'query.orer.monitor.buyorselldisplay' },
-    { field: 'tradetimestr', label: 'query.orer.monitor.tradetimestr' },
-    { field: 'holderprice', label: 'query.orer.monitor.holderprice' },
-    { field: 'lastprice', label: 'query.orer.monitor.lastprice' },
-    { field: 'depositratedisplay', label: 'query.orer.monitor.depositratedisplay' },
-    { field: 'floatpl', label: 'query.orer.monitor.floatpl' },
-    { field: 'holdernum', label: 'query.orer.monitor.holdernum' },
-    { field: 'freezenum', label: 'query.orer.monitor.freezenum' },
-    { field: 'holderamount', label: 'query.orer.monitor.holderamount' },
-    { field: 'payeddeposit', label: 'query.orer.monitor.payeddeposit' },
-    { field: 'tradeid', label: 'query.orer.monitor.tradeid' }
+    { field: 'userfullname', label: 'query.order.monitor.userfullname' },
+    { field: 'goodsfullname', label: 'query.order.monitor.goodsfullname' },
+    { field: 'buyorselldisplay', label: 'query.order.monitor.buyorselldisplay' },
+    { field: 'tradetimestr', label: 'query.order.monitor.tradetimestr' },
+    { field: 'holderprice', label: 'query.order.monitor.holderprice' },
+    { field: 'lastprice', label: 'query.order.monitor.lastprice' },
+    { field: 'depositratedisplay', label: 'query.order.monitor.depositratedisplay' },
+    { field: 'floatpl', label: 'query.order.monitor.floatpl' },
+    { field: 'holdernum', label: 'query.order.monitor.holdernum' },
+    { field: 'freezenum', label: 'query.order.monitor.freezenum' },
+    { field: 'holderamount', label: 'query.order.monitor.holderamount' },
+    { field: 'payeddeposit', label: 'query.order.monitor.payeddeposit' },
+    { field: 'tradeid', label: 'query.order.monitor.tradeid' }
 ])
 
 const { queryParams, filterOption, getQueryParams } = useDataFilter<Model.MonitorddjkReq>({
     filters: [
         {
             field: 'risk',
-            label: t('query.orer.monitor.risk'),
+            label: t('query.order.monitor.risk'),
             value: 50
         },
         {
             field: 'goodsfullname',
-            label: t('query.orer.monitor.goodsfullname1')
+            label: t('query.order.monitor.goodsfullname1')
         },
         {
             field: 'buyorsell',
-            label: t('query.orer.monitor.buyorsell'),
+            label: t('query.order.monitor.buyorsell'),
             options: () => getBuyOrSellList()
         },
         {
             field: 'userfullname',
-            label: t('query.orer.monitor.userfullname')
+            label: t('query.order.monitor.userfullname')
         },
         {
             field: 'parentusername',
-            label: t('query.orer.monitor.parentusername')
+            label: t('query.order.monitor.parentusername')
         }
     ]
 })

+ 56 - 0
src/services/api/member/index.ts

@@ -118,4 +118,60 @@ export function queryOrganDetailList(options: CommonFetchOptions<{ request: Mode
  */
 export function queryOrganDetail(options: CommonFetchOptions<{ request: Model.OrganDetailReq; response: Model.OrganDetailRsp; }>) {
     return httpClient.commonRequest('/organDetail/queryDetail', 'get', options)
+}
+
+/**
+ * 会员机构管理-->机构管理-->商品限制设置--> 新增、修改
+ */
+export function addLimit(options: CommonFetchOptions<{ request: Model.AddLimitReq; }>) {
+    return httpClient.commonRequest('/organDetail/addlimit', 'post', options)
+}
+
+/**
+ * 会员机构管理-->机构管理-->商品限制设置--> 删除
+ */
+export function delLimit(options: CommonFetchOptions<{ request: Model.DelLimitReq; }>) {
+    return httpClient.commonRequest('/organDetail/dellimit', 'get', options)
+}
+
+/**
+ * 会员机构管理-->机构管理-->商品限制设置-->获取列表
+ */
+export function queryMemberGoodsLimit(options: CommonFetchOptions<{ request: Model.MemberGoodsLimitReq; response: Model.MemberGoodsLimitRsp[]; }>) {
+    return httpClient.commonRequest('/organDetail/querymembergoodslimit', 'get', options)
+}
+
+/**
+ * 会员机构管理-->机构管理-->风控个性化设置--> 新增
+ */
+export function addAccountRiskConfig(options: CommonFetchOptions<{ request: Model.AddAccountRiskConfigReq; }>) {
+    return httpClient.commonRequest('/organDetail/addaccountriskconfig', 'post', options)
+}
+
+/**
+ * 会员机构管理-->机构管理-->风控个性化设置-->详情
+ */
+export function accountRiskConfigview(options: CommonFetchOptions<{ request: Model.AccountRiskConfigViewReq; response: Model.AccountRiskConfigViewRsp;}>) {
+    return httpClient.commonRequest('/organDetail/accountriskconfigview', 'get', options)
+}
+
+/**
+ * 会员机构管理-->机构管理-->风控个性化设置-->获取列表
+ */
+export function queryAccountRiskConfig(options: CommonFetchOptions<{ request: Model.AccountRiskConfigReq; response: Model.AccountRiskConfigRsp[]; }>) {
+    return httpClient.commonRequest('/organDetail/accountriskconfig', 'get', options)
+}
+
+/**
+ * 会员机构管理-->机构管理-->会员机构查询-->获取列表(营销中心查看经纪会员)
+ */
+export function queryRole(options: CommonFetchOptions<{ request: Model.OrganRoleReq; response: Model.OrganRoleRsp[]; }>) {
+    return httpClient.commonRequest('/organDetail/queryrole', 'get', options)
+}
+
+/**
+ * 会员机构管理-->机构管理-->机构详情 ( rolename: 2--运营 operate * 3--营销 marketing * 4--仓库 warehouse * 5--三方 tpart * 6--自营 selfsupport * 7--经纪 broker * 8--做市 marketer * 9--产业 industry)
+ */
+export function queryRoleDetail(options: CommonFetchOptions<{ request: Model.RoleDetailReq; response: Model.RoleRsp[]; }>) {
+    return httpClient.commonRequest('/organDetail/queryroleDetail', 'get', options)
 }

+ 200 - 0
src/types/model/member.d.ts

@@ -705,4 +705,204 @@ declare namespace Model {
         };
         weixinUrl: string;
     }
+    /** 会员机构管理-->机构管理-->商品限制设置-->获取列表 请求 */
+    interface MemberGoodsLimitReq {
+        goodsid?: number; // 商品
+        marketid?: number; // 市场
+        roletype?: number; // 角色类型
+        userid?: number; // 经纪会员
+    }
+
+    /** 会员机构管理-->机构管理-->商品限制设置-->获取列表 响应 */
+    interface MemberGoodsLimitRsp {
+        autoid: number
+         // 不能挂买
+        cannotbuy: number
+        // 不能挂卖
+        cannotsell: number
+        // 商品
+        goodsdisplay: string
+        // 会员机构
+        membername: string
+        // 不显示
+        nodisplay: number
+         // 机构角色
+        roledisplay: string
+    }
+
+    /** 会员机构管理-->机构管理-->商品限制设置--> 删除 请求 */
+    interface DelLimitReq {
+        goodsid?: number; // 商品
+        marketid?: number; // 市场
+        roletype?: number; // 角色类型
+        userid?: number; // 经纪会员
+    }
+
+    /** 会员机构管理-->机构管理-->商品限制设置--> 新增、修改 请求 */
+    interface AddLimitReq {
+        goodsid?: number; // 商品
+        marketid?: number; // 市场
+        roletype?: number; // 角色类型
+        userid?: number; // 经纪会员
+    }
+
+    /** 会员机构管理-->机构管理-->风控个性化设置-->获取列表 请求 */
+    interface AccountRiskConfigReq {
+        accountid?: string; // 资金账户
+        member?: number; // member
+        memberuserid?: number; // memberuserid
+        username?: string; // 会员
+    }
+
+    /** 会员机构管理-->机构管理-->风控个性化设置-->获取列表 响应 */
+    interface AccountRiskConfigRsp {
+        accountid?: number; // 资金账户
+        customertype?: number; // 风险率类型(客户类别)
+        userid?: number; // 会员代码
+        username?: string; // 会员名称
+    }
+
+    /** 会员机构管理-->机构管理-->风控个性化设置-->详情 请求 */
+    interface AccountRiskConfigViewReq {
+        accountid?: number; // accountid
+    }
+
+    /** 会员机构管理-->机构管理-->风控个性化设置-->详情 响应 */
+    interface AccountRiskConfigViewRsp {
+        accountid: number; // 资金账户
+        accountname: string; // accountname
+        customertype: number; // 投资者风险率客户类别
+        usertype: number; // usertype
+        userid: number; // 用户ID
+        ismarketacc: number; // ismarketacc
+    }
+
+    /** 会员机构管理-->机构管理-->风控个性化设置--> 新增 请求 */
+    interface AddAccountRiskConfigReq {
+        accountid?: number; // accountid
+        customertype?: number; // customertype
+        userid?: number; // userid
+    }
+
+    /** 会员机构管理-->机构管理-->会员机构查询-->获取列表(营销中心查看经纪会员) 请求 */
+    interface OrganRoleReq {
+        accountname?: string; // accountname
+        orgztypes?: string; // 管理员所属机构角色类型
+        parentuserid?: number; // parentuserid
+        roleid?: number; // roleid
+    }
+
+    /** 会员机构管理-->机构管理-->会员机构查询-->获取列表(营销中心查看经纪会员) 请求 */
+    interface OrganRoleRsp {
+        // 资金账户
+        accountid: number
+        // 账户名称(机构名称)
+        accountname: string
+        // code areastatus 账户状态 - 1:待激活 2:待审核 3:待复审 4:正常 5:审核拒绝 6:停用(注销) 7:注销(删除)
+        accountstatus: number
+        // 申请来源 - 1:管理端 2:终端
+        applysrc: number
+        // 审核备注
+        auditremark: string
+        // 审核来源 - 1:管理端 2:终端
+        auditsrc: number
+        // 审核时间
+        audittime: string
+        // 审核人
+        audituserid: number
+        // 所属经纪人ID(所属客户经理-千海金)
+        broker: number
+        // 销户时间
+        canceltime: string
+        // 销户人
+        canceluserid: number
+        // cancrossadd
+        cancrossadd: number
+        // 是否可推荐 - 0:不可 1;可 (是否推荐人)
+        canrecommend: number
+        // 联系人
+        contactname: string
+        // 创建时间
+        createtime: string
+        // 创建交易日(yyyyMMdd)
+        createtradedate: string
+        // 创建人
+        creatorid: number
+        // 授信额度(金瑞)分拣室服务费(广钻)
+        creditquota: number
+        // curuserid
+        curuserid: number
+        // 是否已实名认证 - 0:未认证 1:已认证 2:已提交(待审核) 3:已拒绝
+        hasauth: number
+        // 是否已同步(千海金) 0:未同步 1;已同步
+        hasuploaded: number
+        // 是否匿名下单 - 0:否 1:是
+        isanonymous: number
+        // 子机构最大层级数
+        maxLevel: number
+        // 最大用户数(经纪会员下投资者个数)
+        maxinvestornum: number
+        // 所属会员ID
+        memberuserid: number
+        // 修改人
+        modifierid: number
+        // 变更备注
+        modifyremark: string
+        // 修改来源 - 1:管理端 2:终端
+        modifysrc: number
+        // 变更状态 1 未变更 2 变更中 3 变更待审核 4 变更待复核(投资者)
+        modifystatus: number
+        // 修改时间
+        modifytime: string
+        // 外部用户ID(千海金-外部门店ID)
+        outeruserid: string
+        // parentid
+        parentid: number
+        // parentname
+        parentname: string
+        // 上级顶级机构 [092=0,1时,默认为1, 092=2时若自已为顶级,则填入自己,自己不为顶级,填入ParentUserID的ParentTopUser]
+        parenttopuser: string
+        // 所属机构ID
+        parentuserid: number
+        // 地址
+        pathname: string
+        // 默认结算资金账号ID(机构分润使用) 作废
+        reckonaccountid: number
+        // 推荐总人数
+        refercount: number
+        // 推荐人ID
+        refereeuserid: number
+        // 推荐码
+        refernum: string
+        // roleIds
+        roleIds: string
+        // 角色创建时间
+        rolemodifytime: string
+        // 根用户ID
+        rootuserid: number
+        // 间接推荐总人数
+        secrefercount: number
+        // 送检账户(广钻)
+        sjaccountno: string
+        // 子账户层数
+        subaccountlevel: number
+        // subarealevel
+        subarealevel: number
+        // 子机构层级路径(逗号分隔,首尾加逗号)
+        subarealevelpath: string
+        // 所属部门(业务部门)
+        subjectid: number
+        // 团队经理用户ID(千海金:门店代理)
+        teammanageruserid: number
+        // 同步时间
+        uploadedtime: string
+        // userName
+        userName: string
+        // 用户ID
+        userid: number
+        // 所有者类型
+        userinfotype: number
+        // 账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
+        usertype: number
+    }
 }