You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.1 KiB
Vue
130 lines
3.1 KiB
Vue
<template>
|
|
<view class="charts-box bg-white content">
|
|
<view v-show="classifyList.length" class="flex overflow-auto flex-wrap">
|
|
<div class="grid grid-cols-3 gap-4 p-4 w-full">
|
|
|
|
<wd-button @click="utils.toUrl('/store/cat/edit?edit=' + JSON.stringify({}))" style="width: 100%;"
|
|
class="bg-[#f0f0f0] w-full flex-1" :round="false">
|
|
新增
|
|
</wd-button>
|
|
<wd-button @click="showActions(cat)" style="width: 100%;" v-for="cat of classifyList"
|
|
class="bg-[#f0f0f0] w-full flex-1" type="info" :round="false">
|
|
{{ cat.name }}
|
|
</wd-button>
|
|
|
|
</div>
|
|
</view>
|
|
|
|
<wd-action-sheet v-model="show" :actions="actions" @close="close" @select="select" />
|
|
<kevyloading v-if="loading" type="bsm-loader" color="#618af8" transparent></kevyloading>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import { ref } from 'vue'
|
|
import utils from '@/utils/utils.js'
|
|
import pointsGoodsApi from '@/api/store/pointsGoods.js';
|
|
import kevyloading from "@/components/kevy-loading/kevy-loading";
|
|
/** @type {Ref<boolean>} */
|
|
const loading = ref(false);
|
|
|
|
import {
|
|
onShow,
|
|
} from "@dcloudio/uni-app";
|
|
|
|
const model = ref({})
|
|
const baseForm = ref({})
|
|
|
|
const show = ref(false)
|
|
const actions = ref([
|
|
{
|
|
name: '编辑分类'
|
|
},
|
|
{
|
|
name: '新增子项'
|
|
}
|
|
])
|
|
|
|
const opt = ref("编辑分类")
|
|
|
|
function showActions(row) {
|
|
show.value = true
|
|
model.value = row
|
|
console.log(row);
|
|
}
|
|
|
|
function close() {
|
|
show.value = false
|
|
}
|
|
|
|
function select({ item, index }) {
|
|
opt.value = item.name
|
|
|
|
if (opt.value == '编辑分类') {
|
|
// message.alert({
|
|
// title: "编辑分类"
|
|
// })
|
|
|
|
baseForm.value = model.value
|
|
utils.toUrl('/store/points/catEdit?edit=' + JSON.stringify(baseForm.value))
|
|
}
|
|
|
|
if (opt.value == '新增子项') {
|
|
|
|
console.log(model.value);
|
|
|
|
if (model.value.parentIds.length == 3) {
|
|
return uni.showToast({
|
|
title: '三级分类不可新增子级',
|
|
icon: 'none'
|
|
})
|
|
} else {
|
|
baseForm.value = model.value
|
|
utils.toUrl('/store/cat/edit?edit=' + JSON.stringify({}) + "&parent=" + JSON.stringify(baseForm.value))
|
|
}
|
|
|
|
// baseForm.value = model.value
|
|
// utils.toUrl('/store/cat/edit?edit=' + JSON.stringify(baseForm.value))
|
|
}
|
|
|
|
}
|
|
|
|
const classifyList = ref([])
|
|
const getClassify = () => {
|
|
loading.value = true
|
|
function flattenCategories(categories, parentIds = []) {
|
|
let flatCategories = [];
|
|
|
|
for (const category of categories) {
|
|
const categoryWithParents = {
|
|
...category,
|
|
parentIds: [...parentIds, category.id],
|
|
};
|
|
|
|
flatCategories.push(categoryWithParents);
|
|
|
|
if (category.children && category.children.length > 0) {
|
|
flatCategories = flatCategories.concat(flattenCategories(category.children, [...parentIds, category.id]));
|
|
}
|
|
}
|
|
|
|
return flatCategories;
|
|
}
|
|
pointsGoodsApi.classifyList().then(res => {
|
|
classifyList.value = flattenCategories(res.data)
|
|
loading.value = false
|
|
})
|
|
}
|
|
|
|
onShow(() => {
|
|
getClassify()
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
/* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */
|
|
.charts-box {
|
|
width: 100%;
|
|
height: 300px;
|
|
}
|
|
</style> |