### 1. 如何联调表格分页


```
分页公用
pageParams: {
    pageNo: 1, // 当前页数
    pageSize: 20 // 每页数据条数
},
total:"";table总条数
pagesAll:""//定义总页数
seach方法中请求到this.total =  total
计算页数:this.pagesAll = Math.ceil(this.total / this.pageParams.pageSize) <=this.pageParams.pageNo

v-loadmore 为指令
v-loadmore: [200] 内为自定义的触发距离,也可不写,默认为50
tlm_noMore: false, // 没有更多数据, 禁用加载, 初始为false
tlm_isLoading: false, // 请求数据中,初始为false
load方法中定义  this.pageParams.pageNo++;

在setTimeout(function (){}中调Ajax请求数据
 load (){
    const _this = this;
    _this.pageParams.pageNo++;
    setTimeout(function (){
        try{
            let param = {...this.pageParams}
            let response = await stock.getGets(param);
            let { data } = response;
            let table = [];
            for (let i = 0; i < data.length; i++) {
                const item = data[i];
                table.push(item);
            }
            _this.tabsList = _this.tabsList.concat(table);
            if (_this.pageParams.pageNo >= this.pagesAll){
                _this.tlm_noMore = true
            }
        };
    }
    _this.tlm_isLoading = false
    }, 2000)
},
```


### 2. 如何联调长列表分页


```
// 分页控制参数
pageParams: {
    pageNo: 0, // 当前页数
    total: 5, // 总共页数
    pageSize: 20 // 每页数据条数
},
// table 分页加载必须定义字段
    tlm_isLoading: false

计算总页数
computed: {
    tlm_noMore() {
        return (
        Math.ceil(this.pageParams.total / this.pageParams.pageSize) <=
        this.pageParams.pageNo
        );
    }
},

//初始化列表
async loadTable() {
    let params = {
        //必传字段
        id
        //分页条件
        ...this.pageParams
    };
    //请求接口
    let response = await getDiagLsit(params);
    let tableData = [];
    if (response.code == "1") {
        tableData = response.data;
        this.pageParams = { ...response.pageParams };
    }
    this.tableData = tableData;
    this.tlm_isLoading = false;
}
// table加载下一页
loadNextPage() {
    if (this.tlm_noMore) {
    return;
    }
    this.pageParams.pageNo++;
    this.loadTable();
},
```

### 3. 切换患者后的逻辑操作


### 4. 兄弟组件之间的消息传递


1.

<left @selectIdChange="selectIdChange"></left>


2.

   方法; this.\$emit('selectIdChange',this.selectId);

   父组件接收到值后传递给中间子组件


3.

<l-main :selectId="selectId"></l-main>
'selectId'],


### 5. 表单校验


//前端校验规则
rules: {
drugName: [{required: true, message: '请输入药品名称', trigger: 'blur'}],
supplier: [{required: true, message: '请选择厂商', trigger: 'change'}],
}

提交时校验:

if(this.drugName.length==0 || this.supplier.length==0){
this.\$message.warning("请完成必填项");
return
}


### 6. 值域组件 LValueDomain 的使用


```javascript
# 多级值域(行政区域)
<l-value-domain code="area" type="cascader" :value.sync="areaValue" @change="vdChange" remoteValueKey="id" remoteShowKey="label" :multiple="true"></l-value-domain>

# 单级值域
// 主数据表
<l-value-domain code="CS01.00.802"  :value.sync="1" />
# 支持本地过滤器
// localFilterKeys的作用是输入的值是否包含在数据对象的对应字段的值中,如果包含,就作为下拉选项,默认值为 ['name'],可根据需求自定义
<l-value-domain code="CS01.00.802"  :value.sync="1" :localFilterKeys="['name', 'wubi']"/>

// 自定义数据表
// 支持模糊查询,检索关键词会以keyword字段拼装到params对象中,作为参数一并传过去
// params 需要定义再data上,可配置任何需要传到服务器的参数数据
<l-value-domain  :value.sync="1" remoteUrl="/api/path" :remoteParams="params" remoteShowKey="name" remoteValueKey="code" placeholder="提示词"/>



```


参数:


### 7. 反显指令的使用 codeTransform 的使用(用于文本反显)

