添加quickcomman.userData接口 ,可以增、删、改、查用户数据

This commit is contained in:
fofolee 2024-04-03 20:14:48 +08:00
parent a905e4d981
commit fefdf9578c
3 changed files with 161 additions and 87 deletions

View File

@ -1,13 +1,30 @@
<template>
<q-dialog v-model="showDialog" :maximized="maximized" :transition-show="maximized ? 'fade' : 'scale'"
:transition-hide="maximized ? 'fade' : 'scale'">
<component ref="ui" :is="currentUI" :options="options" @clickOK="clickOK" @hide="showDialog = false" />
<q-dialog
v-model="showDialog"
:maximized="maximized"
:transition-show="maximized ? 'fade' : 'scale'"
:transition-hide="maximized ? 'fade' : 'scale'"
>
<component
ref="ui"
:is="currentUI"
:options="options"
@clickOK="clickOK"
@hide="showDialog = false"
/>
</q-dialog>
<!-- waitButton 单独一个 -->
<q-btn class="fixed-top-right" style="z-index: 9999" v-if="showWb" color="primary" :label="wbLabel" @click="
showWb = false;
wbEvent();
" />
<q-btn
class="fixed-top-right"
style="z-index: 9999"
v-if="showWb"
color="primary"
:label="wbLabel"
@click="
showWb = false;
wbEvent();
"
/>
</template>
<script>
@ -64,7 +81,12 @@ export default {
showConfirmBox: (message = "", title = "提示", isHtml = false, width) =>
new Promise((reslove, reject) => {
this.showUI(ConfirmBox, { message, title, isHtml, width }, false, reslove);
this.showUI(
ConfirmBox,
{ message, title, isHtml, width },
false,
reslove
);
}),
showMessageBox: (message, icon = "success", time) => {
@ -81,11 +103,11 @@ export default {
actions:
time === 0
? [
{
label: "确定",
color: "white",
},
]
{
label: "确定",
color: "white",
},
]
: [],
});
},
@ -140,11 +162,12 @@ export default {
},
};
Object.assign(window.quickcommand, quickcommandUI);
window.quickcommand.userData = this.$root.utools.userData;
Object.freeze(quickcommand);
},
methods: {
clickOK() { },
wbEvent() { },
clickOK() {},
wbEvent() {},
showUI(uiComponent, options, maximized, reslove) {
this.showDialog = true;
this.options = options;

View File

@ -4,91 +4,95 @@
*/
// 禁用危险函数
let whole = window.utools
let whole = window.utools;
// 数据库前缀
const DBPRE = {
QC: 'qc_', // 快捷命令
CFG: 'cfg_', // 配置
PAN: 'panel_', // 面板视图
STATUS: 'st_', // 状态变量
USR: 'usr_' // 用户数据
}
QC: "qc_", // 快捷命令
CFG: "cfg_", // 配置
PAN: "panel_", // 面板视图
STATUS: "st_", // 状态变量
USR: "usr_", // 用户数据
};
// 数据库函数封装
let getDB = id => {
let db = whole.db.get(id)
return db ? db.data : {}
}
let getDB = (id) => {
let db = whole.db.get(id);
return db ? db.data : {};
};
let putDB = (value, id) => {
let db = whole.db.get(id);
if (db) whole.db.put({
let db = whole.db.get(id);
return db
? whole.db.put({
_id: id,
data: value,
_rev: db._rev
})
else whole.db.put({
_rev: db._rev,
})
: whole.db.put({
_id: id,
data: value
});
}
data: value,
});
};
let delDB = id => {
return whole.db.remove(id)
}
let delDB = (id) => {
return whole.db.remove(id);
};
let getAll = key => {
return whole.db.allDocs(key)
}
let getAll = (key) => {
return whole.db.allDocs(key);
};
let delAll = key => {
return getAll(key).forEach(x => delDB(x._id))
}
let delAll = (key) => {
return getAll(key).forEach((x) => delDB(x._id));
};
let setStorage = whole.dbStorage.setItem
let getStorage = whole.dbStorage.getItem
let setStorage = whole.dbStorage.setItem;
let getStorage = whole.dbStorage.getItem;
const nativeId = utools.getNativeId()
const nativeId = utools.getNativeId();
let userData = {
put: function(value, id, isNative = true) {
let userData = getDB(DBPRE.USR + id)
if (isNative) {
userData[nativeId] = value;
} else {
userData.common = value;
delete userData[nativeId];
}
putDB(userData, DBPRE.USR + id);
},
get: function(id) {
let userData = getDB(DBPRE.USR + id)
return userData[nativeId] ? userData[nativeId] : userData.common
},
del: function(id) {
delDB(DBPRE.USR + id)
},
all: function() {
return getAll(DBPRE.USR).map((item) => {
let isNative = !!item.data[nativeId];
return {
id: item._id.replace(DBPRE.USR, ""),
value: isNative ? item.data[nativeId] : item.data.common,
isNative: isNative,
};
})
put: function (value, id, isNative = true) {
let userData = getDB(DBPRE.USR + id);
if (isNative) {
userData[nativeId] = value;
} else {
userData.common = value;
delete userData[nativeId];
}
}
let { ok } = putDB(userData, DBPRE.USR + id);
return ok;
},
get: function (id) {
let userData = getDB(DBPRE.USR + id);
let nativeData = userData[nativeId];
return nativeData ? nativeData : userData.common;
},
del: function (id) {
let { ok } = delDB(DBPRE.USR + id);
return ok;
},
all: function () {
return getAll(DBPRE.USR).map((item) => {
let isNative = !!item.data[nativeId];
return {
id: item._id.replace(DBPRE.USR, ""),
value: isNative ? item.data[nativeId] : item.data.common,
isNative: isNative,
};
});
},
};
export default {
whole,
getDB,
putDB,
delDB,
setStorage,
getStorage,
userData,
getAll,
delAll
}
whole,
getDB,
putDB,
delDB,
setStorage,
getStorage,
userData,
getAll,
delAll,
};

View File

@ -364,13 +364,13 @@ interface quickcommandApi {
runInTerminal(command: string);
/**
* utools.onPluginEnter code type payload
* utools.onPluginEnter `code` `type` `payload`
*
* code: 唯一标
* `code`:
*
* type: text | img | files | regex | over | window
* `type`: text | img | files | regex | over | window
*
* payload: 当匹配模式为关键字
* `payload`:
*
* ```js
* if (quickcommand.enterData.type == 'regex'){
@ -412,6 +412,53 @@ interface quickcommandApi {
* @param txt
*/
writeClipboard(txt: string);
userData: {
/**
* /
*
* --
*
* @param value: 要写入的数据
*
* @param id: 数据标识
*
* @param isNative: 是否仅本机有效 true
*
*```js
* // 仅本机有效时,不同设备可以分别设置 filePath 的值而不冲突
* quickcommand.userData.put('D:/xx.json' ,'filePath')
*
* // 非仅本机有效,则类似设置了一个缺省值,所有未设置仅本机有效的 filePath 值都为 D:/xx.json
* quickcommand.userData.put('D:/xx.json' ,'filePath', false)
* ```
*/
put(value: string, id: string, isNative?: boolean): boolean;
/**
*
*
* @param id: 数据标识
*
* ```js
* // 等效于特殊变量 {{usr:filePath}}
* quickcommand.userData.get('filePath')
* ```
*/
get(id: string): string;
/**
*
*
* @param id: 数据标识
*
*/
del(id: string): boolean;
/**
*
*
*/
all(): Array<{ id: string; value: string; isNative: boolean }>;
};
}
declare var quickcommand: quickcommandApi;