Browse Source

重构连接

master
张旭 8 years ago
parent
commit
e8323c4466
  1. 14
      README.md
  2. 56
      信息查询组件.md
  3. 58
      工单列表组件.md
  4. 79
      工单操作组件.md
  5. 111
      工单详情组件.md
  6. 11
      通用信息提示组件.md
  7. 28
      通用名值对串显示组件.md
  8. 157
      通用表单组件.md

14
README.md

@ -21,16 +21,16 @@ @@ -21,16 +21,16 @@
> 前端项目分为通用资源(resource),业务内容(butterfly),大厅应用(shell),大厅管理平台(michael)四个并列文件夹
### 业务抽象组件
* [工单列表组件](https://github.com/the8th/vue-ccssoft/wiki/%E5%B7%A5%E5%8D%95%E5%88%97%E8%A1%A8%E7%BB%84%E4%BB%B6)
* [工单详情组件](https://github.com/the8th/vue-ccssoft/wiki/%E5%B7%A5%E5%8D%95%E8%AF%A6%E6%83%85%E7%BB%84%E4%BB%B6)
* [工单操作组件](https://github.com/the8th/vue-ccssoft/wiki/%E5%B7%A5%E5%8D%95%E6%93%8D%E4%BD%9C%E7%BB%84%E4%BB%B6)
* [信息查询组件](https://github.com/the8th/vue-ccssoft/wiki/%E4%BF%A1%E6%81%AF%E6%9F%A5%E8%AF%A2%E7%BB%84%E4%BB%B6)
* [工单列表组件](工单列表组件.md)
* [工单详情组件](工单详情组件.md)
* [工单操作组件](工单操作组件.md)
* [信息查询组件](信息查询组件.md)
### 基础组件
* [通用表单组件](https://github.com/the8th/vue-ccssoft/wiki/%E9%80%9A%E7%94%A8%E8%A1%A8%E5%8D%95%E7%BB%84%E4%BB%B6)
* [通用信息提示组件](https://github.com/the8th/vue-ccssoft/wiki/%E9%80%9A%E7%94%A8%E4%BF%A1%E6%81%AF%E6%8F%90%E7%A4%BA%E7%BB%84%E4%BB%B6)
* [通用名值对串显示组件](https://github.com/the8th/vue-ccssoft/wiki/%E9%80%9A%E7%94%A8%E5%90%8D%E5%80%BC%E5%AF%B9%E4%B8%B2%E6%98%BE%E7%A4%BA%E7%BB%84%E4%BB%B6)
* [通用表单组件](通用表单组件.md)
* [通用信息提示组件](通用信息提示组件.md)
* [通用名值对串显示组件](通用名值对串显示组件.md)
* 其他组件
* 工具函数

56
信息查询组件.md

@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
###信息查询组件对应有三种接口:
1. 查询项列表(非必需)
2. 查询项配置
3. 查询结果配置
### 查询项列表
> 查询项列表目的是将查询项目与项目编号关联起来,方便用户自行选择进入查询项。格式如下:
> 相关组件(butterfly\infoService\List.js)
>
[
{
"name":"ITMS",
"code":"IDM_APP_NETOP_ITMS",
"value":[
{"name":"数据自助下发","code":"IDM_APP_NETOP_ITMS_DONE"},
{"name":"用户设备绑定","code":"IDM_APP_NETOP_ITMS_BIND"},
{"name":"用户设备解绑","code":"IDM_APP_NETOP_ITMS_RELEASE"},
{"name":"终端重启","code":"IDM_APP_NETOP_ITMS_REBOOT"},
{"name":"桥接和路由修改","code":"IDM_APP_NETOP_ITMS_BRIDGETOROUT"},
...
]
},
{
"name":"固网3A",
"code":"IDM_APP_NETOP_AIOBS",
"value":[]
},
{
"name":"PON",
"code":"IDM_APP_NETOP_PON",
"value":[]
}
]
### 查询项配置
> 查询项配置简单配置一些诸如标题,表单项,查询接口等信息。 其中表单格式见通用表单组件。
> 根据该配置,界面会自动生成查询表单,用户点击查询时,会自动将表单内容提交到action所指向到的接口。然后根据返回内容进行下一步
> 相关组件(butterfly\infoService\Detail.js)
>
{
"title":"数据自助下发",
"ifCode":"itms_serviceDone",
"action":"/mop/proxyIda/ida30/xxxxx",
"operationType":"change",//查询类型。表示该次查询是查询/更改(search,change)。如果为change,在点击查询按钮时会要求确认
"form":[]
}
### 查询结果配置
>查询结果接口即是查询项配置中的action接口。
>返回值有三种处理方式。
1. 返回结果状态码不为200,将提示操作失败
2. 返回结果状态码为200,但数据为空,将直接提示操作成功
3. 返回结果有数据。此时需要指定用哪个组件来展示数据。这时根据不同业务将有不同变化。暂时只支持map这一种类型,调用了DetailView组件
>
{
map : [
.....
]
}

58
工单列表组件.md

@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
### 调用
>
<listview :source="getBillList" :page-size="8"></listview>
* source可以为一个url,或一个方法。如果是url,直接从该url请求数据。如果是一个方法,该方法接收一个param参数,包含页码等信息。方法必须返回一个promise对象,resolve一个指定格式的列表数据
### 工单列表组件的数据由三部分组成
1. 查询表单
2. 列表项
3. 页码信息
### 基础的数据格式如下:
> 工单列表页渲染组件(\resource\components\mobile\bill\ListView.js)
>
{
"queryForm":[],//工单查询条件,详见[列表表单组件]
"resultList":[],//工单列表数据,详见列表项数据格式
"totalCount":48,//工单总条目数
"pageCount":3//工单总页数
}
### 列表项数据格式如下:
> 列表项渲染组件(\resource\components\mobile\bill\ListItem.js)
>
{
"title":"451000201815",//工单标题
"subTitle":"",//工单副标题
"icon":"resource/images/openBills/open_01.png",//工单显示图标
"tags":[//工单的属性标记 type:normal,warn,error 分别为绿色,黄色,红色 value:true显示,false不显示
{"name":"待回单","type":"normal","value":"true"},
{"name":"催装0次","type":"warn","value":"false"}
],
"props":[//工单属性列表,icon样式见font-awesome
{"icon":"fa fa-home","value":"哈尔滨市香坊区鼎园明府小区2号楼2单元802室"}
],
"extend":[//工单扩展属性列表
{"key":"上门","value":""},
{"key":"预约","value":"2017-05-16 14:58:56"},
{"key":"截至","value":"2017-05-17 23:59:59"}
],
"methods":{//工单操作,分三类:tel:拨打电话 map:打开地图定位 menu:打开菜单
"tel":"18004667853",//电话号码
"map":"xxxxxx",//客户地址
"menu":"xxxxxx"//菜单项接口地址。 菜单配置 详见[工单菜单配置]
},
"detail":"/openBill/detail?DispatchSn=xxxxxxxx&MainSn=xxxxxxxx",//工单详情地址
"data":{//工单原始数据
"DispatchSn":"xxxxxxxx",
"MainSn":"xxxxxxxx",
"ClogCode":"xxxxxxxx",
"NativeNetId":"xxxxxxxx",
"WorkType":"新装",
"WorkAction":"装",
"SpecialtyId":"xxxxxxxx",
"Contactor":"xxxxxxxx",
"ContactPhone":"xxxxxxxx",
"Applytime":"2017-05-15 09:34:18",
"ReqRepairTime":"2017-05-17 23:59:59",
"InstAddress":"xxxxxxxx"
}
}

79
工单操作组件.md

@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@
# 分别对应列表操作项[common/bill/ListMethods]和详情操作项[common/bill/DetailMenu]
>
[
//flow属性代表在详情中渲染为一个大按钮
//具有value属性,表示将执行该js方法
//组件将向上冒泡一个通知
//业务层需要监听该通知,然后自行触发该方法(方法需要自己实现)
{"name":"拍照","value":"ev_photo","flow":"","code":"IDE_APP_OPEN_PHOTO"},
{"name":"材料使用","value":"ev_usecircsmate","flow":"","code":"IDE_APP_OPEN_USECIRCSMATE"},
{"name":"回单","value":"ev_return","flow":"true","code":"IDE_APP_OPEN_RETURN"},
//以下为自动处理的操作
//直接向接口提交数据即可完成的操作
//action为submit
//paramter为一个逗号分隔的键名,组件自动获取到工单的相关键值,发送到指定接口
{
"paramter":"DispatchSn",
"name":"接单",
"action":"submit",
"flow":"true",
"code":"IDE_APP_OPEN_ACCEPT",
"url":"/mop/proxyIda/ida30/h5/app/AppPublicAction.do?method=service&ifCode=open_accept"
},
//需要显示一个交互表单的操作
//action为form
//url为获取form定义的接口名
{
"paramter":"DispatchSn",
"name":"挂起",
"action":"form",
"flow":"",
"code":"IDE_APP_OPEN_HANDUP",
"url":"/mop/proxyIda/ida30/h5/app/AppPublicAction.do?method=getFormDefine&formCode=open_hungUp_page"
}
]
# 表单格式
>
//title为交互窗显示的标题
//action为form提交地址
//form为通用表单格式
//onSuccess定义表单提交后的后续动作
//目前规定为4种:
//1.refreshList 刷新工单列表 在列表时直接刷新列表数据 在详情时返回
//2.refreshBill 刷新工单数据(含菜单)
//3.refreshMenu 刷新菜单
//4. "" nothing 什么都不干
//可以配置一个onSubmit属性,值为一个js方法。
//在这种情况下表单将派发一个execute事件给业务组件。
//此时业务组件需要实现此方法,获取的入参为表单值。
//业务方法需要返回一个promise对象
//将通过一个commonMethod事件将动作向上冒泡,业务代码捕获到后自行处理
{
"title":"解挂",
"action":"/mop/proxyIda/ida30/h5/app/AppPublicAction.do?method=service&ifCode=open_unhangup&DispatchSn=20170501212484",
"onSuccess":"refreshBill",
"form":[]
}
#业务页面处理后续动作的示例代码
>
events : {
commonMethod : function(method,component,callback){
if(method==="refreshList"){
this.reload()
return callback()
}
if(method==="refreshBill"){
return this.refreshBill(component).then(callback)
}
if(method==="refreshMenu"){
return this.refreshMethods(component).then(callback)
}
return callback()
}
}

111
工单详情组件.md

@ -0,0 +1,111 @@ @@ -0,0 +1,111 @@
### 工单详情组件由一个tab和若干组件拼接而成
* pageList值为一个数组,category表示tab标题,content可由多个组件堆砌而成,type表示显示的组件类型,data为组件数据
* data为工单原始数据
* menuUrl为菜单接口url
*
>
{
"pageList":[
{
"category":"工单信息",
//content内容调用了MultipleView,详细格式参考common.MultipleView.js
"content":[
{
"component":"detailview",
data":[xxxxx]
}
]
},
{
"category":"用户资料",
"content":[]
},
{
"category":"线路信息",
"content":[]
},
{
"category":"处理步骤",
"content":[]
}
],
"data":{
"DispatchSn":"20170501358807",
"MainSn":"2017051500000431",
"ClogCode":"451000201815",
...
},
"menuUrl":"/ida30/h5/app/xxxxx"
}
> 以下为旧版格式,目前仍然兼容
* 目前可以在详情页作为tab展现的组件有DetailView,FlowView
>
{
"pageList":[
{
"category":"工单信息",
"content":[
{
"type":"listView",
data":[
{"name":"订单编号","value":"51000000000097365066","prop":""},
{"name":"申请时间","value":"2017-5-15 9:34:18","prop":""},
{"name":"产品名称","value":"智慧家庭"},
{"name":"工单状态","value":"待回单","prop":""},
{"name":"施工类型","value":"新装","prop":""},
{"name":"施工动作","value":"装","prop":""},
{"name":"局向","value":"香坊区","prop":""},
{"name":"业务号码(障碍标识)","value":"451000201815","prop":""},
{"name":"预约开始时间","value":"2017-5-17 17:00:00","prop":""},
{"name":"预约结束时间","value":"2017-5-17 19:00:00","prop":""},
{"name":"先装后付","value":"否","prop":""}
]
}
]
},
{
"category":"用户资料",
"content":[
{
"type":"listView",
"data":[]
}
]
},
{
"category":"线路信息",
"content":[
{
"type":"listView",
"data":[]
}
]
},
{"category":"处理步骤",
"content":[
{
"type":"flowView",
"data":[
{
"actionType":"受理",
"operator":"SysPc",
"operatorGroup":"",
"dealInfo":"",
"operateEndtime":"05-15 09:34"
},
....
]
}
]
}
],
"data":{
"DispatchSn":"20170501358807",
"MainSn":"2017051500000431",
"ClogCode":"451000201815",
...
},
"menuUrl":"/ida30/h5/app/xxxxx"
}

11
通用信息提示组件.md

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
> \resource\components\mobile\Panel.js
* 一个基础的面板组件
* 用于显示一些简单的提示信息
* 根据状态不同,提示 成功,警告,失败,普通 等状态
>
<panel type="success" text="You successfully read this important alert message."></panel>
<panel type="error" text="You successfully read this important alert message."></panel>
<panel type="warn" text="You successfully read this important alert message."></panel>
<panel type="info" text="You successfully read this important alert message."></panel>
<panel type="normal" text="You successfully read this important alert message."></panel>

28
通用名值对串显示组件.md

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
> \resource\components\mobile\DetailView.js
>
//展示一个名值对集合
/*
集合成员:
{
hideIfEmpty : true, //值为空时是否隐藏,默认不隐藏
name : name, //名称
value : value, //值
prop : prop || "", //属性
important表示值用红色加粗表示
divider表示本行是一个分隔行,只显示名称
map表示点击后用地图打开
telephone表示点击后拨打电话
url表示点击后打开一个新界面(本地路由)
dateLimit表示剩余时间
portRate将一个以kb为单位的数字转为mb为单位的字符串
colord表示着色,参数为颜色值
boolean表示是一个是否值(是,否,Y,N)
html表示值是html
largeText表示大文本
newValue表示是一个新旧值对比,新值在value里,旧值在extend里
extend : ""//扩展属性,视prop的值不同,格式不同
}
*/
> 如: {name:"红色",value:"我是红色字",prop:"colord",extend:"red"}

157
通用表单组件.md

@ -0,0 +1,157 @@ @@ -0,0 +1,157 @@
# 通用表单组件
>
将表单抽象为配置数据,再使用本组件进行还原
用例:\resource\components\testCase\mobile\common.formComponents.Form.js
可使用 /test/common.FormComponents.Form 路由在项目中查看
> 组件显示为三种样式
* common/formComonents/Form //在模态窗使用
* common/formComonents/FormInPage //在普通页面使用
* common/formComonents/FormInGrid //在回单页面使用
### 支持表单类型
* text
* password
* radio
* select
* checkbox
* textarea
* date
* datetime
* range
* tree
* scan
* photo
* locate
* custom
### 通用属性
* label 表单项显示名称
* value 表单项值
* valid 表单项验证规则
* show 表单项显示条件
text,password,date,datetime,tree 具有的属性
name,placeholder,maxlength,readonly,disabled
### date,datetime允许设置一个valueTemplate属性来格式化日期
* 默认 date: yyyy-MM-dd
* 默认 dateTime : yyyy-MM-dd hh:mm:ss
### select,radio,checkbox具有的属性
* options: Array
* value : String
* label : String
* selected : Boolean
> 如果组件本身具有value,则抛弃option的selected属性
* 支持异步获取options
* 当表单项本身没有配置options,且配置了config时触发异步加载options
>
{
"name":"ChangeOper",
"label":"改派人员",
"type":"select",
"valid":"required",
"config":{
"url":"/mop/xxxx/xxx?xxx=xxx",
"name":"UserName",
"value":"UserId"
}
}
### tree具有的属性
* root : 根节点ID
* url : 树url
* idKey : 主键字段名
* pidKey : 父节点字段名 default:parentId
* valueKey : 供显示的名字 default:name
* isLeaf : 是否叶子节点判断 Function,入参节点数据,返回true false
* async : 是否异步树
* 如果是异步树,控件会自动将idKey指定的值作为参数查询下级节点,不需要拼在url上
* 如果确实需要默认查一个节点,请设置root属性的值
> 例:
>
{
"name":"ChangeOper",
"label":"转派人员",
"type":"tree",
"valid":"required",
//配置一个模板,提交的值为模板生成的数据.否则直接取idKey所表示的数据
//是一句js表达式,可使用item对象访问当前节点数据
"valueTemplate":"item.ParentOrgId+'#'+item.OrgId+'#'+item.OrgName",
"config":{
"url":"/url/urlxxxx?ccc=bbb&orgid=长沙",
"idKey":"OrgId",
"pidKey":"ParentOrgId",
"valueKey":"OrgName",
"async":true,
"isLeaf":"item.OrgType==='USER'"
}
}
# 表单的交互方法
### 可向表单组件广播以下事件
* getValue(callback) 返回表单数据,不验证
* validate(callback,errorCallback) 验证表单,Promise方法,全部验证通过则resolve表单数据,否则reject错误
* setAttr(name,attr,value)
>
name : 表单项name
attr : 表单项属性
value : 表单项属性的值
this.$broadcast("username","value","sa")
除非很清楚自己在干什么,否则不要使用
### 可监听表单组件冒泡的事件
* change(form)
> 当表单发生变化时冒泡该事件
* changeValue(name,oldValue,newValue)
> 当有表单项值发生改变时冒泡该事件。配合setAttr可实现表单项关联
# 自定义表单项 类型为custom
* 允许自行实现一个组件,作为表单项的选择窗口
* 组件可以配置一些props获得当前表单的一些上下文信息
* getFormValues:Function 返回当前表单的值
* getConfig 返回当前表单项配置
* getDialog 返回当前模态窗实例
* 如果配置了按钮(默认有按钮),组件需要实现一个submit方法,返回一个promise,返回值是一个包含 name,value 字段的对象
* 如果没有配置按钮,组件需要调模态窗的close方法,将返回值传入。如:this.getDialog().close({name:"1",value:"2"})
>
{
"name" : "test",
"label" : "自定义表单项",
"type" : "custom",
"component" : "./../resource/components/testCase/mobile/ExampleFormMemberComponent"
},
{
"name" : "test1",
"label" : "选择地址",
"type" : "custom",
"component" : "./openBill/SelectResAddressForm",//自定义组件地址
"config" : {
"showBtn" : false,//弹出窗是否显示提交按钮
"btnText" : "确定选择",//弹出窗按钮文字
"selectText" : "选择地址"//选择按钮文字
},
"data" : {
"SpecialtyId" : "11111111"
}
}
### 表单验证属性规则:
* url
* base64
* ip
* email
* numeric
* integer
* required
* regex(%5E((http%7Chttps%7Cftp%7Cvm)%3A%2F%2F)) //自定义正则 因正则特殊字符较多难以处理,需要先encodeURIComponent处理
* range(7,8)//长度在7-8
* async('/xxxx.do')//异步验证
>支持管道式组合验证 如
>valid:"required|url|range(7,8)|async('/xxxx.do')"
Loading…
Cancel
Save