Ver código fonte

Merge branch 'mtp_v6' of http://47.101.159.18:3000/Muchinfo/MTP2.0_WEB into mtp_v6

li.shaoyi 4 anos atrás
pai
commit
7c433e8588
31 arquivos alterados com 778 adições e 417 exclusões
  1. 2 2
      public/config/app.config.json
  2. 33 27
      public/proto/mtp.proto
  3. 14 2
      src/services/go/ermcp/qhj/index.ts
  4. 44 2
      src/services/go/ermcp/qhj/interface.ts
  5. 3 0
      src/services/proto/accountinfo/interface.ts
  6. 3 4
      src/services/proto/manager/index.ts
  7. 11 37
      src/services/socket/protobuf/buildReq.ts
  8. 1 4
      src/services/socket/protobuf/interface.ts
  9. 6 6
      src/utils/objHandle/index.ts
  10. 0 5
      src/views/business/plan/components/audit/index.vue
  11. 0 5
      src/views/business/plan/components/delete/index.vue
  12. 0 5
      src/views/business/plan/components/detail/index.vue
  13. 0 5
      src/views/business/plan/components/recommit/index.vue
  14. 1 1
      src/views/business/sell/components/storage/index.vue
  15. 39 19
      src/views/information/account_info/compoments/managers-permission-detail/index.vue
  16. 135 13
      src/views/information/custom/compoments/add/index.vue
  17. 3 0
      src/views/information/custom/compoments/add/interface.ts
  18. 25 2
      src/views/information/custom/compoments/add/setup.ts
  19. 41 2
      src/views/information/custom/compoments/common-detail/index.vue
  20. 44 19
      src/views/information/custom/index.vue
  21. 198 1
      src/views/information/custom/setup.ts
  22. 11 10
      src/views/information/spot-contract/components/add/index.vue
  23. 7 7
      src/views/information/spot-contract/components/modify/index.vue
  24. 32 48
      src/views/information/spot-contract/components/setup.ts
  25. 10 1
      src/views/manage/finance-review/list/invoice/index.vue
  26. 19 1
      src/views/report/components/filter/index.vue
  27. 3 0
      src/views/report/setup.ts
  28. 14 3
      src/views/report/spot-report/components/filterTable/index.vue
  29. 3 1
      src/views/report/spot-report/list/spot_report/index.vue
  30. 27 64
      swagger-to-ts/swagger.ts
  31. 49 121
      swagger-to-ts/swagger.txt

+ 2 - 2
public/config/app.config.json

@@ -1,3 +1,3 @@
 {
-    "apiUrl": "http://192.168.31.203:8080/cfg?key=test_203"
-}
+    "apiUrl": "http://192.168.31.175:8080/cfg?key=test_175"
+}

+ 33 - 27
public/proto/mtp.proto

