fix: scene list

This commit is contained in:
zzc
2026-03-13 04:07:07 +08:00
parent 7895cdcfc6
commit dde13eae14
3 changed files with 105 additions and 117 deletions

View File

@@ -7,6 +7,11 @@
</vab-query-form-left-panel> </vab-query-form-left-panel>
<vab-query-form-right-panel :span="12"> <vab-query-form-right-panel :span="12">
<el-form :inline="true" :model="queryForm" @submit.native.prevent> <el-form :inline="true" :model="queryForm" @submit.native.prevent>
<el-form-item>
<el-select v-model="queryForm.scene" clearable placeholder="请选择场景" @change="queryData">
<el-option v-for="item in sceneList" :key="item.scene" :label="item.sceneName" :value="item.scene" />
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-input v-model.trim="queryForm.keyword" clearable placeholder="请输入查询条件" /> <el-input v-model.trim="queryForm.keyword" clearable placeholder="请输入查询条件" />
</el-form-item> </el-form-item>
@@ -26,6 +31,11 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="场景" show-overflow-tooltip>
<template #default="{ row }">
{{ getSceneName(row.scene) }}
</template>
</el-table-column>
<el-table-column align="center" label="使用次数" prop="useCount" show-overflow-tooltip /> <el-table-column align="center" label="使用次数" prop="useCount" show-overflow-tooltip />
<el-table-column align="center" label="是否启用" show-overflow-tooltip> <el-table-column align="center" label="是否启用" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
@@ -60,6 +70,7 @@
<script> <script>
import { doDelete, getList, toggleEnable, doMoveUp, doMoveDown } from '@/api/spring/blessing/contentTemplate' import { doDelete, getList, toggleEnable, doMoveUp, doMoveDown } from '@/api/spring/blessing/contentTemplate'
import { getAll as getAllScenes } from '@/api/spring/blessing/scene'
import Edit from './components/AppManagementEdit' import Edit from './components/AppManagementEdit'
export default { export default {
@@ -77,9 +88,10 @@
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
keyword: '', keyword: '',
fortuneLevel: '', scene: '',
}, },
timeOutID: null, timeOutID: null,
sceneList: [],
} }
}, },
created() { created() {
@@ -88,6 +100,7 @@
this.queryForm.keyword = templateId this.queryForm.keyword = templateId
this.queryForm.pageNo = 1 this.queryForm.pageNo = 1
} }
this.fetchSceneList()
this.fetchData() this.fetchData()
}, },
@@ -99,7 +112,7 @@
this.selectRows = val this.selectRows = val
}, },
handleEdit(row) { handleEdit(row) {
if (row.id) { if (row && row.id) {
this.$refs['edit'].showEdit(row) this.$refs['edit'].showEdit(row)
} else { } else {
this.$refs['edit'].showEdit() this.$refs['edit'].showEdit()
@@ -189,13 +202,14 @@
if (enabled.length === 0) return false if (enabled.length === 0) return false
return enabled[enabled.length - 1].id === row.id return enabled[enabled.length - 1].id === row.id
}, },
async fetchSceneList() {
const { data } = await getAllScenes()
this.sceneList = data || []
},
getSceneName(scene) {
const found = this.sceneList.find((item) => item.scene === scene)
return found ? found.sceneName : scene
},
}, },
} }
</script> </script>
<style scoped>
.content-cell {
white-space: pre-wrap;
word-break: break-word;
line-height: 1.6;
}
</style>

View File

