配置页面初步

This commit is contained in:
fofolee 2022-04-01 18:54:28 +08:00
parent 158f6d3bc1
commit 4fed36c0ba

View File

@ -1,89 +1,225 @@
<template> <template>
<div> <div>
<q-splitter v-model="splitterModel" style="height: 250px"> <q-tabs
<template v-slot:before> v-model="currentTag"
<q-tabs v-model="tab" vertical class="text-teal"> vertical
<q-tab name="mails" icon="mail" label="Mails" /> class="text-teal fixed-left"
<q-tab name="alarms" icon="alarm" label="Alarms" /> style="width: 80px; border-right: 1px solid #0000001f"
<q-tab name="movies" icon="movie" label="Movies" /> >
</q-tabs> <q-tab
</template> v-for="tag in allQuickCommandTags"
:key="tag"
:label="tag"
:name="tag"
/>
</q-tabs>
<template v-slot:after> <q-tab-panels
<q-tab-panels animated
v-model="tab" class="fixed-right"
animated style="left: 80px"
swipeable v-model="currentTag"
vertical transition-prev="slide-down"
transition-prev="jump-up" transition-next="slide-up"
transition-next="jump-up" swipeable
> vertical
<q-tab-panel name="mails"> >
<div class="text-h4 q-mb-md">Mails</div> <q-tab-panel
<p> style="padding: 8px"
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quis v-for="tag in allQuickCommandTags"
praesentium cumque magnam odio iure quidem, quod illum numquam :key="tag"
possimus obcaecati commodi minima assumenda consectetur culpa fuga :name="tag"
nulla ullam. In, libero. >
</p> <div class="row center">
<p> <div
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quis v-for="quickcommand in currentTagQuickCommands"
praesentium cumque magnam odio iure quidem, quod illum numquam :key="quickcommand.features.code"
possimus obcaecati commodi minima assumenda consectetur culpa fuga style="width: 50%"
nulla ullam. In, libero. class="relative-position q-pa-sm"
</p> >
</q-tab-panel> <!-- 选项按钮 -->
<div class="absolute" style="z-index: 1; right: 16px; top: 16px">
<q-tab-panel name="alarms"> <q-btn
<div class="text-h4 q-mb-md">Alarms</div> flat
<p> round
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quis :color="quickcommand.activated ? 'orange-6' : 'grey'"
praesentium cumque magnam odio iure quidem, quod illum numquam :icon="quickcommand.activated ? 'flash_on' : 'flash_off'"
possimus obcaecati commodi minima assumenda consectetur culpa fuga ><q-tooltip anchor="top middle" self="center middle">
nulla ullam. In, libero. 启用/停用
</p> </q-tooltip></q-btn
<p> >
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quis <q-btn flat round color="primary" icon="menu">
praesentium cumque magnam odio iure quidem, quod illum numquam <q-tooltip anchor="top middle" self="center middle">
possimus obcaecati commodi minima assumenda consectetur culpa fuga 选项菜单
nulla ullam. In, libero. </q-tooltip>
</p> <q-menu>
</q-tab-panel> <q-list style="min-width: 100px">
<q-item clickable v-close-popup>
<q-tab-panel name="movies"> <q-item-section>导出</q-item-section>
<div class="text-h4 q-mb-md">Movies</div> </q-item>
<p> <q-item clickable v-close-popup>
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quis <q-item-section>复制到剪贴板</q-item-section>
praesentium cumque magnam odio iure quidem, quod illum numquam </q-item>
possimus obcaecati commodi minima assumenda consectetur culpa fuga </q-list>
nulla ullam. In, libero. </q-menu>
</p> </q-btn>
<p> <q-btn flat round color="red" icon="close"
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quis ><q-tooltip anchor="top middle" self="center middle">
praesentium cumque magnam odio iure quidem, quod illum numquam 删除
possimus obcaecati commodi minima assumenda consectetur culpa fuga </q-tooltip></q-btn
nulla ullam. In, libero. >
</p> </div>
<p> <q-card v-ripple>
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quis <q-card-section>
praesentium cumque magnam odio iure quidem, quod illum numquam <!-- logo -->
possimus obcaecati commodi minima assumenda consectetur culpa fuga <div class="row">
nulla ullam. In, libero. <q-img width="48px" :src="quickcommand.features.icon" />
</p> </div>
</q-tab-panel> <!-- 名称 -->
</q-tab-panels> <div class="row justify-end">
</template> <div class="text-h6 ellipsis">
</q-splitter> {{ quickcommand.features.explain }}
</div>
</div>
<!-- 匹配模式 -->
<div class="row justify-end q-gutter-xs">
<span v-for="cmd in quickcommand.features.cmds" :key="cmd">
<q-badge rounded color="grey" :label="cmd" />
</span>
</div>
<!-- 语言类型及适配系统 -->
<div class="row justify-end items-center q-gutter-xs">
<span
:style="
'color:' + allProgrammings[quickcommand.program].color
"
></span
>
<span class="text-subtitle2">{{ quickcommand.program }}</span
><span>|</span>
<img
width="16"
v-for="platform in quickcommand.features.platform"
:key="platform"
:src="'/img/' + platform + '.svg'"
/>
</div>
</q-card-section>
</q-card>
</div>
</div>
</q-tab-panel>
</q-tab-panels>
</div> </div>
</template> </template>
<script> <script>
import UTOOLS from "../js/utools.js";
import allProgrammings from "../js/programs.js";
export default { export default {
data() { data() {
return { return {
tab: "mails", currentTag: "默认",
splitterModel: 20, splitterModel: 10,
activatedQuickCommandFeatures: [],
activatedQuickPanels: [],
allQuickCommands: [],
allQuickCommandTags: [],
allProgrammings: allProgrammings,
}; };
}, },
computed: {
//
currentTagQuickCommands() {
let commands = Object.values(this.allQuickCommands);
if (this.currentTag === "未分类")
commands = commands.filter((cmd) => !cmd.tags || cmd.tags.length === 0);
else
commands = commands.filter(
(cmd) => cmd.tags && cmd.tags.includes(this.currentTag)
);
return commands.map((item) => {
item.activated = this.activatedQuickCommandFeatureCodes.includes(
item.features.code
)
? true
: false;
return item;
});
},
activatedQuickCommandFeatureCodes() {
return this.activatedQuickCommandFeatures.map((f) => f.code);
},
},
mounted() {
this.initPage();
},
methods: {
//
initPage() {
// features
let activatedFeatures = this.getActivatedFeatures();
// features
this.activatedQuickCommandFeatures = activatedFeatures.quickcommand;
//
this.activatedQuickPanels = activatedFeatures.quickpanels;
//
this.allQuickCommands = this.getAllQuickCommands();
// tags
this.allQuickCommandTags = [
...new Set(
//
Array.prototype.concat
.apply(
["默认"],
Object.values(this.allQuickCommands).map((x) => x.tags)
)
.concat(["未分类"])
),
].filter((x) => x);
console.log(this);
},
// features
getActivatedFeatures() {
let features = utools.getFeatures();
let currentFts = [];
let quickpanels = [];
features.forEach((x) =>
x.code.slice(0, 6) == "panel_"
? quickpanels.push(hexDecode(x.code.slice(6)))
: currentFts.push(x)
);
return {
quickcommand: currentFts,
quickpanels: quickpanels,
};
},
//
getAllQuickCommands() {
let allQcs = {};
UTOOLS.getDocs(UTOOLS.DBPRE.QC).forEach(
(x) => (allQcs[x.data.features.code] = x.data)
);
return allQcs;
},
},
}; };
</script> </script>
<style scoped>
.q-card {
cursor: pointer;
user-select: none;
}
.q-card:hover {
box-shadow: 0 1px 5px 5px rgb(0 0 0 / 20%);
transition: 0.5s;
transform: translateY(-2px);
}
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>