// 基于 @CONTROL/树视图/SERVICE.ts.ftl 生成 import { Http,Util,Errorlog } from '@/utils'; import ControlService from '@/widgets/control-service'; import IBIZOrderService from '@/service/ibizorder/ibizorder-service'; import TreeExpModel from './tree-exp-treeview-model'; import CodeListService from "@/codelist/codelist-service"; import i18n from '@/locale'; /** * TreeExp 部件服务对象 * * @export * @class TreeExpService */ export default class TreeExpService extends ControlService { /** * 订单服务对象 * * @type {IBIZOrderService} * @memberof TreeExpService */ public appEntityService: IBIZOrderService = new IBIZOrderService(); /** * 设置从数据模式 * * @type {boolean} * @memberof TreeExpService */ public setTempMode(){ this.isTempMode = false; } /** * Creates an instance of TreeExpService. * * @param {*} [opts={}] * @memberof TreeExpService */ constructor(opts: any = {}) { super(opts); this.model = new TreeExpModel(); } /** * 代码表服务对象 * * @type {CodeListService} * @memberof TreeExpService */ public codeListService:CodeListService = new CodeListService(); /** * 节点分隔符号 * * @public * @type {string} * @memberof TreeExpService */ public TREENODE_SEPARATOR: string = ';'; /** * 订单类型节点分隔符号 * * @public * @type {string} * @memberof TreeExpService */ public TREENODE_ORDERTYPE: string = 'orderType'; /** * 订单实体节点分隔符号 * * @public * @type {string} * @memberof TreeExpService */ public TREENODE_ORDERDATADYC: string = 'orderDataDyc'; /** * 订单状态代码表节点分隔符号 * * @public * @type {string} * @memberof TreeExpService */ public TREENODE_ORDERSTATUSDATA: string = 'orderStatusData'; /** * 默认根节点节点分隔符号 * * @public * @type {string} * @memberof TreeExpService */ public TREENODE_ROOT: string = 'ROOT'; /** * 订单状态节点分隔符号 * * @public * @type {string} * @memberof TreeExpService */ public TREENODE_ORDERSTATUS: string = 'orderstatus'; /** * 订单类型实体节点分隔符号 * * @public * @type {string} * @memberof TreeExpService */ public TREENODE_ORDERTYPEDATA: string = 'orderTypeData'; /** * 订单数据节点分隔符号 * * @public * @type {string} * @memberof TreeExpService */ public TREENODE_ORDERDATA: string = 'orderData'; /** * 获取节点数据 * * @param {string} action * @param {*} [data={}] * @param {boolean} [isloading] * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public async getNodes(context:any = {},data: any = {}, isloading?: boolean): Promise<any> { let { srfparentkey, srfcat, srfnodeid, srfnodefilter, query }: { srfparentkey: string, srfcat: string, srfnodeid: string, srfnodefilter: string, query:string } = data; srfnodefilter = query ? query : srfnodefilter; let list: any[] = []; let filter: any = {}; if (!srfnodeid || Object.is(srfnodeid, '#')) { srfnodeid = this.TREENODE_ROOT; } let strTreeNodeId: string = srfnodeid; let strRealNodeId: string = ''; let bRootSelect: boolean = false; let strNodeType: string | null = null; let strRootSelectNode: string = ''; if (Object.is(strTreeNodeId, this.TREENODE_ROOT)) { strNodeType = this.TREENODE_ROOT; if (srfparentkey) { strRealNodeId = srfparentkey; } } else { let nPos = strTreeNodeId.indexOf(this.TREENODE_SEPARATOR); if (nPos === -1) { return Promise.reject({ status: 500, data: { title: '失败', message: `树节点${strTreeNodeId}标识无效` } }); } strNodeType = strTreeNodeId.substring(0, nPos); strRealNodeId = strTreeNodeId.substring(nPos + 1); } Object.assign(filter, { srfparentkey: srfparentkey, srfcat: srfcat, srfnodefilter: srfnodefilter, strRealNodeId: strRealNodeId, srfnodeid: srfnodeid, strNodeType: strNodeType, viewparams: JSON.parse(JSON.stringify(data)).viewparams } ); // 分解节点标识 let nodeid: string[] = strRealNodeId.split(this.TREENODE_SEPARATOR); for (let i = 0; i < nodeid.length; i++) { switch (i) { case 0: Object.assign(filter, { nodeid: nodeid[0] }); break; case 1: Object.assign(filter, { nodeid2: nodeid[1] }); break; case 2: Object.assign(filter, { nodeid3: nodeid[2] }); break; case 3: Object.assign(filter, { nodeid4: nodeid[3] }); break; default: break; } } if (Object.is(strNodeType, this.TREENODE_ORDERTYPE)) { await this.fillOrdertypeNodeChilds(context,filter, list); return Promise.resolve({ status: 200, data: list }); } if (Object.is(strNodeType, this.TREENODE_ORDERDATADYC)) { await this.fillOrderdatadycNodeChilds(context,filter, list); return Promise.resolve({ status: 200, data: list }); } if (Object.is(strNodeType, this.TREENODE_ORDERSTATUSDATA)) { await this.fillOrderstatusdataNodeChilds(context,filter, list); return Promise.resolve({ status: 200, data: list }); } if (Object.is(strNodeType, this.TREENODE_ROOT)) { await this.fillRootNodeChilds(context,filter, list); return Promise.resolve({ status: 200, data: list }); } if (Object.is(strNodeType, this.TREENODE_ORDERSTATUS)) { await this.fillOrderstatusNodeChilds(context,filter, list); return Promise.resolve({ status: 200, data: list }); } if (Object.is(strNodeType, this.TREENODE_ORDERTYPEDATA)) { await this.fillOrdertypedataNodeChilds(context,filter, list); return Promise.resolve({ status: 200, data: list }); } if (Object.is(strNodeType, this.TREENODE_ORDERDATA)) { await this.fillOrderdataNodeChilds(context,filter, list); return Promise.resolve({ status: 200, data: list }); } return Promise.resolve({ status: 500, data: { title: '失败', message: `树节点${strTreeNodeId}标识无效` } }); } /** * 填充 树视图节点[订单类型] * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @param {*} rsNavContext * @param {*} rsNavParams * @param {*} rsParams * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public fillOrdertypeNodes(context:any={},filter: any, list: any[],rsNavContext?:any,rsNavParams?:any,rsParams?:any): Promise<any> { context = this.handleResNavContext(context,filter,rsNavContext); filter = this.handleResNavParams(context,filter,rsNavParams,rsParams); return new Promise((resolve:any,reject:any) =>{ let treeNode: any = {}; Object.assign(treeNode, { text: i18n.t('entities.ibizorder.treeexp_treeview.nodes.ordertype') }); Object.assign(treeNode, { isUseLangRes: true }); Object.assign(treeNode,{srfappctx:context}); Object.assign(treeNode, { srfmajortext: treeNode.text }); let strNodeId: string = 'orderType'; // 没有指定节点值,直接使用父节点值 Object.assign(treeNode, { srfkey: filter.strRealNodeId }); strNodeId += this.TREENODE_SEPARATOR; strNodeId += filter.strRealNodeId; Object.assign(treeNode, { id: strNodeId }); Object.assign(treeNode, { expanded: filter.isAutoexpand }); Object.assign(treeNode, { leaf: false }); Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeType: "STATIC" }); list.push(treeNode); resolve(list); }); } /** * 填充 树视图节点[订单类型]子节点 * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public async fillOrdertypeNodeChilds(context:any={}, filter: any, list: any[]): Promise<any> { if (filter.srfnodefilter && !Object.is(filter.srfnodefilter,"")) { // 填充订单类型实体 let OrdertypedataRsNavContext:any = {}; let OrdertypedataRsNavParams:any = {}; let OrdertypedataRsParams:any = {}; await this.fillOrdertypedataNodes(context, filter, list ,OrdertypedataRsNavContext,OrdertypedataRsNavParams,OrdertypedataRsParams); } else { // 填充订单类型实体 let OrdertypedataRsNavContext:any = {}; let OrdertypedataRsNavParams:any = {}; let OrdertypedataRsParams:any = {}; await this.fillOrdertypedataNodes(context, filter, list ,OrdertypedataRsNavContext,OrdertypedataRsNavParams,OrdertypedataRsParams); } } /** * 填充 树视图节点[订单实体] * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @param {*} rsNavContext * @param {*} rsNavParams * @param {*} rsParams * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public fillOrderdatadycNodes(context:any={},filter: any, list: any[],rsNavContext?:any,rsNavParams?:any,rsParams?:any): Promise<any> { context = this.handleResNavContext(context,filter,rsNavContext); filter = this.handleResNavParams(context,filter,rsNavParams,rsParams); return new Promise((resolve:any,reject:any) =>{ let searchFilter: any = {}; Object.assign(searchFilter, { total: false }); let bFirst: boolean = true; let records: any[] = []; try { this.searchOrderdatadyc(context, searchFilter, filter).then((records:any) =>{ if(records && records.length >0){ records.forEach((entity: any) => { let treeNode: any = {}; // 整理context let strId: string = entity.ibizorderid; let strText: string = entity.ibizordername; Object.assign(treeNode,{srfparentdename:'IBIZOrder',srfparentkey:entity.ibizorderid}); let tempContext:any = JSON.parse(JSON.stringify(context)); Object.assign(tempContext,{srfparentdename:'IBIZOrder',srfparentkey:entity.ibizorderid,ibizorder:strId}) Object.assign(treeNode,{srfappctx:tempContext}); Object.assign(treeNode,{'ibizorder':strId}); Object.assign(treeNode, { srfkey: strId }); Object.assign(treeNode, { text: strText, srfmajortext: strText }); let strNodeId: string = 'orderDataDyc'; strNodeId += this.TREENODE_SEPARATOR; strNodeId += strId; Object.assign(treeNode, { id: strNodeId }); Object.assign(treeNode, { expanded: filter.isautoexpand }); Object.assign(treeNode, { leaf: true }); Object.assign(treeNode, { curData: entity }); Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeType: "DE",appEntityName:"ibizorder" }); list.push(treeNode); resolve(list); bFirst = false; }); }else{ resolve(list); } }); } catch (error) { console.error(error); } }); } /** * 获取查询集合 * * @public * @param {any{}} context * @param {*} searchFilter * @param {*} filter * @returns {any[]} * @memberof TestEnetityDatasService */ @Errorlog public searchOrderdatadyc(context:any={}, searchFilter: any, filter: any): Promise<any> { return new Promise((resolve:any,reject:any) =>{ if(filter.viewparams){ Object.assign(searchFilter,filter.viewparams); } if(!searchFilter.page){ Object.assign(searchFilter,{page:0}); } if(!searchFilter.size){ Object.assign(searchFilter,{size:1000}); } if(context && context.srfparentdename){ Object.assign(searchFilter,{srfparentdename:JSON.parse(JSON.stringify(context)).srfparentdename}); } if(context && context.srfparentkey){ Object.assign(searchFilter,{srfparentkey:JSON.parse(JSON.stringify(context)).srfparentkey}); } const _appEntityService: any = this.appEntityService; let list: any[] = []; if (_appEntityService['FetchDefault'] && _appEntityService['FetchDefault'] instanceof Function) { const response: Promise<any> = _appEntityService['FetchDefault'](context, searchFilter, false); response.then((response: any) => { if (!response.status || response.status !== 200) { resolve([]); console.log(JSON.stringify(context)); console.error('查询FetchDefault数据集异常!'); } const data: any = response.data; if (Object.keys(data).length > 0) { list = JSON.parse(JSON.stringify(data)); resolve(list); } else { resolve([]); } }).catch((response: any) => { resolve([]); console.log(JSON.stringify(context)); console.error('查询FetchDefault数据集异常!'); }); } }) } /** * 填充 树视图节点[订单实体]子节点 * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public async fillOrderdatadycNodeChilds(context:any={}, filter: any, list: any[]): Promise<any> { if (filter.srfnodefilter && !Object.is(filter.srfnodefilter,"")) { } else { } } /** * 填充 树视图节点[订单状态代码表] * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @param {*} rsNavContext * @param {*} rsNavParams * @param {*} rsParams * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public fillOrderstatusdataNodes(context:any={},filter: any, list: any[],rsNavContext?:any,rsNavParams?:any,rsParams?:any): Promise<any> { context = this.handleResNavContext(context,filter,rsNavContext); filter = this.handleResNavParams(context,filter,rsNavParams,rsParams); return new Promise((resolve:any,reject:any) =>{ let codeListIems:Array<any> = []; if (this.getStore()) { codeListIems = (this.getStore() as any).getters.getCodeListItems('ORDERSTATE'); } if(codeListIems && codeListIems.length >0){ const handleChildData = (context:any,item:any,) =>{ Object.assign(item,{srfappctx:context}); Object.assign(item, { text: i18n.t('codelist.ORDERSTATE.'+item.value) }); Object.assign(item, { isUseLangRes: true }); Object.assign(item, { srfmajortext: item.text }); let strNodeId: string = "orderStatusData"; Object.assign(item, { srfkey: item.value }); strNodeId += this.TREENODE_SEPARATOR; strNodeId += item.value; Object.assign(item, { id: strNodeId }); Object.assign(item, { expanded: filter.isautoexpand }); Object.assign(item, {navigateContext: {CONTEXTPARAM1:"%orderstate%"} }); Object.assign(item, {navigateParams: {n_orderstate_eq:"%NODEID%",param2:"%orderstate%"} }); Object.assign(item, { nodeid: item.srfkey }); Object.assign(item, { nodeid2: item.pvalue }); Object.assign(item, { nodeType: 'STATIC' }); } codeListIems = this.handleDataSet(JSON.parse(JSON.stringify(codeListIems)),context,handleChildData); codeListIems.forEach((item:any) => { let treeNode: any = {}; Object.assign(treeNode,{srfappctx:context}); Object.assign(treeNode, { text: i18n.t('codelist.ORDERSTATE.'+item.value) }); Object.assign(treeNode, { isUseLangRes: true }); Object.assign(treeNode, { srfmajortext: treeNode.text }); let strNodeId: string = "orderStatusData"; Object.assign(treeNode, { srfkey: item.value }); strNodeId += this.TREENODE_SEPARATOR; strNodeId += item.value; Object.assign(treeNode, { id: strNodeId }); Object.assign(treeNode, { expanded: filter.isautoexpand }); Object.assign(treeNode, { leaf: true }); Object.assign(treeNode, {navigateContext: {CONTEXTPARAM1:"%orderstate%"} }); Object.assign(treeNode, {navigateParams: {n_orderstate_eq:"%NODEID%",param2:"%orderstate%"} }); if(item.children && item.children.length >0){ Object.assign(treeNode, { children: item.children }); } Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeType: 'STATIC' }); list.push(treeNode); resolve(list); }) }else{ resolve(list); } }); } /** * 填充 树视图节点[订单状态代码表]子节点 * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public async fillOrderstatusdataNodeChilds(context:any={}, filter: any, list: any[]): Promise<any> { if (filter.srfnodefilter && !Object.is(filter.srfnodefilter,"")) { } else { } } /** * 填充 树视图节点[默认根节点] * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @param {*} rsNavContext * @param {*} rsNavParams * @param {*} rsParams * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public fillRootNodes(context:any={},filter: any, list: any[],rsNavContext?:any,rsNavParams?:any,rsParams?:any): Promise<any> { context = this.handleResNavContext(context,filter,rsNavContext); filter = this.handleResNavParams(context,filter,rsNavParams,rsParams); return new Promise((resolve:any,reject:any) =>{ let treeNode: any = {}; Object.assign(treeNode, { text: i18n.t('entities.ibizorder.treeexp_treeview.nodes.root') }); Object.assign(treeNode, { isUseLangRes: true }); Object.assign(treeNode,{srfappctx:context}); Object.assign(treeNode, { srfmajortext: treeNode.text }); let strNodeId: string = 'ROOT'; Object.assign(treeNode, { srfkey: 'root' }); strNodeId += this.TREENODE_SEPARATOR; strNodeId += 'root'; Object.assign(treeNode, { id: strNodeId }); Object.assign(treeNode, { expanded: filter.isAutoexpand }); Object.assign(treeNode, { leaf: false }); Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeType: "STATIC" }); list.push(treeNode); resolve(list); }); } /** * 填充 树视图节点[默认根节点]子节点 * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public async fillRootNodeChilds(context:any={}, filter: any, list: any[]): Promise<any> { if (filter.srfnodefilter && !Object.is(filter.srfnodefilter,"")) { // 填充订单状态 let OrderstatusRsNavContext:any = {}; let OrderstatusRsNavParams:any = {}; let OrderstatusRsParams:any = {}; await this.fillOrderstatusNodes(context, filter, list ,OrderstatusRsNavContext,OrderstatusRsNavParams,OrderstatusRsParams); // 填充订单类型 let OrdertypeRsNavContext:any = {}; let OrdertypeRsNavParams:any = {}; let OrdertypeRsParams:any = {}; await this.fillOrdertypeNodes(context, filter, list ,OrdertypeRsNavContext,OrdertypeRsNavParams,OrdertypeRsParams); // 填充订单数据 let OrderdataRsNavContext:any = {}; let OrderdataRsNavParams:any = {}; let OrderdataRsParams:any = {}; await this.fillOrderdataNodes(context, filter, list ,OrderdataRsNavContext,OrderdataRsNavParams,OrderdataRsParams); } else { // 填充订单状态 let OrderstatusRsNavContext:any = {}; let OrderstatusRsNavParams:any = {}; let OrderstatusRsParams:any = {}; await this.fillOrderstatusNodes(context, filter, list ,OrderstatusRsNavContext,OrderstatusRsNavParams,OrderstatusRsParams); // 填充订单类型 let OrdertypeRsNavContext:any = {}; let OrdertypeRsNavParams:any = {}; let OrdertypeRsParams:any = {}; await this.fillOrdertypeNodes(context, filter, list ,OrdertypeRsNavContext,OrdertypeRsNavParams,OrdertypeRsParams); // 填充订单数据 let OrderdataRsNavContext:any = {}; let OrderdataRsNavParams:any = {}; let OrderdataRsParams:any = {}; await this.fillOrderdataNodes(context, filter, list ,OrderdataRsNavContext,OrderdataRsNavParams,OrderdataRsParams); } } /** * 填充 树视图节点[订单状态] * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @param {*} rsNavContext * @param {*} rsNavParams * @param {*} rsParams * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public fillOrderstatusNodes(context:any={},filter: any, list: any[],rsNavContext?:any,rsNavParams?:any,rsParams?:any): Promise<any> { context = this.handleResNavContext(context,filter,rsNavContext); filter = this.handleResNavParams(context,filter,rsNavParams,rsParams); return new Promise((resolve:any,reject:any) =>{ let treeNode: any = {}; Object.assign(treeNode, { text: i18n.t('entities.ibizorder.treeexp_treeview.nodes.orderstatus') }); Object.assign(treeNode, { isUseLangRes: true }); Object.assign(treeNode,{srfappctx:context}); Object.assign(treeNode, { srfmajortext: treeNode.text }); let strNodeId: string = 'orderstatus'; // 没有指定节点值,直接使用父节点值 Object.assign(treeNode, { srfkey: filter.strRealNodeId }); strNodeId += this.TREENODE_SEPARATOR; strNodeId += filter.strRealNodeId; Object.assign(treeNode, { id: strNodeId }); Object.assign(treeNode, { expanded: filter.isAutoexpand }); Object.assign(treeNode, { leaf: false }); Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeType: "STATIC" }); list.push(treeNode); resolve(list); }); } /** * 填充 树视图节点[订单状态]子节点 * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public async fillOrderstatusNodeChilds(context:any={}, filter: any, list: any[]): Promise<any> { if (filter.srfnodefilter && !Object.is(filter.srfnodefilter,"")) { // 填充订单状态代码表 let OrderstatusdataRsNavContext:any = {}; let OrderstatusdataRsNavParams:any = {}; let OrderstatusdataRsParams:any = {}; await this.fillOrderstatusdataNodes(context, filter, list ,OrderstatusdataRsNavContext,OrderstatusdataRsNavParams,OrderstatusdataRsParams); } else { // 填充订单状态代码表 let OrderstatusdataRsNavContext:any = {}; let OrderstatusdataRsNavParams:any = {}; let OrderstatusdataRsParams:any = {}; await this.fillOrderstatusdataNodes(context, filter, list ,OrderstatusdataRsNavContext,OrderstatusdataRsNavParams,OrderstatusdataRsParams); } } /** * 填充 树视图节点[订单类型实体] * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @param {*} rsNavContext * @param {*} rsNavParams * @param {*} rsParams * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public fillOrdertypedataNodes(context:any={},filter: any, list: any[],rsNavContext?:any,rsNavParams?:any,rsParams?:any): Promise<any> { context = this.handleResNavContext(context,filter,rsNavContext); filter = this.handleResNavParams(context,filter,rsNavParams,rsParams); return new Promise((resolve:any,reject:any) =>{ this.codeListService.getItems('DYNAORDERTYPE',context).then((codeListIems:any)=>{ if(codeListIems && codeListIems.length >0){ const handleChildData = (context:any,item:any,) =>{ Object.assign(item,{srfappctx:context}); Object.assign(item, { text: item.text }); Object.assign(item, { srfmajortext: item.text }); let strNodeId: string = "orderTypeData"; Object.assign(item, { srfkey: item.value }); strNodeId += this.TREENODE_SEPARATOR; strNodeId += item.value; Object.assign(item, { id: strNodeId }); Object.assign(item, { expanded: filter.isautoexpand }); Object.assign(item, {navigateContext: {CONTEXTPARAM1:"%orderstate%"} }); Object.assign(item, {navigateParams: {param2:"%orderstate%",n_ordertype_eq:"%NODEID%"} }); Object.assign(item, { nodeid: item.srfkey }); Object.assign(item, { nodeid2: item.pvalue }); Object.assign(item, { nodeType: "CODELIST",appEntityName:"ibizordertype" }); } codeListIems = this.handleDataSet(JSON.parse(JSON.stringify(codeListIems)),context,handleChildData); codeListIems.forEach((item:any) => { let treeNode: any = {}; Object.assign(treeNode,{srfappctx:context}); Object.assign(treeNode, { text: item.text }); Object.assign(treeNode, { srfmajortext: treeNode.text }); let strNodeId: string = "orderTypeData"; Object.assign(treeNode, { srfkey: item.value }); strNodeId += this.TREENODE_SEPARATOR; strNodeId += item.value; Object.assign(treeNode, { id: strNodeId }); Object.assign(treeNode, { expanded: filter.isautoexpand }); Object.assign(treeNode, { leaf: true }); Object.assign(treeNode, {navigateContext: {CONTEXTPARAM1:"%orderstate%"} }); Object.assign(treeNode, {navigateParams: {param2:"%orderstate%",n_ordertype_eq:"%NODEID%"} }); if(item.children && item.children.length >0){ Object.assign(treeNode, { children: item.children }); } Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeType: "CODELIST",appEntityName:"ibizordertype" }); list.push(treeNode); resolve(list); }) }else{ resolve(list); } }); }); } /** * 填充 树视图节点[订单类型实体]子节点 * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public async fillOrdertypedataNodeChilds(context:any={}, filter: any, list: any[]): Promise<any> { if (filter.srfnodefilter && !Object.is(filter.srfnodefilter,"")) { } else { } } /** * 填充 树视图节点[订单数据] * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @param {*} rsNavContext * @param {*} rsNavParams * @param {*} rsParams * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public fillOrderdataNodes(context:any={},filter: any, list: any[],rsNavContext?:any,rsNavParams?:any,rsParams?:any): Promise<any> { context = this.handleResNavContext(context,filter,rsNavContext); filter = this.handleResNavParams(context,filter,rsNavParams,rsParams); return new Promise((resolve:any,reject:any) =>{ let treeNode: any = {}; Object.assign(treeNode, { text: i18n.t('entities.ibizorder.treeexp_treeview.nodes.orderdata') }); Object.assign(treeNode, { isUseLangRes: true }); Object.assign(treeNode,{srfappctx:context}); Object.assign(treeNode, { srfmajortext: treeNode.text }); let strNodeId: string = 'orderData'; // 没有指定节点值,直接使用父节点值 Object.assign(treeNode, { srfkey: filter.strRealNodeId }); strNodeId += this.TREENODE_SEPARATOR; strNodeId += filter.strRealNodeId; Object.assign(treeNode, { id: strNodeId }); Object.assign(treeNode, { expanded: filter.isAutoexpand }); Object.assign(treeNode, { leaf: false }); Object.assign(treeNode, { nodeid: treeNode.srfkey }); Object.assign(treeNode, { nodeid2: filter.strRealNodeId }); Object.assign(treeNode, { nodeType: "STATIC" }); list.push(treeNode); resolve(list); }); } /** * 填充 树视图节点[订单数据]子节点 * * @public * @param {any{}} context * @param {*} filter * @param {any[]} list * @returns {Promise<any>} * @memberof TreeExpService */ @Errorlog public async fillOrderdataNodeChilds(context:any={}, filter: any, list: any[]): Promise<any> { if (filter.srfnodefilter && !Object.is(filter.srfnodefilter,"")) { // 填充订单实体 let OrderdatadycRsNavContext:any = {}; let OrderdatadycRsNavParams:any = {}; let OrderdatadycRsParams:any = {}; await this.fillOrderdatadycNodes(context, filter, list ,OrderdatadycRsNavContext,OrderdatadycRsNavParams,OrderdatadycRsParams); } else { // 填充订单实体 let OrderdatadycRsNavContext:any = {}; let OrderdatadycRsNavParams:any = {}; let OrderdatadycRsParams:any = {}; await this.fillOrderdatadycNodes(context, filter, list ,OrderdatadycRsNavContext,OrderdatadycRsNavParams,OrderdatadycRsParams); } } /** * 处理代码表返回数据(树状结构) * * @param result 返回数组 * @param context 应用上下文 * @param callBack 回调 * @memberof TreeExpService */ public handleDataSet(result:Array<any>,context:any,callBack:any){ let list:Array<any> = []; if(result.length === 0){ return list; } result.forEach((codeItem:any) =>{ if(!codeItem.pvalue){ let valueField:string = codeItem.value; this.setChildCodeItems(valueField,result,codeItem); list.push(codeItem); } }) this.setNodeData(list,context,callBack); return list; } /** * 处理非根节点数据 * * @param result 返回数组 * @param context 应用上下文 * @param callBack 回调 * @memberof TreeExpService */ public setChildCodeItems(pValue:string,result:Array<any>,codeItem:any){ result.forEach((item:any) =>{ if(item.pvalue == pValue){ let valueField:string = item.value; this.setChildCodeItems(valueField,result,item); if(!codeItem.children){ codeItem.children = []; } codeItem.children.push(item); } }) } /** * 设置节点UI数据 * * @param result 返回数组 * @param context 应用上下文 * @param callBack 回调 * @memberof TreeExpService */ public setNodeData(result:Array<any>,context:any,callBack:any){ result.forEach((item:any) =>{ if(item.children){ item.leaf = false; this.setNodeData(item.children,context,callBack); }else{ item.leaf = true; } callBack(context,item); }) } /** * 处理节点关系导航上下文 * * @param context 应用上下文 * @param filter 参数 * @param resNavContext 节点关系导航上下文 * * @memberof TreeExpService */ public handleResNavContext(context:any,filter:any,resNavContext:any){ if(resNavContext && Object.keys(resNavContext).length > 0){ let tempContextData:any = JSON.parse(JSON.stringify(context)); let tempViewParams:any = {}; if(filter && filter.viewparams){ tempViewParams = filter.viewparams; } Object.keys(resNavContext).forEach((item:any) =>{ let curDataObj:any = resNavContext[item]; this.handleCustomDataLogic(context,tempViewParams,curDataObj,tempContextData,item); }) return tempContextData; }else{ return context; } } /** * 处理关系导航参数 * * @param context 应用上下文 * @param filter 参数 * @param resNavParams 节点关系导航参数 * @param resParams 节点关系参数 * * @memberof TreeExpService */ public handleResNavParams(context:any,filter:any,resNavParams:any,resParams:any){ if((resNavParams && Object.keys(resNavParams).length >0) || (resParams && Object.keys(resParams).length >0)){ let tempViewParamData:any = {}; let tempViewParams:any = {}; if(filter && filter.viewparams){ tempViewParams = filter.viewparams; tempViewParamData = JSON.parse(JSON.stringify(filter.viewparams)); } if( Object.keys(resNavParams).length > 0){ Object.keys(resNavParams).forEach((item:any) =>{ let curDataObj:any = resNavParams[item]; this.handleCustomDataLogic(context,tempViewParams,curDataObj,tempViewParamData,item); }) } if( Object.keys(resParams).length > 0){ Object.keys(resParams).forEach((item:any) =>{ let curDataObj:any = resParams[item]; tempViewParamData[item.toLowerCase()] = curDataObj.value; }) } Object.assign(filter,{viewparams:tempViewParamData}); return filter; }else{ return filter; } } /** * 处理自定义节点关系导航数据 * * @param context 应用上下文 * @param viewparams 参数 * @param curNavData 节点关系导航参数对象 * @param tempData 返回数据 * @param item 节点关系导航参数键值 * * @memberof TreeExpService */ public handleCustomDataLogic(context:any,viewparams:any,curNavData:any,tempData:any,item:string){ // 直接值直接赋值 if(curNavData.isRawValue){ if(Object.is(curNavData.value,"null") || Object.is(curNavData.value,"")){ Object.defineProperty(tempData, item.toLowerCase(), { value: null, writable : true, enumerable : true, configurable : true }); }else{ Object.defineProperty(tempData, item.toLowerCase(), { value: curNavData.value, writable : true, enumerable : true, configurable : true }); } }else{ // 先从导航上下文取数,没有再从导航参数(URL)取数,如果导航上下文和导航参数都没有则为null if(context[(curNavData.value).toLowerCase()] != null){ Object.defineProperty(tempData, item.toLowerCase(), { value: context[(curNavData.value).toLowerCase()], writable : true, enumerable : true, configurable : true }); }else{ if(viewparams[(curNavData.value).toLowerCase()] != null){ Object.defineProperty(tempData, item.toLowerCase(), { value: viewparams[(curNavData.value).toLowerCase()], writable : true, enumerable : true, configurable : true }); }else{ Object.defineProperty(tempData, item.toLowerCase(), { value: null, writable : true, enumerable : true, configurable : true }); } } } } }