Commit a774cff2 by liangjianmin

cursor

parent 0557f509
# API 集成规范
## HTTP 请求封装
使用项目中的 [src/ajax/index.js](mdc:src/ajax/index.js) 封装的 `$http` 方法:
```javascript
// 基本请求格式
this.$http(method, url, param, loading, responseType)
// 示例
this.$http('GET', '/api/goods/list', {page: 1, limit: 10})
.then(res => {
if (res.code === 0) {
this.tableData = res.data.data;
this.total = res.data.total;
} else {
this.$message({
message: res.msg,
type: 'warning'
});
}
});
```
## 环境配置
- **开发环境**: `http://cloud.liexindev.net`
- **测试环境**: `http://cloud.liexindev.net`
- **生产环境**: `//cloud.ichunt.com`
- **消息系统**: 根据环境自动切换
## 认证机制
- **Token 获取**: `Util.getCookie('token')`
- **请求头**: `Authorization: Bearer ${token}`
- **登录拦截**: 在 [src/main.js](mdc:src/main.js) 中配置路由守卫
## 标准响应格式
```javascript
{
code: 0, // 0表示成功,其他表示失败
msg: "success", // 消息提示
data: { // 业务数据
data: [], // 列表数据
total: 100, // 总数
page: 1, // 当前页
limit: 10 // 每页数量
}
}
```
## 错误处理
- **统一拦截**: 在 axios 拦截器中处理
- **Token 失效**: 自动跳转到登录页
- **网络错误**: 显示统一错误提示
- **业务错误**: 根据 `code` 字段判断
## 常用 API 模式
### 列表查询
```javascript
getData() {
var params = {
page: this.page,
limit: this.limit,
...this.formParam
};
this.$http('GET', '/api/goods/list', params)
.then(res => {
if (res.code === 0) {
this.tableData = res.data.data;
this.total = res.data.total;
}
});
}
```
### 数据提交
```javascript
handleSubmit() {
this.$http('POST', '/api/goods/add', this.formData)
.then(res => {
if (res.code === 0) {
this.$message({
message: '操作成功',
type: 'success'
});
this.dialogVisible = false;
this.getData();
}
});
}
```
### 文件上传
```javascript
// 使用 Element UI 的 Upload 组件
uploadUrl: NODE_ENVS + '/api/uploadSku/import',
uploadHeaders: {
'Authorization': 'Bearer ' + Util.getCookie('token')
},
handleUploadSuccess(response) {
if (response.code === 0) {
this.$message({
message: '上传成功',
type: 'success'
});
this.getData();
}
}
```
## 数据处理工具
- **查询字符串**: 使用 `qs` 库处理参数序列化
- **日期处理**: 使用项目中的过滤器和格式化函数
- **数据验证**: 使用 Element UI 的表单验证规则
## 性能优化
- **请求缓存**: 合理使用浏览器缓存
- **防抖节流**: 对频繁请求进行防抖处理
- **分页加载**: 大数据量使用分页
- **Loading 状态**: 使用统一的 loading 管理
## 业务接口分类
- **认证接口**: `/auth/*` - 登录、权限验证
- **商品接口**: `/api/goods/*` - 商品管理
- **库存接口**: `/api/sku/*` - 库存管理
- **订单接口**: `/api/order/*` - 订单相关
- **上传接口**: `/api/upload/*` - 文件上传
# 芯链云系统业务逻辑
## 核心业务模块
### 1. 商品管理 (src/views/Goods/)
- **商品列表**: [goods.vue](mdc:src/views/Goods/goods.vue) - 商品信息管理
- **品牌管理**: [brand.vue](mdc:src/views/Goods/brand.vue) - 品牌信息维护
- **功能**: 商品上架、下架、编辑、品牌分类管理
### 2. 库存管理 (src/views/Store/)
- **库存上传**: [enter.vue](mdc:src/views/Store/enter.vue) - SKU批量上传
- **库存列表**: [list.vue](mdc:src/views/Store/list.vue) - 库存查询和管理
- **库存详情**: [listDetail.vue](mdc:src/views/Store/listDetail.vue) - 单个SKU详情
- **商品列表**: [goodslist.vue](mdc:src/views/Store/goodslist.vue) - 商品库存展示
- **功能**: 批量上传、价格修改、库存调整、交期管理
### 3. 询报价管理 (src/views/List/)
- **询价列表**: [inquire.vue](mdc:src/views/List/inquire.vue) - 客户询价管理
- **询价详情**: [inquireDetail.vue](mdc:src/views/List/inquireDetail.vue) - 询价单详情
- **报价管理**: [quote.vue](mdc:src/views/List/quote.vue) - 供应商报价
- **功能**: 询价单处理、报价提交、价格对比
### 4. 订单追踪 (src/views/OrderTrack/)
- **订单商品**: [goods.vue](mdc:src/views/OrderTrack/goods.vue) - 订单商品管理
- **订单详情**: [goodsDetail.vue](mdc:src/views/OrderTrack/goodsDetail.vue) - 订单详情查看
- **发票管理**: [invoice.vue](mdc:src/views/OrderTrack/invoice.vue) - 发票信息
- **采购单**: [purAdd.vue](mdc:src/views/OrderTrack/purAdd.vue) - 采购单创建
- **退货管理**: [returnGoods.vue](mdc:src/views/OrderTrack/returnGoods.vue) - 退货处理
### 5. 寄售管理 (src/views/consignmentManagement/)
- **寄售申请**: [consignmentApplication.vue](mdc:src/views/consignmentManagement/consignmentApplication.vue)
- **寄售导入**: [consignmentImport.vue](mdc:src/views/consignmentManagement/consignmentImport.vue)
- **寄售库存**: [consignmentInventory.vue](mdc:src/views/consignmentManagement/consignmentInventory.vue)
- **寄售召回**: [consignmentRecall.vue](mdc:src/views/consignmentManagement/consignmentRecall.vue)
- **批量召回**: [batchRecall.vue](mdc:src/views/consignmentManagement/batchRecall.vue)
### 6. 账单管理 (src/views/billManagement/)
- **应付账单**: [allPayableBills.vue](mdc:src/views/billManagement/allPayableBills.vue)
- **对账单**: [reconciledBill.vue](mdc:src/views/billManagement/reconciledBill.vue)
- **文件管理**: [fileManagement.vue](mdc:src/views/billManagement/fileManagement.vue)
## 业务流程
### 库存上传流程
1. 下载模板文件 (CSV格式)
2. 填写商品信息 (型号、品牌、数量、价格、交期)
3. 上传文件到系统
4. 系统验证和处理数据
5. 商品自动上架到猎芯网
### 询报价流程
1. 系统接收客户询价单
2. 根据库存匹配推送给供应商
3. 供应商查看询价详情
4. 提交报价信息
5. 系统比较各供应商报价
6. 确定最终供应商和价格
### 订单处理流程
1. 询价转换为正式订单
2. 生成采购单
3. 供应商确认订单
4. 商品发货
5. 开具发票
6. 订单完成
## 权限管理
- **主账户**: 拥有所有功能权限
- **子账户**: 根据角色分配不同权限
- **菜单权限**: 通过 `/api/subAccount/getMenu` 获取
- **操作权限**: 基于用户角色控制功能访问
## 数据统计
- **概况页面**: 显示库存统计、订单转化率
- **热搜排名**: 展示猎芯网热门型号TOP50
- **商机统计**: 统计询价单推送和成交情况
## 消息通知
- **系统消息**: 系统更新、功能公告
- **业务消息**: 询价推送、订单状态变更
- **操作提醒**: 库存不足、价格变动等
## 文件管理
- **上传模板**: 提供标准的CSV/Excel模板
- **导入导出**: 支持批量数据导入导出
- **文件存储**: 统一的文件上传和管理机制
# 芯链云系统编码规范
## JavaScript 代码规范
- **变量声明**: 统一使用 `var` 声明变量,禁止使用 `const` 和 `let`
- **命名规范**: 使用驼峰命名法,命名要清晰有意义
- **ES6+ 特性**: 优先使用箭头函数、模板字符串、解构赋值等现代语法
- **代码简洁性**: 遵循 KISS 原则,避免过度抽象和不必要的嵌套
## Vue 组件规范
- **组件导入**: Element UI 组件按需导入,避免全量引入
- **生命周期**: 使用 `created()` 进行数据初始化
- **数据绑定**: 使用 `v-model` 进行双向绑定
- **事件处理**: 方法名使用动词开头,如 `getData()`, `handleClick()`
## 样式规范
- **预处理器**: 使用 Less 编写样式
- **类命名**: 使用 BEM 命名规范或语义化命名
- **响应式**: 使用 Flex 布局,提供 `.row`, `.column`, `.rowCenter`, `.verCenter` 等工具类
## API 请求规范
- **统一封装**: 使用 `this.$http(method, url, param)` 进行请求
- **错误处理**: 统一在拦截器中处理错误和 loading 状态
- **Token 管理**: 使用 `Util.getCookie('token')` 获取认证信息
## 注释规范
- **函数注释**: 每个函数必须包含功能说明
- **复杂逻辑**: 关键业务逻辑必须添加注释
- **TODO标记**: 使用 `// TODO:` 标记待完成功能
## 性能要求
- **响应时间**: 目标响应时间 ≤ 5000ms
- **资源优化**: 合理使用 keep-alive 缓存组件
- **按需加载**: 路由和组件支持懒加载
## 示例代码风格
```javascript
// 正确的变量声明和函数定义
var tableData = [];
var dialogVisible = false;
// 使用箭头函数和模板字符串
var handleSuccess = (response) => {
this.$message({
message: `操作成功,共处理 ${response.data.count} 条数据`,
type: 'success'
});
};
// 按需导入 Element UI 组件
import {Button, Dialog, Form, FormItem, Input, Message, Table, TableColumn} from 'element-ui';
Vue.use(Button).use(Dialog).use(Form).use(FormItem).use(Input).use(Table).use(TableColumn);
```
# 开发工作流程
## 项目启动
```bash
# 安装依赖
npm install
# 开发环境启动
npm run dev
# 测试环境构建
npm run build-test
# 生产环境构建
npm run build
```
## 开发环境配置
- **开发服务器**: 端口 8080
- **代理配置**: 自动代理 `/auth` 和 `/api` 请求
- **热重载**: 支持代码修改后自动刷新
- **ESLint**: 已关闭 (`lintOnSave: false`)
## 文件组织规范
- **页面组件**: 放在 `src/views/` 下按业务模块分类
- **公共组件**: 放在 `src/components/` 下
- **工具函数**: 放在 `src/tool/` 下
- **样式文件**: 按模块放在 `src/assets/css/` 下
- **静态资源**: 放在 `public/` 目录
## 版本控制
- **分支命名**: `feature/模块名/日期_功能描述`
- **提交信息**: 使用中文描述,格式清晰
- **代码审查**: 重要功能需要代码审查
## 调试技巧
- **Vue DevTools**: 使用浏览器扩展调试 Vue 组件
- **网络请求**: 在浏览器开发者工具中查看 API 请求
- **控制台日志**: 使用 `console.log` 进行调试
- **断点调试**: 在关键代码处设置断点
## 性能优化
- **组件缓存**: 使用 `keep-alive` 缓存不需要重新渲染的组件
- **路由懒加载**: 大型组件使用动态导入
- **图片优化**: 压缩图片资源,使用适当格式
- **代码分割**: 合理使用 webpack 的代码分割功能
## 部署流程
1. **本地测试**: 确保功能正常
2. **构建打包**: 运行 `npm run build`
3. **文件上传**: 将 `view/` 目录上传到服务器
4. **环境验证**: 在目标环境验证功能
5. **回滚准备**: 保留上一版本以便回滚
## 常见问题解决
- **跨域问题**: 在 `vue.config.js` 中配置代理
- **路由问题**: 检查路由配置和权限设置
- **样式问题**: 确认 Less 编译和 CSS 作用域
- **API 问题**: 检查请求参数和响应格式
## 开发工具推荐
- **IDE**: VS Code 或 WebStorm
- **浏览器**: Chrome 或 Firefox(支持 Vue DevTools)
- **接口测试**: Postman 或 Insomnia
- **版本控制**: Git + 可视化工具
## 代码质量保证
- **代码规范**: 遵循项目编码规范
- **功能测试**: 新功能必须经过完整测试
- **兼容性**: 确保主流浏览器兼容性
- **性能监控**: 关注页面加载速度和响应时间
# 芯链云系统项目结构指南
## 技术栈
- **前端框架**: Vue 2.6.11 + Vue Router 3.2.0
- **UI组件库**: Element UI 2.15.13
- **HTTP请求**: Axios 0.21.1
- **样式预处理**: Less 3.0.4
- **图表库**: ECharts 5.4.2
- **构建工具**: Vue CLI 4.5.19
## 核心文件结构
- **主入口**: [src/main.js](mdc:src/main.js) - 应用初始化和全局配置
- **路由配置**: [src/router/index.js](mdc:src/router/index.js) - 路由定义
- **HTTP封装**: [src/ajax/index.js](mdc:src/ajax/index.js) - API请求封装
- **工具函数**: [src/tool/index.js](mdc:src/tool/index.js) - 通用工具方法
- **全局样式**: [src/assets/css/public/common.min.css](mdc:src/assets/css/public/common.min.css)
- **图标字体**: [src/assets/css/font/iconfont.css](mdc:src/assets/css/font/iconfont.css)
## 业务模块
- **商品管理**: `src/views/Goods/` - 商品和品牌管理
- **库存管理**: `src/views/Store/` - 库存上传、列表、详情
- **询报价**: `src/views/List/` - 询价和报价管理
- **订单追踪**: `src/views/OrderTrack/` - 订单跟踪和发票
- **寄售管理**: `src/views/consignmentManagement/` - 寄售相关功能
- **账单管理**: `src/views/billManagement/` - 财务账单
- **消息管理**: `src/views/Info/` - 消息和子账户
- **用户中心**: `src/views/User/` - 登录和用户相关
## 环境配置
- **开发环境**: http://cloud.liexindev.net
- **测试环境**: http://cloud.liexindev.net
- **生产环境**: //cloud.ichunt.com
- **配置文件**: [vue.config.js](mdc:vue.config.js)
# Vue 组件开发模式
## 组件结构模板
```vue
<template>
<div class="component-name">
<!-- 组件内容 -->
</div>
</template>
<script>
import Vue from 'vue';
import {Button, Dialog, Form, Message} from 'element-ui';
Vue.prototype.$message = Message;
Vue.use(Button).use(Dialog).use(Form);
export default {
name: "ComponentName",
data() {
return {
// 数据属性
};
},
created() {
// 初始化方法
},
methods: {
// 组件方法
}
}
</script>
<style lang="less" scoped>
// 组件样式
</style>
```
## 数据管理模式
- **表格数据**: 使用 `tableData`, `total`, `limit`, `page` 标准命名
- **弹窗状态**: 使用 `dialogVisible` 系列命名
- **表单数据**: 使用 `formParam` 或具体业务名称
- **选择数据**: 使用 `multipleSelection` 存储多选数据
## 常用业务模式
### 列表页面模式
```javascript
data() {
return {
total: 0,
limit: 10,
page: 1,
tableData: [],
formParam: {
// 搜索参数
},
multipleSelection: []
};
},
created() {
this.getData();
},
methods: {
getData() {
// 获取列表数据
},
handleSearch() {
// 搜索处理
},
handleSelectionChange(selection) {
this.multipleSelection = selection;
}
}
```
### 弹窗表单模式
```javascript
data() {
return {
dialogVisible: false,
formData: {},
rules: {
// 验证规则
}
};
},
methods: {
handleAdd() {
this.dialogVisible = true;
this.formData = {};
},
handleEdit(row) {
this.dialogVisible = true;
this.formData = {...row};
},
handleSubmit() {
this.$refs.form.validate((valid) => {
if (valid) {
// 提交逻辑
}
});
}
}
```
## Element UI 使用规范
- **按需导入**: 只导入使用的组件
- **消息提示**: 使用 `this.$message()` 显示操作结果
- **确认对话框**: 使用 `this.$confirm()` 进行危险操作确认
- **表单验证**: 使用 Element UI 的验证规则
## 路由和导航
- **路由跳转**: 使用 `this.$router.push()` 进行页面跳转
- **参数传递**: 使用 `this.$route.query` 获取查询参数
- **页面缓存**: 在 [src/App.vue](mdc:src/App.vue) 中配置 `excludeComponents`
## 工具函数使用
- **Cookie操作**: 使用 `Util.getCookie()` 和 `Util.setCookie()`
- **新窗口打开**: 使用 `Util.openNewWindow()`
- **HTTP请求**: 使用 `this.$http(method, url, param)`
## 样式编写规范
- **作用域样式**: 使用 `<style lang="less" scoped>`
- **工具类**: 使用全局工具类 `.row`, `.column`, `.rowCenter`, `.verCenter`
- **主题色**: 使用 `.f-blue`, `.f-green`, `.f-red1` 等预定义颜色类
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment