文件
yjyf/server/application/admin/view/wechat/autoreply/add.html
linda 376ce7b5c9 feat(api): 全链路后端 + 数据库设计 + E2E 测试(65 项断言全通过)
数据库:
- db/schema_phase1.sql  16 张业务表(类目/服务/地址/师傅/订单/流水/取证/报价/评价/券/钱包/提现/结算/消息)
- db/seed_phase1.sql    15 类目 + 32 服务项目 + 新人券(幂等)

后端 API (application/api/controller):
- Base/Auth/Home/Address/Order/Master/Review
- app/common/library/OrderStatus  11 状态机 + 流转矩阵
- application/api/common.php  PHP 8.5 兼容垫片(E_DEPRECATED 不再升级为异常)

测试:
- tests/e2e_flow.js  用户下单→支付→师傅抢单→履约→验收→结算→评价 全链路 65 项断言
- 含异常用例:越权/重复操作/非法状态流转/2h 未联系自动回流
2026-10-28 15:45:51 +08:00

52 行
2.7 KiB
HTML
可执行文件

<link href="__CDN__/assets/addons/wechat/css/menu.css?v={$site.version|htmlentities}" rel="stylesheet">
<style>
.clickbox {margin:0;text-align: left;}
.create-click {
margin-left:0;
}
</style>
<form id="add-form" class="form-horizontal form-ajax" role="form" data-toggle="validator" method="POST" action="">
<div class="form-group">
<label for="c-title" class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
<div class="col-xs-12 col-sm-8">
<input type="text" name="row[title]" value="" id="c-title" class="form-control" data-rule="required" />
</div>
</div>
<div class="form-group">
<label for="c-text" class="control-label col-xs-12 col-sm-2">{:__('Text')}:</label>
<div class="col-xs-12 col-sm-8">
<input type="text" name="row[text]" value="" id="c-text" class="form-control" placeholder="支持正则表达式" data-rule="required; remote(wechat/autoreply/check_text_unique)" />
</div>
</div>
<div class="form-group">
<label for="c-eventkey" class="control-label col-xs-12 col-sm-2">{:__('Event key')}:</label>
<div class="col-xs-12 col-sm-8">
<input type="hidden" name="row[eventkey]" id="c-eventkey" class="form-control" value="" data-rule="required" readonly />
<div class="clickbox">
<span class="create-click"><a href="{:url('wechat.response/select')}" id="select-resources"><i class="weixin-icon big-add-gray"></i><strong>选择现有资源</strong></a></span>
<span class="create-click"><a href="{:url('wechat.response/add')}" id="add-resources"><i class="weixin-icon big-add-gray"></i><strong>添加新资源</strong></a></span>
</div>
</div>
</div>
<div class="form-group">
<label for="c-remark" class="control-label col-xs-12 col-sm-2">{:__('Remark')}:</label>
<div class="col-xs-12 col-sm-8">
<input type="text" name="row[remark]" value="" id="c-remark" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
<div class="col-xs-12 col-sm-8">
{:build_radios('row[status]', ['normal'=>__('Normal'), 'hidden'=>__('Hidden')])}
</div>
</div>
<div class="form-group hide layer-footer">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8">
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
</div>
</div>
</form>