@@ -1355,33 +1355,39 @@ message ManagerRoleOperateRsp {
 
 // 客户资料操作请求 0 29 187
 message CustomerInfoOperateReq {
- optional MessageHead Header = 1; // MessageHead
- optional uint32 operatetype = 2; // uint32 操作类型-1:新增 2:修改
-  optional uint64 userid = 3; // uint64 用户ID(修改时必填)
-  optional uint64 areaid = 4; // uint64 所属机构
-  optional string logincode = 5; // string 登录帐号
-  optional string loginpwd = 6; // string 登录密码
-  optional uint32 userinfotype = 7; // uint32 客户类型 1:个人  2:企业
-  optional string username = 8; // string 姓名、企业名称
-  optional string nickname = 9; // string 企业简称(企业)
-  optional uint32 cardtype = 10; // uint32 证件类型
-  optional string cardnum = 11; // string 证件号码
-  optional string cardfrontphotourl = 12; // string 身份证正面照(个人)
-  optional string cardbackphotourl = 13; // string 身份证反面照(个人)
-  optional string email = 14; // string 邮箱(个人)
-  optional string referral = 15; // string 推荐码(个人)
-  optional string legalpersonname = 16; // string 法定代表人(企业)
-  optional string taxpayernum = 17; // string 纳税人识别号(企业)
-  optional string proxystatementurl = 18; // string 营业执照(企业)
-  optional string contactname = 19; // string 联系人(企业)
-  optional string mobilephone = 20; // string 手机号码、联系人手机号
-  optional string telphone = 21; // string 联系电话
-  optional uint64 provinceid = 22; // uint64 省
-  optional uint64 cityid = 23; // uint64 市
-  optional uint64 districtid = 24; // uint64 县
-  optional string ipaddress = 25; // string 详细地址
-  optional string remark = 26; // string 备注
-  optional uint32 userstate = 27; // uint32 开户状态 1:保存草稿 2:提交审核
+	optional MessageHead Header = 1; // MessageHead
+	optional uint32 operatetype = 2; // uint32 操作类型-1:新增 2:修改
+		optional uint64 userid = 3; // uint64 用户ID(修改时必填)
+		optional uint64 areaid = 4; // uint64 所属机构
+		optional string logincode = 5; // string 登录帐号
+		optional string loginpwd = 6; // string 登录密码
+		optional uint32 userinfotype = 7; // uint32 客户类型 1:个人  2:企业
+		optional string username = 8; // string 姓名、企业名称
+		optional string nickname = 9; // string 企业简称(企业)
+		optional uint32 cardtype = 10; // uint32 证件类型
+		optional string cardnum = 11; // string 证件号码
+		optional string cardfrontphotourl = 12; // string 身份证正面照(个人)
+		optional string cardbackphotourl = 13; // string 身份证反面照(个人)
+		optional string email = 14; // string 邮箱(个人)
+		optional string referral = 15; // string 推荐码(个人)
+		optional string legalpersonname = 16; // string 法定代表人(企业)
+		optional string taxpayernum = 17; // string 纳税人识别号(企业)
+		optional string proxystatementurl = 18; // string 营业执照(企业)
+		optional string contactname = 19; // string 联系人(企业)
+		optional string mobilephone = 20; // string 手机号码、联系人手机号
+		optional string telphone = 21; // string 联系电话
+		optional uint64 provinceid = 22; // uint64 省
+		optional uint64 cityid = 23; // uint64 市
+		optional uint64 districtid = 24; // uint64 县
+		optional string ipaddress = 25; // string 详细地址
+		optional string remark = 26; // string 备注
+		optional uint32 userstate = 27; // uint32 开户状态 1:保存草稿 2:提交审核
+		optional string birthday = 28; // string 客户生日(yyyy-mm-dd)
+		optional uint64 teammanageruserid = 29; // uint64 客户经理
+		optional uint32 isAudit = 30; // uint32 是否直接审核(1:是,2:否) - 不传根据企业配置
+		optional uint64 loginid = 31; // uint64 当前登录ID
+		optional string auditRemark = 32; // string 审核备注
+		optional uint32 sex = 33; // uint32 性别 0 女 1 男
 }
 // 客户资料操作响应 0 29 188
 message CustomerInfoOperateRsp {

+ 14 - 2
src/services/go/ermcp/qhj/index.ts

@@ -21,8 +21,10 @@ import {
     QhjRSTriggerLog,
     QhjTradeGoodsPickup,
     QueryAccountInOutApplyReq, QueryAgreementChangeLogReq, QueryAgreementConfigReq,
+    QueryBrokerApplyRsp,
+    QueryBrokerApplyRsq,
     QueryContractLogReq,
-    QueryContractLogRsp, QueryCustomerSignStatusReq,
+    QueryContractLogRsp, QueryCustomerInfoReq, QueryCustomerSignStatusReq,
 
 
     QueryPayOrderReq,
@@ -111,6 +113,16 @@ export function queryParentAreaList(): Promise<QhjParentAreaList[]> {
         throw new Error(`查询所属机构列表: ${err}`);
     });
 }
+/**
+ * -- 铂金宝 - 查询经纪人申请(所属客户经理)
+ * 查询客户资料 /QhjMgr/QueryBrokerApply
+ * @param req
+ */
+export function QueryBrokerApply(param: QueryBrokerApplyRsq): Promise<QueryBrokerApplyRsp[]> {
+    return commonSearch_go('/QhjMgr/QueryBrokerApply', param).catch((err) => {
+        throw new Error(`查询所属机构列表: ${err}`);
+    });
+}
 
 /**
  * -- 铂金宝 - 查询待付款单据
@@ -179,7 +191,7 @@ export function queryContract(scfcontractid?: number): Promise<QhjContract[]> {
  * 查询客户资料 /QhjMgr/QueryCustomerInfo
  * @param req
  */
-export function queryCustomerInfo(req: QueryContractLogReq): Promise<QhjCustomer[]> {
+export function queryCustomerInfo(req: QueryCustomerInfoReq): Promise<QhjCustomer[]> {
     return commonSearch_go('/QhjMgr/QueryCustomerInfo', req).catch((err) => {
         throw new Error(`查询客户资料: ${err}`);
     });

+ 44 - 2
src/services/go/ermcp/qhj/interface.ts

@@ -311,6 +311,8 @@ export interface QueryCustomerInfoReq {
     userinfotype?: number//      客户类型 1-个人 2-企业
     customername?: string//      客户名称(模糊匹配)
     nickname?: string//          昵称(模糊匹配)
+    brokername?: string//          所属客户经理(模糊匹配)
+    birthday?: string//          生日查询(格式 mmdd 或 mm) 只填2位表示月份匹配(mm, 如05 - 5月), 4位表示查月日匹配(mmdd, 如0503 -5月3日)
     includesub?: number//        是否包含子级 1-包含
 }
 
@@ -321,6 +323,9 @@ export interface QhjCustomer {
     address: string;//通讯地址
     attachment1: string;//附件1
     audittime: string;//审核时间
+    birthday: string;//生日
+    brokerid: number;//所属客户经理id
+    brokername: string;//所属客户经理名称
     cardbackphotourl: string;//证件反面图片地址
     cardfrontphotourl: string;//证件正面图片地址
     cardnum: string;//证件号码
@@ -350,7 +355,9 @@ export interface QhjCustomer {
     proxystatementurl: string;//授权委托书
     querytype: number;//查询类型 1:未提交(网上开户表) 2:待审核(网上开户表) 3:正常 4:停用
     remark: string;//备注
-    status: number;//开户状态(网上开户表wskh_userinfo) - 1:未提交 2: 待初审 3:初审拒绝 4:待复审 5:复审拒绝 6:测评不通过 ; 账户状态(正式表useraccount) - 1:待激活 2:待审核 3:待复审 4:正常 5:审核拒绝 6:停用(注销) 7:注销(删除)
+    sex: number;//性别 number;
+    //-女 1-男
+    status: number;//开户状态(网上开户表wskh_userinfo) 1:未提交 2: 待初审 3:初审拒绝 4:待复审 5:复审拒绝 6:测评不通过 ; 账户状态(正式表useraccount) 1:待激活 2:待审核 3:待复审 4:正常 5:审核拒绝 6:停用(注销) 7:注销(删除)
     statusdesc: string;//账户状态中文描述
     taxpayernum: string;//纳税人识别号
     telphone: string;//联系电话
@@ -358,13 +365,48 @@ export interface QhjCustomer {
     userinfotype: number;//客户类型 1-个人 2-企业
     username: string;//用户名称
 }
-
 export interface QhjParentAreaList {
     accountname: string; // 账户名称(机构名称)
     userid: number; // 用户ID
     usertype: number; // 账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
 }
 
+export interface QueryBrokerApplyRsq {
+    userid?: number // 所属机构ID
+    filtername?: string // 名称(模糊匹配)
+    includesub?: number // 是否包含子级 1-包含
+    filterstatus?: number // 状态 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
+}
+export interface QueryBrokerApplyRsp {
+    applicantid: number;//申请人
+    applysrc: number;//申请来源 - 1:管理端 2:终端
+    applystatus: number;//申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
+    applytime: string;//申请时间
+    auditorid: number;//审核人
+    auditremark: string;//审核备注
+    auditsrc: number;//审核来源 - 1:管理端 2:终端
+    audittime: string;//审核时间
+    audittradedate: string;//审核交易日(yyyyMMdd)
+    brokerapplyid: number;//申请ID(SEQ_BROKERAPPLY)
+    cardbackphotourl: string;//证件背面图片地址
+    cardfrontphotourl: string;//证件正面图片地址
+    cardnum: string;//证件号码(加密存储) 注:数据库没存证件类型字段,产品说类型固定为身份证
+    customername: string;//姓名
+    logincode: string;//登录代码
+    mobile: string;//手机号码
+    parentuserid: number;//所属机构id
+    parentusername: string;//所属机构名称
+    refereeuserid: number;//推荐人id(经纪人)
+    refernum: string;//推荐码
+    remark: string;//备注
+    subarealevelpath: string;//层级路径
+    tradedate: string;//交易日(yyyyMMdd)
+    userid: number;//申请人用户ID
+    userinfotype: number;//用户类型 1-个人 2-企业
+    username: string;//用户名称
+}
+
+
 export interface QhjPickGoods {
     imageaddress: string;//图片
     modifierid: number;//修改人

+ 3 - 0
src/services/proto/accountinfo/interface.ts

@@ -179,6 +179,9 @@ export interface CustomerInfoOperateReq {
     ipaddress: string; // string 详细地址
     remark: string // string 备注
     userstate: number // uint32 开户状态 1:保存草稿 2:提交审核
+    teammanageruserid?: number
+    sex?: number;
+    birthday?: string;
 }
 // 客户资料操作响应 0 29 188
 export interface CustomerInfoOperateRsp {

+ 3 - 4
src/services/proto/manager/index.ts

@@ -1,14 +1,13 @@
 /**
  *****************     管理端接口  *******************
  */
-import {protoMiddleware, protoMiddleware_manager} from "@/services/socket/protobuf/buildReq";
 import {
     GoodsPickupConfirmReq, GoodsPickupConfirmRsp,
     GoodsPickupOperateReq, GoodsPickupOperateRsp, QHJAgreementConfigOperateReq, QHJAgreementConfigOperateRsp,
     t2bExchConfirmBusinessReq,
     t2bExchConfirmBusinessRsp
 } from "@/services/proto/manager/interface";
-import {IMessageHead} from "@/services/socket/protobuf/proto";
+import { protoMiddleware } from "@/services/socket/protobuf/buildReq";
 
 /**
  * 交易所审核结果通知请求
@@ -31,9 +30,9 @@ export const goodsPickupOperate = (param: GoodsPickupOperateReq): Promise<GoodsP
  * @param param MarketID市场id
  */
 export const goodsPickupConfirm = (param: GoodsPickupConfirmReq): Promise<GoodsPickupConfirmRsp> => {
-    var marketid = param.MarketID
+    const marketid = param.MarketID
     delete param.MarketID
-    return protoMiddleware_manager<GoodsPickupConfirmReq>(param, 'GoodsPickupConfirmReq', 'GoodsPickupConfirmRsp', {MarketID: marketid})
+    return protoMiddleware<GoodsPickupConfirmReq>(param, 'GoodsPickupConfirmReq', 'GoodsPickupConfirmRsp', { MarketID: marketid })
     // return protoMiddleware<GoodsPickupConfirmReq>(param, 'GoodsPickupConfirmReq', 'GoodsPickupConfirmRsp', 4)
 }
 

+ 11 - 37
src/services/socket/protobuf/buildReq.ts

@@ -1,6 +1,6 @@
 import APP from '@/services';
-import { getUserId } from '@/services/bus/user';
 import { getErrorInfoByCode } from '@/services/bus/error';
+import { getUserId } from '@/services/bus/user';
 import { funCode } from '@/services/funcode/index';
 import ProtobufCtr from '@/services/socket/protobuf/index';
 import { Callback } from '@/utils/websocket';
@@ -110,12 +110,13 @@ function buildMsgHead(funCodeName: string, params: IMessageHead) {
  * @param params SoleSearchParam
  */
 function buildSoleProtoReq50(params: SoleSearchParam): Package50 {
-    const { protobufName, funCodeName, reqParams, headerEnum, headParam } = params;
+    const { protobufName, funCodeName, reqParams, Header } = params;
     // // // 消息头
     // const messageHead = buildMsgHead(funCodeName, headParam);
     // proto头部参数,站在用户角度,参数数据可以通用获取,但站在管理端的角度,则需要不能通用获取,而是需用选中对应数据中传入进来
     // 登录报文
-    const header = headParam ? buildMsgHead(funCodeName, headParam) : getProtoHeadParam(funCodeName, headerEnum);
+
+    const header = typeof Header == 'object' ? buildMsgHead(funCodeName, Header) : getProtoHeadParam(funCodeName, Header);
     const Req = buildSoleProtoReq(protobufName, reqParams);
     Req.Header = header
     return setPackage50(funCodeName, Req);
@@ -256,22 +257,26 @@ export const noticeParseRsp = (rspPackage: any, funCodeName: string) => {
 function lower(value: string): string {
     return value.toLowerCase();
 }
+// 枚举 proto hader
+export function protoMiddleware<T>(param: T, reqName: string, rspName: string, headerEnum: HeadEnum): Promise<any>
+// 自定义 protp header
+export function protoMiddleware<T>(param: T, reqName: string, rspName: string, headerEnum: IMessageHead): Promise<any>
 
 /**
  * 此方法站在 用户角度
  * @param param proto除去head 剩下参数
- * @param headerEnum 自定义的proto参数枚举值,减小重复抒写 默认0
+ * @param headerEnumOrParam 自定义的proto参数枚举值,减小重复抒写 默认0,当枚举情况不满足,可以重新写一个 header 传入
  * @param reqFuncodeName proto 发送请求定义的头名字,特别需要注意,自已的funCodeName要与这个一致
  * @param rspFuncodeName proto 响应请求定义的头名字
  * @returns
  */
-export function protoMiddleware<T>(param: T, reqName: string, rspName: string, headerEnum: HeadEnum = 0): Promise<any> {
+export function protoMiddleware<T>(param: T, reqName: string, rspName: string, headerEnumOrParam: HeadEnum | IMessageHead = 0): Promise<any> {
     return new Promise((resolve, reject) => {
         const params = {
             protobufName: reqName,
             funCodeName: reqName,
             reqParams: param,
-            headerEnum,
+            Header: headerEnumOrParam,
         };
         const package50 = buildProtoReq50(params);
         const code = rspName ? funCode[rspName] : undefined
@@ -291,34 +296,3 @@ export function protoMiddleware<T>(param: T, reqName: string, rspName: string, h
         } as Callback);
     });
 }
-
-/**
- * 此方法站在 管理端角度
- * @param param proto除去head 剩下参数
- * @param headParam IMessageHead
- * @param reqFuncodeName proto 发送请求定义的头名字,特别需要注意,自已的funCodeName要与这个一致
- * @param rspFuncodeName proto 响应请求定义的头名字
- * @returns
- */
-export function protoMiddleware_manager<T>(param: T, reqName: string, rspName: string, headParam: IMessageHead): Promise<any> {
-    return new Promise((resolve, reject) => {
-        const params = {
-            protobufName: reqName,
-            funCodeName: reqName,
-            reqParams: param,
-            headParam,
-        };
-        const package50 = buildProtoReq50(params);
-        APP.sendTradingServer(package50, undefined, {
-            onSuccess: (res) => {
-                const { isSuccess, result } = parseProtoRsp50(res, rspName);
-                if (isSuccess) {
-                    resolve(result);
-                } else {
-                    reject(result);
-                }
-            },
-            onFail: (err) => reject(err.message),
-        } as Callback);
-    });
-}

+ 1 - 4
src/services/socket/protobuf/interface.ts

@@ -17,10 +17,7 @@ export interface SoleSearchParam {
     protobufName: string; // protobuf名
     funCodeName: string; // funCode名
     reqParams: ReqParams; // 传入后台报文中的各种参数
-    headerEnum?: HeadEnum, // messgeHead 参数枚举
-    headParam?: IMessageHead; // messgeHead 参数
-
-    Header?: IMessageHead; // messgeHead 参数
+    Header?: IMessageHead | HeadEnum; // messgeHead 参数
 }
 
 export interface ParseRsp {

+ 6 - 6
src/utils/objHandle/index.ts

@@ -21,9 +21,9 @@ export function mergeObj(a: ObjType, ...rest: ObjType[]): void {
 
 /**
  * 合并两个对象
- * @param a 
- * @param b 
- * @param callBack 
+ * @param a
+ * @param b
+ * @param callBack
  */
 export function mergeTwoObj(a: any, b: any, callBack?: Function) {
     if (b && typeof b === 'object') {
@@ -31,7 +31,7 @@ export function mergeTwoObj(a: any, b: any, callBack?: Function) {
         Object.keys(a).forEach((el) => {
             const key = el.toLocaleLowerCase();
             if (Reflect.has(b, key)) {
-                obj[el] = b[key];
+                obj[el] = b[key] === '--' ? '' : b[key];
             } else {
                 console.warn(`为找到对应的key:${key}`);
                 callBack && callBack(el)
@@ -43,8 +43,8 @@ export function mergeTwoObj(a: any, b: any, callBack?: Function) {
 
 /**
  * 对象转二进制数组
- * @param data 
- * @returns 
+ * @param data
+ * @returns
  */
 export function objectToUint8Array(data: object | string) {
     const rawData: string = JSON.stringify(data);

+ 0 - 5
src/views/business/plan/components/audit/index.vue

@@ -39,11 +39,6 @@
                             <span class="white">{{ formatValue(selectedRow.planqty) }}</span>
                         </a-form-item>
                     </a-col>
-                    <a-col :span="12">
-                        <a-form-item label="标仓系数">
-                            <span class="white">{{ formatValue(selectedRow.convertfactor) }}</span>
-                        </a-form-item>
-                    </a-col>
                 </a-row>
                 <a-row :gutter="24">
                     <a-col :span="12">

+ 0 - 5
src/views/business/plan/components/delete/index.vue

@@ -38,11 +38,6 @@
               <span class="white">{{ formatValue(selectedRow.planqty) }}</span>
             </a-form-item>
           </a-col>
-          <a-col :span="12">
-            <a-form-item label="标仓系数">
-              <span class="white">{{ formatValue(selectedRow.convertfactor) }}</span>
-            </a-form-item>
-          </a-col>
         </a-row>
         <a-row :gutter="24">
           <a-col :span="12">

+ 0 - 5
src/views/business/plan/components/detail/index.vue

@@ -48,11 +48,6 @@
               <span class="white">{{ formatValue(selectedRow.planqty) }}</span>
             </a-form-item>
           </a-col>
-          <a-col :span="12">
-            <a-form-item label="标仓系数">
-              <span class="white">{{ formatValue(selectedRow.convertfactor) }}</span>
-            </a-form-item>
-          </a-col>
         </a-row>
         <a-row :gutter="24">
           <a-col :span="12">

+ 0 - 5
src/views/business/plan/components/recommit/index.vue

@@ -39,11 +39,6 @@
           </a-form-item>
         </a-col>
         <a-col :span="12">
-          <a-form-item label="标仓系数" name="">
-            <a-input class="dialogInput ConvertFactor" v-model:value="formState.ConvertFactor" readonly style="width: 200px" placeholder="请输入标仓系数" />
-          </a-form-item>
-        </a-col>
-        <a-col :span="12">
           <a-form-item label="计划量" class="relative" name="PlanQty">
             <a-input class="dialogInput" style="width: 200px" v-model:value="formState.PlanQty" placeholder="请输入计划量" />
           </a-form-item>

+ 1 - 1
src/views/business/sell/components/storage/index.vue

@@ -113,7 +113,7 @@
                         v-model:value="formState.WarehouseInfo">
                 <a-select-option v-for="option in wareHouseList"
                                  :key="option.autoid"
-                                 :value="option.autoid">{{option.warehousename}}
+                                 :value="option.autoid">{{option.warehousecode}}
                 </a-select-option>
               </a-select>
             </a-form-item>

+ 39 - 19
src/views/information/account_info/compoments/managers-permission-detail/index.vue

@@ -1,6 +1,6 @@
 <template>
     <!-- 角色详情 -->
-    <a-modal class="commonModal add-roles" title="角色详情" v-model:visible="visible" @cancel="cancel" centered :maskClosable="false" width="100%">
+    <a-modal class="commonModal add-roles" title="角色详情" v-model:visible="visible" @cancel="cancel" centered :maskClosable="false">
         <template #footer>
             <a-button key="cancel" type="primary" :loading="loading" @click="cancel">完成</a-button>
         </template>
@@ -14,24 +14,8 @@
                 <a-col :span="24">
                     <a-form-item label="权限功能" name></a-form-item>
                 </a-col>
-                <a-col :span="24">
-                    <div class="powerTable">
-                        <div class="powerRow" v-for="(item, i) in tableList" :key="i + '0'">
-                            <div class="powerLeft">
-                                <a-checkbox v-model:checked="item.Menu.ishadrole" disabled>{{ item.Menu.resourcename }}</a-checkbox>
-                            </div>
-                            <div class="powerRight">
-                                <div class="line" v-for="(sub, j) in item.SubMenu" :key="j + '1'">
-                                    <div class="left">
-                                        <a-checkbox v-model:checked="sub.Menu.ishadrole" @change="secondChange(item, sub)" :value="sub.Menu.resourcecode" disabled>{{ sub.Menu.resourcename }}</a-checkbox>
-                                    </div>
-                                    <div class="right">
-                                        <a-checkbox v-for="(subNext, l) in sub.SubMenu" :key="l + '3'" v-model:checked="subNext.Menu.ishadrole" @change="thirdChange(item, sub, subNext)" :value="subNext.Menu.resourcecode" disabled>{{ subNext.Menu.resourcename }}</a-checkbox>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
+                <a-col :span="24" class="powerTable">
+                        <a-tree checkable :tree-data="tableList" v-model:checkedKeys="checkedKeys" :replace-fields="replaceFields" disabled> </a-tree>
                 </a-col>
             </a-row>
         </a-form>
@@ -68,17 +52,48 @@ export default defineComponent({
         const loading = ref<boolean>(false);
         const tableList = ref<ErmcpRoleMenuEx[]>([]);
         const name = ref<string>('');
+        const replaceFields = {
+            children: 'SubMenu',
+            title: 'resourcename',
+            key: 'resourcecode',
+        };
+        const checkedKeys = ref<string[]>([]);
         watchEffect(() => {
             if (visible.value) {
                 const { rolename, areauserid, autoid } = props.selectedData;
                 name.value = rolename;
                 const param = { userid: areauserid, roleid: autoid.toString() };
                 queryResultLoadingAndInfo(QueryAccMgrRoleMenu, loading, param).then((res) => {
+                    checkedKeys.value = getMenuCheckedKeys(res)
+                    const fn = (arr: any[]) => {
+                        arr.forEach((el) => {
+                            Object.assign(el, el.Menu);
+                            if (el.SubMenu.length) {
+                                fn(el.SubMenu);
+                            }
+                        });
+                    };
+                    fn(res);
                     tableList.value = res;
                 });
             }
         });
 
+
+        // 返回树形菜单选中项
+        const getMenuCheckedKeys = (menus: ErmcpRoleMenuEx[]): string[] => {
+            let result: string[] = [];
+            menus.forEach((parent) => {
+                if (parent.Menu.ishadrole) {
+                    result.push(parent.Menu.resourcecode);
+                }
+                if (parent.SubMenu && parent.SubMenu.length) {
+                    result = [...result, ...getMenuCheckedKeys(parent.SubMenu)]; // 递归调用
+                }
+            });
+            return result;
+        };
+
         function submit() {
             const result: string[] = [];
             // 处理已经勾选的数据
@@ -148,12 +163,17 @@ export default defineComponent({
             thirdChange,
             loading,
             tableList,
+            replaceFields,
+            checkedKeys
         };
     },
 });
 </script>
 
 <style lang="less">
+.ant-tree-title{
+    color:@m-white0 !important;
+}
 .add-roles {
     .ant-modal-content {
         .ant-modal-body {

+ 135 - 13
src/views/information/custom/compoments/add/index.vue

@@ -1,7 +1,7 @@
 <template>
   <!-- 平安客户资料 -->
   <a-modal class="add-custom"
-           title="新增客户资料"
+           :title="isAdd() ? '新增客户资料' : '修改客户资料'"
            v-model:visible="visible"
            @cancel="cancel"
            centered
@@ -79,7 +79,7 @@
   <!-- 其他项目客户资料 -->
   <a-modal class="add-custom"
            v-else
-           title="新增客户资料"
+           :title="isAdd() ? '新增客户资料' : '修改客户资料'"
            v-model:visible="visible"
            @cancel="cancel"
            centered
@@ -103,7 +103,7 @@
             :rules="rules">
       <a-row :gutter="24">
         <template v-if="isQianHaiJin()">
-          <a-col :span="24">
+          <a-col :span="12">
             <a-form-item label="所属机构"
                          name="areaid">
               <a-select class="typeSelect"
@@ -118,6 +118,21 @@
             </a-form-item>
           </a-col>
           <a-col :span="12">
+            <a-form-item label="所属客户经理"
+                         name="teammanageruserid">
+              <a-select class="typeSelect"
+                        style="width: 200px"
+                        v-model:value="formState.teammanageruserid"
+                        placeholder="请选择所属客户经理">
+                <a-select-option v-for="item in brokerList"
+                                 :key="item.userid">
+                  {{ item.customername }}
+                </a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="12"
+                 v-if="!isAdd()">
             <a-form-item label="登录账号"
                          name="logincode">
               <a-input class="dialogInput"
@@ -126,7 +141,8 @@
                        placeholder="请选择登录账号" />
             </a-form-item>
           </a-col>
-          <a-col :span="12">
+          <a-col :span="12"
+                 v-if="!isAdd()">
             <a-form-item label="登录密码"
                          name="loginpwd">
               <a-input class="dialogInput"
@@ -137,7 +153,6 @@
           </a-col>
         </template>
         <a-col :span="12">
-
           <a-form-item label="客户类型"
                        name="userinfotype">
             <a-select class="typeSelect"
@@ -213,6 +228,7 @@
           <a-col :span="12">
             <a-form-item label="营业执照">
               <UploadImg :visible="visible"
+                         :imgList="attachmentImgList"
                          @upload="attachmentUpLoad" />
             </a-form-item>
           </a-col>
@@ -243,6 +259,7 @@
                        placeholder="请输入联系电话" />
             </a-form-item>
           </a-col>
+
         </template>
         <template v-else>
           <a-col :span="12">
@@ -276,6 +293,7 @@
             <a-form-item label="身份证正面照"
                          name="cardbackphotourl">
               <UploadImg :visible="visible"
+                         :imgList="cardfrontImgList"
                          @upload="cardfrontphotourlUpLoad" />
             </a-form-item>
           </a-col>
@@ -288,10 +306,11 @@
                        placeholder="请输入邮箱" />
             </a-form-item>
           </a-col>
-          <a-col :span="24">
+          <a-col :span="12">
             <a-form-item label="身份证反面照"
                          name="cardfrontphotourl">
               <UploadImg :visible="visible"
+                         :imgList="cardbackImgList"
                          @upload="cardbackphotourlUpLoad" />
             </a-form-item>
           </a-col>
@@ -304,6 +323,42 @@
                        placeholder="请输入联系电话" />
             </a-form-item>
           </a-col>
+          <a-col :span="12"
+                 v-if="isQianHaiJin()">
+            <a-form-item label="性别"
+                         name="sex">
+              <a-select class="inlineFormSelect"
+                        v-model:value="formState.sex"
+                        style="width: 200px"
+                        placeholder="请选择性别">
+                <a-select-option :value="item.id"
+                                 v-for="item in sexList"
+                                 :key="item.id">
+                  {{ item.value }}
+                </a-select-option>
+              </a-select>
+              <!-- <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.sex"
+                       placeholder="请选择性别" /> -->
+            </a-form-item>
+          </a-col>
+          <a-col :span="12"
+                 v-if="isQianHaiJin()">
+
+            <a-form-item label="生日"
+                         name="birthday">
+              <a-date-picker v-model:value="formState.birthday"
+                             :allowClear="false"
+                             style="width: 200px"
+                             placeholder="请选择生日"
+                             class="commonDatePicker" />
+              <!-- <a-input class="dialogInput"
+                       style="width: 200px"
+                       v-model:value="formState.birthday"
+                       placeholder="请选择性别" /> -->
+            </a-form-item>
+          </a-col>
           <a-col :span="12">
             <a-form-item> &nbsp; </a-form-item>
           </a-col>
@@ -377,17 +432,26 @@ import { getUploadImg } from '@/common/setup/upload';
 import { getUserId } from '@/services/bus/user';
 import { getAddress } from '@/services/go/adress';
 import { AllEnums } from '@/services/go/commonService/interface';
+import { QhjCustomer } from '@/services/go/ermcp/qhj/interface';
 import { addCustomerInfoOperate } from '@/services/proto/accountinfo';
 import { CustomerInfoOperateReq } from '@/services/proto/accountinfo/interface';
+import { mergeTwoObj } from '@/utils/objHandle';
 import { toBase64String } from '@/utils/storage/base64';
-import { defineComponent, ref } from 'vue';
+import { defineComponent, PropType, ref } from 'vue';
 import { FormState } from './interface';
-import { getCardType, handleForm, handleAreaList } from './setup';
+import { getCardType, handleAreaList, handleBrokerApplyt, handleForm } from './setup';
+import moment, { Moment } from 'moment';
 
 export default defineComponent({
     name: 'add-custom',
     emits: ['cancel', 'update'],
     components: { UploadImg },
+    props: {
+        selectedRow: {
+            default: {},
+            type: Object as PropType<QhjCustomer>,
+        },
+    },
     setup(props, context) {
         // 控制关闭弹窗
         const { visible, cancel } = _closeModal(context);
@@ -399,24 +463,67 @@ export default defineComponent({
         // 地址
         const { cityList, districtList, provinceList, getCityList, getDistrictList } = getAddress();
         // 营业执照
-        const { getFirstImg: getAttachmentImg, uploadImgAction: attachmentUpLoad } = getUploadImg();
+        const { getFirstImg: getAttachmentImg, uploadImgAction: attachmentUpLoad, uploadImgList: attachmentImgList, handleImg: attachmentHandle } = getUploadImg();
         // 背面证件照地址
-        const { getFirstImg: getBackImg, uploadImgAction: cardbackphotourlUpLoad } = getUploadImg();
+        const { getFirstImg: getBackImg, uploadImgAction: cardbackphotourlUpLoad, uploadImgList: cardbackImgList, handleImg: cardbackHandle } = getUploadImg();
         // 正面证件照地址
-        const { getFirstImg: getFrontImg, uploadImgAction: cardfrontphotourlUpLoad } = getUploadImg();
+        const { getFirstImg: getFrontImg, uploadImgAction: cardfrontphotourlUpLoad, uploadImgList: cardfrontImgList, handleImg: cardfrontHandle } = getUploadImg();
         //查询所属机构列表
         const { areaList, getAreaList } = handleAreaList();
+        // 查询客户经理
+        const { brokerList, getBrokerApply } = handleBrokerApplyt();
         if (isQianHaiJin()) {
-            getAreaList(loading);
+            Promise.all([getAreaList(loading), getBrokerApply(loading)]);
         }
+
+        // 性别
+        const sexList = [
+            { id: 0, value: '女' },
+            { id: 1, value: '男' },
+        ];
         function isPersonal(): boolean {
             return formState.userinfotype === '1';
         }
+        const isAdd = () => !props.selectedRow.userinfotype;
+        const isN = (value: string) => value === '--';
+        // 修改 客户资料的逻辑
+        if (!isAdd()) {
+            console.log('修改::::::::::::::::::::::::::');
+
+            mergeTwoObj(formState, props.selectedRow);
+            formState.userinfotype = formState.userinfotype.toString();
+            if (isPersonal()) {
+                formState.username = props.selectedRow.customername;
+            } else {
+                formState.username = props.selectedRow.username;
+            }
+            const { provinceid, cityid, address, mobile, memberuserid, brokerid, cardfrontphotourl, cardbackphotourl } = props.selectedRow;
+            formState.cardaddress = isN(address) ? '' : address;
+            formState.mobilephone = mobile;
+            formState.areaid = memberuserid;
+            formState.teammanageruserid = brokerid;
+            provinceid ? getCityList(provinceid) : (formState.provinceid = undefined);
+            cityid ? getDistrictList(cityid) : ((formState.cityid = undefined), (formState.districtid = undefined));
+
+            if (cardfrontphotourl && !isN(cardfrontphotourl)) {
+                // 营业执照
+                attachmentImgList.value = attachmentHandle(cardfrontphotourl);
+            }
+            if (cardbackphotourl && !isN(cardbackphotourl)) {
+                // 背面证件照地址
+                cardbackImgList.value = cardbackHandle(cardbackphotourl);
+            }
+            if (cardbackphotourl && !isN(cardbackphotourl)) {
+                // 正面证件照地址
+                cardfrontImgList.value = cardfrontHandle(cardbackphotourl);
+            }
+        }
 
         function submit(OperateType: 1 | 2) {
             validateAction<FormState>(formRef, formState).then((param) => {
+                console.log(props.selectedRow);
                 const reqParam: CustomerInfoOperateReq = {
-                    operatetype: 1, // 1: 新增
+                    operatetype: isAdd() ? 1 : 2, // 1: 新增 2:修改
                     userid: getUserId(), // 必填
                     areaid: getUserId(),
                     userinfotype: Number(param.userinfotype),
@@ -443,11 +550,20 @@ export default defineComponent({
                     proxystatementurl: '',
                 };
                 if (isQianHaiJin()) {
+                    // 千海金
                     reqParam.areaid = param.areaid as number;
                     reqParam.logincode = param.logincode;
+                    reqParam.teammanageruserid = param.teammanageruserid ? param.teammanageruserid : 0;
+                    if (isPersonal()) {
+                        reqParam.sex = param.sex;
+                        if (param.birthday) {
+                            reqParam.birthday = moment(param.birthday).format('YYYY-MM-DD');
+                        }
+                    }
                     reqParam.loginpwd = toBase64String(toBase64String(param.loginpwd));
                     reqParam.userstate = 2;
                 }
+                debugger;
                 requestResultLoadingAndInfo(addCustomerInfoOperate, reqParam, loading, OperateType === 1 ? ['保存草稿成功', '保存草稿失败:'] : ['新增客户资料成功', '新增客户资料失败:']).then(() => {
                     cancel(true);
                 });
@@ -467,6 +583,11 @@ export default defineComponent({
             districtList,
             provinceList,
             areaList,
+            brokerList,
+            attachmentImgList,
+            cardbackImgList,
+            cardfrontImgList,
+            sexList,
             getCityList,
             getDistrictList,
             attachmentUpLoad,
@@ -474,6 +595,7 @@ export default defineComponent({
             cardfrontphotourlUpLoad,
             isPingAnOem,
             isQianHaiJin,
+            isAdd,
         };
     },
 });

+ 3 - 0
src/views/information/custom/compoments/add/interface.ts

@@ -28,4 +28,7 @@ export interface FormState {
     cardbackphotourl: string;//背面证件照地址
     cardfrontphotourl: string;//正面证件照地址
     email: string;//Email地址(加密存储)
+    birthday?: string;//客户生日(yyyy-mm-dd)
+    teammanageruserid?: number;//客户经理
+    sex?: 0 | 1 | undefined;//性别 0 女 1 男
 }

+ 25 - 2
src/views/information/custom/compoments/add/setup.ts

@@ -2,10 +2,11 @@
 import { getCardTypeEnumList } from '@/common/constants/enumsList';
 import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
 import { validateCommon } from '@/common/setup/validate';
+import { getUserId } from '@/services/bus/user';
 import { QueryAddUserInfoApply } from '@/services/go/ermcp/customInfo';
 import { AddUserInfoApplyReq } from '@/services/go/ermcp/customInfo/interface';
-import { queryParentAreaList } from '@/services/go/ermcp/qhj';
-import { QhjParentAreaList } from '@/services/go/ermcp/qhj/interface';
+import { QueryBrokerApply, queryParentAreaList } from '@/services/go/ermcp/qhj';
+import { QhjParentAreaList, QueryBrokerApplyRsp } from '@/services/go/ermcp/qhj/interface';
 import { message } from 'ant-design-vue';
 import { RuleObject } from 'ant-design-vue/lib/form/interface';
 import { reactive, Ref, ref, UnwrapRef } from 'vue';
@@ -29,6 +30,8 @@ export function handleForm() {
     }
     const rules = {
         userinfotype: [{ required: true, message: '请选择客户类型', trigger: 'change' }],
+        areaid: [{ required: true, message: '请选择所属机构' }],
+        // sex: [{ required: true, message: '请选择性别' }],
         customername: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
         mobilephone: [
             { required: true, message: '请输入联系人手机号', trigger: 'blur' },
@@ -74,6 +77,9 @@ export function initFormState(): FormState {
         cardbackphotourl: '',
         cardfrontphotourl: '',
         email: '',
+        birthday: '',
+        teammanageruserid: undefined,
+        sex: undefined,
     }
 }
 
@@ -98,4 +104,21 @@ export function handleAreaList() {
         })
     }
     return { areaList, getAreaList }
+}
+
+// 查询客户经理
+export function handleBrokerApplyt() {
+    const brokerList = ref<QueryBrokerApplyRsp[]>([])
+    function getBrokerApply(loading: Ref<boolean>) {
+        const param = {
+            userid: getUserId(),
+            filterstatus: 2,
+            includesub: 1,
+        }
+        queryResultLoadingAndInfo(QueryBrokerApply, loading, param).then(res => {
+            brokerList.value = res
+        })
+    }
+
+    return { brokerList, getBrokerApply }
 }

+ 41 - 2
src/views/information/custom/compoments/common-detail/index.vue

@@ -21,14 +21,15 @@ import { formatValue } from '@/common/methods';
 import { getCardTypeEnumItemName } from '@/common/constants/enumsName';
 import { Des, DescriptionsList, handleDesList } from '@/common/components/commonDes';
 import { handlePreviewImg } from '@/common/setup/upload';
-import { isPingAnOem } from '@/common/config/projectName';
+import { isPingAnOem, isQianHaiJin } from '@/common/config/projectName';
+import { QhjCustomer } from '@/services/go/ermcp/qhj/interface';
 
 export default defineComponent({
     name: 'custom-detail-desc',
     components: { Des },
     props: {
         selectedRow: {
-            type: Object as PropType<QueryCustomInfoType>,
+            type: Object as PropType<QhjCustomer>,
             default: {},
         },
     },
@@ -74,6 +75,44 @@ export default defineComponent({
                     { label: '状态', value: getStatusName(data.status), className: 'green' },
                 ];
                 getDesList(isPersonal() ? person : company);
+            } else if (isQianHaiJin()) {
+                // 个人
+                const person = [
+                    { label: '所属机构', value: formatValue(data.parentusername) },
+                    { label: '所属客户经理', value: formatValue(data.brokername) },
+                    { label: '客户类型', value: '个人' },
+                    { label: '姓名', value: formatValue(data.username) },
+                    { label: '性别', value: data.sex === 1 ? '男' : data.sex === 0 ? '女' : '--' },
+                    { label: '生日', value: formatValue(data.birthday) },
+                    { label: '身份证号码', value: formatValue(data.cardnum) },
+                    { label: '手机号码', value: formatValue(data.mobile) },
+                    { label: '身份证正面照', value: formatValue(getImgName(data.cardfrontphotourl)), className: 'blue' },
+                    { label: '身份证反面照', value: formatValue(getImgName(data.cardbackphotourl)), className: 'blue' },
+                    { label: '邮箱', value: formatValue(data.email) },
+                    { label: '联系电话', value: formatValue(data.telphone) },
+                    { label: '通讯地址', value: formatValue(data.provincename + data.cityname + data.districtname + data.address) },
+                    { label: '备注', value: formatValue(data.remark) },
+                ];
+                // 企业
+                const company = [
+                    { label: '所属机构', value: formatValue(data.parentusername) },
+                    { label: '所属客户经理', value: formatValue(data.brokername) },
+                    { label: '客户类型', value: '企业' },
+                    { label: '企业名称', value: data.customername },
+                    { label: '企业简称', value: formatValue(data.nickname) },
+                    { label: '证件类型', value: getCardTypeEnumItemName(data.cardtype) },
+                    { label: '法定代表人', value: formatValue(data.legalpersonname) },
+                    { label: '证件号码', value: formatValue(data.cardnum) },
+                    { label: '纳税人识别号', value: formatValue(data.taxpayernum) },
+                    { label: '营业执照', value: formatValue(getImgName(data.cardfrontphotourl)), className: 'blue' },
+                    { label: '联系人', value: formatValue(data.contactname) },
+                    { label: '联系人手机号', value: formatValue(data.mobile) },
+                    { label: '联系电话', value: formatValue(data.telphone) },
+                    { label: '状态', value: getStatusName(data.status), className: 'green' },
+                    { label: '通讯地址', value: formatValue(data.provincename + data.cityname + data.districtname + data.address) },
+                    { label: '备注', value: formatValue(data.remark) },
+                ];
+                getDesList(isPersonal() ? person : company);
             } else {
                 // 个人
                 const person = [

+ 44 - 19
src/views/information/custom/index.vue

@@ -1,17 +1,37 @@
 <template>
   <!-- 客户资料 -->
-  <div class="plan_uncommitted" :loading="loading">
+  <div class="plan_uncommitted"
+       :loading="loading">
     <Filter @search="updateColumn">
-      <mtp-table-button class="btn-list-sticky" :buttons="addButton" @click="openComponent" />
+      <mtp-table-button class="btn-list-sticky"
+                        :buttons="addButton"
+                        @click="openComponent" />
     </Filter>
-    <a-table :columns="getColumns(columns)" class="srcollYTable" :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }" :pagination="false" :loading="loading" :expandedRowKeys="expandedRowKeys" :customRow="Rowclick" rowKey="key" :data-source="tableList">
+    <a-table :columns="getColumns(columns)"
+             class="srcollYTable"
+             :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
+             :pagination="false"
+             :loading="loading"
+             :expandedRowKeys="expandedRowKeys"
+             :customRow="Rowclick"
+             rowKey="key"
+             :data-source="tableList">
       <!-- 额外的展开行 -->
       <template #expandedRowRender="{ record }">
-        <mtp-table-button class="btn-list-sticky" :buttons="handleBtnList(buttons,record)" :record="record" @click="openComponent" />
+        <mtp-table-button class="btn-list-sticky"
+                          :buttons="handleBtnList(buttons,record)"
+                          :record="record"
+                          @click="openComponent" />
       </template>
       <template #status="{ text }">
         <a>{{ getStatusName(text) }}</a>
       </template>
+      <template #customername="{record}">
+        {{record.username}}
+      </template>
+      <template #nickname="{record}">
+        {{record.username}}
+      </template>
       <template #userinfotype="{ text }">
         <a>{{ getUserInfoTypeName(text) }}</a>
       </template>
@@ -23,8 +43,13 @@
       </template>
     </a-table>
     <!-- 右键 -->
-    <contextMenu :contextMenu="contextMenu" @cancel="closeContext" :list="buttons"> </contextMenu>
-    <component :is="componentId" v-if="componentId" :selectedRow="selectedRow" @cancel="closeComponent"> </component>
+    <contextMenu :contextMenu="contextMenu"
+                 @cancel="closeContext"
+                 :list="buttons"> </contextMenu>
+    <component :is="componentId"
+               v-if="componentId"
+               :selectedRow="selectedRow"
+               @cancel="closeComponent"> </component>
   </div>
 </template>
 
@@ -37,10 +62,13 @@ import { QueryCustomInfo } from '@/services/go/ermcp/customInfo';
 import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
 import { getUserInfoTypeName, getStatusName, getCardTypeEnumItemName } from '@/common/constants/enumsName';
 import Filter from './compoments/filterTable/index.vue';
-import { pingan_custom_column } from './setup';
+import { pingan_custom_column, qian_hai_jin_custom_column } from './setup';
 import { ColumnType } from '@/common/methods/table';
 import { getTableColumns } from '@/common/setup/table';
 import { BtnListType } from '@/common/components/btnList/interface';
+import { queryCustomerInfo } from '@/services/go/ermcp/qhj';
+import { getUserId } from '@/services/bus/user';
+import { QhjCustomer } from '@/services/go/ermcp/qhj/interface';
 
 export default defineComponent({
     name: EnumRouterName.plan_audit,
@@ -52,7 +80,7 @@ export default defineComponent({
         add: defineAsyncComponent(() => import('./compoments/add/index.vue')), // 新增
         check: defineAsyncComponent(() => import('./compoments/check/index.vue')), // 审核
         delete: defineAsyncComponent(() => import('./compoments/delete/index.vue')), // 删除
-        modify: defineAsyncComponent(() => import('./compoments/modify/index.vue')), // 修改
+        modify: defineAsyncComponent(() => import('./compoments/add/index.vue')), // 修改
         recover: defineAsyncComponent(() => import('./compoments/recover/index.vue')), // 恢复
         disable: defineAsyncComponent(() => import('./compoments/disable/index.vue')), // 停用
         cancel: defineAsyncComponent(() => import('./compoments/cancel/index.vue')), // 撤销
@@ -64,24 +92,25 @@ export default defineComponent({
         // 表格权限按钮
         const buttons = getTableButton(['add'], true);
         // 表格列表数据
-        const { loading, tableList, queryTable } = queryTableList<QueryCustomInfoType>();
+        const { loading, tableList, queryTable } = queryTableList<QhjCustomer>();
 
         // 获取列表数据
         const queryTableAction = () => {
+            const userid = getUserId();
             if (isRouterName('custom_checkpending')) {
                 // 待审核
-                queryTable(QueryCustomInfo, 2);
+                queryTable(queryCustomerInfo, { userid, querytype: 2 });
             } else if (isRouterName('custom_normal')) {
                 // 正常
-                queryTable(QueryCustomInfo, 3);
+                queryTable(queryCustomerInfo, { userid, querytype: 3 });
             } else if (isRouterName('custom_disabled')) {
                 // 停用
-                queryTable(QueryCustomInfo, 4);
+                queryTable(queryCustomerInfo, { userid, querytype: 4 });
             }
         };
 
         // 处理根据状态显示对应按钮
-        const handleBtnList = (btnList: BtnListType[], item: QueryCustomInfoType) => {
+        const handleBtnList = (btnList: BtnListType[], item: QhjCustomer) => {
             switch (item.status) {
                 case 2: // 待审核
                     return btnList.filter((e) => e.code !== 'modify');
@@ -99,9 +128,7 @@ export default defineComponent({
                 return pingan_custom_column();
             } else if (isQianHaiJin()) {
                 // 千海金
-                const { columns: result, registerColumn } = getTableColumns();
-                registerColumn('table_pcweb_qhj_customer_info', []);
-                return result.value;
+                return qian_hai_jin_custom_column();
             } else {
                 return columns;
             }
@@ -116,14 +143,12 @@ export default defineComponent({
         };
 
         return {
-            ...handleComposeTable<QueryCustomInfoType>(param),
+            ...handleComposeTable<QhjCustomer>(param),
             loading,
             tableList,
             getStatusName,
             buttons,
             addButton,
-            pingan_custom_column,
-            isPingAnOem,
             getUserInfoTypeName,
             getCardTypeEnumItemName,
             getColumns,

+ 198 - 1
src/views/information/custom/setup.ts

@@ -62,4 +62,201 @@ export function pingan_custom_column() {
             width: 120
         },
     ]
-}
+}
+
+// 千海金 客户资料 表头
+export function qian_hai_jin_custom_column() {
+    return [
+        {
+            key: 'logincode',
+            dataIndex: 'logincode',
+            title: '登录账号',
+            align: 'center',
+            slots: {
+                customRender: 'logincode',
+            },
+            width: 120
+        },
+        {
+            key: 'parentusername',
+            dataIndex: 'parentusername',
+            title: '所属机构',
+            align: 'center',
+            slots: {
+                customRender: 'parentusername',
+            },
+            width: 120
+        },
+        {
+            key: 'brokername',
+            dataIndex: 'brokername',
+            title: '所属客户经理',
+            align: 'center',
+            slots: {
+                customRender: 'brokername',
+            },
+            width: 120
+        },
+        {
+            key: 'status',
+            dataIndex: 'status',
+            title: '状态',
+            align: 'center',
+            slots: {
+                customRender: 'status',
+            },
+            width: 120
+        },
+        {
+            key: 'userinfotype',
+            dataIndex: 'userinfotype',
+            title: '客户类型',
+            align: 'center',
+            slots: {
+                customRender: 'userinfotype',
+            },
+            width: 120
+        },
+        {
+            key: 'nickname',
+            dataIndex: 'nickname',
+            title: '客户简称',
+            align: 'center',
+            slots: {
+                customRender: 'nickname',
+            },
+            width: 120
+        },
+        {
+            key: 'customername',
+            dataIndex: 'customername',
+            title: '客户名称',
+            align: 'center',
+            slots: {
+                customRender: 'customername',
+            },
+            width: 120
+        },
+        {
+            key: 'cardtype',
+            dataIndex: 'cardtype',
+            title: '证件类型',
+            align: 'center',
+            slots: {
+                customRender: 'cardtype',
+            },
+            width: 120
+        },
+        {
+            key: 'cardnum',
+            dataIndex: 'cardnum',
+            title: '证件号码',
+            align: 'center',
+            slots: {
+                customRender: 'cardnum',
+            },
+            width: 120
+        },
+        {
+            key: 'contactname',
+            dataIndex: 'contactname',
+            title: '联系人',
+            align: 'center',
+            slots: {
+                customRender: 'contactname',
+            },
+            width: 120
+        },
+        {
+            key: 'mobile',
+            dataIndex: 'mobile',
+            title: '手机号码',
+            align: 'center',
+            slots: {
+                customRender: 'mobile',
+            },
+            width: 120
+        },
+        {
+            key: 'email',
+            dataIndex: 'email',
+            title: '邮箱',
+            align: 'center',
+            slots: {
+                customRender: 'email',
+            },
+            width: 120
+        },
+        {
+            key: 'legalpersonname',
+            dataIndex: 'legalpersonname',
+            title: '法定代表人',
+            align: 'center',
+            slots: {
+                customRender: 'legalpersonname',
+            },
+            width: 120
+        },
+        {
+            key: 'taxpayernum',
+            dataIndex: 'taxpayernum',
+            title: '纳税人识别号',
+            align: 'center',
+            slots: {
+                customRender: 'taxpayernum',
+            },
+            width: 120
+        },
+        {
+            key: 'taxpayernum',
+            dataIndex: 'taxpayernum',
+            title: '纳税人识别号',
+            align: 'center',
+            slots: {
+                customRender: 'taxpayernum',
+            },
+            width: 120
+        },
+        {
+            key: 'attachment1',
+            dataIndex: 'attachment1',
+            title: '证件照',
+            align: 'center',
+            slots: {
+                customRender: 'attachment1',
+            },
+            width: 120
+        },
+        {
+            key: 'address',
+            dataIndex: 'address',
+            title: '地址',
+            align: 'center',
+            slots: {
+                customRender: 'address',
+            },
+            width: 120
+        },
+        {
+            key: 'birthday',
+            dataIndex: 'birthday',
+            title: '生日',
+            align: 'center',
+            slots: {
+                customRender: 'birthday',
+            },
+            width: 120
+        },
+        {
+            key: 'remark',
+            dataIndex: 'remark',
+            title: '备注',
+            align: 'center',
+            slots: {
+                customRender: 'remark',
+            },
+            width: 120
+        },
+    ]
+}
+

+ 11 - 10
src/views/information/spot-contract/components/add/index.vue

@@ -100,7 +100,7 @@
           <a-col :span="12">
             <a-form-item label="商品" name="WrStandardID">
               <a-select class="inlineFormSelect" style="width: 200px" :getPopupContainer="(triggerNode) => triggerNode.parentNode" @change="WrStandardChange" v-model:value="formState.WrStandardID" placeholder="请选择商品">
-                <a-select-option v-for="item in gmlist" :key="item.wrstandardid" :value="item.wrstandardid">
+                <a-select-option v-for="item in wdlst" :key="item.wrstandardid" :value="item.wrstandardid">
                   {{ item.wrstandardname }}
                 </a-select-option>
               </a-select>
@@ -109,7 +109,7 @@
           <a-col :span="12">
             <a-form-item label="品牌" name="SpotGoodsBrandID">
               <a-select class="inlineFormSelect" style="width: 200px" :getPopupContainer="(triggerNode) => triggerNode.parentNode" v-model:value="formState.SpotGoodsBrandID" placeholder="请选择品牌">
-                <a-select-option v-for="item in gblist" :key="item.brandid" :value="item.brandid">
+                <a-select-option v-for="item in bdlst" :key="item.brandid" :value="item.brandid">
                   {{ item.brandname }}
                 </a-select-option>
               </a-select>
@@ -158,7 +158,7 @@
             <a-col :span="12">
               <a-form-item label="点价合约" name="GoodsID">
                 <a-select class="inlineFormSelect" v-model:value="formState.GoodsID" style="width: 200px" :getPopupContainer="(triggerNode) => triggerNode.parentNode" placeholder="请选择点价合约">
-                  <a-select-option v-for="item in goodsList" :key="item.goodsid" :value="item.goodsid">
+                  <a-select-option v-for="item in gdlist" :key="item.goodsid" :value="item.goodsid">
                     {{ item.goodsname }}
                   </a-select-option>
                 </a-select>
@@ -247,7 +247,7 @@
 </template>
 
 <script lang="ts">
-import { defineComponent, PropType, ref } from 'vue';
+import { defineComponent, PropType, ref  } from 'vue';
 import { addContractReq } from './setup';
 import { getRootUserInfo, getUserName, getUserId } from '@/services/bus/user';
 import { FormState } from '../interface';
@@ -279,7 +279,7 @@ export default defineComponent({
             required: true,
         },
     },
-    setup(props, context) {
+     setup(props, context) {
         const { visible, cancel } = _closeModal(context);
         const { sendReq } = addContractReq();
         const loading = ref<boolean>(false);
@@ -292,7 +292,7 @@ export default defineComponent({
         const { contractType, isSell, contractChange, customList, queryCustomList } = handleContract(formState);
 
         //  处理现货商品
-        const { deliveryGoodsList, goodsList, gblist, gmlist, numberUnit, WrStandardChange, getDeliveryGoods, deliveryGoodsChange } = handleDeliveryGoods(formState);
+        const { deliveryGoodsList, gdlist, bdlst, wdlst, numberUnit, WrStandardChange, getDeliveryGoods, deliveryGoodsChange ,GetDeliveryGoodsDetail} = handleDeliveryGoods(formState);
         // 价格信息
         const { priceType, payCurrency, payCurrencyUnit, parCurrencyChange } = handlePrice(formState);
         // 日期
@@ -314,6 +314,7 @@ export default defineComponent({
             subjectList.value = res;
         });
 
+        GetDeliveryGoodsDetail()
         queryCustomList();
         getDeliveryGoods();
         queryTradeManager();
@@ -375,8 +376,9 @@ export default defineComponent({
             contractChange,
             customList,
             deliveryGoodsList,
-            gblist,
-            gmlist,
+            gdlist, 
+            bdlst, 
+            wdlst,
             deliveryGoodsChange,
             WrStandardChange,
             priceType,
@@ -388,7 +390,6 @@ export default defineComponent({
             deliveryDate,
             priceDate,
             disabledDate,
-            goodsList,
             getAmout,
             traderList,
             businesserList,
@@ -408,4 +409,4 @@ export default defineComponent({
         padding: 0 20px;
     }
 }
-</style>;
+</style>;

+ 7 - 7
src/views/information/spot-contract/components/modify/index.vue

@@ -96,7 +96,7 @@
           <a-col :span="12">
             <a-form-item label="商品" name="WrStandardID">
               <a-select class="inlineFormSelect" style="width: 200px" @change="WrStandardChange" v-model:value="formState.WrStandardID" placeholder="请选择商品">
-                <a-select-option v-for="item in gmlist" :key="item.wrstandardid" :value="item.wrstandardid">
+                <a-select-option v-for="item in wdlst" :key="item.wrstandardid" :value="item.wrstandardid">
                   {{ item.wrstandardname }}
                 </a-select-option>
               </a-select>
@@ -105,7 +105,7 @@
           <a-col :span="12">
             <a-form-item label="品牌" name="SpotGoodsBrandID">
               <a-select class="inlineFormSelect" style="width: 200px" v-model:value="formState.SpotGoodsBrandID" placeholder="请选择品牌">
-                <a-select-option v-for="item in gblist" :key="item.brandid" :value="item.brandid">
+                <a-select-option v-for="item in bdlst" :key="item.brandid" :value="item.brandid">
                   {{ item.brandname }}
                 </a-select-option>
               </a-select>
@@ -154,7 +154,7 @@
             <a-col :span="12">
               <a-form-item label="点价合约" name="GoodsID">
                 <a-select class="inlineFormSelect" v-model:value="formState.GoodsID" style="width: 200px" placeholder="请选择点价合约">
-                  <a-select-option v-for="item in goodsList" :key="item.goodsid" :value="item.goodsid">
+                  <a-select-option v-for="item in gdsList" :key="item.goodsid" :value="item.goodsid">
                     {{ item.goodsname }}
                   </a-select-option>
                 </a-select>
@@ -291,7 +291,7 @@ export default defineComponent({
         const { contractType, isSell, contractChange, customList, queryCustomList } = handleContract(formState);
 
         //  处理现货商品
-        const { deliveryGoodsList, goodsList, gblist, gmlist, numberUnit, WrStandardChange, getDeliveryGoods, deliveryGoodsChange } = handleDeliveryGoods(formState);
+        const { deliveryGoodsList, bdlst,wdlst,gdlist, numberUnit, WrStandardChange, getDeliveryGoods, deliveryGoodsChange } = handleDeliveryGoods(formState);
         // 价格信息
         const { priceType, payCurrency, payCurrencyUnit, parCurrencyChange } = handlePrice(formState);
         // 日期
@@ -401,8 +401,9 @@ export default defineComponent({
             contractChange,
             customList,
             deliveryGoodsList,
-            gblist,
-            gmlist,
+            bdlst,
+            wdlst,
+            gdlist,
             deliveryGoodsChange,
             WrStandardChange,
             priceType,
@@ -414,7 +415,6 @@ export default defineComponent({
             deliveryDate,
             priceDate,
             disabledDate,
-            goodsList,
             getAmout,
             traderList,
             businesserList,

+ 32 - 48
src/views/information/spot-contract/components/setup.ts

@@ -2,12 +2,10 @@ import { getPayCurrencyTypeEnumList } from "@/common/constants/enumsList";
 import { getGoodsUnitEnumItemName } from "@/common/constants/enumsName";
 import { commonResultInfo, getRequestResultInfo } from "@/common/methods/request";
 import { validateCommon } from "@/common/setup/validate";
-import APP from '@/services';
 import { QueryCustomInfo } from "@/services/go/ermcp/customInfo";
 import { QueryCustomInfoType } from "@/services/go/ermcp/customInfo/interface";
 import { QueryDeliveryGoods, GetDeliveryGoodsDetail } from "@/services/go/ermcp/goodsInfo";
-import { TBGoods } from "@/services/go/ermcp/goodsInfo/interface/deliverygoodsdetail";
-import { Ermcp3Brand, Ermcp3Wrstandard, ErmcpDeliveryGoodsDetailEx, ErmcpDeliveryGoodsRsp } from "@/services/go/ermcp/goodsInfo/interface";
+import { ErmcpDeliveryGoodsRsp } from "@/services/go/ermcp/goodsInfo/interface";
 import { orderContract, spotContractStatus } from "@/services/proto/spotcontract";
 import {
     GldErmcpSpotContractOperateReq,
@@ -20,6 +18,7 @@ import Long from 'long';
 import moment, { Moment } from "moment";
 import { reactive, ref, Ref, UnwrapRef } from "vue";
 import { FormState } from './interface';
+import { Ermcp3DeliveryGoodsDetail, XHBRAND, XHWrstandard, TBGoods } from '@/services/go/ermcp/goodsInfo/interface/deliverygoodsdetail'
 
 
 /**
@@ -249,12 +248,14 @@ export function handleContract(formState: UnwrapRef<FormState>) {
 export function handleDeliveryGoods(formState: UnwrapRef<FormState>) {
     // 现货品种
     const deliveryGoodsList = ref<ErmcpDeliveryGoodsRsp[]>([])
+    // 现货商品详情
+    let goodsDetailList: Ermcp3DeliveryGoodsDetail[] = [];
     // 品牌
-    const gblist = ref<Ermcp3Brand[]>([])
+    const bdlst = ref<XHBRAND[]>([])
     // 品类列表
-    const gmlist = ref<Ermcp3Wrstandard[]>([])
+    const wdlst = ref<XHWrstandard[]>([])
     // 合约列表
-    const goodsList = ref<TBGoods[]>([]);
+    const gdlist = ref<TBGoods[]>([]);
 
     // 查询现货商品
     function getDeliveryGoods() {
@@ -266,72 +267,55 @@ export function handleDeliveryGoods(formState: UnwrapRef<FormState>) {
         })
     }
 
+
+    GetDeliveryGoodsDetail().then((res) => {
+        goodsDetailList=res
+    })
     // 查询商品列表
-    function getGoodsList(deliverygoodsid: number, wrstandardid: number) {
-        goodsList.value.length = 0;
-        GetDeliveryGoodsDetail(deliverygoodsid).then((res) => {
-            res.forEach((deliverygoods) => {
-                // 查询现货商品
-                const wrstandard = deliverygoods.wdlst.find((e) => e.wrstandardid === wrstandardid);
-                if (wrstandard) {
-                    // 套保品种列表
-                    wrstandard.mglst.forEach((middlegoods) => {
-                        // 期货品种列表
-                        middlegoods.GPLST.forEach((item) => {
-                            goodsList.value.push(...item.GDLST);
-                        })
-                    })
-                }
-            })
-        })
+    function getGoodsList(value:number) {
+        gdlist.value.length = 0;
+        const obj=goodsDetailList.find(itme=>itme.deliverygoodsid===value)
+        if(obj){
+            bdlst.value=obj.bdlst
+            wdlst.value=obj.wdlst
+        } 
     }
-
+  
     // 切换现货商品
     function deliveryGoodsChange(value: number | undefined) {
         if (value !== undefined) {
-            getDeliveryGoodsDetail(value)
+            getGoodsList(value)
         } else {
-            gblist.value.length = 0
-            gmlist.value.length = 0
+            bdlst.value.length = 0
+            wdlst.value.length = 0
         }
         formState.WrStandardID = undefined;
         formState.SpotGoodsBrandID = undefined;
         formState.ConvertFactor = undefined;
-    }
-
-    // 查询现货商品详情
-    function getDeliveryGoodsDetail(deliverygoodsid: number) {
-        const temp = APP.get('DeliveryGoodsList').find((e: ErmcpDeliveryGoodsDetailEx) => e.data.deliverygoodsid === deliverygoodsid)
-        if (temp) {
-            gblist.value = temp.gblist
-            gmlist.value = temp.gmlist
-        }
+        formState.GoodsID = undefined;
     }
 
     const numberUnit = ref<string>('')
 
     // 品类变更
     function WrStandardChange(value: number) {
-        const obj = gmlist.value.find((e) => e.wrstandardid === value);
-        if (obj) {
-            //标仓系数
-            formState.ConvertFactor = obj.convertfactor;
-            // 单位
-            numberUnit.value = getGoodsUnitEnumItemName(obj.unitid);
-            getGoodsList(obj.deliverygoodsid, obj.wrstandardid);
+        const obj=wdlst.value.find(item=>item.wrstandardid===value)
+        if(obj){
+            gdlist.value=obj.mglst[0].GPLST[0].GDLST
         }
+        formState.GoodsID = undefined;
     }
 
     return {
         deliveryGoodsList,
-        gblist,
-        gmlist,
-        goodsList,
+        bdlst,
+        wdlst,
+        gdlist,
         numberUnit,
         WrStandardChange,
         getDeliveryGoods,
-        getDeliveryGoodsDetail,
-        deliveryGoodsChange
+        deliveryGoodsChange,
+        GetDeliveryGoodsDetail
     }
 }
 

+ 10 - 1
src/views/manage/finance-review/list/invoice/index.vue

@@ -19,6 +19,10 @@
       <template #applystatus="{ text }">
         <a>{{ getApplyStatusName(text) }}</a>
       </template>
+      <!-- 发票附件 -->
+      <template #attachurl="{text}" class="attachurl">
+          {{text}}
+      </template>
       <!-- 点价类型 -->
       <template #operateapplytype="{ text }">
         <a>{{ operateApplyTypeName(text) }}</a>
@@ -140,4 +144,9 @@ export default defineComponent({
         };
     },
 });
-</script>
+</script>
+<style scoped>
+.attachurl{
+    white-space:nowrap
+}
+</style>

+ 19 - 1
src/views/report/components/filter/index.vue

@@ -16,7 +16,7 @@
                     {{ item.lable }}
                 </a-select-option>
             </a-select>
-            <slot></slot>
+            <slot :reset="reset" :search="search"></slot>
         </div>
     </div>
 </template>
@@ -42,10 +42,26 @@ export default defineComponent({
     },
     setup(props, context) {
         const { selectedReportType, reportType, reportTypeChange, isMonth, timeChange, dateFormat, time, selectedUser, userChange } = handleReprotType(context);
+        const oldSelectedReportType=selectedReportType.value
+        const oldSelectedUser=selectedUser.value
+        const oldTime=time.value
         const loading = ref<boolean>(false);
         // 交易用户
         const userList = ref<SelectOption[]>([]);
         const { queryTable } = handlerManagerList(loading, 2);
+        function reset() { //重置
+            selectedReportType.value=oldSelectedReportType
+            selectedUser.value=oldSelectedUser
+            time.value=oldTime
+            userChange()
+            timeChange()
+            reportTypeChange()
+        }
+        function search() {
+
+
+        }
+
         initData(() => {
             // 处理刷新
             selectedUser.value.key = getUserId();
@@ -79,6 +95,8 @@ export default defineComponent({
             isMonth,
             time,
             userList,
+            reset,
+            search
         };
     },
 });

+ 3 - 0
src/views/report/setup.ts

@@ -11,12 +11,15 @@ import { Value } from "./interface"
 
 export function handleReprotType(context: SetupContext) {
     // 选中的周期类型
+    // 
     const selectedReportType = ref<Value>({ key: reportCycleType.day })
     // 时间格式化类型
     const dateFormat = ref<reportCyleTimeType>(reportCyleTimeType.day)
     // 时间
+    // 
     const time = ref<Moment>(getInitTime());
     // 交易用户
+    // 
     const selectedUser = ref<Value>({ key: getUserId() })
     // 周期类型与时间类型 一对一的关系
     const timeMap = new Map([

+ 14 - 3
src/views/report/spot-report/components/filterTable/index.vue

@@ -1,6 +1,6 @@
 <template>
     <!-- 过滤客户资料表格 -->
-    <Filter @update="update">
+    <Filter @update="update" ref="filter" v-slot="{search,reset}">
         <a-select label-in-value class="conditionSelect ml10" style="width: 120px" v-model:value="selectedDG" @change="DGChange" placeholder="全部现货品种">
             <a-select-option v-for="item in DGList" :key="item.data.deliverygoodsname">
                 {{ item.data.deliverygoodsname }}
@@ -17,14 +17,14 @@
             </a-select-option>
         </a-select>
         <a-button class="selectBtn">查询</a-button>
-        <a-button class="selectBtn" @click="reset">重置</a-button>
+        <a-button class="selectBtn" @click="resetAction(search,reset)">重置</a-button>
     </Filter>
 </template>
 
 <script lang="ts">
 import FilterOption from '@/common/components/filter/index.vue';
 import { defineComponent } from 'vue';
-import { ref } from 'vue';
+import { ref ,onMounted } from 'vue';
 import { handleFilter, SelectList } from '@/common/setup/filter';
 import { handlerManagerList } from '@/common/setup/user';
 import { QueryMiddleGoodsDetail } from '@/services/go/ermcp/goodsInfo';
@@ -40,8 +40,18 @@ export default defineComponent({
         function update(value: TypeAndTime) {
             context.emit('update', value);
         }
+
+        let filter = ref(null);
+        onMounted(()=>{
+        console.log(filter.value)
+        });
         const { DGList, gblist, gmlist, selectedDG, selectedGB, selectedGM, DGChange, GBOrGMChange, reset } = handleDG(context);
+        function resetAction(search:Function,Nreset:Function) {
+            Nreset()
+            reset()
+        }
         return {
+            filter,
             DGList,
             gblist,
             gmlist,
@@ -52,6 +62,7 @@ export default defineComponent({
             selectedGB,
             selectedGM,
             update,
+            resetAction,
         };
     },
 });

+ 3 - 1
src/views/report/spot-report/list/spot_report/index.vue

@@ -3,7 +3,9 @@
   <div class="table-detail-container table-height"
        :loading="loading">
     <Filter @update="search"
-            @filter="updateColumn"></Filter>
+            @filter="updateColumn"
+            :tableList="tableList"
+            ></Filter>
     <a-table :columns="columns"
              class="srcollYTable"
              :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"

+ 27 - 64
swagger-to-ts/swagger.ts

@@ -1,65 +1,28 @@
-export interface Name{
-    accountid	:number;//交易账号(资金账号)
-allfriendsflag	:number;//是否全好友可见 - number;
-//:否 1:是
-amount	:number;//挂牌金额 = 委托数量  固定价或升贴水
-buyorsell	:number;//买卖 - number;
-//:买 1:卖(挂牌类型 买为采购 卖为销售)
-canbargain	:number;//是否可议价 - number;
-//:不可 1:可
-cancelqty	:number;//撤销数量
-canpart	:number;//是否允许部份摘牌 - number;
-//:不允许(要求整单) 1:允许(可以不整单)
-delistminqty	:number;//起摘数量
-deliverygoodscode	:string;//品种代码
-deliverygoodsid	:number;//品种ID
-deliverygoodsname	:string;//品种名称
-deliverymonth	:string;//交收月
-enumdicname	:string;//单位名称
-fixedprice	:number;//固定价格 - [挂牌]
-freezemargin	:number;//冻结保证金(保证金)
-futupricemove	:number;//期货升贴水
-futushow	:string;//期货合约/升贴水
-goodscode	:string;//期货合约
-goodsid	:number;//期货商品id
-goodsname	:string;//商品名称
-haswr	:number;//是否有仓单-卖方 - number;
-//:无仓单 1:有仓单
-isspecified	:number;//是否指定对手 - number;
-//:不指定 1:指定 - [挂牌]
-ladingbillid	:string;//提单ID(2number;
-//8+Unix秒时间戳(1number;
-//位)+xxxxxx)
-marginvalue	:number;//保证金设置值(履约保证金)
-marketid	:number;//市场ID
-matchusername	:string;//对手方名称(当ISSPECIFIED=1时,有值,指定朋友的名称)
-minivalue	:number;//现货商品最小变动值
-optioncompare	:string;//选择项比较串【{选择项ID}+{冒号}+选择项值 } ,逗号分隔,头尾加逗号】-- 所有选择项拼接,用于比较
-orderqty	:number;//委托数量
-ordertime	:string;//委托时间(挂牌时间)
-performancetemplateid	:number;//履约模板id
-pricemove	:number;//升贴水(浮动价时填写) - [挂牌]
-taname	:string;//交易用户名称(资金账号名称)
-tradedate	:string;//交易日(yyyyMMdd)
-tradeprice	:number;//成交价格 - [摘牌] (浮动价 ((商品1价格商品1价格系数+升贴水) 商品1重量系数 + 商品2价格商品2价格系数+商品2升贴水) 商品2重量系数 …) 委托单价格系数 + 委托单升贴水)
-tradeqty	:number;//成交数量
-userid	:number;//用户ID
-validtime	:string;//挂牌有效期
-warehouseid	:number;//仓库ID
-warehousename	:string;//仓库名称
-wrfactortypeid	:string;//仓单要素类型ID(212+Unix秒时间戳(1number;
-//位)+xxxxxx)
-wrfactortypename	:string;//仓单要素类型名称(选择项要素的名称合并显示,逗号分隔)
-wrpricetype	:number;//价格方式 - 1:固定价 2-浮动价 - [挂牌]
-wrstandardcode	:string;//现货商品代码
-wrstandardid	:number;//现货商品ID
-wrstandardname	:string;//商品名称
-wrtradeorderid	:string;//仓单贸易委托单ID(32number;
-//+Unix秒时间戳(1number;
-//位)+xxxxxx)
-wrtradeorderstatus	:number;//委托状态 - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:部成 8:已成 9:部成部撤 1number;
-//:成交失败 11:委托拒绝 12:经过摘牌(先摘后挂专用) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用) 17:冻结PD成功 18:冻结PD失败 19:冻结能量成功 2number;
-//:冻结能量失败 21:预约已报价 22:过期未付 23:优惠券处理中 24:仓单生成失败 25:首付扣款失败 26:履约失败 27:撤单解冻贷款失败
-wrtradetype	:number;//仓单贸易类型 - 1:挂牌 2:摘牌 3:提货卖(文化中国) 4:提货买(文化中国)
-wrtypename	:string;//商品
+export interface Name {
+    applicantid: number;//申请人
+    applysrc: number;//申请来源 - 1:管理端 2:终端
+    applystatus: number;//申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
+    applytime: string;//申请时间
+    auditorid: number;//审核人
+    auditremark: string;//审核备注
+    auditsrc: number;//审核来源 - 1:管理端 2:终端
+    audittime: string;//审核时间
+    audittradedate: string;//审核交易日(yyyyMMdd)
+    brokerapplyid: number;//申请ID(SEQ_BROKERAPPLY)
+    cardbackphotourl: string;//证件背面图片地址
+    cardfrontphotourl: string;//证件正面图片地址
+    cardnum: string;//证件号码(加密存储) 注:数据库没存证件类型字段,产品说类型固定为身份证
+    customername: string;//姓名
+    logincode: string;//登录代码
+    mobile: string;//手机号码
+    parentuserid: number;//所属机构id
+    parentusername: string;//所属机构名称
+    refereeuserid: number;//推荐人id(经纪人)
+    refernum: string;//推荐码
+    remark: string;//备注
+    subarealevelpath: string;//层级路径
+    tradedate: string;//交易日(yyyyMMdd)
+    userid: number;//申请人用户ID
+    userinfotype: number;//用户类型 1-个人 2-企业
+    username: string;//用户名称
 }

+ 49 - 121
swagger-to-ts/swagger.txt

@@ -1,151 +1,79 @@
 {
-    accountid	integer
-交易账号(资金账号)
+    applicantid	integer
+申请人
 
-allfriendsflag	integer
-是否全好友可见 - 0:否 1:是
+applysrc	integer
+申请来源 - 1:管理端 2:终端
 
-amount	number
-挂牌金额 = 委托数量 * 固定价或升贴水
+applystatus	integer
+申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
 
-buyorsell	integer
-买卖 - 0:买 1:卖(挂牌类型 买为采购 卖为销售)
+applytime	string
+申请时间
 
-canbargain	integer
-是否可议价 - 0:不可 1:可
+auditorid	integer
+审核人
 
-cancelqty	number
-撤销数量
+auditremark	string
+审核备注
 
-canpart	integer
-是否允许部份摘牌 - 0:不允许(要求整单) 1:允许(可以不整单)
+auditsrc	integer
+审核来源 - 1:管理端 2:终端
 
-delistminqty	integer
-起摘数量
+audittime	string
+审核时间
 
-deliverygoodscode	string
-品种代码
+audittradedate	string
+审核交易日(yyyyMMdd)
 
-deliverygoodsid	integer
-品种ID
+brokerapplyid	integer
+申请ID(SEQ_BROKERAPPLY)
 
-deliverygoodsname	string
-品种名称
+cardbackphotourl	string
+证件背面图片地址
 
-deliverymonth	string
-交收月
+cardfrontphotourl	string
+证件正面图片地址
 
-enumdicname	string
-单位名称
+cardnum	string
+证件号码(加密存储) 注:数据库没存证件类型字段,产品说类型固定为身份证
 
-fixedprice	number
-固定价格 - [挂牌]
+customername	string
+姓名
 
-freezemargin	number
-冻结保证金(保证金)
+logincode	string
+登录代码
 
-futupricemove	number
-期货升贴水
+mobile	string
+手机号码
 
-futushow	string
-期货合约/升贴水
+parentuserid	integer
+所属机构id
 
-goodscode	string
-期货合约
+parentusername	string
+所属机构名称
 
-goodsid	integer
-期货商品id
+refereeuserid	integer
+推荐人id(经纪人)
 
-goodsname	string
-商品名称
+refernum	string
+推荐码
 
-haswr	integer
-是否有仓单-卖方 - 0:无仓单 1:有仓单
+remark	string
+备注
 
-isspecified	integer
-是否指定对手 - 0:不指定 1:指定 - [挂牌]
-
-ladingbillid	string
-提单ID(208+Unix秒时间戳(10位)+xxxxxx)
-
-marginvalue	number
-保证金设置值(履约保证金)
-
-marketid	integer
-市场ID
-
-matchusername	string
-对手方名称(当ISSPECIFIED=1时,有值,指定朋友的名称)
-
-minivalue	integer
-现货商品最小变动值
-
-optioncompare	string
-选择项比较串【{选择项ID}+{冒号}+选择项值 } ,逗号分隔,头尾加逗号】-- 所有选择项拼接,用于比较
-
-orderqty	number
-委托数量
-
-ordertime	string
-委托时间(挂牌时间)
-
-performancetemplateid	integer
-履约模板id
-
-pricemove	number
-升贴水(浮动价时填写) - [挂牌]
-
-taname	string
-交易用户名称(资金账号名称)
+subarealevelpath	string
+层级路径
 
 tradedate	string
 交易日(yyyyMMdd)
 
-tradeprice	number
-成交价格 - [摘牌] (浮动价 ((商品1价格商品1价格系数+升贴水) 商品1重量系数 + 商品2价格商品2价格系数+商品2升贴水) 商品2重量系数 …)* 委托单价格系数 + 委托单升贴水)
-
-tradeqty	number
-成交数量
-
 userid	integer
-用户ID
-
-validtime	string
-挂牌有效期
-
-warehouseid	integer
-仓库ID
-
-warehousename	string
-仓库名称
-
-wrfactortypeid	string
-仓单要素类型ID(212+Unix秒时间戳(10位)+xxxxxx)
-
-wrfactortypename	string
-仓单要素类型名称(选择项要素的名称合并显示,逗号分隔)
-
-wrpricetype	integer
-价格方式 - 1:固定价 2-浮动价 - [挂牌]
-
-wrstandardcode	string
-现货商品代码
-
-wrstandardid	integer
-现货商品ID
-
-wrstandardname	string
-商品名称
-
-wrtradeorderid	string
-仓单贸易委托单ID(320+Unix秒时间戳(10位)+xxxxxx)
-
-wrtradeorderstatus	integer
-委托状态 - 1:委托请求 2:待冻结 3:委托成功 4:委托失败 5:配对成功 6:已撤 7:部成 8:已成 9:部成部撤 10:成交失败 11:委托拒绝 12:经过摘牌(先摘后挂专用) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用) 17:冻结PD成功 18:冻结PD失败 19:冻结能量成功 20:冻结能量失败 21:预约已报价 22:过期未付 23:优惠券处理中 24:仓单生成失败 25:首付扣款失败 26:履约失败 27:撤单解冻贷款失败
+申请人用户ID
 
-wrtradetype	integer
-仓单贸易类型 - 1:挂牌 2:摘牌 3:提货卖(文化中国) 4:提货买(文化中国)
+userinfotype	integer
+用户类型 1-个人 2-企业
 
-wrtypename	string
-商品
+username	string
+用户名称
 }