Skip to content

代码模板

代码模板功能用于快速生成常用的业务代码结构,提高开发效率。

什么是代码模板

代码模板是平台预置的标准代码结构,开发者可以基于模板快速生成程序框架,只需填充业务逻辑。

模板分类

分类说明适用场景
单表增删改查标准 CRUD 代码基础数据管理功能
主从表增删改查主表 + 明细表代码订单、采购等单据
审批流带审批的业务代码请假、报销等审批单
报表查询数据查询统计代码统计报表、数据分析
数据导入Excel 导入代码批量数据导入

使用代码模板

方式1:快速向导生成

  1. 进入在线编程环境
  2. 点击"快速向导" → "单表功能"(或其他类型)
  3. 选择数据表
  4. 设置功能名称、菜单等信息
  5. 点击"生成"
  6. 系统自动生成完整的代码模板

方式2:手动选择模板

  1. 在编程界面点击"代码模板"
  2. 选择需要的模板类型
  3. 填写参数(表名、字段名等)
  4. 点击"生成"
  5. 将生成的代码复制到程序中

单表增删改查模板

生成的文件结构

功能名称/
├── 列表页.js        # 列表页面逻辑
├── 编辑页.js        # 新增/编辑页面逻辑
├── 查询指令.sql     # 数据查询SQL
├── 保存指令.sql     # 数据保存SQL
└── 删除指令.sql     # 数据删除SQL

列表页模板

javascript
// ========== 列表页模板 ==========

var PAGE_CONFIG = {
  tableName: 't_customer',
  tableAlias: 'c',
  defaultOrderBy: 'c.create_time DESC'
};

// 页面初始化
onPageLoad(function() {
  initSearchForm();
  loadTableData();
});

// 初始化查询表单
function initSearchForm() {
  // 设置日期范围默认值
  setValue('date_start', formatDate(addMonth(new Date(), -1), 'yyyy-MM-dd'));
  setValue('date_end', formatDate(new Date(), 'yyyy-MM-dd'));
}

// 查询按钮
onClick('btn_search', function() {
  loadTableData();
});

// 重置按钮
onClick('btn_reset', function() {
  resetForm('form_search');
  initSearchForm();
  loadTableData();
});

// 加载表格数据
function loadTableData() {
  var params = getFormData('form_search');
  loadTable('table1', 'customer_query', params);
}

// 新增按钮
onClick('btn_add', function() {
  openPage('customer_edit', { mode: 'add' });
});

// 编辑按钮
onClick('btn_edit', function() {
  var row = getTableSelectedRow('table1');
  if (!row) {
    showMessage('warning', '请选择要编辑的数据');
    return;
  }
  openPage('customer_edit', { mode: 'edit', id: row.id });
});

// 查看按钮
onClick('btn_view', function() {
  var row = getTableSelectedRow('table1');
  if (!row) {
    showMessage('warning', '请选择要查看的数据');
    return;
  }
  openPage('customer_edit', { mode: 'view', id: row.id });
});

// 删除按钮
onClick('btn_delete', function() {
  var rows = getTableSelectedRows('table1');
  if (rows.length === 0) {
    showMessage('warning', '请选择要删除的数据');
    return;
  }
  
  showConfirm(
    '确认删除',
    '确定要删除选中的 ' + rows.length + ' 条数据吗?',
    function(result) {
      if (result) {
        var ids = rows.map(function(r) { return r.id; });
        execute('customer_delete', { ids: ids }, function() {
          showMessage('success', '删除成功');
          loadTableData();
        });
      }
    }
  );
});

// 导出按钮
onClick('btn_export', function() {
  var params = getFormData('form_search');
  exportData('customer_query', params, '客户列表');
});

// 行双击编辑
onTableRowDblClick('table1', function(row) {
  openPage('customer_edit', { mode: 'view', id: row.id });
});

编辑页模板

javascript
// ========== 编辑页模板 ==========

var PAGE_MODE = 'view';  // view / edit / add
var CURRENT_ID = null;

// 页面初始化
onPageLoad(function() {
  PAGE_MODE = getParam('mode') || 'view';
  CURRENT_ID = getParam('id');
  
  setPageState(PAGE_MODE);
  
  if (PAGE_MODE === 'add') {
    initNewData();
  } else {
    loadData(CURRENT_ID);
  }
});