```javascript
// 主数据反显
<span :val="值" code="主数据CODE" v-codeTransform></span>

// 自定义数据表
// tableName: 表名
//
// conditionMap: 对上面的表进行查询的条件(是个对象)
// 样例:
// conditionMap: {
//     val: "dsajflaksdjlfjdls"
// }
//
// columns: 要返回表中哪个列的数据,需要与数据库列名一致
<span tableName="sys_account" :conditionMap="conditionMap" columns="user_id" v-tableTransform></span>

```

### 8.v-hotkey 使用规范

```

一、快捷键展示工具箱配置方法:

// 1.工具箱名称为:Hotkey   (请将该工具箱放在toolBoxs最后一项), 文件地址 src/views/public/modules/Hotkey.vue


// 2.在l-layout里配置 pageName ,值为各自改好的key值,demo如下

// <l-layout

//     :toolBoxs="toolBoxs"

//     :defaultToolName="toolBoxs[0]"

//     :boxExpanded="true"

//     @message="messageHandler"

//     patientCardType="default"

//     pageName="test"           <<<<-----配置此项


二、在src/views/hotkey.js  文件中把 你需要编写的快捷键组合按照 页面编写规则来书写  key 要和 传入pageName 对应上



三、快捷键支持在按钮等元素 支持点击事件,支持表格和列表的上下选择和选择特定行数的数据

```


### 备注



### 1. 如何联调表格分页


```
分页公用
pageParams: {
    pageNo: 1, // 当前页数
    pageSize: 20 // 每页数据条数
},
total:"";table总条数
pagesAll:""//定义总页数
seach方法中请求到this.total =  total
计算页数:this.pagesAll = Math.ceil(this.total / this.pageParams.pageSize) <=this.pageParams.pageNo

v-loadmore 为指令
v-loadmore: [200] 内为自定义的触发距离,也可不写,默认为50
tlm_noMore: false, // 没有更多数据, 禁用加载, 初始为false
tlm_isLoading: false, // 请求数据中,初始为false
load方法中定义  this.pageParams.pageNo++;

在setTimeout(function (){}中调Ajax请求数据
 load (){
    const _this = this;
    _this.pageParams.pageNo++;
    setTimeout(function (){
        try{
            let param = {...this.pageParams}
            let response = await stock.getGets(param);
            let { data } = response;
            let table = [];
            for (let i = 0; i < data.length; i++) {
                const item = data[i];
                table.push(item);
            }
            _this.tabsList = _this.tabsList.concat(table);
            if (_this.pageParams.pageNo >= this.pagesAll){
                _this.tlm_noMore = true
            }
        };
    }
    _this.tlm_isLoading = false
    }, 2000)
},
```

### 2. 如何联调长列表分页


```
// 分页控制参数
pageParams: {
    pageNo: 0, // 当前页数
    total: 5, // 总共页数
    pageSize: 20 // 每页数据条数
},
// table 分页加载必须定义字段
    tlm_isLoading: false

计算总页数
computed: {
    tlm_noMore() {
        return (
        Math.ceil(this.pageParams.total / this.pageParams.pageSize) <=
        this.pageParams.pageNo
        );
    }
},

//初始化列表
async loadTable() {
    let params = {
        //必传字段
        id
        //分页条件
        ...this.pageParams
    };
    //请求接口
    let response = await getDiagLsit(params);
    let tableData = [];
    if (response.code == "1") {
        tableData = response.data;
        this.pageParams = { ...response.pageParams };
    }
    this.tableData = tableData;
    this.tlm_isLoading = false;
}
// table加载下一页
loadNextPage() {
    if (this.tlm_noMore) {
    return;
    }
    this.pageParams.pageNo++;
    this.loadTable();
},
```

### 3. 切换患者后的逻辑操作

### 4. 兄弟组件之间的消息传递

1.
<left @selectIdChange="selectIdChange"></left>

2.
   方法; this.\$emit('selectIdChange',this.selectId);
   父组件接收到值后传递给中间子组件

3.
<l-main :selectId="selectId"></l-main>
'selectId'],

### 5. 表单校验