@@ -7,6 +7,11 @@
</vab-query-form-left-panel> </vab-query-form-left-panel>
<vab-query-form-right-panel :span="12"> <vab-query-form-right-panel :span="12">
<el-form :inline="true" :model="queryForm" @submit.native.prevent> <el-form :inline="true" :model="queryForm" @submit.native.prevent>
<el-form-item>
<el-select v-model="queryForm.scene" clearable placeholder="请选择场景" @change="queryData">
<el-option v-for="item in sceneList" :key="item.scene" :label="item.sceneName" :value="item.scene" />
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-input v-model.trim="queryForm.keyword" clearable placeholder="请输入查询条件" /> <el-input v-model.trim="queryForm.keyword" clearable placeholder="请输入查询条件" />
</el-form-item> </el-form-item>
@@ -34,6 +39,11 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="标题" prop="name" show-overflow-tooltip /> <el-table-column align="center" label="标题" prop="name" show-overflow-tooltip />
<el-table-column align="center" label="场景" show-overflow-tooltip>
<template #default="{ row }">
{{ getSceneName(row.scene) }}
</template>
</el-table-column>
<el-table-column align="center" label="使用次数" prop="useCount" show-overflow-tooltip /> <el-table-column align="center" label="使用次数" prop="useCount" show-overflow-tooltip />
<el-table-column align="center" label="是否启用" show-overflow-tooltip> <el-table-column align="center" label="是否启用" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
@@ -68,6 +78,7 @@
<script> <script>
import { doDelete, getList, toggleEnable, doMoveUp, doMoveDown } from '@/api/spring/blessing/template' import { doDelete, getList, toggleEnable, doMoveUp, doMoveDown } from '@/api/spring/blessing/template'
import { getAll as getAllScenes } from '@/api/spring/blessing/scene'
import { formatTime } from '@/utils' import { formatTime } from '@/utils'
import { getThumbUrl } from '@/utils/blessing' import { getThumbUrl } from '@/utils/blessing'
import Edit from './components/AppManagementEdit' import Edit from './components/AppManagementEdit'
@@ -87,9 +98,10 @@
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
keyword: '', keyword: '',
fortuneLevel: '', scene: '',
}, },
timeOutID: null, timeOutID: null,
sceneList: [],
} }
}, },
created() { created() {
@@ -98,43 +110,26 @@
this.queryForm.keyword = templateId this.queryForm.keyword = templateId
this.queryForm.pageNo = 1 this.queryForm.pageNo = 1
} }
this.fetchSceneList()
this.fetchData() this.fetchData()
}, },
beforeDestroy() { beforeDestroy() {
clearTimeout(this.timeOutID) clearTimeout(this.timeOutID)
}, },
methods: { methods: {
getThumbUrl,
setSelectRows(val) { setSelectRows(val) {
this.selectRows = val this.selectRows = val
}, },
handleEdit(row) { handleEdit(row) {
if (row.id) { this.$refs['edit'].showEdit(row)
this.$refs['edit'].showEdit(row)
} else {
this.$refs['edit'].showEdit()
}
}, },
handleDelete(row) { handleDelete(row) {
if (row.id) { if (row.id) {
this.$baseConfirm('你确定要删除当前项吗', null, async () => { this.$baseConfirm('你确定要删除当前项吗', null, async () => {
const { msg } = await doDelete({ ids: [row.id] }) const { msg } = await doDelete(row.id)
this.$baseMessage(msg, 'success') this.$baseMessage(msg, 'success')
this.fetchData() this.fetchData()
}) })
} else {
if (this.selectRows.length > 0) {
const ids = this.selectRows.map((item) => item.id).join()
this.$baseConfirm('你确定要删除选中项吗', null, async () => {
const { msg } = await doDelete({ ids: ids.split(',') })
this.$baseMessage(msg, 'success')
this.fetchData()
})
} else {
this.$baseMessage('未选中任何行', 'error')
return false
}
} }
}, },
handleSizeChange(val) { handleSizeChange(val) {
@@ -156,49 +151,41 @@
this.total = data.totalCount this.total = data.totalCount
this.timeOutID = setTimeout(() => { this.timeOutID = setTimeout(() => {
this.listLoading = false this.listLoading = false
}, 300) }, 500)
}, },
async handleToggleEnable(row, val) { async handleToggleEnable(row, value) {
const prev = row.isEnabled this.$baseConfirm(`你确定要${value ? '启用' : '禁用'}当前项吗`, null, async () => {
row.isEnabled = val const { msg } = await toggleEnable(row.id, value)
try { this.$baseMessage(msg, 'success')
const { msg } = await toggleEnable(row.id, val)
if (msg) this.$baseMessage(msg, 'success')
this.fetchData() this.fetchData()
} catch (e) { })
row.isEnabled = prev
this.$baseMessage('更新失败', 'error')
}
}, },
async handleMoveUp(row) { async handleMoveUp(row) {
try { const { msg } = await doMoveUp(row.id)
const { msg } = await doMoveUp(row.id) this.$baseMessage(msg, 'success')
if (msg) this.$baseMessage(msg, 'success') this.fetchData()
this.fetchData()
} catch (e) {
this.$baseMessage('操作失败', 'error')
}
}, },
async handleMoveDown(row) { async handleMoveDown(row) {
try { const { msg } = await doMoveDown(row.id)
const { msg } = await doMoveDown(row.id) this.$baseMessage(msg, 'success')
if (msg) this.$baseMessage(msg, 'success') this.fetchData()
this.fetchData()
} catch (e) {
this.$baseMessage('操作失败', 'error')
}
}, },
isFirstEnabled(row) { isFirstEnabled(row) {
if (!this.list || this.list.length === 0) return false const enabledList = this.list.filter((item) => item.isEnabled)
const enabled = this.list.filter((item) => item.isEnabled) return enabledList.length > 0 && enabledList[0].id === row.id
if (enabled.length === 0) return false
return enabled[0].id === row.id
}, },
isLastEnabled(row) { isLastEnabled(row) {
if (!this.list || this.list.length === 0) return false const enabledList = this.list.filter((item) => item.isEnabled)
const enabled = this.list.filter((item) => item.isEnabled) return enabledList.length > 0 && enabledList[enabledList.length - 1].id === row.id
if (enabled.length === 0) return false },
return enabled[enabled.length - 1].id === row.id getThumbUrl,
async fetchSceneList() {
const { data } = await getAllScenes()
this.sceneList = data || []
},
getSceneName(scene) {
const found = this.sceneList.find((item) => item.scene === scene)
return found ? found.sceneName : scene
}, },
}, },
} }

View File

@@ -7,6 +7,11 @@
</vab-query-form-left-panel> </vab-query-form-left-panel>
<vab-query-form-right-panel :span="12"> <vab-query-form-right-panel :span="12">
<el-form :inline="true" :model="queryForm" @submit.native.prevent> <el-form :inline="true" :model="queryForm" @submit.native.prevent>
<el-form-item>
<el-select v-model="queryForm.scene" clearable placeholder="请选择场景" @change="queryData">
<el-option v-for="item in sceneList" :key="item.scene" :label="item.sceneName" :value="item.scene" />
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-input v-model.trim="queryForm.keyword" clearable placeholder="请输入查询条件" /> <el-input v-model.trim="queryForm.keyword" clearable placeholder="请输入查询条件" />
</el-form-item> </el-form-item>
@@ -34,6 +39,11 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="标题" prop="name" show-overflow-tooltip /> <el-table-column align="center" label="标题" prop="name" show-overflow-tooltip />
<el-table-column align="center" label="场景" show-overflow-tooltip>
<template #default="{ row }">
{{ getSceneName(row.scene) }}
</template>
</el-table-column>
<el-table-column align="center" label="使用次数" prop="useCount" show-overflow-tooltip /> <el-table-column align="center" label="使用次数" prop="useCount" show-overflow-tooltip />
<el-table-column align="center" label="是否启用" show-overflow-tooltip> <el-table-column align="center" label="是否启用" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
@@ -68,6 +78,7 @@
<script> <script>
import { doDelete, getList, toggleEnable, doMoveUp, doMoveDown } from '@/api/spring/blessing/titleTemplate/index' import { doDelete, getList, toggleEnable, doMoveUp, doMoveDown } from '@/api/spring/blessing/titleTemplate/index'
import { getAll as getAllScenes } from '@/api/spring/blessing/scene'
import { formatTime } from '@/utils' import { formatTime } from '@/utils'
import { getThumbUrl } from '@/utils/blessing' import { getThumbUrl } from '@/utils/blessing'
import Edit from './components/AppManagementEdit' import Edit from './components/AppManagementEdit'
@@ -87,9 +98,10 @@
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
keyword: '', keyword: '',
fortuneLevel: '', scene: '',
}, },
timeOutID: null, timeOutID: null,
sceneList: [],
} }
}, },
created() { created() {
@@ -98,43 +110,26 @@
this.queryForm.keyword = templateId this.queryForm.keyword = templateId
this.queryForm.pageNo = 1 this.queryForm.pageNo = 1
} }
this.fetchSceneList()
this.fetchData() this.fetchData()
}, },
beforeDestroy() { beforeDestroy() {
clearTimeout(this.timeOutID) clearTimeout(this.timeOutID)
}, },
methods: { methods: {
getThumbUrl,
setSelectRows(val) { setSelectRows(val) {
this.selectRows = val this.selectRows = val
}, },
handleEdit(row) { handleEdit(row) {
if (row.id) { this.$refs['edit'].showEdit(row)
this.$refs['edit'].showEdit(row)
} else {
this.$refs['edit'].showEdit()
}
}, },
handleDelete(row) { handleDelete(row) {
if (row.id) { if (row.id) {
this.$baseConfirm('你确定要删除当前项吗', null, async () => { this.$baseConfirm('你确定要删除当前项吗', null, async () => {
const { msg } = await doDelete({ ids: [row.id] }) const { msg } = await doDelete(row.id)
this.$baseMessage(msg, 'success') this.$baseMessage(msg, 'success')
this.fetchData() this.fetchData()
}) })
} else {
if (this.selectRows.length > 0) {
const ids = this.selectRows.map((item) => item.id).join()
this.$baseConfirm('你确定要删除选中项吗', null, async () => {
const { msg } = await doDelete({ ids: ids.split(',') })
this.$baseMessage(msg, 'success')
this.fetchData()
})
} else {
this.$baseMessage('未选中任何行', 'error')
return false
}
} }
}, },
handleSizeChange(val) { handleSizeChange(val) {
@@ -156,49 +151,41 @@
this.total = data.totalCount this.total = data.totalCount
this.timeOutID = setTimeout(() => { this.timeOutID = setTimeout(() => {
this.listLoading = false this.listLoading = false
}, 300) }, 500)
}, },
async handleToggleEnable(row, val) { async handleToggleEnable(row, value) {
const prev = row.isEnabled this.$baseConfirm(`你确定要${value ? '启用' : '禁用'}当前项吗`, null, async () => {
row.isEnabled = val const { msg } = await toggleEnable(row.id, value)
try { this.$baseMessage(msg, 'success')
const { msg } = await toggleEnable(row.id, val)
if (msg) this.$baseMessage(msg, 'success')
this.fetchData() this.fetchData()
} catch (e) { })
row.isEnabled = prev
this.$baseMessage('更新失败', 'error')
}
}, },
async handleMoveUp(row) { async handleMoveUp(row) {
try { const { msg } = await doMoveUp(row.id)
const { msg } = await doMoveUp(row.id) this.$baseMessage(msg, 'success')
if (msg) this.$baseMessage(msg, 'success') this.fetchData()
this.fetchData()
} catch (e) {
this.$baseMessage('操作失败', 'error')
}
}, },
async handleMoveDown(row) { async handleMoveDown(row) {
try { const { msg } = await doMoveDown(row.id)
const { msg } = await doMoveDown(row.id) this.$baseMessage(msg, 'success')
if (msg) this.$baseMessage(msg, 'success') this.fetchData()
this.fetchData()
} catch (e) {
this.$baseMessage('操作失败', 'error')
}
}, },
isFirstEnabled(row) { isFirstEnabled(row) {
if (!this.list || this.list.length === 0) return false const enabledList = this.list.filter((item) => item.isEnabled)
const enabled = this.list.filter((item) => item.isEnabled) return enabledList.length > 0 && enabledList[0].id === row.id
if (enabled.length === 0) return false
return enabled[0].id === row.id
}, },
isLastEnabled(row) { isLastEnabled(row) {
if (!this.list || this.list.length === 0) return false const enabledList = this.list.filter((item) => item.isEnabled)
const enabled = this.list.filter((item) => item.isEnabled) return enabledList.length > 0 && enabledList[enabledList.length - 1].id === row.id
if (enabled.length === 0) return false },
return enabled[enabled.length - 1].id === row.id getThumbUrl,
async fetchSceneList() {
const { data } = await getAllScenes()
this.sceneList = data || []
},
getSceneName(scene) {
const found = this.sceneList.find((item) => item.scene === scene)
return found ? found.sceneName : scene
}, },
}, },
} }