import { useCtx } from "@/comm/ctx";
import { useList } from "@/modules/list";
import { css } from "@linaria/core";
import { Image } from "@queenjs/ui";
import { Button, Select, Space, Table } from "ant-design-vue";
import { defineComponent, reactive } from "vue";
import CategoryModal from "./categoryModal";
export default defineComponent({
setup() {
const ctx = useList();
const { store, showModal, actions } = ctx;
const { deviceCtrl } = useCtx();
const state = reactive({
select: "default",
optsions: [
{
label: "默认",
value: "default",
},
],
});
const columns = [
{
title: "封面图",
dataIndex: "thumbnail",
key: "thumbnail",
customRender: ({ text }: any) => {
return (
);
},
},
{
title: "名称",
dataIndex: "name",
key: "name",
},
];
actions.getAssetList();
const initShowCategory = async () => {
const appDataDir = deviceCtrl.appDataDir;
const category = await deviceCtrl.ReadFileText(
`${appDataDir}/screen/category.json`
);
const currentCategory = localStorage.getItem("category") || "default";
state.select = currentCategory;
if (!category.error && category.text) {
const assets = JSON.parse(category.text);
state.optsions = assets;
}
};
const { msgCtrl } = useCtx();
msgCtrl.screenModule = ctx;
initShowCategory();
msgCtrl.initScreen();
const setShowCategory = (value: any) => {
localStorage.setItem("category", value || "default");
state.select = value;
actions.getAssetList();
};
const createShowCategory = async () => {
const { deviceCtrl } = useCtx();
const res: any = await showModal(, {
title: "新建分类",
});
const options = [...state.optsions];
const optionItem = options.find((e) => {
return e.value == res.value;
});
if (optionItem) {
return;
}
options.push(res);
state.optsions = options;
const appDataDir = deviceCtrl.appDataDir;
await deviceCtrl.WriteFileText(
`${appDataDir}/screen/category.json`,
JSON.stringify(options)
);
};
return () => (
);
},
});
const ViewStyle = css`
padding: 20px;
.table_header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
.title {
font-size: 18px;
font-weight: bold;
}
.select {
width: 150px;
}
}
.ant-table-thead > tr > th,
.ant-table-tbody > tr > td {
text-align: center;
}
.thumbnail {
width: 120px;
object-fit: contain;
}
`;