Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Coding
wcs-add-frontend-page
Try itAdd frontend pages to WCS (Warehouse Control System) applications
What it does
�?(Vue2 + Element UI + vxe-table 后台管理前端)里新增一个业务列表页面, 包含查询、表格展示、操作列(编�?更新状�?删除),可选新�?导入/导出,并接好路由与中�?英文国际化�? 这个技能的核心不是发明新写法,而是**严格复用现有页面的模�?*——因为审查者和其他开发者会按现有页面的样子来读这段代码。跳�?抄现有页�?这一步,写出来的代码会在风格、目录结构、接口调用方式上跟仓库其它部分不一致�? 何时缺信息要主动提问
The skill document
WCS 新增前端页面
�?apps/wcs(Vue2 + Element UI + vxe-table 后台管理前端)里新增一个业务列表页面,
包含查询、表格展示、操作列(编�?更新状�?删除),可选新�?导入/导出,并接好路由与中�?英文国际化�?
这个技能的核心不是发明新写法,而是**严格复用现有页面的模�?*——因为审查者和其他开发者会按现有页面的样子来读这段代码。跳�?抄现有页�?这一步,写出来的代码会在风格、目录结构、接口调用方式上跟仓库其它部分不一致�?
何时缺信息要主动提问
在开始写代码之前,先确认下面几件事——它们无法从需求文字里稳妥地猜出来,猜错的成本是返工:
- 更新/删除接口的调用方�?:id 是拼�?URL 路径末尾(如
/update/{id}、/delete/{id},仓库里绝大多数模块是这种),还是放�?query string,还是放进请求体?如果用户给的接口地址�?没有�?id 拼在路径里(比如只给�?/xxx/update�?/xxx/delete),必须�?question工具向用户确认,不要自己猜——参考本仓库现有agvLocation、urlConfig、pouInfo等模块,惯例都是 id 拼在路径末尾�?2. 枚举字段的数据来�?*:字段是普通输入框,还是走getBatchDatadictionaryDetail数据字典(用户通常会明确给�?dictionary key,比�?binTaskStatus、scanerNos)�?3. 如果同名/同路径的页面、API 文件、路由或 i18n key 已经存在(包�?git status里显示为"已删除但未提�?的文件),要先弄清楚�?*新建还是恢复/修改现有实现**,避免重复劳动或冲突。用git log --oneline --�?git show HEAD:可以找到历史版本�?
工作流程
1. 找到并读懂参考页�?
用户通常会指定一个参考页面(例如 binTrace/index.vue 查询类页面,pouInfo/index.vue 增删改查+导入导出页面,mlsInOutTasks/index.vue 多操作下拉页面)。用 Read 工具把它们完整读一遍,同时读它们对应的 API 文件(apps/wcs/src/api//index.js)�?
关注这些点:
- 页面整体结构:
updowspanel包了slot="up"(vxe-form查询条件 + 按钮)和slot="down"(vxe-toolbar+vxe-table+vxe-pager)�?- 查询表单字段类型:纯文本�?el-input;多选可输入下拉�?el-select multiple filterable allow-create�?el-option;日期范围用el-date-picker type="datetimerange"�?- 分页参数:请求体里附�?SkipCount/MaxResultCount(注意大写开头,是这个仓库的既有拼写习惯),而不�?skipCount/maxResultCount�?- 操作列:el-dropdown+el-dropdown-menu里放多个el-dropdown-item,每个绑@click.native="handleXxx(row)"�?- 新建/编辑弹窗:一�?el-dialog+vxe-form ref="editForm"+editRules,靠dialogType('add'/'edit')区分新建和编辑逻辑�?- 删除:用this.$confirm(...)弹二次确认,确认后调用删除接口�?- 导入:复�?@/components/UploadExcel组件,走beforeUpload�?onSuccess校验 �?onSubmitImport批量创建�?- 导出:调�?export接口�?blob,用URL.createObjectURL触发浏览器下载,文件名带时间戳�? 如果需求里出现字典枚举(比�?status、direction),检查这�?dictionary key 是否已经在别的页面用过(�?grep�?names: \[.*.*\]),确认拼写完全一致——这个仓库里字典 key 经常有历史遗留的"不完全规�?拼写(例�?scanerNos少了一�?n),照抄比自己纠正更安全�?
2. 新建 API 模块
路径:apps/wcs/src/api//index.js(featureName �?camelCase,跟页面路由名对应,比如 binTask、nodeGraph)�?
统一�?@/utils/request,所有方法都�?method: 'post'(这个仓库里没有�?GET/PUT/DELETE 动词的惯例,即使语义上是删除也用 POST):
import request from '@/utils/request'
export function gets(params) {
return request({
url: '/api/wcs//getList',
method: 'post',
data: params
})
}
export function create(params) {
return request({
url: '/api/wcs//create',
method: 'post',
data: params
})
}
export function update(id, params) {
return request({
url: `/api/wcs//update/${id}`,
method: 'post',
data: params
})
}
export function delete(id) {
return request({
url: `/api/wcs//delete/${id}`,
method: 'post'
})
}
export function batchCreates(params) {
return request({
url: '/api/wcs//batch-create',
method: 'post',
data: params
})
}
export function exports(params) {
return request({
url: '/api/wcs//export',
method: 'post',
data: params,
responseType: 'blob'
})
}
只暴露需求里实际要用到的方法——不要因�?参考页面全都有"就把新建/导入/导出也加上,如果用户只要查询+更新+删除�?
3. 新建页面组件
路径:apps/wcs/src/views/awcs//index.vue�?
组件骨架直接照抄参考页面,然后按需求改�?- name 用大驼峰(BinTask、NodeGraph)�?- searchform 字段跟后端查询参数一一对应;日期范围类页面记得�?created() 里默认填最�?N 天(参�?binTrace:moment(nowTime - offsetTimeEnd).format('YYYY-MM-DDT00:00:00'))�?- 表格列:接口返回字段里除�?id,全部展示;枚举字段用一�?changeText(val, arr, label, value) helper 把值翻译成 label 显示�?- 弹窗表单字段�?vxe-form-item + field �?editRules 里的校验规则�?- 所有异步操作都要有 loading 态(editLoading/loading)和成功/失败�?this.$message 提示�?
写完后用 Read 工具通读一次,确认�?- import 路径、函数名跟第 2 步新建的 API 模块一致�?- 没有遗留没用到的 import(比如没有导入功能就�?import UploadExcel)�?- `` 别漏�?
4. 注册路由
编辑 apps/wcs/src/router/modules/businessManagement.js,在 children 数组里靠近同类页面的位置插入一段:
{
path: '',
component: () => import('@/views/awcs//index'),
name: '',
meta: {
title: 'route.',
icon: 'el-icon-s-order',
policy: 'AbpDataDictionary.Default',
noCache: false
}
},
�?Edit 工具做定点插�?不要整段重写文件——这个文件里有大量被注释掉的历史路由,直接重写容易误删�?
5. 配置国际�?
编辑 apps/wcs/src/lang/zh.js,在 route: { ... } 对象里加一行:
: '<中文页面标题>',
同时检�?apps/wcs/src/lang/en.js 是否有同�?route 对象;如果这个仓库对同类页面保持了中英文同步(多数情况是这样),顺手补一条英文翻译,保持两个文件�?key 集合一致,即使用户没有明确要求——避免以后英文语言包缺 key �?undefined�?
�?Edit 工具做定点插入,插在语义相近的已�?key 旁边(比如放在同一�?新增功能路由"分割线附近),不要另起一段孤立的新分组�?
6. 收尾检�?
- �?
grep确认新建�?api 函数名、路�?name、i18n key 在全仓库范围内没有跟别的模块重名冲突�?- 如果本地能跑 eslint(依赖装好的情况下)执行一�?lint;如果因�?eslint-plugin-vue缺失等环境问题跑不起来,说明是环境问题,改用Read工具通读改动文件做人工二次核对代替�?- �?git status/git diff过一遍最终改动,确认没有意外改坏无关代码(尤其是路由文件里那一大段注释掉的历史路由要保持原样)�?- 简要总结新建的文件列表、路�?path/name、i18n key,回复用户�?
常见�?
- **分页字段大小�?:这个仓库的分页参数�?
SkipCount/MaxResultCount(大写开头),不是常见的skipCount/maxResultCount;照抄参考页面即可,不要�?OpenAPI 文档里的小写字段名去写�?- 删除接口也是 POST:不要因为语义是删除就写method: 'delete'�?- 不要重复造字�?key:新枚举字段如果没有现成 dictionary key,如实告诉用�?这个字段没有走字典,前端只是原样展示/输入",不要凭空发明一个字�?key 名称�?- **路由文件里大量注释代�?:那是历史遗留,插入新路由时保持它们不动,只在合适的位置追加�?- 同名文件可能已存在于 git 历史但被删除:先�?git status看有没有相关文件�?deleted状态,�?git log --oneline --查历史,避免把别人已经做过的实现当成全新需求重新写一遍、风格却对不上�?
Related skills
Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Write, debug, and tune Playwright specs with locator strategy, trace diagnosis, and CI-aware timeouts.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
More from paudyyin
Browse all skills长链任务执行skill — 被skill-router调用,负责复杂任务的调度、spawn子代理、Hat系统编排和收尾检查
沪深300多因子投研系统 v6.0 — 多策略量化选股平台。每当用户要求分析A股、沪深300、 多因子选股、投研日报、股票评分、个股基本面/技术面分析时,必须使用此技能。 新增9大策略体系:宽基指增(沪深300/500/1000)、主动量化(多策略复合/空气指增/成长期优选)、 高频量价(16因子月频/周频)、特...
Measure bottlenecks then optimize for performance
为幻灯片、文档、报告、HTML页面等应用专业主题配色和字体。 内置10套精选主题,也可以按需生成自定义主题。当用户说"换个配色"、 "美化这个文档"、"选个专业的字体"、"生成一套主题"时使用。
Connect to the EvoMap AI agent marketplace. Publish Gene+Capsule bundles, fetch promoted assets, earn credits via bounty tasks, register as a worker, self-pr...
Threat-model and harden applications against security vulnerabilities