Merge remote-tracking branch 'origin/master'
对比新文件 |
| | |
| | | # 测试环境:只在打包时使用 |
| | | NODE_ENV=production |
| | | |
| | | VITE_DEV=false |
| | | |
| | | # 请求路径 |
| | | VITE_BASE_URL='http://10.50.37.62' |
| | | |
| | | # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 |
| | | VITE_UPLOAD_TYPE=server |
| | | |
| | | # 接口地址 |
| | | VITE_API_URL=/admin-api |
| | | |
| | | # 是否删除debugger |
| | | VITE_DROP_DEBUGGER=true |
| | | |
| | | # 是否删除console.log |
| | | VITE_DROP_CONSOLE=true |
| | | |
| | | # 是否sourcemap |
| | | VITE_SOURCEMAP=false |
| | | |
| | | # 打包路径 |
| | | VITE_BASE_PATH=/plat |
| | | |
| | | # 数据采集服务所在服务器,映射截图图片用 |
| | | VITE_VIDEO_CAMERA_DOMAIN='10.50.37.62' |
| | | |
| | | # 输出路径 |
| | | VITE_OUT_DIR=plat |
| | | |
| | | # 公共静态文件路径 |
| | | VITE_STATIC_DIR=/plat/ |
| | | |
| | | # 验证码的开关 |
| | | VITE_APP_CAPTCHA_ENABLE=false |
| | |
| | | node_modules |
| | | .DS_Store |
| | | dist |
| | | plat |
| | | dist-ssr |
| | | /dist* |
| | | pnpm-debug |
| | |
| | | "build:test": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode test", |
| | | "build:stage": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode stage", |
| | | "build:prod": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode prod", |
| | | "build:ansteel": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode ansteel", |
| | | "serve:dev": "vite preview --mode dev", |
| | | "serve:prod": "vite preview --mode prod", |
| | | "preview": "pnpm build:local && vite preview", |
| | |
| | | } |
| | | |
| | | export const modelRun = (params) => { |
| | | return request.post({ url: '/model/mpk/api/test', data: params }) |
| | | return request.post({ url: '/model/mpk/api/test', data: params, timeout: 20 * 60 * 1000 }) |
| | | } |
| | | |
| | | export const saveModel = (data) => { |
| | |
| | | |
| | | const formRules = reactive<FormRules>({ |
| | | pyName: [ |
| | | {required: true, message: '模型名称不能为空,请上传模型文件', trigger: 'blur'} |
| | | {required: true, message: '模型名称不能为空,请上传模型文件', trigger: 'blur'}, |
| | | { validator: (rule, value, callback) => { |
| | | if (value && value.includes('_')) { |
| | | callback(new Error('模型名称不能包含下划线')); |
| | | } else { |
| | | callback(); |
| | | }}, trigger: 'blur' } |
| | | ], |
| | | pyChineseName: [ |
| | | {required: true, message: '模型中文名称不能为空', trigger: 'blur'} |
| | |
| | | <div class="his-body"> |
| | | <div class="his-body-left"> |
| | | <div class="his-body-tree"> |
| | | <el-input |
| | | v-model="filterText" |
| | | class="mb-2" |
| | | placeholder="Filter" |
| | | /> |
| | | <el-tree |
| | | :data="treeData" |
| | | show-checkbox |
| | | node-key="id" |
| | | ref="tree" |
| | | ref="treeRef" |
| | | highlight-current |
| | | :props="defaultProps" |
| | | :filter-node-method="filterNode" |
| | | @check="onCheckTree"/> |
| | | </div> |
| | | </div> |
| | |
| | | {{ calRateForm.preCumulant }} |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-form-item label="平均绝对误差:" label-width="110px"> |
| | | {{ calRateForm.deviation }} |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="4"> |
| | |
| | | <el-col :span="4"> |
| | | <el-form-item label="真实累积量:"> |
| | | {{ calRateForm.realCumulant }} |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-form-item label="累积量平均绝对误差:" label-width="152px"> |
| | | {{ calRateForm.deviationCumulant }} |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | itemPreMax: 0, |
| | | itemPreMin: 0, |
| | | preCumulant: 0, |
| | | realCumulant: 0 |
| | | realCumulant: 0, |
| | | deviation: 0, //平均绝对误差 |
| | | deviationCumulant: 0, //累积量平均绝对误差 |
| | | }) |
| | | let itemData = ref({ |
| | | currentTreeList: [], |
| | |
| | | IN_DEVIATION: [{required: true, message: '精准度偏差不能为空', trigger: 'blur'}], |
| | | OUT_DEVIATION: [{required: true, message: '不可信率偏差不能为空', trigger: 'blur'}], |
| | | }) |
| | | |
| | | // 树形过滤 |
| | | const filterText = ref('') |
| | | const treeRef = ref() |
| | | watch(filterText, (val) => { |
| | | treeRef.value!.filter(val) |
| | | }) |
| | | const filterNode = (value: string, data) => { |
| | | if (!value) return true |
| | | return data.label.includes(value) |
| | | } |
| | | |
| | | /** 查询列表 */ |
| | | const getList = async (isClear = true) => { |
| | |
| | | calRateForm.value.itemMin = dataView.hisMin; |
| | | calRateForm.value.itemAvg = dataView.hisAvg; |
| | | calRateForm.value.realCumulant = dataView.hisCumulant; |
| | | calDeviation(dataView.realData,dataView.preDataL,'deviation') |
| | | calDeviation(dataView.cumulantRealData,dataView.cumulantPreData,'deviationCumulant') |
| | | } |
| | | calAccuracyRate() |
| | | } |
| | |
| | | calRateForm.value.IN_ACCURACY_RATE = Number(rateIn); |
| | | calRateForm.value.OUT_ACCURACY_RATE = Number(rateOut); |
| | | loading2.value = false; |
| | | } |
| | | |
| | | function calDeviation(realData,preDataL,key) { |
| | | if (realData == null || preDataL == null || realData.length === 0 || preDataL.length === 0) { |
| | | return; |
| | | } |
| | | const realObj = {} |
| | | realData.map(e => realObj[e[0]] = e[1]) |
| | | |
| | | let sum = 0; |
| | | let index = 0; |
| | | preDataL.forEach(e => { |
| | | if (realObj[e[0]] != undefined) { |
| | | sum += Math.abs(e[1] - realObj[e[0]]) |
| | | index++ |
| | | } |
| | | }) |
| | | calRateForm.value[key] = Number((sum / index).toFixed(2)) |
| | | } |
| | | |
| | | function rightSearchDataByRange() { |
| | |
| | | itemPreMax: 0, |
| | | itemPreMin: 0, |
| | | preCumulant: 0, |
| | | realCumulant: 0 |
| | | realCumulant: 0, |
| | | deviation: 0, //平均绝对误差 |
| | | deviationCumulant: 0, //累积量平均绝对误差 |
| | | } |
| | | calRateFormRef.value?.resetFields() |
| | | } |