文件
fenleixinxi/public/assets/js/backend/fc/area.js
linda 8a39722142 feat(admin): 后台全部字段标题与取值中文化
一、问题(用户反馈「后台字段内容没用中文」)
- 大量字段标题没有中文映射 → __(‘Title’)/__(‘Views’)/__(‘Createtime’) 直接显示英文 key
- 枚举取值显示裸数字/英文:is_paid→0/1、audit_status→0/1/2、pay_type→wxpay、
  订单 status→paid、提现 status→auditing…
- 部分语言包写的是字段注释原文而非标签(如 ‘Audit_status’ => ‘0待审1通过2驳回’)

二、修复(17 个业务模块)
- 语言包 application/admin/lang/zh-cn/fc/*.php 全量补齐字段中文标签
  (key 与 js 里 __('Key') 严格一致;标签为业务可读文案)
- 列表 JS public/assets/js/backend/fc/*.js
  · 枚举/布尔字段统一加 searchList(筛选下拉也是中文)+ 中文 formatter
  · 字段顺序调整:业务关键字段靠前;次要字段 visible:false
  · 长文本用 autocontent、金额加 ¥ 前缀、时间用 datetime 组件
- 取值口径统一(新增 docs/06-后台字段中文化规范.md 沉淀对照表):
  audit_status 待审核/已通过/已驳回、status(订单) 待支付/已支付/已退款/已关闭、
  pay_type 微信支付/余额支付、user_type 个人/商家、level 一级/二级 …

三、回归防护
- 新增 tools/check-admin-i18n.mjs:
  · 扫描 js+视图里的所有 __('Key'),缺失中文映射即报错
  · 校验语言包值含中文(排除照抄英文)
  · 校验已知枚举字段都带 searchList
  口径:全局语言包(zh-cn.php)已覆盖的 Add/Edit/Delete/OK/Operate 等不计缺;
       key 本身是中文时 __() 原样返回,也不计缺

四、验证
- 中文化校验:错误 0,警告 0(17 模块)
- 既有业务按钮全部保留(审核/下架/打款/退款/补单/回复/置顶/举报/余额充值)
- userext 的 JOIN 字段(昵称/手机/余额)保留
2026-10-15 15:55:24 +08:00

63 行
2.5 KiB
JavaScript

define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {
// 初始化表格参数配置
Table.api.init({
extend: {
index_url: 'fc/area/index' + location.search,
add_url: 'fc/area/add',
edit_url: 'fc/area/edit',
del_url: 'fc/area/del',
multi_url: 'fc/area/multi',
import_url: 'fc/area/import',
table: 'fc_area',
}
});
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'sort',
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'name', title: __('Name'), operate: 'LIKE'},
{
field: 'enabled', title: __('Enabled'),
searchList: {0: '否', 1: '是'},
formatter: function (value) {
var m = {0: '否', 1: '是'};
return m[value] !== undefined ? m[value] : '-';
}
},
{field: 'sort', title: __('Sort')},
{field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
{field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime, visible: false},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
});
// 为表格绑定事件
Table.api.bindevent(table);
},
add: function () {
Controller.api.bindevent();
},
edit: function () {
Controller.api.bindevent();
},
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
}
}
};
return Controller;
});