feat(B批缝隙): B3残留catch补齐/B7-1 add成环/B4-5 key/B5-2 scores索引/门禁62-0-0
This commit is contained in:
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
## 2.5.1(2026-09-11)
|
## 2.5.1(2026-09-11)
|
||||||
- B批收尾(2026-09-12):B1门禁三态可信(62 schemas/0漂移/0缺失)/B7-1菜单环visited防护/B2空值守卫/B7-2分页500+回滚/B7-3发布页字段清洗/B3空态errorMessage/B4搜索与key/B5-3 comment三集合选A新建schema/B6-2 unpackage脱离版本控制/B6-1云函数版本语义说明/cms-temp上传日志清理
|
- B批缝隙收尾(2026-09-13):B3残留13文件catch补齐(主表/图表落errorMessage+清空+loading,主表命名以channel.vue为准;渠道下拉仅清空+console兜底不污染主错误态;user-overview面板无catch不硬造)/B7-1 add页补祖先链成环校验(与edit一致)/B4-5 safety用_create_date+ip+type_、app用_id||appid(comparison图表数组与mapper表头为静态结构保留index)/B5-1核对崩溃30字段与page-rule 4字段全部对齐无改动/B5-2仅补uni-id-scores索引(sign-in按user_id查+create_date倒序取最新;opendb-news-articles/categories、read-news-log、uni-stat-run-errors、opendb-tempdata仓库内无页面查询,凭空造索引违反规格故延后)
|
||||||
- 破坏性 schema 变更(上传前必须人工核对线上数据):opendb-sms-log 的 ccreate_date 已改名 create_date(旧数据改名后不可见,需迁移)、mobile 由 int 改为 string、task_id 外键修正为 opendb-sms-task._id;cms-temp 权限收敛为仅 admin 可写(原悬空的 CREATE/UPDATE/DELETE_CMS_TEMP 权限点已移除)
|
- 破坏性 schema 变更(上传前必须人工核对线上数据):opendb-sms-log 的 ccreate_date 已改名 create_date(旧数据改名后不可见,需迁移)、mobile 由 int 改为 string、task_id 外键修正为 opendb-sms-task._id;cms-temp 权限收敛为仅 admin 可写(原悬空的 CREATE/UPDATE/DELETE_CMS_TEMP 权限点已移除)
|
||||||
- 说明:各云函数 package.json 的 version(如 1.0.0)是独立插件版本语义,与 admin 模板 2.5.1 无对应关系,未同步修改
|
- 说明:各云函数 package.json 的 version(如 1.0.0)是独立插件版本语义,与 admin 模板 2.5.1 无对应关系,未同步修改
|
||||||
- 修复 Vue3 页面中的旧具名插槽、分页图标拼写和搜索正则特殊字符问题
|
- 修复 Vue3 页面中的旧具名插槽、分页图标拼写和搜索正则特殊字符问题
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
@sort-change="sortChange($event, 'create_date')">创建时间</uni-th>
|
@sort-change="sortChange($event, 'create_date')">创建时间</uni-th>
|
||||||
<uni-th align="center" :width="buttonThWidth">操作</uni-th>
|
<uni-th align="center" :width="buttonThWidth">操作</uni-th>
|
||||||
</uni-tr>
|
</uni-tr>
|
||||||
<uni-tr v-for="(item,index) in data" :key="index" :disabled="item.appid === appid">
|
<uni-tr v-for="(item,index) in data" :key="item._id || item.appid || index" :disabled="item.appid === appid">
|
||||||
<uni-td align="center">{{item.appid}}</uni-td>
|
<uni-td align="center">{{item.appid}}</uni-td>
|
||||||
<uni-td align="center">{{item.name}}</uni-td>
|
<uni-td align="center">{{item.name}}</uni-td>
|
||||||
<uni-td align="left"><text>{{item.description || '-'}}</text></uni-td>
|
<uni-td align="left"><text>{{item.description || '-'}}</text></uni-td>
|
||||||
|
|||||||
@@ -48,8 +48,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import validator from '@/js_sdk/validator/opendb-admin-menus.js';
|
import validator from '@/js_sdk/validator/opendb-admin-menus.js';
|
||||||
import Icons from '@/pages/demo/icons/icons.vue'
|
import Icons from '@/pages/demo/icons/icons.vue'
|
||||||
|
import { wouldCreateCycle } from '@/components/uni-data-menu/util.js';
|
||||||
|
|
||||||
const db = uniCloud.database();
|
const db = uniCloud.database();
|
||||||
const dbCmd = db.command;
|
const dbCmd = db.command;
|
||||||
@@ -124,8 +125,17 @@
|
|||||||
title: '提交中...',
|
title: '提交中...',
|
||||||
mask: true
|
mask: true
|
||||||
})
|
})
|
||||||
// 使用 uni-clientDB 提交数据
|
// B7-1: 祖先链成环校验(与 edit 页一致:拉全量菜单走一遍祖先链,500 与 list 页一致)
|
||||||
db.collection(dbCollectionName).add(value).then((res) => {
|
db.collection(dbCollectionName).field('menu_id,parent_id').limit(500).get().then((listRes) => {
|
||||||
|
const menus = (listRes.result && listRes.result.data) || []
|
||||||
|
if (wouldCreateCycle(menus, value.menu_id, value.parent_id)) {
|
||||||
|
uni.hideLoading()
|
||||||
|
return uni.showModal({
|
||||||
|
content: '该父菜单会导致循环引用(A→B→A),已阻止提交',
|
||||||
|
showCancel: false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return db.collection(dbCollectionName).add(value).then((res) => {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '新增成功'
|
title: '新增成功'
|
||||||
})
|
})
|
||||||
@@ -139,6 +149,13 @@
|
|||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
uni.hideLoading()
|
uni.hideLoading()
|
||||||
})
|
})
|
||||||
|
}).catch((err) => {
|
||||||
|
uni.hideLoading()
|
||||||
|
uni.showModal({
|
||||||
|
content: (err && err.message) || '菜单校验失败,请重试',
|
||||||
|
showCancel: false
|
||||||
|
})
|
||||||
|
})
|
||||||
},
|
},
|
||||||
showIconPopup() {
|
showIconPopup() {
|
||||||
this.$refs.iconPopup.open()
|
this.$refs.iconPopup.open()
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
<uni-th align="center">IP</uni-th>
|
<uni-th align="center">IP</uni-th>
|
||||||
<uni-th align="center">时间</uni-th>
|
<uni-th align="center">时间</uni-th>
|
||||||
</uni-tr>
|
</uni-tr>
|
||||||
<uni-tr v-for="(item,index) in data" :key="index">
|
<uni-tr v-for="(item,index) in data" :key="item._id || (item.create_date + '-' + item.ip + '-' + item.type) || index">
|
||||||
<uni-td align="center">{{(pagination.current -1)*pagination.size + (index+1)}}</uni-td>
|
<uni-td align="center">{{(pagination.current -1)*pagination.size + (index+1)}}</uni-td>
|
||||||
<uni-td align="center">{{item.user_id[0] && item.user_id[0].username || '-'}}</uni-td>
|
<uni-td align="center">{{item.user_id[0] && item.user_id[0].username || '-'}}</uni-td>
|
||||||
<uni-td align="center">{{item.user_id[0] && item.user_id[0].nickname || '-'}}</uni-td>
|
<uni-td align="center">{{item.user_id[0] && item.user_id[0].nickname || '-'}}</uni-td>
|
||||||
|
|||||||
@@ -59,6 +59,7 @@
|
|||||||
formatDate,
|
formatDate,
|
||||||
maxDeltaDay,
|
maxDeltaDay,
|
||||||
debounce,
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import fieldsMap from './fieldsMap.js'
|
import fieldsMap from './fieldsMap.js'
|
||||||
export default {
|
export default {
|
||||||
@@ -232,7 +233,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
|
this.chartData = {}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 周、月范围的处理
|
// 周、月范围的处理
|
||||||
@@ -319,9 +322,10 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:主表查询失败必须落 errorMessage + 清空 tableData + loading=false(三态落定)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.tableData = []
|
||||||
|
this.loading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -424,9 +428,9 @@
|
|||||||
this.channelData = channels
|
this.channelData = channels
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
// B3-2:渠道下拉失败不污染主错误态,仅清空下拉并保留 console 兜底
|
||||||
|
this.channelData = []
|
||||||
console.error(err)
|
console.error(err)
|
||||||
// err.message 错误信息
|
|
||||||
// err.code 错误码
|
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,7 +124,8 @@
|
|||||||
formatDate,
|
formatDate,
|
||||||
parseDateTime,
|
parseDateTime,
|
||||||
getFieldTotal,
|
getFieldTotal,
|
||||||
debounce
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import {
|
import {
|
||||||
fieldsMap,
|
fieldsMap,
|
||||||
@@ -452,9 +453,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.chartData = {}
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -531,9 +532,11 @@
|
|||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:页面排行查询失败必须落 errorMessage + 清空双表 + loading=false
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.resTableData = []
|
||||||
|
this.entTableData = []
|
||||||
|
this.loading = false
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,8 @@
|
|||||||
division,
|
division,
|
||||||
format,
|
format,
|
||||||
formatDate,
|
formatDate,
|
||||||
debounce
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import fieldsFactory from './fieldsMap.js'
|
import fieldsFactory from './fieldsMap.js'
|
||||||
export default {
|
export default {
|
||||||
@@ -310,9 +311,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.chartData = {}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -350,9 +351,9 @@
|
|||||||
this.tableData = []
|
this.tableData = []
|
||||||
this.tableData = data
|
this.tableData = data
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:主表查询失败必须落 errorMessage + 清空 tableData(finally 置 loading=false)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.tableData = []
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -404,9 +405,9 @@
|
|||||||
this.channelData = channels
|
this.channelData = channels
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
// B3-2:渠道下拉失败不污染主错误态,仅清空下拉并保留 console 兜底
|
||||||
|
this.channelData = []
|
||||||
console.error(err)
|
console.error(err)
|
||||||
// err.message 错误信息
|
|
||||||
// err.code 错误码
|
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,8 @@
|
|||||||
getTimeOfSomeDayAgo,
|
getTimeOfSomeDayAgo,
|
||||||
division,
|
division,
|
||||||
format,
|
format,
|
||||||
debounce
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import fieldsMap from './fieldsMap.js'
|
import fieldsMap from './fieldsMap.js'
|
||||||
export default {
|
export default {
|
||||||
@@ -253,9 +254,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.chartData = {}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -330,9 +331,9 @@
|
|||||||
this.tableData = []
|
this.tableData = []
|
||||||
this.tableData = tableData
|
this.tableData = tableData
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:主表查询失败必须落 errorMessage + 清空 tableData(finally 置 loading=false)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.tableData = []
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -384,9 +385,9 @@
|
|||||||
this.channelData = channels
|
this.channelData = channels
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
// B3-2:渠道下拉失败不污染主错误态,仅清空下拉并保留 console 兜底
|
||||||
|
this.channelData = []
|
||||||
console.error(err)
|
console.error(err)
|
||||||
// err.message 错误信息
|
|
||||||
// err.code 错误码
|
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,8 @@
|
|||||||
format,
|
format,
|
||||||
formatDate,
|
formatDate,
|
||||||
getFieldTotal,
|
getFieldTotal,
|
||||||
debounce
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import fieldsMap from './fieldsMap.js'
|
import fieldsMap from './fieldsMap.js'
|
||||||
export default {
|
export default {
|
||||||
@@ -312,9 +313,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.chartData = {}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -356,9 +357,9 @@
|
|||||||
this.options.total = count
|
this.options.total = count
|
||||||
this.tableData = data
|
this.tableData = data
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:主表查询失败必须落 errorMessage + 清空 tableData(finally 置 loading=false)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.tableData = []
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -439,9 +440,9 @@
|
|||||||
this.channelData = channels
|
this.channelData = channels
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
// B3-2:渠道下拉失败不污染主错误态,仅清空下拉并保留 console 兜底
|
||||||
|
this.channelData = []
|
||||||
console.error(err)
|
console.error(err)
|
||||||
// err.message 错误信息
|
|
||||||
// err.code 错误码
|
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,7 +181,8 @@
|
|||||||
fileToUrl,
|
fileToUrl,
|
||||||
debounce,
|
debounce,
|
||||||
getAllDateCN,
|
getAllDateCN,
|
||||||
createUniStatQuery
|
createUniStatQuery,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import {
|
import {
|
||||||
fieldsMap,
|
fieldsMap,
|
||||||
@@ -508,9 +509,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.chartData = {}
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -617,9 +618,9 @@
|
|||||||
})
|
})
|
||||||
|
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:错误明细表查询失败必须落 errorMessage + 清空 tableData(finally 置 loading=false)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.tableData = []
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
stringifyField,
|
stringifyField,
|
||||||
stringifyGroupField,
|
stringifyGroupField,
|
||||||
getTimeOfSomeDayAgo,
|
getTimeOfSomeDayAgo,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import timeUtil from "@/js_sdk/uni-stat/timeUtil.js"
|
import timeUtil from "@/js_sdk/uni-stat/timeUtil.js"
|
||||||
import {
|
import {
|
||||||
@@ -146,7 +147,9 @@
|
|||||||
});
|
});
|
||||||
this.setChartData(data, insideQuery.dimension);
|
this.setChartData(data, insideQuery.dimension);
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err);
|
// B3-2:漏斗趋势查询失败必须落 errorMessage + 清空 chartData(图表已接 errorMessage)
|
||||||
|
this.errorMessage = getStatErrorMessage(err);
|
||||||
|
this.chartData = {};
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
},
|
},
|
||||||
// 设置图表数据
|
// 设置图表数据
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
stringifyField,
|
stringifyField,
|
||||||
stringifyGroupField,
|
stringifyGroupField,
|
||||||
getTimeOfSomeDayAgo,
|
getTimeOfSomeDayAgo,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import timeUtil from "@/js_sdk/uni-stat/timeUtil.js"
|
import timeUtil from "@/js_sdk/uni-stat/timeUtil.js"
|
||||||
import {
|
import {
|
||||||
@@ -161,7 +162,9 @@
|
|||||||
//console.log('trendChartData: ', data)
|
//console.log('trendChartData: ', data)
|
||||||
this.setChartData(data, fieldsMap, insideQuery);
|
this.setChartData(data, fieldsMap, insideQuery);
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err);
|
// B3-2:总览趋势查询失败必须落 errorMessage + 清空 chartData(图表已接 errorMessage)
|
||||||
|
this.errorMessage = getStatErrorMessage(err);
|
||||||
|
this.chartData = {};
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
},
|
},
|
||||||
// 设置图表数据
|
// 设置图表数据
|
||||||
|
|||||||
@@ -63,6 +63,7 @@
|
|||||||
formatDate,
|
formatDate,
|
||||||
maxDeltaDay,
|
maxDeltaDay,
|
||||||
debounce,
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import fieldsMap from './fieldsMap.js'
|
import fieldsMap from './fieldsMap.js'
|
||||||
export default {
|
export default {
|
||||||
@@ -238,7 +239,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
|
this.chartData = {}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 获取周活、月活
|
// 获取周活、月活
|
||||||
@@ -322,9 +325,10 @@
|
|||||||
|
|
||||||
|
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:主表查询失败必须落 errorMessage + 清空 tableData + loading=false(三态落定)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.tableData = []
|
||||||
|
this.loading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -428,9 +432,9 @@
|
|||||||
this.channelData = channels
|
this.channelData = channels
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
// B3-2:渠道下拉失败不污染主错误态,仅清空下拉并保留 console 兜底
|
||||||
|
this.channelData = []
|
||||||
console.error(err)
|
console.error(err)
|
||||||
// err.message 错误信息
|
|
||||||
// err.code 错误码
|
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,8 @@
|
|||||||
formatDate,
|
formatDate,
|
||||||
parseDateTime,
|
parseDateTime,
|
||||||
getFieldTotal,
|
getFieldTotal,
|
||||||
debounce
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import {
|
import {
|
||||||
fieldsMap,
|
fieldsMap,
|
||||||
@@ -375,9 +376,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.chartData = {}
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,8 @@
|
|||||||
division,
|
division,
|
||||||
format,
|
format,
|
||||||
formatDate,
|
formatDate,
|
||||||
debounce
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import fieldsFactory from './fieldsMap.js'
|
import fieldsFactory from './fieldsMap.js'
|
||||||
export default {
|
export default {
|
||||||
@@ -309,9 +310,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.chartData = {}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -349,9 +350,9 @@
|
|||||||
this.tableData = []
|
this.tableData = []
|
||||||
this.tableData = data
|
this.tableData = data
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:主表查询失败必须落 errorMessage + 清空 tableData(finally 置 loading=false)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.tableData = []
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -403,9 +404,9 @@
|
|||||||
this.channelData = channels
|
this.channelData = channels
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
// B3-2:渠道下拉失败不污染主错误态,仅清空下拉并保留 console 兜底
|
||||||
|
this.channelData = []
|
||||||
console.error(err)
|
console.error(err)
|
||||||
// err.message 错误信息
|
|
||||||
// err.code 错误码
|
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,8 @@
|
|||||||
getTimeOfSomeDayAgo,
|
getTimeOfSomeDayAgo,
|
||||||
division,
|
division,
|
||||||
format,
|
format,
|
||||||
debounce
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import fieldsMap from './fieldsMap.js'
|
import fieldsMap from './fieldsMap.js'
|
||||||
export default {
|
export default {
|
||||||
@@ -251,9 +252,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.chartData = {}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -328,9 +329,9 @@
|
|||||||
this.tableData = []
|
this.tableData = []
|
||||||
this.tableData = tableData
|
this.tableData = tableData
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:主表查询失败必须落 errorMessage + 清空 tableData(finally 置 loading=false)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.tableData = []
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -382,9 +383,9 @@
|
|||||||
this.channelData = channels
|
this.channelData = channels
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
// B3-2:渠道下拉失败不污染主错误态,仅清空下拉并保留 console 兜底
|
||||||
|
this.channelData = []
|
||||||
console.error(err)
|
console.error(err)
|
||||||
// err.message 错误信息
|
|
||||||
// err.code 错误码
|
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,8 @@
|
|||||||
format,
|
format,
|
||||||
formatDate,
|
formatDate,
|
||||||
getFieldTotal,
|
getFieldTotal,
|
||||||
debounce
|
debounce,
|
||||||
|
getStatErrorMessage
|
||||||
} from '@/js_sdk/uni-stat/util.js'
|
} from '@/js_sdk/uni-stat/util.js'
|
||||||
import fieldsMap from './fieldsMap.js'
|
import fieldsMap from './fieldsMap.js'
|
||||||
export default {
|
export default {
|
||||||
@@ -316,9 +317,9 @@
|
|||||||
}
|
}
|
||||||
this.chartData = options
|
this.chartData = options
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:图表查询失败必须落 errorMessage + 清空 chartData(图表组件已接 errorMessage)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.chartData = {}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -360,9 +361,9 @@
|
|||||||
this.options.total = count
|
this.options.total = count
|
||||||
this.tableData = data
|
this.tableData = data
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
console.error(err)
|
// B3-2:主表查询失败必须落 errorMessage + 清空 tableData(finally 置 loading=false)
|
||||||
// err.message 错误信息
|
this.errorMessage = getStatErrorMessage(err)
|
||||||
// err.code 错误码
|
this.tableData = []
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
@@ -443,9 +444,9 @@
|
|||||||
this.channelData = channels
|
this.channelData = channels
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
// B3-2:渠道下拉失败不污染主错误态,仅清空下拉并保留 console 兜底
|
||||||
|
this.channelData = []
|
||||||
console.error(err)
|
console.error(err)
|
||||||
// err.message 错误信息
|
|
||||||
// err.code 错误码
|
|
||||||
}).finally(() => {})
|
}).finally(() => {})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"IndexName": "user_id_",
|
||||||
|
"MgoKeySchema": {
|
||||||
|
"MgoIndexKeys": [
|
||||||
|
{
|
||||||
|
"Name": "user_id",
|
||||||
|
"Direction": "1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"MgoIsUnique": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"IndexName": "create_date_",
|
||||||
|
"MgoKeySchema": {
|
||||||
|
"MgoIndexKeys": [
|
||||||
|
{
|
||||||
|
"Name": "create_date",
|
||||||
|
"Direction": "-1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"MgoIsUnique": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user