新增用户变量

This commit is contained in:
fofolee
2022-04-26 00:26:09 +08:00
parent 31f5d3c94c
commit 9b1a4a883b
5 changed files with 159 additions and 12 deletions

View File

@@ -151,12 +151,13 @@ export default {
},
// 特殊变量赋值
assignSpecialVars(cmd) {
let userData = this.$root.utools.userData.all();
let spVars = _.filter(specialVars, (sp) => sp.repl);
_.forIn(spVars, (val, key) => {
if (cmd.includes(val.label.slice(0, -2))) {
cmd = cmd.replace(val.match, (x) =>
val.repl(x, this.$root.enterData)
);
let label = val.label.slice(0, -2);
if (cmd.includes(label)) {
let replData = label === "{{usr:" ? userData : this.$root.enterData;
cmd = cmd.replace(val.match, (x) => val.repl(x, replData));
}
});
return cmd;

View File

@@ -155,7 +155,12 @@
transition-show="jump-down"
transition-hide="jump-up"
borderless
@update:model-value="(val) => insertSpecialVar(val.label)"
@popup-hide="
() => {
if (specialVar.label === '{{usr:}}') showUserData = true;
else insertSpecialVar(specialVar.label);
}
"
square
:options="specialVarsOptions"
v-model="specialVar"
@@ -263,6 +268,9 @@
ref="icon"
/>
</q-dialog>
<q-dialog v-model="showUserData">
<UserData @insertText="insertSpecialVar" />
</q-dialog>
</q-scroll-area>
</template>
@@ -272,10 +280,11 @@ import outputTypes from "../js/options/outputTypes.js";
import specialVars from "../js/options/specialVars.js";
import platformTypes from "../js/options/platformTypes.js";
import iconPicker from "components/popup/IconPicker.vue";
import UserData from "components/popup/UserData.vue";
let commandTypesOptions = Object.values(commandTypes);
export default {
components: { iconPicker },
components: { iconPicker, UserData },
data() {
return {
currentCommand: {
@@ -298,6 +307,7 @@ export default {
specialVar: "{{}}",
allQuickCommandTags: this.$parent.allQuickCommandTags,
showIconPicker: false,
showUserData: false,
};
},
props: {

View File

@@ -0,0 +1,90 @@
<template>
<q-card style="min-width: 500px">
<q-card-section>
<div
class="text-grey text-h6 text-italic full-width"
v-if="!allUserData.length"
>
还未添加用户变量
</div>
<q-input
v-for="item in allUserData"
:key="item.id"
v-model="item.value"
class="full-width q-ma-md"
type="text"
:prefix="`${item.id}`"
suffix="仅本机"
outlined
>
<template v-slot:append>
<q-toggle v-model="item.isNative" color="primary" />
<q-btn
flat
color="primary"
icon="send"
@click="insertText(`{{usr:${item.id}}}`)" />
<q-btn
flat
color="negative"
icon="close"
@click="delUserData(item.id)" /></template
></q-input>
</q-card-section>
<q-card-section class="flex justify-end q-gutter-sm">
<q-btn flat color="grey" label="退出" v-close-popup />
<q-btn
flat
color="deep-orange"
:disable="!allUserData.length"
label="更新"
@click="saveUserData"
/>
<q-btn flat color="primary" label="添加" @click="addUserData" />
</q-card-section>
</q-card>
</template>
<script>
export default {
data() {
return {
allUserData: [],
};
},
mounted() {
this.allUserData = this.$root.utools.userData.all();
},
methods: {
saveUserData() {
this.allUserData.forEach((item) => {
this.$root.utools.userData.put(item.value, item.id, item.isNative);
});
quickcommand.showMessageBox("更新完毕!");
},
delUserData(id) {
quickcommand.showConfirmBox("删除后不可恢复").then(() => {
this.$root.utools.userData.del(id);
this.allUserData = this.allUserData.filter((item) => item.id !== id);
});
},
insertText(text) {
this.$emit("insertText", text);
},
addUserData() {
quickcommand.showInputBox(["变量名称", "变量值"]).then(([id, value]) => {
if (!/\w+/.test(id))
return quickcommand.showMessageBox("变量名请使用全英文字母", "error");
if (this.allUserData.map((x) => x.id).includes(id))
return quickcommand.showMessageBox("变量名重复", "error");
this.allUserData.push({
id,
value,
isNative: true,
});
this.$root.utools.userData.put(value, id, true);
});
},
},
};
</script>