213 lines
6.9 KiB
Vue
213 lines
6.9 KiB
Vue
<template>
|
||
<table-search-card :model="queryParams" @getList="getList" @handleQuery="handleQuery" @resetQuery="resetQuery">
|
||
<template #left>
|
||
<el-form-item prop="currencyCode">
|
||
<currency-select v-model="queryParams.currencyCode" @change="handleQuery"></currency-select>
|
||
</el-form-item>
|
||
<el-form-item prop="platformType">
|
||
<dict-select v-model="queryParams.platformType" dictKey="ff_game_type" :empty-values="[null, undefined]"
|
||
:clearable="false" :addOptions="{ label: t('全部类型'), value: '' }"></dict-select>
|
||
</el-form-item>
|
||
<el-form-item prop="popularCategory">
|
||
<el-select v-model="queryParams.popularCategory" :empty-values="[null, undefined]">
|
||
<el-option v-for="item in popularCategoryList" :key="item.value" :label="item.label"
|
||
:value="item.value" />
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item prop="name">
|
||
<el-input v-model="queryParams.name" :placeholder="t('请输入平台/子游戏名称')" @keyup.enter="handleQuery" />
|
||
</el-form-item>
|
||
</template>
|
||
<template #right>
|
||
{{ t('是否启用') }}
|
||
<el-switch
|
||
v-model="IsEnabledOne"
|
||
v-if="popularType == 1"
|
||
active-value="2" inactive-value="1"
|
||
class="ml-2"
|
||
@click="handleUp(1)"
|
||
style="--el-switch-on-color: #13ce66; margin-left: 4px;"
|
||
/>
|
||
<el-switch
|
||
v-model="IsEnabledTow"
|
||
v-if="popularType == 2"
|
||
active-value="2" inactive-value="1"
|
||
class="ml-2"
|
||
@click="handleUp(2)"
|
||
style="--el-switch-on-color: #13ce66; margin-left: 4px;"
|
||
/>
|
||
|
||
</template>
|
||
|
||
</table-search-card>
|
||
|
||
<el-table v-loading="loading" :data="gameList" @selection-change="handleSelectionChange" class="c-table-main" stripe
|
||
ref="dragTable" row-key="id" border>
|
||
<el-table-column type="selection" width="55" align="center" />
|
||
<table-drag-sort v-model:tableList="gameList" @dragEnd="dragEnd"></table-drag-sort>
|
||
<el-table-column :label="t('游戏类型')" align="center" prop="platformType">
|
||
<template #default="{ row }">
|
||
<dict-tag :options="ff_game_type" :value="row.platformType" />
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column :label="t('热门类别')" align="center" prop="popularCategory">
|
||
<template #default="{ row }">
|
||
{{ row.popularCategory === 1 ? t('平台') : t('子游戏') }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column :label="t('平台名称')" align="center" prop="platformName" />
|
||
<el-table-column :label="t('热门名称')" align="center" prop="gameName" />
|
||
<el-table-column :label="t('币种')" align="center" prop="currencyDisplay" />
|
||
<el-table-column :label="t('操作')" align="center" class-name="small-padding fixed-width">
|
||
<template #default="scope">
|
||
<el-button link type="primary" @click="handleDelete(scope.row)"
|
||
v-hasPermi="['game:game:edit']">{{ t('移除') }}</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
<table-operation></table-operation>
|
||
</el-table>
|
||
|
||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
|
||
@pagination="getList" />
|
||
</template>
|
||
|
||
<script setup name="Popular">
|
||
import * as game from "@/api/game/game";
|
||
import useInitDataStore from "@/store/modules/initData";
|
||
import TableDragSort from '@/components/TableDragSort';
|
||
|
||
const useInitData = useInitDataStore();
|
||
const { proxy } = getCurrentInstance();
|
||
const { ff_game_type } = proxy.useDict('ff_game_type')
|
||
const emits = defineEmits(['updateGames']); // 定义自定义事件
|
||
const props = defineProps({
|
||
// 热门类型
|
||
// 1:热门管理1 2:热门管理2
|
||
popularType: {
|
||
type: Number,
|
||
default: 1,
|
||
required: true
|
||
},
|
||
hotOne: {
|
||
type: String,
|
||
default: '1',
|
||
},
|
||
hotTwo: {
|
||
type: String,
|
||
default: '1',
|
||
}
|
||
})
|
||
|
||
const gameList = ref([]); //表格数据
|
||
const loading = ref(true);//加载中
|
||
const ids = ref([]);//多选框选中数据
|
||
const single = ref(true);//是否单选
|
||
const IsEnabledOne = ref('1');//是否启用
|
||
const IsEnabledTow = ref('1');//是否启用
|
||
const multiple = ref(true); //是否多选
|
||
const total = ref(0); //总数
|
||
|
||
const data = reactive({
|
||
form: {},
|
||
queryParams: { // 查询参数
|
||
pageNum: 1,
|
||
pageSize: 20,
|
||
orderByColumn: 'sort_no',
|
||
isAsc: 'asc',
|
||
currencyCode: useInitData.dictInitData.currencyCode||useInitData.currencyCode,
|
||
platformType: '',
|
||
popularCategory: '',
|
||
name: null,
|
||
popularType: null
|
||
},
|
||
rules: {
|
||
|
||
},
|
||
popularCategoryList: [
|
||
{
|
||
label: proxy.t('热门类别'),
|
||
value: ''
|
||
},
|
||
{
|
||
label: proxy.t('平台'),
|
||
value: '1'
|
||
},
|
||
{
|
||
label: proxy.t('子游戏'),
|
||
value: '2'
|
||
}
|
||
]
|
||
});
|
||
|
||
const { queryParams, form, rules, popularCategoryList } = toRefs(data);
|
||
/** 查询热门管理列表 */
|
||
function getList() {
|
||
loading.value = true;
|
||
queryParams.value.popularType = props.popularType
|
||
game.listPopular(queryParams.value).then(response => {
|
||
gameList.value = response.rows;
|
||
total.value = response.total;
|
||
loading.value = false;
|
||
});
|
||
}
|
||
|
||
/** 搜索按钮操作 */
|
||
function handleQuery() {
|
||
queryParams.value.pageNum = 1;
|
||
getList();
|
||
useInitData.setStateData('currencyCode', String(queryParams.value.currencyCode));
|
||
}
|
||
const handleUp = (type)=>{
|
||
emits('updateGames', type);
|
||
}
|
||
// 同时监听两个值props.hotOne,props.hotTwo的变化来确定是true 还是false,1就是false 2就是true
|
||
watch(() => [props.hotOne, props.hotTwo], ([hotOne, hotTwo]) => {
|
||
nextTick(() => {
|
||
IsEnabledOne.value = hotOne;
|
||
IsEnabledTow.value = hotTwo;
|
||
});
|
||
},{ immediate: true })
|
||
/** 重置按钮操作 */
|
||
function resetQuery() {
|
||
queryParams.value.pageNum = 1;
|
||
getList();
|
||
}
|
||
|
||
// 多选框选中数据
|
||
function handleSelectionChange(selection) {
|
||
ids.value = selection.map(item => item.id);
|
||
single.value = selection.length != 1;
|
||
multiple.value = !selection.length;
|
||
}
|
||
|
||
/** 移除按钮操作 */
|
||
function handleDelete(row) {
|
||
const _ids = row.id || ids.value;
|
||
proxy.$modal.confirm(proxy.t('是否确认移除"') + row.gameName + '"?').then(function () {
|
||
return game.delPopular(_ids);
|
||
}).then(() => {
|
||
getList();
|
||
proxy.$modal.msgSuccess(proxy.t('移除成功'));
|
||
}).catch(() => { });
|
||
}
|
||
|
||
// 拖拽结束事件
|
||
const dragEnd = (row) => {
|
||
game.popularSort(row).then(() => {
|
||
if (row.isTop) {
|
||
proxy.$modal.msgSuccess(proxy.t('置顶成功'));
|
||
}
|
||
getList();
|
||
})
|
||
}
|
||
|
||
// 监听 popularType 的变化
|
||
watch(() => props.popularType, (newVal, oldVal) => {
|
||
// 你可以在这里添加更多的逻辑
|
||
resetQuery();
|
||
});
|
||
|
||
getList();
|
||
</script>
|
||
|
||
<style scoped lang="scss"></style> |