427 lines
9.6 KiB
JavaScript
427 lines
9.6 KiB
JavaScript
const dbName = "sqlite"
|
|
// "user", "log"
|
|
|
|
export const openDb = () => {
|
|
//如果数据库存在则打开,不存在则创建。
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.openDatabase({
|
|
name: dbName, //数据库名称
|
|
path: `_doc/${dbName}.db`, //数据库地址
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
// 查询所有数据表名
|
|
export const getTable = () => {
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.selectSql({
|
|
name: dbName,
|
|
sql: "select * FROM sqlite_master where type='table'",
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
// 查询表数据总条数
|
|
export const getCount = (tabName) => {
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.selectSql({
|
|
name: dbName,
|
|
sql: "select count(*) as num from " + tabName,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
// 查询表是否存在
|
|
export const isTable = (tabName) => {
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.selectSql({
|
|
name: dbName,
|
|
sql: `select count(*) as isTable FROM sqlite_master where type='table' and name='${tabName}'`,
|
|
success(e) {
|
|
// console.log(e)
|
|
resolve(e[0].isTable ? true : false);
|
|
},
|
|
fail(e) {
|
|
console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
/**
|
|
* 修改数据
|
|
* @param {String} tabName 表名
|
|
* @param {Object} setData 修改数据
|
|
* @param {String} setName 查询字段名
|
|
* @param {String} setVal 查询字段值
|
|
*/
|
|
export const updateSQL = (tabName, setData, setName, setVal) => {
|
|
if (JSON.stringify(setData) !== '{}') {
|
|
let dataKeys = Object.keys(setData)
|
|
let setStr = ''
|
|
dataKeys.forEach((item, index) => {
|
|
// console.log(setData[item])
|
|
setStr += (
|
|
`${item} = ${JSON.stringify(setData[item])}${dataKeys.length - 1 !== index ? "," : ""}`)
|
|
})
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.executeSql({
|
|
name: dbName,
|
|
sql: `update ${tabName} set ${setStr} where ${setName} = "${setVal}"`,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
} else {
|
|
return new Promise((resolve, reject) => {
|
|
reject("错误")
|
|
});
|
|
}
|
|
}
|
|
|
|
//删除数据库数据
|
|
export const deleteInformationType = (tabName,setData) => {
|
|
if (JSON.stringify(setData) !== '{}') {
|
|
let dataKeys = Object.keys(setData)
|
|
let setStr = ''
|
|
dataKeys.forEach((item, index) => {
|
|
// console.log(setData[item])
|
|
setStr += (
|
|
`${item}=${JSON.stringify(setData[item])}${dataKeys.length - 1 !== index ? " and " : ""}`)
|
|
})
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.executeSql({
|
|
name: dbName,
|
|
sql: `delete from ${tabName} where ${setStr}`,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
} else {
|
|
return new Promise((resolve, reject) => {
|
|
reject("错误")
|
|
});
|
|
}
|
|
}
|
|
|
|
//关闭数据库
|
|
export const closeSQL = (name) => {
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.closeDatabase({
|
|
name: 'pop',
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
//监听数据库是否开启
|
|
export const isOpen = () => {
|
|
let open = plus.sqlite.isOpenDatabase({
|
|
name: dbName,
|
|
path: `_doc/${dbName}.db`,
|
|
})
|
|
return open;
|
|
}
|
|
|
|
// 创建用户表
|
|
export const addUserTable = () => {
|
|
const tabName = 'user'
|
|
// tabName不能用数字作为表格名的开头
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.executeSql({
|
|
name: dbName,
|
|
sql: `create table if not exists ${tabName}("id" INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255) NOT NULL, ic VARCHAR(255), ic2 VARCHAR(255), number CHAR(50), type CHAR(50) )`,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
// 创建日志表
|
|
export const addLogTable = () => {
|
|
const tabName = 'log'
|
|
// tabName不能用数字作为表格名的开头
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.executeSql({
|
|
name: dbName,
|
|
sql: `create table if not exists ${tabName}("id" INTEGER PRIMARY KEY AUTOINCREMENT,"name" VARCHAR(255) NOT NULL,action VARCHAR(255) NOT NULL, create_time datetime DEFAULT (datetime('now', 'localtime')))`,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
// 创建内镜存储表
|
|
export const addScopeTable = () => {
|
|
const tabName = 'scope'
|
|
// tabName不能用数字作为表格名的开头
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.executeSql({
|
|
name: dbName,
|
|
sql: `create table if not exists ${tabName}("key" INTEGER NOT NULL,"ic" CHAR(50) , "rfid" CHAR(50), "name" VARCHAR(255), time datetime DEFAULT (datetime('now', 'localtime')))`,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
// 创建内镜存储表
|
|
export const addEndoTable = () => {
|
|
const tabName = 'endo'
|
|
// tabName不能用数字作为表格名的开头
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.executeSql({
|
|
name: dbName,
|
|
sql: `create table if not exists ${tabName}("id" INTEGER PRIMARY KEY AUTOINCREMENT,"endoscope_id" CHAR(255), "name" CHAR(50), "brand" CHAR(50),"model" CHAR(50), "type" CHAR(50), "rfid" CHAR(50) ,"ic" VARCHAR(255), "ic2" VARCHAR(255), time datetime DEFAULT (datetime('now', 'localtime')))`,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 添加数据
|
|
* @param {String} tabName 表名
|
|
* @param {Object} obj 添加数据
|
|
*/
|
|
export const addTabItem = (tabName,obj) => {
|
|
if (obj) {
|
|
let keys = Object.keys(obj)
|
|
let keyStr = keys.toString()
|
|
let valStr = ''
|
|
keys.forEach((item, index) => {
|
|
if (keys.length - 1 == index) {
|
|
valStr += ('"' + obj[item] + '"')
|
|
} else {
|
|
valStr += ('"' + obj[item] + '",')
|
|
}
|
|
})
|
|
// console.log(valStr)
|
|
let sqlStr = `insert into ${tabName} (${keyStr}) values(${valStr})`
|
|
// console.log(sqlStr)
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.executeSql({
|
|
name: dbName,
|
|
sql: sqlStr,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
// console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
} else {
|
|
return new Promise((resolve, reject) => {
|
|
reject("错误")
|
|
})
|
|
}
|
|
}
|
|
|
|
// 合并数据
|
|
export const mergeSql = (name,tabName,tabs) => {
|
|
if (!tabs || tabs.length == 0) {
|
|
return new Promise((resolve, reject) => {
|
|
reject("错误")
|
|
})
|
|
}
|
|
let itemValStr = ''
|
|
tabs.forEach((item, index) => {
|
|
let itemKey = Object.keys(item)
|
|
let itemVal = ''
|
|
itemKey.forEach((key, i) => {
|
|
if (itemKey.length - 1 == i) {
|
|
if (typeof item[key] == 'object') {
|
|
itemVal += (`'${JSON.stringify(item[key])}'`)
|
|
} else {
|
|
itemVal += (`'${item[key]}'`)
|
|
}
|
|
} else {
|
|
if (typeof item[key] == 'object') {
|
|
itemVal += (`'${JSON.stringify(item[key])}',`)
|
|
} else {
|
|
itemVal += (`'${item[key]}',`)
|
|
}
|
|
}
|
|
})
|
|
if (tabs.length - 1 == index) {
|
|
itemValStr += ('(' + itemVal + ')')
|
|
} else {
|
|
itemValStr += ('(' + itemVal + '),')
|
|
}
|
|
})
|
|
let keys = Object.keys(tabs[0])
|
|
let keyStr = keys.toString()
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.executeSql({
|
|
name: name,
|
|
sql: `insert or ignore into ${tabName} (${keyStr}) values ${itemValStr}`,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
// console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取分页数据库数据
|
|
* @param {String} tabName 表名
|
|
* @param {Number} num 页码
|
|
* @param {Number} size 每页数据条数
|
|
* @param {String} byName 排序字段
|
|
* @param {String} byType 排序方式
|
|
*/
|
|
export const getDataList = async (tabName, num = 1, size = 15, byName, byType) => {
|
|
let count = 0
|
|
let sql = ''
|
|
let numindex = 0
|
|
let total = 0
|
|
await getCount(tabName).then((resNum) => {
|
|
count = Math.ceil(resNum[0].num / size)
|
|
total = resNum[0].num
|
|
})
|
|
if(((num - 1) * size) == 0) {
|
|
numindex = 0
|
|
} else {
|
|
numindex = ((num - 1) * size) + 1
|
|
}
|
|
sql = `select * from ${tabName}`
|
|
if(byName && byType) {
|
|
// desc asc
|
|
sql += ` order by ${byName} ${byType}`
|
|
}
|
|
sql += ` limit ${numindex},${size}`
|
|
if (count < num - 1) {
|
|
return new Promise((resolve, reject) => {
|
|
reject("无数据")
|
|
});
|
|
} else {
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.selectSql({
|
|
name: dbName,
|
|
// sql: "select * from userInfo limit 3 offset 3",
|
|
sql:sql ,
|
|
success(e) {
|
|
let data = { list: e, totalPage: count, total: total }
|
|
resolve(data);
|
|
},
|
|
fail(e) {
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
//查询数据库数据
|
|
export const selectDataList = (tabName,setData,byName,byType) => {
|
|
let setStr = ''
|
|
let sql = ''
|
|
if (JSON.stringify(setData) !== '{}') {
|
|
let dataKeys = Object.keys(setData)
|
|
dataKeys.forEach((item, index) => {
|
|
// console.log(setData[item])
|
|
setStr += (
|
|
`${item}=${JSON.stringify(setData[item])}${dataKeys.length - 1 !== index ? " and " : ""}`)
|
|
})
|
|
// console.log(setStr)
|
|
sql = `select * from ${tabName} where ${setStr}`
|
|
} else {
|
|
sql = `select * from ${tabName}`
|
|
}
|
|
if(byName && byType) {
|
|
// desc asc
|
|
sql += ` order by ${byName} ${byType}`
|
|
}
|
|
// console.log(sql)
|
|
if (tabName !== undefined) {
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.selectSql({
|
|
name: dbName,
|
|
sql: sql,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
console.log(e)
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
} else {
|
|
return new Promise((resolve, reject) => {
|
|
reject("错误")
|
|
});
|
|
}
|
|
}
|
|
|
|
// 删除数据表
|
|
export const dropTable = (tabName) => {
|
|
return new Promise((resolve, reject) => {
|
|
plus.sqlite.executeSql({
|
|
name: dbName,
|
|
sql: `DROP TABLE ${tabName}`,
|
|
success(e) {
|
|
resolve(e);
|
|
},
|
|
fail(e) {
|
|
reject(e);
|
|
}
|
|
})
|
|
})
|
|
}
|