# 栏目开发及流程说明
* * *
## 说明
栏目组件为特殊的业务组件,自身会根据栏目配置发送ajax请求。
#### 依赖关系:
* 所有栏目组件都依赖于`cap4-column-base`组件,此组件包含ajax底层请求方法,和v5环境变量。
* 所有栏目组件都依赖于`_utils/mixin/columnMixin`,此组件包含了数据请求方法,和基本的数据注入。 注:`_utils/mixin/columnMixin`中包含有`_utils/mixin/themesMixin`,无需再次引入;
以上依赖已经预置到初始化栏目组件里。
#### `cap4-column-base`组件提供支持
由门户开发人员注入,全局只需要一个,主要提供栏目的ajax请求支持。
注入后可在vue原型对象上访问到`$httpClient`对象。
$httpClient:
| 参数 | 说明 | 类型 | 备注 |
| --- | --- | --- | --- |
| env | v5外框的环境参数 | Object | {\_ctxPath,\_ctxServer,CsrfGuard} |
| getUrlSurffix() | v5外框的跨域保护,返回String | String | |
| urls | 栏目相关url合集 | Object | |
| axios | pc-ajax请求用工具 | Object | |
| setEnv(p) | 可在env中手动写入字段,或覆盖环境变量 | | p:Object对象 |
| getDataByColumnIds(p1,p2) | 取得栏目运行时数据,返回promise | | p1:模板id p2:栏目元素id数组 |
| getCurrentUserInfo() | 取得用户信息,返回promise | | |
| getConfig() | 取得配置文件,返回promise | | |
注:如果不使用`$httpClient`,可自行通过接口获取数据。
urls:的接口列表
~~~js
//根据模板id获取运行时数据
getDataByTemplateIdUrl:`${_ctxPath}/rest/cap4/template/getDataByTemplateId/`,
//根据栏目id获取运行时数据
getDataByColumnIdsUrl:`${_ctxPath}/rest/cap4/template/getDataByColumnIds/`,
//根据栏目元素id获取运行时数据
getDataByElementIdsUrl:`${_ctxPath}/rest/cap4/template/getDataByElementIds/`,
// 根据真实参数获取运行时数据
getDataByRealParams:`${_ctxPath}/rest/cap4/template/getDataByRealParams`,
~~~
推荐使用根据栏目元素id获取运行时数据,方便理解。
~~~js
请求地址:/seeyon/rest/cap4/template/getDataByElementIds
请求类型:POST
请求参数:
templateId:模板id
elementIds:[123,123]
返回参数:
{
"code": 1000,
"data": {
...
},
"message": "the operation is success!!!"
}
~~~
#### `_utils/mixin/columnMixin`提供支持
为了标准化栏目开发规范,所有栏目组件都必须混入`_utils/mixin/columnMixin`来提供以下特性。
props: 接受参数
| 参数 | 说明 | 类型 | 备注 |
| --- | --- | --- | --- |
| column | 栏目配置 | Object | 数据获取和栏目元素名称获取 |
| templateId | 模板id【必须】 | String | 模板id,用于数据获取 |
| bussId | 业务包id【必须】 | String | 主要用于穿透 |
data:\*引入后可直接用this.xxx 进行访问到数据信息
| 参数 | 说明 | 类型 | 备注 |
| --- | --- | --- | --- |
| datas | 栏目配置 | Array | 栏目请求到数据后数据所存放的位置 |
| keys | 模板id | Array | 从模板配置文件中解析出来的dynamicKey合集 |
| themes | 业务包id | String | 门户开发人员所设置的皮肤样式字段,用于适配多皮肤栏目 |
methods:提供方法
* getData (callback),在栏目组件的`mounted`或者`create`中调用,调用后才能使用下面方法获取数据
\*\*\* callback【可选】:请求数据完成后的回调,非必须,利用双向绑定无需使用。
* this.dk(index,key)次方法可以根据栏目的标记位置取到对应的数据。
\*\*\* index【必须】:配置文件中数据标记位置如下`标记0`,`标记1`
\*\*\* key【可选】:取得栏目元素数据中某个字段的值。
column:从config中切割下来的栏目配置,以下为dk标记位置
~~~JSON
{
"fileName":"yearStatis",
"oldFileName":"yearStatis",
"elements":[
{ -- 标记0
"name":"本部门预算执行率",
"dynamicKey":"E9640111-5E99-4D15-8FAC-57A3CA03F07C",
"type":4
},
{-- 标记1
"name":"本部门预算执行率",
"dynamicKey":"E9640111-5E99-4D15-8FAC-57A3CA03F07C",
"type":5
}
],
"name":"本部门年度预算统计",
"state":"1",
"type":4
}
~~~
### 集成以上组件后,栏目开发代码如下
~~~
<template>
<div class="cap4-column-card-container" :style="{cursor:dk(1,'isEg')=='1'?'default':'pointer'}" @click="goUrl(dk(1))">
<cap4-pc-ui-eg
style="position: absolute;top: 0px;left: 10px;z-index: 1"
v-if="dk(0,'isEg')=='1'"
:direction="1">
</cap4-pc-ui-eg>
<div class="cap4-column-card-left" :style="{backgroundColor:color}">
<div class="inner" v-if="keys.length">
<p class="value" :title="dk(0,'display')" >
{{dk(0) | dataFormat}}
</p>
<p class="type" :title="dk(0,'name')" v-text="column.name"></p>
</div>
</div>
<div class="cap4-column-card-right" :style="{backgroundColor:color}">
<i class="CAP" :class="[icon]"></i>
</div>
</div>
</template>
<script>
import columnMixin from '_utils/mixin/columnMixin';
import dataFormatMixin from '_utils/mixin/dataFormatMixin';
import Cap4PcUiEg from '_pc_ui/cap4-pc-ui-eg';
export default{
name: 'Cap4ColumnCard',
mixins : [columnMixin,dataFormatMixin],
props: {
color : {
type : String,
default : '#3FA8D8'
},
icon : {
type : String,
default : ''
}
},
data () {
return {
}
},
mounted (){
this.getData();
},
methods:{
},
components : {Cap4PcUiEg}
}
</script>
~~~
- 概要
- 技术介绍
- 框架与环境
- vue开发
- 开发规范
- 前端开发规范
- 总体原则
- HTML规范
- HTML&css规范
- vue编码规范
- Javascript规范
- 后端开发规范
- cap4
- 自定义控件
- 前端2.0(PC+移动)
- PC前端
- 后端
- 移动端
- 移动端接口
- 低版本协同升级到V5 8.0适配说明
- 自定义按钮
- 自定义按钮(无流程)
- 自定义控件(列表插槽)
- 自定义按钮(筛选条件)
- 低版本协同升级到V5 8.0适配说明
- 门户空间
- 门户与栏目挂载
- 栏目开发及流程说明
- 页面模板
- 客开通路及插件体系
- 表单设计器扩展配置
- 使用步骤
- 配置说明
- 事件API
- Demo示例
- 运行态客开通路
- 插件使用步骤
- 插件接口
- 事件接口
- 钩子相关接口
- 表单操作接口
- Demo示例
- 插件机制
- 表单运行态接口(旧)
- 白名单插件
- 版本记录
- vue组件库
- 开发指南
- 开发文档规范
- 业务组件介绍
- 业务组件
- table组件
- 分页组件
- title组件
- 统计排队组件
- code组件
- 条件筛选
- 批量导入
- 上传Excel
- 批量更新
- 批量刷新
- UI组件
- 按钮组件
- 复选组件
- 取色器组件
- 示例组件
- 水平选择组件
- 选图标组件
- 提示组件
- 单选组件
- 搜索组件
- 选择组件
- 穿梭框组件
- 标签组件
- 文本组件
- 树组件
- 验证组件
- 菜单组件
- iframe组件
- toolbar
- 统计组件
- 饼图
- 柱状图
- 图标
- 业务关系开发指南
- 自定义触发
- 自定义关联
- 后端API
- 更新表单数据缓存
- 发起表单流程
- 取得指定表单PDF或截图
- 无流程批量添加
- 无流程批量删除
- 无流程批量更新
- 无流程批量导出
- 客开培训文档
- Vue基础培训
- Vue实战培训
- Vue进阶培训
- VueCLI3培训
- cap3
- 自定义控件
- 后端
- 移动端
- 前端编译
- 表单运行态接口
- 协同云