// 初始化新增数据
function initNewData() {
  setValue('text_code', generateCode('CUS'));
  setValue('date_create', formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss'));
  setValue('text_create_user', getCurrentUserName());
}

// 加载数据
function loadData(id) {
  execute('customer_get', { id: id }, function(result) {
    if (result.data) {
      setFormData('form_main', result.data);
    }
  });
}

// 保存按钮
onClick('btn_save', function() {
  if (!validateForm()) return;
  
  var data = getFormData('form_main');
  data.id = CURRENT_ID;
  data.mode = PAGE_MODE;
  
  execute('customer_save', data, function(result) {
    showMessage('success', '保存成功');
    CURRENT_ID = result.id;
    PAGE_MODE = 'edit';
    setPageState('edit');
    emit('refresh-list');
  });
});

// 保存并新增
onClick('btn_save_new', function() {
  if (!validateForm()) return;
  
  var data = getFormData('form_main');
  data.mode = PAGE_MODE;
  
  execute('customer_save', data, function() {
    showMessage('success', '保存成功');
    resetForm('form_main');
    initNewData();
    PAGE_MODE = 'add';
    CURRENT_ID = null;
    setPageState('add');
  });
});

// 取消按钮
onClick('btn_cancel', function() {
  closePage();
});

// 表单校验
function validateForm() {
  var errors = [];
  
  if (!getValue('text_name')) {
    errors.push('请输入客户名称');
  }
  if (!getValue('text_phone')) {
    errors.push('请输入联系电话');
  }
  
  if (errors.length > 0) {
    showMessage('error', errors.join('<br>'));
    return false;
  }
  return true;
}

查询指令模板(SQL)

sql
-- ========== 查询指令模板 ==========
-- 指令名:customer_query

SELECT
  c.id,
  c.code,
  c.name,
  c.phone,
  c.email,
  c.address,
  c.level,
  c.is_active,
  c.create_time,
  c.create_user
FROM t_customer c
WHERE 1=1
  AND (@keyword IS NULL OR c.name LIKE '%' + @keyword + '%' OR c.code LIKE '%' + @keyword + '%')
  AND (@phone IS NULL OR c.phone LIKE '%' + @phone + '%')
  AND (@level IS NULL OR c.level = @level)
  AND (@is_active IS NULL OR c.is_active = @is_active)
  AND (@start_date IS NULL OR c.create_time >= @start_date)
  AND (@end_date IS NULL OR c.create_time <= DATEADD(DAY, 1, @end_date))
ORDER BY c.create_time DESC

保存指令模板(SQL)

sql
-- ========== 保存指令模板 ==========
-- 指令名:customer_save

IF @mode = 'add'
BEGIN
  -- 新增
  INSERT INTO t_customer (
    code, name, phone, email, address, level, is_active,
    create_time, create_user
  ) VALUES (
    @code, @name, @phone, @email, @address, @level, @is_active,
    GETDATE(), @currentUser
  )
  
  SELECT SCOPE_IDENTITY() AS id
END
ELSE
BEGIN
  -- 更新
  UPDATE t_customer SET
    name = @name,
    phone = @phone,
    email = @email,
    address = @address,
    level = @level,
    is_active = @is_active,
    update_time = GETDATE(),
    update_user = @currentUser
  WHERE id = @id
  
  SELECT @id AS id
END

删除指令模板(SQL)

sql
-- ========== 删除指令模板 ==========
-- 指令名:customer_delete

-- 逻辑删除
UPDATE t_customer SET
  is_deleted = 1,
  update_time = GETDATE(),
  update_user = @currentUser
WHERE id IN (SELECT value FROM dbo.split(@ids, ','))

-- 或者物理删除
-- DELETE FROM t_customer WHERE id IN (SELECT value FROM dbo.split(@ids, ','))

主从表模板

编辑页核心代码

javascript
// 加载主表数据
function loadMasterData(id) {
  execute('order_get', { id: id }, function(result) {
    if (result.data) {
      setFormData('form_main', result.data);
      loadDetailData(id);
    }
  });
}

// 加载明细数据
function loadDetailData(orderId) {
  execute('order_detail_query', { order_id: orderId }, function(result) {
    setTableData('table_detail', result.data);
    calculateTotal();
  });
}

// 新增明细行
onClick('btn_add_detail', function() {
  addTableRow('table_detail', {
    id: '',
    product_id: '',
    product_name: '',
    quantity: 1,
    unit_price: 0,
    amount: 0
  });
});

// 删除明细行
onClick('btn_delete_detail', function() {
  var rows = getTableSelectedRows('table_detail');
  if (rows.length === 0) {
    showMessage('warning', '请选择要删除的明细');
    return;
  }
  removeTableRows('table_detail', rows);
  calculateTotal();
});

// 计算总金额
function calculateTotal() {
  var rows = getTableData('table_detail');
  var total = 0;
  rows.forEach(function(row) {
    total += Number(row.amount) || 0;
  });
  setValue('num_total', total);
}

// 保存
onClick('btn_save', function() {
  if (!validateForm()) return;
  
  var master = getFormData('form_main');
  var details = getTableData('table_detail');
  
  execute('order_save', {
    master: master,
    details: details,
    mode: PAGE_MODE
  }, function(result) {
    showMessage('success', '保存成功');
    CURRENT_ID = result.id;
    PAGE_MODE = 'edit';
  });
});

报表查询模板

javascript
// 查询
onClick('btn_search', function() {
  var params = getFormData('form_search');
  execute('report_sales_query', params, function(result) {
    setTableData('table_report', result.data);
    renderChart(result.data);
    calculateSummary(result.data);
  });
});

// 计算汇总
function calculateSummary(data) {
  var totalAmount = 0;
  var totalQty = 0;
  data.forEach(function(row) {
    totalAmount += Number(row.amount) || 0;
    totalQty += Number(row.quantity) || 0;
  });
  setValue('text_summary', '销售总额:' + formatAmount(totalAmount) + ' 元,总数量:' + totalQty);
}

// 导出
onClick('btn_export', function() {
  var params = getFormData('form_search');
  exportData('report_sales_query', params, '销售报表');
});

// 打印
onClick('btn_print', function() {
  printTable('table_report', '销售报表');
});

自定义模板

开发者可以保存自己的代码作为模板:

javascript
// 保存自定义模板
saveCodeTemplate({
  name: '我的单据模板',
  category: '自定义',
  files: [
    { name: '列表页.js', content: '...' },
    { name: '编辑页.js', content: '...' }
  ],
  description: '我常用的业务单据模板'
});

// 获取自定义模板列表
var myTemplates = getCodeTemplates();

注意事项

  1. 使用模板前建议先了解模板的结构和约定
  2. 模板中的表名、字段名需要根据实际业务修改
  3. 复杂业务建议在模板基础上进行修改,而不是完全依赖模板
  4. 建议定期备份自定义的代码模板
  5. 模板生成后建议先在测试环境验证功能

基于 MIT 许可发布