dev2
Panzihang 2023-07-26 14:34:26 +08:00
commit 5595689486
6 changed files with 481 additions and 1 deletions

View File

@ -16,6 +16,7 @@
@import "/style/css/layout.css"; @import "/style/css/layout.css";
@import "style/css/main.css"; @import "style/css/main.css";
@import "style/css/flex-main.css"; @import "style/css/flex-main.css";
@import "/wxcomponents/vant/dist/common/index.css";
/deep/.uni-select { /deep/.uni-select {
background-color: #fff; background-color: #fff;

290
common/sqlite.js 100644
View File

@ -0,0 +1,290 @@
module.exports = {
dbName: 'dianji_chat',
dbPath: '_doc/dianji_chat.db',
dbTable: 'dianji_chat',
dbIsOpen: false,
sqlData: [],
executeSqlCeshi(sql) {
return new Promise((resolve, reject) => {
// 打开数据库
plus.sqlite.selectSql({
name: this.dbName,
sql: sql,
success: function(e) {
resolve(e); // 成功回调
},
fail: function(e) {
console.log('selectSql failed: ' + JSON.stringify(e));
}
});
})
},
// 判断数据库是否打开
isOpen() {
// 数据库打开了就返回 true,否则返回 false
var open = plus.sqlite.isOpenDatabase({
name: this.dbName, // 数据库名称
path: this.dbPath // 数据库地址
})
return open;
},
// 创建数据库 或 有该数据库就打开
openSqlite() {
return new Promise((resolve, reject) => {
// 打开数据库
plus.sqlite.openDatabase({
name: this.dbName,
path: this.dbPath,
success(e) {
resolve(e); // 成功回调
},
fail(e) {
reject(e); // 失败回调
}
})
})
},
// 关闭数据库
closeSqlite() {
return new Promise((resolve, reject) => {
plus.sqlite.closeDatabase({
name: this.dbName,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
},
// 数据库建表 sql:'CREATE TABLE IF NOT EXISTS dbTable("id" varchar(50),"name" TEXT)
// 创建 CREATE TABLE IF NOT EXISTS 、 dbTable 是表名,不能用数字开头、括号里是表格的表头
createTable(dbTable, data) {
return new Promise((resolve, reject) => {
// executeSql: 执行增删改等操作的SQL语句
plus.sqlite.executeSql({
name: this.dbName,
name: "gather",
sql: `CREATE TABLE IF NOT EXISTS ${dbTable}(${data})`,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
},
// 数据库删表 sql:'DROP TABLE dbTable'
dropTable(dbTable) {
return new Promise((resolve, reject) => {
plus.sqlite.executeSql({
name: this.dbName,
sql: `DROP TABLE ${dbTable}`,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
},
// 向表格里添加数据 sql:'INSERT INTO dbTable VALUES('x','x','x')' 对应新增
// 或者 sql:'INSERT INTO dbTable ('x','x','x') VALUES('x','x','x')' 具体新增
// 插入 INSERT INTO 、 dbTable 是表名、根据表头列名插入列值
insertTableData(dbTable, data, condition) {
// 判断有没有传参
if (dbTable !== undefined && data !== undefined) {
// 判断传的参是否有值
var bol = (JSON.stringify(data) == "{}");
if (!bol) {
if (condition == undefined) {
var sql = `INSERT INTO ${dbTable} VALUES('${data}')`;
} else {
var sql = `INSERT INTO ${dbTable} (${condition}) VALUES(${data})`;
}
return new Promise((resolve, reject) => {
// 表格添加数据
plus.sqlite.executeSql({
name: this.dbName,
sql: sql,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
} else {
return new Promise((resolve, reject) => {
reject("错误添加")
})
}
} else {
return new Promise((resolve, reject) => {
reject("错误添加")
})
}
},
// 根据条件向表格里添加数据 有数据更新、无数据插入
// (建表时需要设置主键) 例如 --- "roomid" varchar(50) PRIMARY KEY
insertOrReplaceData(dbTable, data, condition) {
// 判断有没有传参
if (dbTable !== undefined && data !== undefined) {
if (condition == undefined) {
var sql = `INSERT OR REPLACE INTO ${dbTable} VALUES('${data}')`;
} else {
var sql = `INSERT OR REPLACE INTO ${dbTable} (${condition}) VALUES(${data})`;
}
// console.log(sql);
return new Promise((resolve, reject) => {
// 表格添加数据
plus.sqlite.executeSql({
name: this.dbName,
sql: sql,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
} else {
return new Promise((resolve, reject) => {
reject("错误添加")
})
}
},
// 查询获取数据库里的数据 sql:'SELECT * FROM dbTable WHERE lname = 'lvalue''
// 查询 SELECT * FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值
// selectTableData(dbTable, uname, namevalue, upass, passvalue,urrn,rrnvalue) {
selectTableData(dbTable, uname, namevalue) {
if (dbTable !== undefined) {
// // 第一个是表单名称,后两个参数是列表名,用来检索
// if (uname !== undefined && upass !== undefined && urrn!==undefined) {
// // 三个检索条件
// var sql = `SELECT * FROM ${dbTable} WHERE ${uname} = '${namevalue}' AND ${upass} = '${passvalue}' AND ${urrn}='${rrnvalue}'`;
// }
// if (uname !== undefined && upass !== undefined &&urrn==undefined) {
// // 两个检索条件
// var sql = `SELECT * FROM ${dbTable} WHERE ${uname} = '${namevalue}' AND ${upass} = '${passvalue}'`;
// }
if (uname !== undefined) {
// 一个检索条件
var sql = `SELECT * FROM ${dbTable} WHERE ${uname} = '${namevalue}'`;
// console.log(sql);
}
if (uname == undefined) {
var sql = `SELECT * FROM ${dbTable}`;
}
return new Promise((resolve, reject) => {
// 表格查询数据 执行查询的SQL语句
plus.sqlite.selectSql({
name: this.dbName,
sql: sql,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
} else {
return new Promise((resolve, reject) => {
reject("错误查询")
});
}
},
// 删除表里的数据 sql:'DELETE FROM dbTable WHERE lname = 'lvalue''
// 删除 DELETE FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值
// deleteTableData(dbTable, lname, lvalue, ww, ee) {
deleteTableData(dbTable, lname, lvalue) {
console.log("lname:" + lname + "," + "lvalue" + lvalue);
if (dbTable !== undefined) {
if (lname == undefined) {
var sql = `DELETE FROM ${dbTable}`;
} else {
// if (ww !== undefined) {
// // 两个检索条件
// var sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}' AND ${ww} = '${ee}'`;
// } else {
// 一个检索条件
var sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}'`;
// }
}
return new Promise((resolve, reject) => {
// 删除表数据
plus.sqlite.executeSql({
name: this.dbName,
sql: sql,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
} else {
return new Promise((resolve, reject) => {
reject("错误删除")
});
}
},
// 修改数据表里的数据 sql:"UPDATE dbTable SET 列名 = '列值',列名 = '列值' WHERE lname = 'lvalue'"
// 修改 UPDATE 、 dbTable 是表名, data: 要修改的列名=修改后列值, lname,lvalue 是查询条件的列名和列值
updateTableData(dbTable, data, lname, lvalue) {
if (lname == undefined) {
var sql = `UPDATE ${dbTable} SET ${data}`;
} else {
var sql = `UPDATE ${dbTable} SET ${data} WHERE ${lname} = '${lvalue}'`;
}
// WHERE 前面是要修改的列名、列值,后面是条件的列名、列值
return new Promise((resolve, reject) => {
// 修改表数据
plus.sqlite.executeSql({
name: this.dbName,
sql: sql,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
},
// 获取指定数据条数 sql:"SELECT * FROM dbTable ORDER BY 'id' DESC LIMIT 15 OFFSET 'num'"
// dbTable 表名, ORDER BY 代表排序默认正序, id 是排序的条件 DESC 代表倒序,从最后一条数据开始拿
// LIMIT 15 OFFSET '${num}',这句的意思是跳过 num 条拿 15 条数据, num 为跳过多少条数据是动态值
// 例 初始num设为0就从最后的数据开始拿15条下次不拿刚获取的数据所以可以让num为15这样就能一步一步的拿完所有的数据
pullSQL(dbTable, id, num) {
return new Promise((resolve, reject) => {
plus.sqlite.selectSql({
name: this.dbName,
sql: `SELECT * FROM ${dbTable} ORDER BY '${id}' DESC LIMIT 15 OFFSET '${num}'`,
success(e) {
resolve(e);
},
fail(e) {
reject(e);
}
})
})
}
}

View File

@ -23,6 +23,11 @@
场位监控 场位监控
</view> </view>
</navigator> </navigator>
<navigator url="/pages/test/ceshi" open-type="redirect">
<view class="item" :class="path==5?'active':''">
测试
</view>
</navigator>
</view> </view>
</template> </template>
<script> <script>

View File

@ -83,7 +83,6 @@
"style": { "style": {
"navigationBarTitleText": "杂项作业(工班信息)", "navigationBarTitleText": "杂项作业(工班信息)",
"usingComponents": { "usingComponents": {
"van-icon": "/wxcomponents/vant/dist/icon/index",
"van-button": "/wxcomponents/vant/dist/button/index" "van-button": "/wxcomponents/vant/dist/button/index"
} }
} }
@ -260,6 +259,12 @@
"van-button": "/wxcomponents/vant/dist/button/index" "van-button": "/wxcomponents/vant/dist/button/index"
} }
} }
},
{
"path": "pages/test/ceshi",
"style": {
"navigationBarTitleText": "测试"
}
} }
], ],
"tabBar": { "tabBar": {

View File

@ -4,6 +4,7 @@
<view class="formTitle"> <view class="formTitle">
基本信息 基本信息
</view> </view>
<view class="ul"> <view class="ul">
<view class="li"> <view class="li">
<p class="liTitle"><text class="required">*</text>资损发生环节</p> <p class="liTitle"><text class="required">*</text>资损发生环节</p>
@ -17,6 +18,7 @@
</radio-group> </radio-group>
</view> </view>
<view class="li"> <view class="li">
<p class="liTitle">板车照片</p> <p class="liTitle">板车照片</p>
<van-uploader> <van-uploader>
<van-button icon="plus" type="info">图片上传</van-button> <van-button icon="plus" type="info">图片上传</van-button>

View File

@ -0,0 +1,177 @@
<template>
<view class="">
<!-- <div>{{odb}}</div> -->
<div>
<button type="default" @click="isOpenDatabase"></button>
<button type="default" @click="openDatabase"></button>
<button type="default" @click="closeDatabase"></button>
<button type="default" @click="createChatTable"></button>
<button type="default" @click="dropTable"></button>
<button type="default" @click="transaction"></button>
<button type="default" @click="insertChatRow"></button>
<button type="default" @click="insertListChatRow"></button>
<button type="default" @click="deleteChatRow"></button>
<button type="default" @click="selectSql"></button>
</div>
<div v-for="item in sqlData" :key="item.id">
<text>{{item.id}}</text>
<text>{{item.content}}</text>
</div>
</view>
</template>
<script>
import Sqlite from "../../common/sqlite.js"
export default {
data() {
return {
dbName: 'dianji_chat',
dbPath: '_doc/dianji_chat.db',
dbTable: 'dianji_chat',
dbIsOpen: false,
sqlData: [],
chatText: {
id: 1,
fromId: '123',
toId: '321',
content: '你好!',
flag: 1
},
chatText1: [{
id: 11,
fromId: '123',
toId: '321',
content: '你好!',
flag: 1
},
{
id: 12,
fromId: '123',
toId: '321',
content: '你好!',
flag: 1
}
],
}
},
onLoad() {
// console.log('Sqlite:',Sqlite)
// this.open();
},
methods: {
// async open(){
// let odb=await Sqlite.openSqlite();
// this.odb=odb;
// console.log('',odb)
// },
createChatTable() {
let sql = 'CREATE TABLE if not exists ' + this.dbTable +
' ( "id" varchar(32) NOT NULL,"content" varchar(1024),"fromId" varchar(32), "toId" varchar(32), "flag" varchar(2), PRIMARY KEY ("id"));'
this.executeSql(sql)
},
openDatabase() {
plus.sqlite.openDatabase({
name: this.dbName,
path: this.dbPath,
success: function(e) {
console.log('打开数据库成功')
},
fail: function(e) {
console.log(e, '打开数据库失败')
}
});
},
isOpenDatabase() {
let res = plus.sqlite.isOpenDatabase({
name: this.dbName,
path: this.dbPath
});
if (res) {
uni.showToast({
icon: 'none',
title: '数据库已打开'
});
return;
} else {
uni.showToast({
icon: 'none',
title: '数据库未打开'
});
return;
}
},
closeDatabase() {
plus.sqlite.closeDatabase({
name: this.dbName,
success: function(e) {
console.log(JSON.stringify(e), 'closeDatabase dianji_chat success!');
},
fail: function(e) {
console.log('closeDatabase failed: ' + JSON.stringify(e));
}
});
},
insertChatRow() {
let data = this.chatText
data.id++
let sql = "insert into " + this.dbTable + " values('" + data.id + "','" + data.content +
"','" + data.fromId + "','" + data.toId + "'," + data.flag + ")";
this.executeSql(sql)
},
insertListChatRow() {
let data = this.chatText1
let sql = '';
for (let i = 0; i < data.length; i++) {
sql = "insert into " + this.dbTable + " values('" + data[i].id + "','" + data[i].content +
"','" + data[i].fromId + "','" + data[i].toId + "'," + data[i].flag + ")";
this.executeSql(sql)
}
},
deleteChatRow() {
let sql = "delete from " + this.dbTable;
this.executeSql(sql)
},
selectSql() {
let curPage = 1
let pageSize = 20
let fromId = '123'
let sql = 'select * from ' + this.dbTable + ' where fromId=' + fromId +
' limit ' + pageSize + ' offset ' + (curPage - 1) * pageSize;
this.executeSql(sql)
},
dropTable() {
let sql = 'DROP TABLE ' + this.dbTable + ';'
plus.sqlite.executeSql({
name: this.dbName,
sql: sql,
success: function(e) {
console.log("删除数据表成功");
},
fail: function(e) {
console.log('executeSql failed: ' + JSON.stringify(e));
}
})
},
transaction() {
plus.sqlite.transaction({
name: this.dbName,
operation: 'begin',
success: function(e) {
console.log('transaction success!');
},
fail: function(e) {
console.log('transaction failed: ' + JSON.stringify(e));
}
});
},
executeSql(sql) {
let a = Sqlite.executeSqlCeshi(sql)
console.log(a);
},
}
}
</script>
<style>
</style>