//前端校验规则
rules: {
drugName: [{required: true, message: '请输入药品名称', trigger: 'blur'}],
supplier: [{required: true, message: '请选择厂商', trigger: 'change'}],
}
提交时校验:
if(this.drugName.length==0 || this.supplier.length==0){
this.\$message.warning("请完成必填项");
return
}

### 6. 值域组件 LValueDomain 的使用

```javascript
# 多级值域(行政区域)
<l-value-domain code="area" type="cascader" :value.sync="areaValue" @change="vdChange" remoteValueKey="id" remoteShowKey="label" :multiple="true"></l-value-domain>

# 单级值域
// 主数据表
<l-value-domain code="CS01.00.802"  :value.sync="1" />
# 支持本地过滤器
// localFilterKeys的作用是输入的值是否包含在数据对象的对应字段的值中,如果包含,就作为下拉选项,默认值为 ['name'],可根据需求自定义
<l-value-domain code="CS01.00.802"  :value.sync="1" :localFilterKeys="['name', 'wubi']"/>

// 自定义数据表
// 支持模糊查询,检索关键词会以keyword字段拼装到params对象中,作为参数一并传过去
// params 需要定义再data上,可配置任何需要传到服务器的参数数据
<l-value-domain  :value.sync="1" remoteUrl="/api/path" :remoteParams="params" remoteShowKey="name" remoteValueKey="code" placeholder="提示词"/>



```

参数:


### 7. 反显指令的使用 codeTransform 的使用(用于文本反显)


```javascript

// 主数据反显

<span :val="值" code="主数据CODE" v-codeTransform></span>


// 自定义数据表

// tableName: 表名

//

// conditionMap: 对上面的表进行查询的条件(是个对象)

// 样例:

// conditionMap: {

//     val: "dsajflaksdjlfjdls"

// }

//

// columns: 要返回表中哪个列的数据,需要与数据库列名一致

<span tableName="sys_account" :conditionMap="conditionMap" columns="user_id" v-tableTransform></span>


```


### 8.v-hotkey 使用规范


```


一、快捷键展示工具箱配置方法:

// 1.工具箱名称为:Hotkey   (请将该工具箱放在toolBoxs最后一项), 文件地址 src/views/public/modules/Hotkey.vue


// 2.在l-layout里配置 pageName ,值为各自改好的key值,demo如下

// <l-layout

//     :toolBoxs="toolBoxs"

//     :defaultToolName="toolBoxs[0]"

//     :boxExpanded="true"

//     @message="messageHandler"

//     patientCardType="default"

//     pageName="test"           <<<<-----配置此项


二、在src/views/hotkey.js  文件中把 你需要编写的快捷键组合按照 页面编写规则来书写  key 要和 传入pageName 对应上



三、快捷键支持在按钮等元素 支持点击事件,支持表格和列表的上下选择和选择特定行数的数据

```


### 备注



### 1. 如何联调表格分页


```

分页公用

pageParams: {

    pageNo: 1, // 当前页数

    pageSize: 20 // 每页数据条数

},

total:"";table总条数

pagesAll:""//定义总页数

seach方法中请求到this.total =  total

计算页数:this.pagesAll = Math.ceil(this.total / this.pageParams.pageSize) <=this.pageParams.pageNo


v-loadmore 为指令

v-loadmore: [200] 内为自定义的触发距离,也可不写,默认为50

tlm_noMore: false, // 没有更多数据, 禁用加载, 初始为false

tlm_isLoading: false, // 请求数据中,初始为false

load方法中定义  this.pageParams.pageNo++;


在setTimeout(function (){}中调Ajax请求数据

load (){
    const _this = this;
    _this.pageParams.pageNo++;
    setTimeout(function (){
        try{
            let param = {...this.pageParams}
            let response = await stock.getGets(param);
            let { data } = response;
            let table = [];
            for (let i = 0; i < data.length; i++) {
                const item = data[i];
                table.push(item);
            }
            _this.tabsList = _this.tabsList.concat(table);
            if (_this.pageParams.pageNo >= this.pagesAll){
                _this.tlm_noMore = true
            }
        };
    }
    _this.tlm_isLoading = false
    }, 2000)
},
```


### 2. 如何联调长列表分页


```
// 分页控制参数
pageParams: {
    pageNo: 0, // 当前页数
    total: 5, // 总共页数
    pageSize: 20 // 每页数据条数
},
// table 分页加载必须定义字段
    tlm_isLoading: false

计算总页数
computed: {
    tlm_noMore() {
        return (
        Math.ceil(this.pageParams.total / this.pageParams.pageSize) <=
        this.pageParams.pageNo
        );
    }
},

//初始化列表
async loadTable() {
    let params = {
        //必传字段
        id
        //分页条件
        ...this.pageParams
    };
    //请求接口
    let response = await getDiagLsit(params);
    let tableData = [];
    if (response.code == "1") {
        tableData = response.data;
        this.pageParams = { ...response.pageParams };
    }
    this.tableData = tableData;
    this.tlm_isLoading = false;
}
// table加载下一页
loadNextPage() {
    if (this.tlm_noMore) {
    return;
    }
    this.pageParams.pageNo++;
    this.loadTable();
},
```

### 3. 切换患者后的逻辑操作


### 4. 兄弟组件之间的消息传递


1.

<left @selectIdChange="selectIdChange"></left>


2.

   方法; this.\$emit('selectIdChange',this.selectId);

   父组件接收到值后传递给中间子组件


3.

<l-main :selectId="selectId"></l-main>

'selectId'],


### 5. 表单校验


//前端校验规则
rules: {
drugName: [{required: true, message: '请输入药品名称', trigger: 'blur'}],
supplier: [{required: true, message: '请选择厂商', trigger: 'change'}],
}
提交时校验:
if(this.drugName.length==0 || this.supplier.length==0){
this.\$message.warning("请完成必填项");
return
}


### 6. 值域组件 LValueDomain 的使用


```javascript
# 多级值域(行政区域)
<l-value-domain code="area" type="cascader" :value.sync="areaValue" @change="vdChange" remoteValueKey="id" remoteShowKey="label" :multiple="true"></l-value-domain>

# 单级值域
// 主数据表
<l-value-domain code="CS01.00.802"  :value.sync="1" />
# 支持本地过滤器
// localFilterKeys的作用是输入的值是否包含在数据对象的对应字段的值中,如果包含,就作为下拉选项,默认值为 ['name'],可根据需求自定义
<l-value-domain code="CS01.00.802"  :value.sync="1" :localFilterKeys="['name', 'wubi']"/>

// 自定义数据表
// 支持模糊查询,检索关键词会以keyword字段拼装到params对象中,作为参数一并传过去
// params 需要定义再data上,可配置任何需要传到服务器的参数数据
<l-value-domain  :value.sync="1" remoteUrl="/api/path" :remoteParams="params" remoteShowKey="name" remoteValueKey="code" placeholder="提示词"/>



```


参数:


### 7. 反显指令的使用 codeTransform 的使用(用于文本反显)


```javascript
// 主数据反显
<span :val="值" code="主数据CODE" v-codeTransform></span>

// 自定义数据表
// tableName: 表名
//
// conditionMap: 对上面的表进行查询的条件(是个对象)
// 样例:
// conditionMap: {
//     val: "dsajflaksdjlfjdls"
// }
//
// columns: 要返回表中哪个列的数据,需要与数据库列名一致
<span tableName="sys_account" :conditionMap="conditionMap" columns="user_id" v-tableTransform></span>

```


### 8.v-hotkey 使用规范


```


一、快捷键展示工具箱配置方法:

// 1.工具箱名称为:Hotkey   (请将该工具箱放在toolBoxs最后一项), 文件地址 src/views/public/modules/Hotkey.vue


// 2.在l-layout里配置 pageName ,值为各自改好的key值,demo如下

// <l-layout

//     :toolBoxs="toolBoxs"

//     :defaultToolName="toolBoxs[0]"

//     :boxExpanded="true"

//     @message="messageHandler"

//     patientCardType="default"

//     pageName="test"           <<<<-----配置此项


二、在src/views/hotkey.js  文件中把 你需要编写的快捷键组合按照 页面编写规则来书写  key 要和 传入pageName 对应上



三、快捷键支持在按钮等元素 支持点击事件,支持表格和列表的上下选择和选择特定行数的数据

```


### 备注


vue 联调规范_自定义

独乐乐不如众乐乐!