版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录第一章:CRM配置管理简述配置管理员登录信息:登录页面:serverip:8080/cc-crm/conf.do企业标识:企业的标识用户名:conf密码:默认cinteam123,新版crm建立的企业默认cinconf123企业配置管理员登陆后首页:CRM系统管理角色共分三个:运营级管理员、企业配置管理员、企业管理员,crm平台的设计模式是基于呼叫中心的架构,多企业独立运行的模式,整个平台只有一个运营级管理员,由运营级管理员来建立若干个企业,每个企业分别有其配置管理员和企业管理员2个管理角色;企业配置管理员级主要配置和管理下面2块的工作:1、数据管理注册和管理当前企业的数据对象,一条数据对象对应生成crm数据库中的一张表,数据对象类型包括:工单数据、基础数据、客户数据、质检数据、操作日志;无论做呼入还是呼出业务,一般一个企业至少需要配置一个工单数据对象和一个客户资料数据对象,供坐席界面在弹屏界面时调用;质检数据对象是指在企业需要质检功能时配置,配置后,质检员可以对坐席保存的工单进行质检评分;操作日志类型的数据对象是用于配合工单使用的,即工单页面可以调用操作日志的数据对象;基础数据类型的数据对象一般是存放一些基本数据,配合业务需求使用的情况下配置。具体的配置请参见第二章内容:数据管理部分介绍。2、查询管理注册和管理当前企业所有的查询器,查询器即是对数据库中的信息进行查询展现到页面,可以对话单、工单等相关数据进行查询和统计;一般分2块,一是导入一些做好的标准查询器模版,例如:呼叫历史、坐席统计等;二是具体业务需求定制的,如工单明细、相关统计等;具体的配置请参见第三章内容:查询管理部分介绍。第二章:数据管理数据对象:一条数据对象对应生成crm数据库中的一张表,常用数据对象类型包括客户资料和工单2种,一般一个企业至少要创建客户资料和工单数据对象,供弹屏页面调用。1、数据对象注册--基本信息--选项卡:1.1、对象标识数据对象的唯一标识,4位数字;1.2、关键字标识数据对象的key,唯一标识;1.3、数据类型目前类型有:工单数据、基础数据、客户数据、质检数据、操作日志;工单数据对应数据库中的表名:crm_agt_rpt_企业标识_数据对象key基础数据对应数据库中的表名:crm_data_企业标识_数据对象key客户数据对应数据库中的表名:crm_数据对象key_企业标识质检数据对应数据库中的表名:crm_checker_企业标识_数据对象key操作日志对应数据库中的表名:crm_opt_log_企业标识_数据对象key1.4、字段空间表示生成的表默认带的预留字段的数量;数字串含义:1.5、名称数据对象的名称,可以用中文;1.6、企业默认是和否两种值,在没有关联数据对象的情况下,会默认使用设置为是的数据对象;1.7、操作日志关联操作日志后,在弹屏和编辑页面可以显示编辑操作日志数据对象的字段,一同保存;1.8、查询页默认参数初始化JSON模板是key—value赋值形式;{"rptTimeFrom":"#cinDateFmt('yyyyMMdd')000000","rptTimeTo":"#cinDateFmt('yyyyMMdd')235959"}效果:rptTime:对应查询条件字段的字段名;1.9、编辑页JS脚本模板在此添加JS脚本,可控制数据对象的编辑页面中所有的控件元素;模版1:弹屏工单部分字段内容从客户资料中根据弹屏页面坐席点击的客户资料自动获取;#if(${pageKey}=='callPage')//客户资料属性,工单属性_globalCustomerNotifyCtrCtx.addCtr('data21','${dataObjInfo.objId}','data25');_globalCustomerNotifyCtrCtx.addCtr('linkTel1','${dataObjInfo.objId}','data31');#end说明:前面的参数data21为客户资料中的字段名,后面的参数为工单中对应的字段名;模版2:控制页面2个编码类型字段的逻辑关系;_baseCodeCtrManager.regCodeCtrTwin('${dataObjInfo.objId}_data29','${dataObjInfo.objId}_data30','--全部--');模版3:弹屏工单部分字段内容是否可编辑及显示隐藏;varordersCtrIdArr=newArray("command0.data35","command0.data36");//需要是控件的nameMyHtmlCtr.disableCtrArr(ordersCtrIdArr);//不可编辑MyHtmlCtr.enableCtrArr(ordersCtrIdArr);//可编辑MyHtmlCtr.hideCtrArr(ordersCtrIdArr);//隐藏不显示MyHtmlCtr.showCtrArr(newArray("th_${dataObjInfo.objId}_data38","…"));//显示MyHtmlCtr.confCtrValue('${dataObjInfo.objId}_data38',nowDtStr);//给字段赋值vardata37Value=MyHtmlCtr.loadCtrValue('${dataObjInfo.objId}_data37');//取当前页面的值赋给变量模版4:弹屏工单必填项未填工单保存时弹出窗口提示;$("${dataObjInfo.objId}Form").setAttribute("altInValidMsg","true");模版5:控制弹屏工单保存后是否自动示闲和关闭窗口;#if(${pageKey}=='callPage')if(_rptSaveHandlerActionKeyArr){_rptSaveHandlerActionKeyArr['${dataObjInfo.objId}']={autoConf2Idle:true,closeComingCallPage:true};}#end(注意:自动示闲和关闭窗口一般二选一,因为可能刚示闲就有电话进来而没有关闭窗口,所以这种情况下会发生错误)模版6:弹屏时客户资料存在则触发此方法,可以再其中增加处理逻辑;functionCorpOnCustomerSelFunc(customerDataRow){…}1.10、查询页的操作列模板数据对象对应的查询页面中操作列的链接,更多模版参见查询器中操作列的模版;<aonclick="quickCall('${row.linkTel1}','','${row.linkTel1}');"title="点击外呼号码:${row.linkTel1},弹屏至新工单">外拨</a>说明:${row.linkTel1}:取的是当前页面电话的字段名为linkTel1的值;其它常用操作列项,参见查询器操作列模版。1.11、日志选项卡设置(一般配置了也很难看出操作的记录)坐席保存工单模式:设置坐席弹屏工单页面是否可以多次保存工单;记录模式:文件、DB动作、DB轨迹三种;记录模版:数据对象更新时记录字段修改的值,记录模式选择DB轨迹时下面的代码会往业务日志表中记录修改的值,可以通过日志管理中业务日志查询记录;#if($action=='Update')#cinDiffDataRow($dataRow,$oldDataRow,$dataObjInfo)#end1.12、高级选项卡设置编辑页列数:数据页面页面每行显示的字段列数,最多支持一行3个字段;按月建表:详见第3节所述;列表页JS脚本模版:示例_baseCodeCtrManager.regCodeCtrTwin('data23','data24','--全部--');//控制数据对象查询页条件中编码下拉框类型字段的逻辑关系;2、数据对象列表添加对应数据对象的如下设置:2.1、字段表示数据对象包含的数据字段,一般没种类型有其固定的字段,其他的字段都是在注册数据对象的时候选择预料的字段;--基本信息--数据类型:对应数据对象注册时的字段空间中所指的类型,常用有3个:字符串、数字、文本(指大文本);数据类型:当前字段的控件类型,常用有:文本框、键值下拉框、日期&时间范围;自定义属性集:onchange="onChangeSellResult1(this.value);"//键值下拉框改变调用js中的方法localOptLabels="--请选择--"localOptValues=""//键值下拉框--显示信息--注意:如果弹屏列表页条件选是,查询条件也必须选是;--编辑信息--数据来源:页面输入、客户资料、来电信息;客户资料:可以通过数据来源来设置该字段值从其它表中某个字段获取,弹屏页面中工单中客户资料字段常用此设置来自动同步客户资料的内容,如果同步的字段为日期类型,则来源字段名后加Fmt,例如:原始字段名为createdTime,则来源字段名:createdTimeFmt;注意:来源字段名是字段的字段名,不是DB字段名;来电信息:数据来源可以获取来电信息的内容,包括: dataObjId:"", enableMultiDataObj:"", agentId:"${agentId}", agentName:"${agentName}", departmentId:"${departmentId}", departmentName:"${emptydepartmentName?departmentId:departmentName}", callId:"", callSid:"", callSeq:"0", callType:"", callTypeTitle:"", userDn:"", agentDn:"", areaCode:"", callingNumber:"", transferAgentId:"", projectId:"", projectName:"", serviceId:"", shortServiceId:"",isHumanCallIn:false, serviceName:"", areaCode:"", areaName:"", callData:"", transPara:"",//随路数据 customerStreamNum:"", wordsKey:"", isTaskCall:false, areaId:"", areaProvince:"",//电话所属省份 areaProCode:"", areaCity:"",//电话所属城市 encryptTel:"",//电话加密显示 recordFileName:"",//呼叫结束后录音文件信息 ringRecordFile:"",//振铃时上报的录音文件路径 accessGwId:""languageType:""例如:页面效果:常用字段模版:见2.5节内容;2.2、字段分组可以将部分字段设置成一组,在逻辑上进行划分,在弹屏工单页面会按组分开显示;2.3、触发器表示操作数据对象时,触发执行的语句;触发器模版:见2.6节内容;2.4、角色设置可以查看此数据对象权限的角色,系统中内置的角色,添加即可,在首页中会显示有权限的列表;2.5、常见字段设置模版相关rootCode:K200;codeLevel:2;(前面一个是根编码,后面是子编码)说明:rootCode表示调用根编码的编码标识;codeLevel表示所属根编码下级的对应级别;S#cinDateFmt('yyMMddHHmmssSSS')--项目编号--:数据加载URL地址:/cc-crm/outCallProjectInfo.do?method=getJsonOption--任务编号--:数据加载URL地址:/cc-crm/outCallTaskInfo.do?method=getGsonOptionoutCallTaskInfo.do?method=getGsonOption&needEmpty=1--人工服务--:数据加载URL地址:/cc-crm/ctiServiceInfo.do?method=getGsonOption&needEmpty=1&command.corpVccId=958888--IVR服务--:数据加载URL地址:/cc-crm/ivrServInfo.do?method=getGsonOption&needEmpty=1&command.corpVccId=958888cols="60"rows="3"#if(${userCtx.roleId}!='ROLE_CC_CHECKER')readonly#end//判断角色是否为质检员,不是则增加只读的属性cols="60"rows="3":表示控件页面显示的行列大小;//注意:数据量大的情况下要改成值等,效率要高一些。#cinIfNotEmpty($parameterMap,${fieldInfo.fieldName},'fieldValue')and(link_tel1like'%$fieldValue%'orlink_tel2like'%$fieldValue%')#end#cinIfNotEmpty($parameterMap,${fieldInfo.fieldName},'fieldValue')and(link_tel1='$fieldValue'orlink_tel2='$fieldValue')#end注意:数据对象中类似用坐席工号这种字段作为条件时,因为默认使用的是模糊查询,所以有可能一些特定的工号查询时结果就不准确了,这时需要将此字段的查询条件模版中加入自定义查询,示例如下:#cinIfNotEmpty($parameterMap,${fieldInfo.fieldName},'fieldValue')and(agent_id='000010100002$fieldValue')#end弹屏单选控件是指点击后弹出窗口(调用某个查询器),在窗口中选择对应记录,返回对应的值(选中的列即是返回值的列);数据加载URL地址:queryManager.do?method=pageSearch&command.isFirstQuery=1&queryKey=corpPage注意:corpPage为调调用的查询器的关键字;查询器对应的选择列设置:页面显示模版:<inputtype="radio"name="radioCtr4Sel"id="radioSpecialNumberCtr"style="cursor:hand"#if(${row.selId}==${command.currentSelectedValue})checked#endonclick='_doSelectInSelWin2("${row.selId}","${row.selId}","${command.valueCtrId}","${command.textCtrId}",#cinObj2Json(${row}));'value="${row.selId}"/>注意:selId为要调用的字段名;设置日期字段的默认值模版为:#cinDateFmt('yyyyMMdd')2.6、常见触发器模版相关#set($rptTabelName="crm_agt_rpt_${userCtx.corpId}_workorder_#cinDateFmt('yyyyMMddHHmmss',${dataRow.rptCreatedTime},'yyyyMM')")//设置要操作的数据表的名称赋值给变量$rptTabelName,根据页面时间的字段获取到表名中的时间#cinSqlRun("update${rptTabelName}setdata_46='${dataRow.data2}'wherestream_number='${dataRow.rptId}'")//执行括号中的sql语句#if(${dataRow.data3}=='2')#set($cntSql="selectcount(rpt_id)asoptCntfromcrm_opt_log_${userCtx.corpId}_wolog_#cinDateFmt('yyyyMM')whererpt_id='${dataRow.rptId}'")#cinSqlLoad('${cntSql}','1','sqlRtnMapObj')${sqlRtnMapObj.optCnt}#if(${sqlRtnMapObj.optCnt}!='4')#cinSqlRun("insertintocrm_appoint_info(stream_number,corp_id,call_id,call_sid,agent_id,calling_number,task_id,appoint_tel,appoint_time,last_call_time,remark,status,created_time,update_time,rpt_stream_number,rpt_obj_id)values('#cinRandom()','${userCtx.corpId}','${dataRow.callId}','${dataRow.callSid}','${userCtx.userId}','${dataRow.callingNumber}','${dataRow.serviceId}','${dataRow.callingNumber}','${dataRow.data30}','','','0','#cinDateFmt('yyyyMMddHHmmss')','#cinDateFmt('yyyyMMddHHmmss')','${dataRow.rptId}','${userCtx.defaultAgtRptObjId}')")#end#end#cinSqlRun("updatecrm_agt_rpt_${userCtx.corpId}_workordersetdata_39=date_format(now(),'%Y%m%d%H%i%s'),data_43=timediff(data_39,data_38)where(stream_number='${dataRow.streamNumber}'or(call_sid='${dataRow.callSid}'andcall_id='${dataRow.callId}'));")#else#cinSqlRun("updatecrm_agt_rpt_${userCtx.corpId}_workordersetdata_38=date_format(now(),'%Y%m%d%H%i%s')where(stream_number='${dataRow.streamNumber}'or(call_sid='${dataRow.callSid}'andcall_id='${dataRow.callId}'))and(data_38isnullordata_38='')and(data_37isnotnullanddata_37>0);")#end…语句#set($cntSql="selectdata_6asoptCntfromcrm_agt_rpt_${userCtx.corpId}_workorderwherestream_number='${dataRow.streamNumber}'")#cinSqlLoad('${cntSql}','1','sqlRtnMapObj')${sqlRtnMapObj.optCnt}#if(${sqlRtnMapObj.optCnt}=='0')...#end3、数据对象建表方式3.1、按月建表配置按月建表主要是数据量大后,按月分开数据可提高查询速度,但查询器按时间查询时不能跨月查询;当前月的表名为原始表名,其它月份为‘表名_201208’的形式;都已‘表名_201208’的形式生成每个月份的表;注意:设置完成后,都需要建立一个数据表维护的定时任务,并运行一下才会生成,如果当前数据对象已有数据,先将原表备份一下,生成的方式为:例如当前是8月份,会将原来带数据的表改名为表名_201207,同时生成空数据的3张表(原始表名一个、表名_201209、表名_201210),需要做的工作有将7月表中的8月数据导入到原始表名中,如果存在7月以前的数据,需要手动建立各个月份的表,并将相应月份的数据导入到表中。配置管理级中添加数据表维护的定时任务:查询器中from中的表名对应修改的方式:crm_agt_rpt_${userCtx.corpId}_workorder_#cinDateFmt('yyyyMMdd',${parameterMap.call_dateFrom},'yyyyMM')说明:适用于数据对象按月建表模式为所有月,call_date为条件中的日期字段;#cinMonthTbl('cti_callstat',$parameterMap,'rptTimeFrom','yyyyMMddHHmmss')说明:适用于数据对象按月建表模式为非当前月,rptTime为条件中的日期字段;3.2、配置缓存表可以对数据对象按1-7天的周期建立对应的缓存表,也需要添加数据表维护的定时任务,查询器中from中的表名更改成缓存表的表名即可;第三章:查询管理查询器:就相当于一条select语句,实现对已存在的数据进行查询、统计,支持标准的mysql语法;1、查询器注册--基本信息--选项卡:1.1、标识查询器的唯一标识,一般是数字,可以加字符;1.2、关键字查询器对应的唯一key,标识查询器;1.3、数据源对应数据库:话单库(smp)、工单库(crm);1.4、名称查询器显示的名称;1.5、From组成查询语句的from,可以嵌套select语句;常用模版示例:crm_agt_rpt_${userCtx.corpId}_workorder_#cinDateFmt('yyyyMMdd',${parameterMap.call_dateFrom},'yyyyMM')说明:适用于数据对象按月建表模式为所有月,call_date为条件中的日期字段;#cinMonthTbl('cti_callstat',$parameterMap,'rptTimeFrom','yyyyMMddHHmmss')说明:适用于数据对象按月建表模式为非当前月,rptTime为条件中的日期字段;注意:如果from中嵌入了比较复杂的多表查询时,最好把最外层的时间查询的值带入到内层的条件中,例如:startTime>='${parameterMap.rptTimeFrom}'andstartTime<='${parameterMap.rptTimeTo}'1.6、Where组成查询语句的条件,无特定条件时加上1=1;1.7、Group组成查询语句的分组条件;1.8、Order组成查询语句的排序条件;1.9、操作列模版对应显示数据页面操作栏中显示的链接;常用模版示例:注意涉及的参数名称一定要和查询器中字段取名一致,否则获取不到值,就存在问题了;#set($fmtTime="#cinDateFmt('yyyy-MM-ddHH:mm:ss',${row.startTime},'yyyyMMddHHmmss')")//$fmtTime:给这个变量赋值,后面即可调用此变量,startTime对应当前查询器时间的字段名;#if(${userCtx.roleId}!='ROLE_CC_AGENT')<ahref="/cc-crm/dataRowDecorate.do?method=forwardPreRepairOrders&forwardName=forwarPreRepairOrders&command.startTime=${fmtTime}&command.callId=${row.callId}&command.sid=${row.callSid}">补单</a>#end<ahref="javascript:openDataEditWin('OBJ_${userCtx.corpId}_1001','${row.stream_number}','工单')">编辑</a>//修改数据对象都可以用此方法#if(${userCtx.roleId}!='ROLE_CC_AGENT')<ahref="javascript:openDataEditWin('OBJ_${userCtx.corpId}_9000','${row.rptStreamNum}','${fmtTime}','工单编辑')">改单</a>#end<ahref="javascript:acr2AgtRptWin('${fmtTime}','${row.callSid}','${userCtx.defaultAgtRptObjId}','工单详情')">工单</a><ahref="javascript:acr2AgtRptWin('${fmtTime}','${row.callSid}','OBJ_${userCtx.corpId}_9000','工单详情')">工单</a><ahref="javascript:preListenWin2Internet('${row.callId}','${row.callSid}');">录音</a><aonclick="preListenWin2Media('','','${row.wavLocation}');">录音</a>//wavLocation是录音的文件名如 …<ahref="/cc-crm/dcpCtiRecordInfo.do?method=download&fileName=${row.wavLocation}"target="_blank">下载</a><ahref="javascript:openAcrInfoWin('${fmtTime}','${row.callId}','${row.callSid}')">话单</a>//javascript:openAcrInfoWin:话单详情<ahref="javascript:openAcrInfoWin('${fmtTime}','${row.callId}','${row.callSid}')">话单</a><ahref="javascript:openAgtRptWin('${fmtTime}','${row.streamNumber}','OBJ_${userCtx.corpId}_5000')">详细</a><ahref='javascript:openChkWin("${fmtTime}","${row.callId}","${row.callSid}","","${row.rptStreamNum}","OBJ_${userCtx.corpId}_9000");'>质检<a>//OBJ_${userCtx.corpId}_9000:当前的工单对象,fmtTime参数必须是当前录音的时间,否则调不到。<aonclick="makeCall('${row.callingNumber}','${row.serviceId}',false,'${row.transPara}','${dataObjInfo.objId}','${row.streamNumber}');"title="点击外呼号码:${row.callingNumber},弹屏至此工单编辑页">回拨</a><aonclick="makeCall('${row.telNumber}','${row.serviceId}',false,'','OBJ_${userCtx.corpId}_1000','${row.streamNumber}');"title="点击外呼号码:${row.telNumber},弹屏至此工单编辑页">回拨</a><ahref="/cc-crm/dataRowDecorate.do?method=preEdit&dataObjId=OBJ_${userCtx.corpId}_1001&dataRowId=${row.stream_number}">编辑</a>//客户资料编辑<aonclick="cinPromptWWin('/cc-crm/queryManager.do?method=pageSearch&command.isFirstQuery=1&queryKey=customerRptHistory&command.customerStreamNum=${row.streamNumber}',900,400,'客户工单历史')">工单历史</a>操作列中添加删除的设置:1、查询器编辑页的【其它】?字段【JS模版】var?_rptRowDelManager?=?new?DataRowDelManager('OBJ_${userCtx.corpId}_XXXX',?queryForm);
2、操作列模版:
<a?onclick="_rptRowDelManager.delDataRow('${row.streamNumber}');">删除</a><aonclick="cinPromptWWin('/cc-crm/dataRowDecorate.do?method=read&dataObjId=OBJ_${userCtx.corpId}_1001&dataRowId=${row.stream_number}',850,370,'数据详情')"style="cursor:pointer;">详情</a>//客户资料查询器显示详细信息<aonclick="quickCall('${row.linkTel1}','','${row.linkTel1}');"title="点击外呼号码:${row.linkTel1},弹屏至新工单">外拨</a>//客户资料中外拨当前号码<aonclick="quickCall('${row.linkTel1}','${row.serviceId}','${row.linkTel1}');"title="点击外呼号码:${row.linkTel1},弹屏至新工单">外拨</a>//带${row.serviceId}参数,如果serviceId不存在的话会导致保存的工单中此项字段值不正常,最后录音听不了说明:OBJ_${userCtx.corpId}_1001:指具体的哪个数据对象,1001指数据对象标识;可以加入如下代码控制操作列链接不换行显示:<spanstyle="width:150px;">……</span>1.10、参数初始化模版用于查询器在执行时预先初始化某些特定的条件,map集合赋值的形式;常用模版示例:{"rptTimeFrom":"#cinDateFmt('yyyyMMdd')000000","rptTimeTo":"#cinDateFmt('yyyyMMdd')235959"}说明:rptTime必须和查询条件的字段名称一致;//时间条件默认查询一周内的:{"chkTimeFrom":"#cinDateFmt('yyyyMMdd','','yyyyMMdd','5','-7')","chkTimeTo":"#cinDateFmt('yyyyMMdd')"}说明:chkTime是查询器条件字段的字段名;{"startTimeFrom":"#cinDateFmt('yyyyMMdd','','yyyyMMdd','5','-7')000000","startTimeTo":"#cinDateFmt('yyyyMMdd')235959","status":"1"}说明:"status":"1":表示将此变量赋值为1,结果对应的名为status,1:已通话;1.11、分组关键字一般不用;1.12、计数字段相当于count,必填项(根据此项统计的值判断执不执行查询),默认为1即可;1.13、其它选项卡设置查询页面是否显示excel导出按钮:Excel/CSV导出项勾选是即可。打开查询器的调试模式:调试模式选择是,在数据显示页可以查看生成的sql语句;打开查询器的脚本模版:脚本模版选择是,在数据显示页可以查看脚本模版中关联此查询器的功能;Js模版:optActBoardManager.removeBtn('xlsExportBtn');//移除导出Excel功能if('${userCtx.roleId}'!='ROLE_CC_AGENT'){optActBoardManager.regTplBtn('batchDownLoad','批量下载录音');//增加批量下载录音功能,batchDownLoad脚本模版的key}optActBoardManager.regTplBtn('test','图表显示');//增加图表显示功能,test脚本模版的keyoptActBoardManager.regDataRowDelBtn('OBJ_958888_1000','selectIds','删除选中');//批量删除,OBJ_958888_1000要操作的数据对象,需要增加选择的字段配合使用optActBoardManager.regSelExpBtn('selRowChk','selRowIdSet','导出选中');//导出选中功能需要增加相应的字段和条件字段,详细参见常用功能配置手册_baseCodeCtrManager.regCodeCtrTwin('data_25','data_26','--全部--');//控制查询器条件是编码类型的逻辑关系,data_25是条件字段名;适用于查询器页面多条件清空需求optActBoardManager.regOptBtn('doPageReLoad','刷新页面',reLoadQueryPage);functionreLoadQueryPage(){if(confirm('确定刷新页面?')){varpageUrl="/cc-crm/queryManager.do?method=pageSearch&command.isFirstQuery=1&queryKey=${querySqlCtx.queryKey}";}}查看查询器的数据界面,可以点击SQL后面的查询,查看生成的sql语句,方便分析问题;2、查询器列表添加对应查询器的如下设置:2.1、字段表示查询器要显示的列表中包含的字段,可以用mysql函数对字段的数据进行处理;常用查询字段模版:见后面部分;页面显示模板:<divstyle=”width:50px;overflow:hidden;”nowrap>${value}</div>//控制列表项内容不换行显示2.2、条件表示查询器显示页面中,要包含哪些查询的字段条件;常用查询条件模版:见后面部分;2.3、分组条件一般不用;2.4、角色设置可以查看此查询器权限的角色,系统中内置的角色,添加即可;2.5、常见查询器字段设置模版常见字段设置模版:普通字段:日期字段:注意:如果日期型字段原值为空时,页面会显示当前时间,如果原值为空,页面对应也显示为空,则格式化模版写成如下代码即可;#cinIfNotEmpty(${value})#cinDateFmt('yyyyMMddHHmmss',${value},'yyyy-MM-ddHH:mm:ss')#end日期数据回显时,带小时段的样式:格式化模版:#cinDateFmt('yyyyMMddHH',${value},'yyyy-MM-ddHH')-#cinDateFmt('yyyyMMddHH',${value},'HH','10','1')结果截图:键值类型字段:百分率字段增加%显示:#cinIfNotEmpty($value)${value}%#end时长类型字段转成时分秒形式显示:#cinTimeFmt(${value},'%sH:%sM:%sS')#cinTimeFmt(${value},'%sD:%sH:%sM:%sS')字段调用配置管理中编码信息列表的值:rootCode:1000;codeLevel:1;说明:rootCode表示编码列表中所调用的编码标识;codeLevel表示编码的级别;拼出录音文件的全路径,方便批量下载:Sql字段:concat('serverip:9999/media/企业标识/',srfmsgid)Sql字段常用模版:round(work_success/work_access*100,1)sum(ceil(duration/60.0))sum(if(event=1,1,0))count(DISTINCTIF(direction=2,callid,NULL)字段内容过长只显示前10个字节:if(length(data_81)<=10,data_81,concat(substr(data_81,1,10),'...'))查询器配置批量删除:第一步:增加如下字段;selectIdsstream_number<inputtype="checkbox"name="selectIds"value="$value"/>第二步:在查询器的js模版中添加如下代码optActBoardManager.regDataRowDelBtn('OBJ_958888_1000','selectIds','删除选中');//批量删除,OBJ_958888_1000要操作的数据对象 2.6、常见查询条件字段设置模版普通坐席登录查询时按登录的坐席工号查询,其它角色查询所有:控件模版:#if(${userCtx.roleId}=='ROLE_CC_AGENT')#else<inputtype="text"name="command.${cdtItemInfo.itemName}"id="${cdtItemInfo.itemName}"value="#cinNvl(${value},'')"size="6"maxlength="10"/>#endSQL模版:#if(${userCtx.roleId}=='ROLE_CC_AGENT')and(agent_id='${userCtx.userId}')#else#cinIfNotEmpty($value,'','')and(agent_id='000010${userCtx.corpId}${value}')#end#end结果页面截图:查询条件字段实现模糊查询:SQL模版:#cinIfNotEmpty($value,'','')and(agent_idlike'%${value}%')#end坐席只看自己的,班组长看本班组,质检看所有的条件,和上面结合使用:设置班组条件的以下两项:控件模版:text.department}!=''and(${userCtx.roleId}=='ROLE_CC_AGENT'or${userCtx.roleId}=='ROLE_CC_MONITOR'))#end#if(${userCtx.roleId}=='ROLE_CC_CHECKER')<select${cdtItemInfo.ctrAttributeTxt}id="${cdtItemInfo.itemName}"name="command.${cdtItemInfo.itemName}"defaultValue="${value}"dataUrl="/cc-crm/agentGrpInfo.do?method=getGsonOption&needEmpty=1"></select>#endSQL模版:#end#cinIfNotEmpty($value)and(${cdtItemInfo.tblFieldName}${sqlCompareStr})#end结果页面截图://department:为当前部门实际的字段名条件字段的原数据是动态调用形式:显示班组:数据加载URL地址:agentGrpInfo.do?method=getGsonOption&needEmpty=1质检只能看所监控的班组(注意,监控的类型是指班组监控):控件模版:#if(${userCtx.roleId}=='ROLE_CC_CHECKER')<select${cdtItemInfo.ctrAttributeTxt}id="${cdtItemInfo.itemName}"name="command.${cdtItemInfo.itemName}"defaultValue="${value}"dataUrl="/cc-crm/employeeInfo.do?method=loadAgtGrpOptJsonList&grpLoadMode=all"></select>#end显示项目名称:数据加载URL地址:outCallProjectInfo.do?method=getJsonOption&needEmpty=1条件是数字范围的查询需求:日期条件,默认为空:控件模版:从<inputtype="text"id="txt${cdtItemInfo.itemNameFrom}"isCalendar="true"showsTime="true"submitFormat="${cdtItemInfo.saveFmt}"ifFormat="${cdtItemInfo.displayFmt}"submitCtrName="command.${cdtItemInfo.itemNameFrom}"value='#cinIfNotEmpty($valueFrom)#cinDateFmt("${cdtItemInfo.saveFmt}",${valueFrom},"${cdtItemInfo.displayFmt}")#end'maxlength="${cdtItemInfo.maxLen}"size="${cdtItemInfo.ctrSize}"msg="起始时间输入错误!"/><inputtype="hidden"name="command.${cdtItemInfo.itemNameFrom}"id="command.${cdtItemInfo.itemNameFrom}"value="#cinIfNotEmpty($valueFrom)${valueFrom}#end"/>至:<inputtype="text"id="txt${cdtItemInfo.itemNameTo}"showsTime="true"isCalendar="true"submitFormat="${cdtItemInfo.saveFmt}"ifFormat="${cdtItemInfo.displayFmt}"submitCtrName="command.${cdtItemInfo.itemNameTo}"value='#cinIfNotEmpty($valueTo)#cinDateFmt("${cdtItemInfo.saveFmt}",${valueTo},"${cdtItemInfo.displayFmt}")#end'maxlength="${cdtItemInfo.maxLen}"size="${cdtItemInfo.ctrSize}"require="true"dataType="SameMonth"sameCtrId="txt${cdtItemInfo.itemNameFrom}"msg="结束时间输入错误!"/><inputtype="hidden"name="command.${cdtItemInfo.itemNameTo}"id="command.${cdtItemInfo.itemNameTo}"value="#cinIfNotEmpty($valueFrom)${valueTo}#end"/><aonclick="_switchDtSpanDiv('spanId4${cdtItemInfo.itemNameTo}');"title="点击按时间段选择范围"style="cursor:hand">@</a><divid="spanId4${cdtItemInfo.itemName}"style="display:inline">#set($itemNameSpan="${cdtItemInfo.itemName}DtSpan")<selectdefaultValue="#cinBean(${command},$itemNameSpan)"name="command.${cdtItemInfo.itemName}DtSpan"onchange="_onChangeDtSpan(this.value,{fromId:'txt${cdtItemInfo.itemNameFrom}',toId:'txt${cdtItemInfo.itemNameTo}'})"> <optionvalue=""></option> <optionvalue="lastMonth">上月</option> <optionvalue="lastWeek">上周</option> <optionvalue="lastDay">昨天</option> <optionvalue="thisDay">当天</option><optionvalue="thisWeek">本周</option> <optionvalue="thisMonth">当月</option></select></div>数字型字段,查询大于指定数值的数据:查询通话时长大于指定的值SQL模版:#cinIfNotEmpty($parameterMap,${cdtItemInfo.itemName},'fieldValue')andduration>=$fieldValue#end3、数据源管理数据源:是指注册查询器所调用的数据库来源,默认的工单库、话单库是指本系统自有的crm库和smp库;可以添加第三方数据源,这样可以注册查询器来调用第三方数据源来查询相关数据,更为灵活;下面是给出连接第三方mysql数据库的数据源示例:驱动:连接:参数:initialSize:5;maxIdle:50;minIdle:50;maxActive:200;logAbandoned:true;removeAbandoned:true;removeAbandonedTimeout:60;maxWait:1000;timeBetweenEvictionRunsMillis:300000;testOnBorrow:true;testOnReturn:false;testWhileIdle:true;validationQuery:select1fromdual第四章:配置管理配置管理:包括编码信息管理和配置表管理;1、编码信息管理编码:此处注册的编码信息,是供数据对象或查询器中字段调用,将字段控件类型设置成编码类型,设置编码库编码即可,详见数据对象中字段的配置。编码信息注册:填写编码标识、编码级别、名称,选择根编码、上级编码;编码关系示例(类似树状结构):根编码(编码级别0)编码级别1编码级别2省市北京市海淀区昌平区上海市 调用省市的一级编码列表(市级):rootCode:SH100;codeLevel:1;说明:rootCode表示调用根编码的编码标识;codeLevel表示所属根编码下级的对应级别;在数据对象中将字段控件类型设置成编码下拉框,编码库编码设置成rootCode:SH100;codeLevel:1;在页面中显示的这个字段即可调出省市中是1级编码的列表注册后的编码信息列表:编码信息预览:可以看出编码的上下级关系,在此也可以进行编码注册、删除的操作。编辑图标说明::删除当前级别选项及其下属所有选项;:在当前级别项目下增加子项目;:编辑修改当前项目内容;2、配置表管理配置信息:此处的配置信息是指可通过此处来修改系统中某些功能的键值,此处的列表项默认是在创建企业时从000000企业中配置信息列表中初始化过来的,后续有新增配置项,可以手动建立,或通过excel导入。注册配置项示例:键名即是系统中表示此功能的名称,键值就是可以调整的值;运营级中企业的可配置项就是此处分组键值为corpConf的所有配置项;运营级中注册企业时的所有配置功能项:000000企业登录信息:serverip:8080/cc-crm/corp.do用户名admin,密码111111;当前企业配置表中的功能列表项:第五章:模版管理模版管理:包括工单、查询器、接口等系统安装后就已经初始化导入的一些基本模版,可以通过配置导入到所需的模块中,工单和基础查询器是crm系统必须要具备的,否则坐席界面登录将无法正常弹屏及浏览左侧相应查询菜单;举例:导入所需的3个基本查询器,操作如下图所示,点击对应列表项后的配置按钮,配置成功后,查询器列表中将会增加如下3个查询器:第六章:定时任务定时任务:是指系统自动按设定的时间规则运行相关的任务,常用有预约表维护、数据表维护的定时任务;1、定时任务1.1、定时任务添加组件类型:预约表维护:指对预约记录进行切表维护,已呼叫的预约,预约列表中保留一天,未呼叫的默认保留7天,未呼叫的时间是可以配置的,其它记录都切到预约历史表中;数据表维护:如果数据对象中有按月建表的模式,需要在此添加数据表维护的定时任务,才能实现数据对象按月创建表的功能。时间表达式:配置举例: 含义"0012**?" 每天中午十二点触发"00/514**?" 每天从下午2点开始到2:55分结束每5分钟一次触发"0151015*?" 每月15号的10:15触发脚本标识:如果组件类型是任务脚本,则选择对应需要调用的脚本即可在指定的时间执行指定的脚本,此处显示的脚本是脚本命令管理中注册的脚本名称;1.2、定时任务列表添加定时任务后,可以手动运行定时任务进行测试,点击对应任务列表后的运行图标即可;2、脚本命令管理2.1、脚本命令注册脚本类型:脚本:根据脚本类型,此处的脚本需是符合其类型规定的语法格式,否则执行会报错。第七章:LED大屏LED大屏:是指注册显示页面,在页面中调用需要显示的数据,最后通过LED大屏软件将数据输出到外界的LED大屏上进行显示。数据结构关系:页面数据?块数据?数据项;最终效果页面:1、页面注册页面注册:任务标题即是最终显示页面中显示的标题,可以注册多个页面;2、页面列表2.1、块列表在页面列表中,点击上面注册的页面列表项中的块列表链接,在块列表页面,注册块列表,块列表是指要显示的数据来源;数据加载模式:话条、查询器、查询器&脚本模版三种;数据加载模式为话条时:数据加载标识键常用的见下图所示项,标识键后面跟的是监控组的长号;监控坐席:直接是监控坐席组的监控标识即可;例:AgentSumQuery,监控人工服务:第一个是监控组的标识,第二个是对应人工服务的标识;例:ServiceQuerySummary,数据加载模式为查询器时:数据加载标识键为查询器的关键字;数据加载模式为查询器&脚本模版时:数据加载标识键为查询器管理中注册的脚本模版的标识键,一般是调用图表显示数据;2.2、数据项数据项:是块列表中具体显示的数据项内容,数据来源字段是由映射键/列的值决定的,当数据加载模式为话条时,映射键/列是话条接口中的数据项名称,当数据加载模式为查询器时,映射键/列是查询器中的对应的字段名;附录:指令集1、Velocity方法方法:#cinBean()作用:取指定对象的属性值赋值给指定的变量参数说明:*arg[0]:beanObj,对象*arg[1]:propertyName,属性名称*arg[2]:varName,变量名示例:方法:#cinBeanSet()作用:给指定对象的属性值赋值为指定的变量内容参数说明:*arg[0]:beanObj,对象*arg[1]:propertyName,属性名称*arg[2]:newValue,新值示例:方法:#cinCompare()作用:比较两个字符串的大小,返回true或false;参数说明:*arg[0]:oneStr,第一个字符串*arg[1]:otherStr,第二个字符串*arg[2]:cmpType,比较类型:>,>=,<,<=示例:#cinCompare("1","2","<")…#end作用:根据比较的结果为true则执行…的逻辑;方法:#cinDateFmt()作用:进行日期格式处理,根据要求的输出格式,返回处理后的结果参数说明:*arg[0]:inputFmt,defaultis'yyyyMMddHHmmss'.输入时间的格式*arg[1]:inputValue,defaultiscurrentdatetime.输入的时间*arg[2]:outputFmt,defaultisinputFmt.输出时间的格式*arg[3]:intervalField,defaultisMINUTE.*arg[4]:interval,defaultiszero.示例:#cinDateFmt('yyyyMMddHHmmss')//直接输出yyyyMMddHHmmss格式的当前时间,格式可以调整方法:#cinDateOfWeek()作用:根据指定的日期,返回星期参数说明:*arg[0]:inputFmt,输入时间的格式*arg[1]:inputValue,输入的时间示例:#cinDateOfWeek('yyyyMMdd','20130618')//返回2,周日返回0方法:#cinError()作用:输出指定的错误消息参数说明:*arg[0]:errorMsg,错误消息内容*arg[1]:errorCode,错误消息码示例:方法:#cinNvl()作用:根据指定的字符串是否为空,返回对应的值;参数说明:*arg[0]:valueStr,指定的字符串*arg[1]:nullValue,为空时返回的值*arg[2]:notEmptyValue,不为空时返回的值示例:#cinNvl($value,'a','b')//根据$value的值是否为空,返回a或b;方法:#cinFuncAuth()作用:根据要check的内容,判断是否执行指定的代码参数说明:*arg[0]:funcStr4Check,要check的内容*arg[1]:checkType,示例:#cinFuncAuth('welcomePage')…#end方法:#cinIdFmt()作用:按指定的位数格式化指定的id字符串参数说明:*arg[0]:idFmt,指定的id格式*arg[1]:idStr,要进行格式的id字符串示例:#cinIdFmt('000000','11')//返回000011方法:#cinIfEmpty()作用:判断指定的对象是否为空,为空返回true参数说明:*arg[0]:beanObj,指定的对象*arg[1]:propertyName,示例:#cinIfEmpty($value)…#end说明:此语句可以根据$value是否为空作为判断条件来用方法:#cinIfNotEmpty()作用:判断指定的对象是否不为空,不为空返回true参数说明:*arg[0]:beanObj,指定的对象*arg[1]:propertyName,*arg[2]:newVarName,示例:#cinIfNotEmpty($value)#end作用:此语句可以根据$value是否为空作为判断条件来用方法:#cinKey2Name()作用:根据给的集合,按分隔标识,根据给的key,返回对应的值参数说明:*arg[0]:allKeyMap,键值集合*arg[1]:keyStr,键值的key*arg[2]:intervalChar,分隔标志,默认“,”示例:方法:#cinLog()作用:将给的参数值转换成指定的码制参数说明:*arg[0]:paraObj,参数值*arg[1]:logLevel,默认值:info、debug、warn、error、write*arg[2]:convertMode,要转换的码制:ascii2Native、unicode2Native示例:#cinLog(${value},"write","unicode2Native")作用:将asccii码转成gb,适用数据库中保存的是asccii,查询器导出excel后不能显示成中文;方法:#cinMonthTbl()作用:根据时间查询条件的值得到需要查询的表(用于按所有月方式建表的情况)参数说明:*arg[0]:baseTblName,要调用的表名,不能为空.*arg[1]:reqParaObj,参数集合,用于获取条件中的时间参数,默认'parameterMap'.*arg[2]:reqTimeParaKey,取时间查询条件的开始时间.*arg[3]:reqTimeParaFmt,时间查询条件的值的格式,默认'yyyyMMddHHmmss'.*arg[4]:varName,默认为空,如果不为空,则使用给定的varName.示例:#cinMonthTbl('cti_callstat',$parameterMap,'rptTimeFrom','yyyyMMddHHmmss')//根据条件参数集合中的rptTimeFrom时间,拼出cti_callstat的实际调用的月表;方法:#cinObj2Json()作用:将指定的对象转换成json字符串参数说明:*arg[0]:beanObj,对象示例:方法:#cinRandom()作用:返回一个32位的随机值参数说明:示例:#cinRandom()//d29af06f3b0849a7b1b25bba65edaac3方法:#cinRoleAuth()作用:根据要check的角色判断,是否执行指定的代码参数说明:*arg[0]:roleStr4Check,要check的角色*arg[1]:checkType,示例:#cinRoleAuth()…#end方法:#cinTelEncrypt()作用:加密号码参数说明:*arg[0]:telPhoneNum,需要加密的号码示例://138****5678方法:#cinTimeFmt()作用:将给定的值按给定的格式化方式进行转换参数说明:*arg[0]:inputValue,给定的值*arg[1]:fmtTemplate,格式化模版,'%sD:%sH:%sM:%sS'//天:时:分:秒示例:#cinTimeFmt('3600','%sH:%sM:%sS')//1:0:0方法:#cinBeanShell()作用:执行指定的java代码参数说明:*arg[0]:outPutArgs,可以支持多个变量示例:#cinBeanShell("delIdArr")
String?[]?delIdArr?=?new?String[2];
delIdArr[0]?=?"12345";
delIdArr[1]?=?"67890";#end作用:给delIdArr赋值;方法:#cinFtpCmd()作用:ftp命令参数说明:*arg[0]:clientObj,*arg[1]:ftpCmd,*arg[2]:varName,示例:方法:#cinFtpDown()作用:ftp下载参数说明:*arg[0]:clientObj,*arg[1]:filePath,*arg[2]:mode,//read,save*arg[3]:saveToOrVarName,示例:方法:#cinFtpOpen()作用:ftp连接参数说明:*arg[0]:objVarName,*arg[1]:hostAddr,ftp主机地址*arg[2]:hostPort,主机端口*arg[3]:userName,ftp连接的用户名*arg[4]:passWord,连接用户的密码示例:方法:#cinFtpUp()作用:ftp上传参数说明:*arg[0]:clientObj,*arg[1]:tgtRmtFileName,*arg[2]:upMode,//data,file*arg[3]:dataTxtOrLocalFilePath,示例:方法:#cinHttpSender()作用:给指定的url地址发送http消息;参数说明:*arg[0]:targetUrl,指定的url地址*arg[1]:reqBodyStr,发送的消息内容*arg[2]:rtnVarKey,返回的结果,默认responseCtx示例:方法:#cinSoap()作用:给指定的url发送soap消息;参数说明:*arg[0]:targetUrl,*arg[1]:varName,*arg[2]:headJsonStr,示例:方法:#cinFileAwk()作用:读文件参数说明:*arg[0]:srcFileLoction,文件的绝对路径*arg[1]:splitChar,分隔符*arg[2]:rowArrName,*arg[3]:varName,示例:方法:#cinFileCmd()作用:执行对文件进行操作的命令参数说明:*arg[0]:cmdKey,操作文件的命令,rm/mv/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 曲阜远东职业技术学院《英语阅读(二)》2023-2024学年第一学期期末试卷
- 2025年江苏盐城市东台市诚信市政绿化工程有限公司招聘笔试参考题库附带答案详解
- 2025年衢州醉根艺品有限公司招聘笔试参考题库含答案解析
- 二零二五年度版权出版合同标的及出版质量2篇
- 二零二五年度生物识别技术授权居间合同3篇
- 二零二五年度网络文学版权销售合同2篇
- 2024燃料供应公司采购合同
- 二零二五年度瓷砖行业环保治理与污染防控合同3篇
- 税务经验总结
- 二零二五年度市政道路照明设施更新合同3篇
- PPVT幼儿语言能力测试题附答案
- 致客户通知函
- 中华人民共和国职业分类大典电子版
- 各种预混料配方设计技术
- 19XR开机运行维护说明书
- 全国非煤矿山分布
- 临床研究技术路线图模板
- 12千伏环网柜(箱)标准化设计定制方案(2019版)
- 思想品德鉴定表(学生模板)
- 满堂支架计算
- MA5680T开局配置
评论
0/150
提交评论