Appearance
现代代码片段
现代代码片段功能提供了一些封装好的高级代码示例,可以直接引用和复用。
什么是代码片段
代码片段是平台预置的常用功能代码模板,开发者可以直接插入使用,无需从零编写。
可用代码片段
数据操作类
| 片段名 | 说明 |
|---|---|
| 批量删除 | 选中多条数据执行批量删除 |
| 批量导入 | 从 Excel 批量导入数据 |
| 数据复制 | 复制一条现有数据作为新数据 |
| 数据归档 | 将历史数据归档到历史表 |
表单操作类
| 片段名 | 说明 |
|---|---|
| 表单校验 | 常用的表单校验逻辑 |
| 自动填充 | 根据编码自动填充其他字段 |
| 级联选择 | 多级联动下拉选择 |
| 动态增行 | 明细行动态添加删除 |
业务逻辑类
| 片段名 | 说明 |
|---|---|
| 审批流提交 | 提交数据到审批流程 |
| 编号生成 | 自动生成业务单据编号 |
| 消息通知 | 发送系统消息给指定用户 |
| 数据锁定/解锁 | 锁定和解锁数据 |
使用方法
方式1:在编程界面插入
- 打开在线编程环境
- 点击工具栏的"代码片段"按钮
- 选择需要的代码片段
- 点击"插入",代码自动插入到光标位置
方式2:手动引用
javascript
// 引用内置代码片段
var snippet = getSnippet('batch-delete');
eval(snippet.code);常用代码片段示例
批量删除
javascript
// 批量删除选中的数据
function batchDelete() {
var selectedIds = getTableSelectedIds('table1');
if (selectedIds.length === 0) {
showMessage('warning', '请选择要删除的数据');
return;
}
showConfirm(
'确认删除',
'确定要删除选中的 ' + selectedIds.length + ' 条数据吗?',
function(result) {
if (result) {
executeSQL(
'DELETE FROM t_customer WHERE id IN (' + selectedIds.join(',') + ')',
function(res) {
showMessage('success', '删除成功');
refreshTable('table1');
},
function(err) {
showMessage('error', '删除失败:' + err.message);
}
);
}
}
);
}自动生成编号
javascript
// 自动生成业务单据编号
function generateBillNo(prefix) {
var date = formatDate(new Date(), 'yyyyMMdd');
var sql = "SELECT ISNULL(MAX(RIGHT(bill_no, 4)), 0) + 1 AS next_num " +
"FROM t_order WHERE bill_no LIKE '" + prefix + date + "%'";
var result = executeQuery(sql);
var nextNum = result[0].next_num;
var seq = ('0000' + nextNum).slice(-4);
return prefix + date + seq;
}
// 使用示例
var billNo = generateBillNo('SO');
// 返回:SO202607220001表单校验
javascript
// 表单校验
function validateForm() {
var errors = [];
// 非空校验
if (!getValue('text_name')) {
errors.push('请输入名称');
}
// 手机号格式校验
var phone = getValue('text_phone');
if (phone && !/^1[3-9]\d{9}$/.test(phone)) {
errors.push('手机号格式不正确');
}
// 邮箱格式校验
var email = getValue('text_email');
if (email && !/^[\w.-]+@[\w.-]+\.\w+$/.test(email)) {
errors.push('邮箱格式不正确');
}
// 数字范围校验
var amount = getValue('num_amount');
if (amount <= 0) {
errors.push('金额必须大于0');
}
if (errors.length > 0) {
showMessage('error', errors.join('<br>'));
return false;
}
return true;
}级联选择
javascript
// 省市级联选择
function initCascade() {
// 省份选择变化时加载城市
onControlChange('select_province', function(value) {
var cities = executeQuery(
"SELECT id, name FROM t_city WHERE province_id = " + value
);
setSelectorOptions('select_city', cities);
setValue('select_city', '');
});
// 城市选择变化时加载区县
onControlChange('select_city', function(value) {
var districts = executeQuery(
"SELECT id, name FROM t_district WHERE city_id = " + value
);
setSelectorOptions('select_district', districts);
setValue('select_district', '');
});
}发送消息通知
javascript
// 发送系统消息
function sendNotification(receiverIds, title, content, type) {
var sql = "INSERT INTO t_message (receiver_id, title, content, type, create_time) VALUES ";
var values = receiverIds.map(function(id) {
return "(" + id + ", '" + title + "', '" + content + "', '" + (type || 'info') + "', GETDATE())";
});
executeSQL(sql + values.join(','), function() {
showMessage('success', '消息发送成功');
});
}
// 使用示例
sendNotification(
[1001, 1002, 1003],
'新订单提醒',
'您有一个新的订单待处理,订单号:SO202607220001',
'notice'
);明细行动态增删
javascript
// 新增明细行
function addDetailRow() {
var newRow = {
id: '',
product_id: '',
product_name: '',
quantity: 1,
unit_price: 0,
amount: 0
};
addTableRow('table_detail', newRow);
calculateDetailTotal();
}
// 删除选中的明细行
function deleteDetailRow() {
var selected = getTableSelectedRows('table_detail');
if (selected.length === 0) {
showMessage('warning', '请选择要删除的行');
return;
}
removeTableRows('table_detail', selected);
calculateDetailTotal();
}
// 计算明细总金额
function calculateDetailTotal() {
var rows = getTableData('table_detail');
var total = 0;
rows.forEach(function(row) {
total += Number(row.amount) || 0;
});
setValue('num_total', total);
}
// 单元格变化时自动计算金额
onTableCellChange('table_detail', function(rowIndex, field, value) {
var row = getTableRow('table_detail', rowIndex);
if (field === 'quantity' || field === 'unit_price') {
var qty = Number(row.quantity) || 0;
var price = Number(row.unit_price) || 0;
setTableCellValue('table_detail', rowIndex, 'amount', qty * price);
calculateDetailTotal();
}
});数据复制
javascript
// 复制选中的数据作为新记录
function copyData() {
var selected = getTableSelectedRow('table1');
if (!selected) {
showMessage('warning', '请选择要复制的数据');
return;
}
// 打开新增页面并填充数据
openPage('customer_edit', {
mode: 'copy',
data: {
name: selected.name + '(副本)',
phone: selected.phone,
address: selected.address
}
});
}创建自定义代码片段
开发者可以将常用的代码保存为自定义片段:
javascript
// 保存代码片段
saveSnippet({
name: '我的自定义片段',
category: '自定义',
code: `
// 自定义代码
function myFunction() {
console.log('Hello');
}
`,
description: '我的自定义功能代码'
});
// 获取自定义片段列表
var mySnippets = getCustomSnippets();注意事项
- 插入代码片段后,建议根据实际业务场景调整参数
- 代码片段中的表名、字段名需要与实际数据结构对应
- 建议先在测试环境验证代码片段的正确性
- 复杂的业务逻辑不建议使用代码片段,应独立开发