数据模拟 - 基础数据检测
涉及页面
API
| 方法 |
路径 |
说明 |
| POST |
/mock/dataCheck |
检测指定模块的基础数据是否就绪 |
请求参数:
| 参数 |
类型 |
必填 |
说明 |
| modules |
List<String> |
是 |
要检测的模块列表,可选值:sales(销售)、purchase(采购)、quality(质量) |
请求体示例:
json { "modules": ["sales", "purchase", "quality"] }
响应:
json { "code": 200, "msg": "操作成功", "data": { "totalItems": 6, "passedItems": 3, "items": [ { "module": "common", "itemName": "产品数据", "minRequired": 1, "currentCount": 5, "passed": true, "message": "通过" }, { "module": "sales", "itemName": "客户数据", "minRequired": 1, "currentCount": 0, "passed": false, "message": "缺少客户数据,请先在【基础数据-客户管理】中添加至少1条客户" } ] } }
检测规则
销售模块 (sales)
| 检测项 |
最低数量 |
未通过提示 |
| 产品数据 |
1 |
缺少产品数据,请先在【基础数据-产品管理】中添加至少1条产品 |
| 客户数据 |
1 |
缺少客户数据,请先在【基础数据-客户管理】中添加至少1条客户 |
| 报价审批模板 |
1 |
缺少报价审批模板,请先在【系统管理-审批模板】中创建报价审批模板 |
| 发货审批模板 |
1 |
缺少发货审批模板,请先在【系统管理-审批模板】中创建发货审批模板 |
采购模块 (purchase)
| 检测项 |
最低数量 |
未通过提示 |
| 产品数据 |
1 |
缺少产品数据,请先在【基础数据-产品管理】中添加至少1条产品 |
| 供应商数据 |
1 |
缺少供应商数据,请先在【基础数据-供应商管理】中添加至少1条供应商 |
| 采购审批模板 |
1 |
缺少采购审批模板,请先在【系统管理-审批模板】中创建采购审批模板 |
质量模块 (quality)
| 检测项 |
最低数量 |
未通过提示 |
| 产品数据 |
1 |
缺少产品数据,请先在【基础数据-产品管理】中添加至少1条产品 |
| 检测标准 |
1 |
缺少检测标准,请先在【质量管理-检测标准】中创建检测标准 |
| 指标绑定 |
1 |
缺少指标绑定,请先在【质量管理-检测标准绑定】中将检测标准与产品绑定 |
前端修改点
1. 数据模拟页面入口
在左侧菜单新增"数据模拟"菜单项,路由 /mock。
2. 数据检测区域
<template>
<div class="mock-container">
<el-card header="基础数据检测">
<el-checkbox-group v-model="selectedModules">
<el-checkbox label="sales">销售模块</el-checkbox>
<el-checkbox label="purchase">采购模块</el-checkbox>
<el-checkbox label="quality">质量模块</el-checkbox>
</el-checkbox-group>
<el-button type="primary" @click="handleCheck" :loading="checking">
开始检测
</el-button>
</el-card>
<el-card v-if="checkResult" header="检测结果" style="margin-top: 16px">
<el-alert
:title="`通过 ${checkResult.passedItems} / ${checkResult.totalItems} 项`"
:type="checkResult.passedItems === checkResult.totalItems ? 'success' : 'warning'"
:closable="false"
show-icon
/>
<el-table :data="checkResult.items" style="margin-top: 12px">
<el-table-column prop="module" label="模块" width="100" />
<el-table-column prop="itemName" label="检测项" width="160" />
<el-table-column prop="minRequired" label="最低要求" width="80" />
<el-table-column prop="currentCount" label="当前数量" width="80" />
<el-table-column label="状态" width="80">
<template #default="{ row }">
<el-tag :type="row.passed ? 'success' : 'danger'">
{{ row.passed ? '通过' : '未通过' }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="message" label="提示" />
</el-table>
</el-card>
</div>
</template>
3. data 数据
data() {
return {
selectedModules: ['sales', 'purchase', 'quality'],
checking: false,
checkResult: null,
}
}
4. 方法
import request from '@/utils/request'
methods: {
async handleCheck() {
if (this.selectedModules.length === 0) {
this.$message.warning('请至少选择一个模块')
return
}
this.checking = true
try {
const res = await request.post('/mock/dataCheck', {
modules: this.selectedModules
})
this.checkResult = res.data
} finally {
this.checking = false
}
}
}
注意事项
- 产品数据(公共基础)在多个模块间共享,检测结果中只出现一次,不会重复展示
- 检测仅做只读查询,不写入任何数据
- 模块参数为空数组时返回空检测列表
- 建议在数据模拟开始前先调用此接口确认基础数据就绪