feat(B批缝隙): B3残留catch补齐/B7-1 add成环/B4-5 key/B5-2 scores索引/门禁62-0-0

This commit is contained in:
12914
2026-09-14 02:18:23 +08:00
parent 4111cba637
commit f47bd75e78
18 changed files with 168 additions and 100 deletions
+1 -1
View File
@@ -43,7 +43,7 @@
@sort-change="sortChange($event, 'create_date')">创建时间</uni-th>
<uni-th align="center" :width="buttonThWidth">操作</uni-th>
</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.name}}</uni-td>
<uni-td align="left"><text>{{item.description || '-'}}</text></uni-td>
+28 -11
View File
@@ -48,8 +48,9 @@
</template>
<script>
import validator from '@/js_sdk/validator/opendb-admin-menus.js';
import Icons from '@/pages/demo/icons/icons.vue'
import validator from '@/js_sdk/validator/opendb-admin-menus.js';
import Icons from '@/pages/demo/icons/icons.vue'
import { wouldCreateCycle } from '@/components/uni-data-menu/util.js';
const db = uniCloud.database();
const dbCmd = db.command;
@@ -124,20 +125,36 @@
title: '提交中...',
mask: true
})
// 使用 uni-clientDB 提交数据
db.collection(dbCollectionName).add(value).then((res) => {
uni.showToast({
title: '新增成功'
// B7-1: 祖先链成环校验(与 edit 页一致:拉全量菜单走一遍祖先链,500 与 list 页一致)
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({
title: '新增成功'
})
this.getOpenerEventChannel().emit('refreshData')
setTimeout(() => uni.navigateBack(), 500)
}).catch((err) => {
uni.showModal({
content: err.message || '请求服务失败',
showCancel: false
})
}).finally(() => {
uni.hideLoading()
})
this.getOpenerEventChannel().emit('refreshData')
setTimeout(() => uni.navigateBack(), 500)
}).catch((err) => {
uni.hideLoading()
uni.showModal({
content: err.message || '请求服务失败',
content: (err && err.message) || '菜单校验失败,请重试',
showCancel: false
})
}).finally(() => {
uni.hideLoading()
})
},
showIconPopup() {
+1 -1
View File
@@ -19,7 +19,7 @@
<uni-th align="center">IP</uni-th>
<uni-th align="center">时间</uni-th>
</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">{{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>