diff --git a/components/hqs-popup/hqs-popup.vue b/components/hqs-popup/hqs-popup.vue
new file mode 100644
index 0000000..1a2c5f5
--- /dev/null
+++ b/components/hqs-popup/hqs-popup.vue
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
diff --git a/components/hqs-popup/uni-popup.vue b/components/hqs-popup/uni-popup.vue
new file mode 100644
index 0000000..c1e8c53
--- /dev/null
+++ b/components/hqs-popup/uni-popup.vue
@@ -0,0 +1,284 @@
+
+
+
+
+
+
diff --git a/components/hqs-popup/uni-transition.vue b/components/hqs-popup/uni-transition.vue
new file mode 100644
index 0000000..908a939
--- /dev/null
+++ b/components/hqs-popup/uni-transition.vue
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+
+
+
diff --git a/components/image-grid/media-list.vue b/components/image-grid/media-list.vue
new file mode 100644
index 0000000..99ade52
--- /dev/null
+++ b/components/image-grid/media-list.vue
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item.value }}
+
+
+
+
+
+
+
+ {{ item.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.value }}
+
+
+
+
+
+
+
+ {{ item.value }}
+
+
+
+
+
+
+
+
+
+ 正在加载...
+ 没有更多了~
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages2/editCms/css/edit.css b/pages2/editCms/css/edit.css
new file mode 100644
index 0000000..1d974a3
--- /dev/null
+++ b/pages2/editCms/css/edit.css
@@ -0,0 +1,341 @@
+ @font-face {
+ font-family: 'iconfont';
+ src: url('data:font/truetype;charset=utf-8;base64,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AAsAJgFuAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAAAKQ3JlYXRlZCBieSBpY29uZm9udAoAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAAVmVyc2lvbiAxLjAAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AAEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC4AAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAGh0dHA6Ly9mb250ZWxsby5jb20AAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwAAAAEAAgECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkEcmVkbwlzZWxlY3RhbGwHcHJldmlldwR1bmRvBGRhdGUHY2xlYXJ1cBU3MjNiaWFuamlxaV9kdWFuaG91anUWNzIyYmlhbmppcWlfZHVhbnFpYW5qdQotY2hlY2tsaXN0DWRpcmVjdGlvbi1sdHINZGlyZWN0aW9uLXJ0bAtmb250Ymdjb2xvcg1jbGVhcmVkZm9ybWF0BGZvbnQHb3V0ZGVudAhmb250c2l6ZQp0ZXh0X2NvbG9yD2Zvcm1hdC1oZWFkZXItMg9mb3JtYXQtaGVhZGVyLTMLbGluZS1oZWlnaHQPZm9ybWF0LWhlYWRlci0xD2Zvcm1hdC1oZWFkZXItNA9mb3JtYXQtaGVhZGVyLTUPZm9ybWF0LWhlYWRlci02EUNoYXJhY3Rlci1TcGFjaW5nBmluZGVudAZiYW9jdW4IcXVhbnBpbmcFZnV6aGkHc2hhbmNodQxiaWFuamlzZWt1YWkJZmVuZ2V4aWFuB2RpYW56YW4MY2hhcnVsaWFuamllC2NoYXJ1dHVwaWFuCnd1eHVwYWlsaWUManV6aG9uZ2R1aXFpB3lpbnlvbmcLeW91eHVwYWlsaWUIeW91ZHVpcWkJeml0aWRhaW1hCHhpYW9saWFuCXppdGlqaWFjdQ96aXRpc2hhbmNodXhpYW4Neml0aXNoYW5nYmlhbwp6aXRpYmlhb3RpDnppdGl4aWFodWF4aWFuCXppdGl4aWV0aQl6aXRpeWFuc2UIenVvZHVpcWkJeml0aXl1bGFuC3ppdGl4aWFiaWFvC3p1b3lvdWR1aXFpB2R1aWdvdXgGZ3VhbmJpDnNoZW5neWluX3NoaXRpAAAAAAAB//8AAgABAAAADAAAABYAAAACAAEAAwA6AAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAANhk6GIAAAAA2GToYg==') format('truetype');
+ font-weight: normal;
+ font-style: normal;
+ font-display: swap;
+ }
+
+ .iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+
+ .icon-redo:before {
+ content: "\e627";
+ }
+
+ .icon-undo:before {
+ content: "\e633";
+ }
+
+ .icon-indent:before {
+ content: "\eb28";
+ }
+
+ .icon-outdent:before {
+ content: "\e6e8";
+ }
+
+ .icon-fontsize:before {
+ content: "\e6fd";
+ }
+
+ .icon-format-header-1:before {
+ content: "\e860";
+ }
+
+ .icon-format-header-4:before {
+ content: "\e863";
+ }
+
+ .icon-format-header-5:before {
+ content: "\e864";
+ }
+
+ .icon-format-header-6:before {
+ content: "\e865";
+ }
+
+ .icon-clearup:before {
+ content: "\e64d";
+ }
+
+ .icon-preview:before {
+ content: "\e631";
+ }
+
+ .icon-date:before {
+ content: "\e63e";
+ }
+
+ .icon-fontbgcolor:before {
+ content: "\e678";
+ }
+
+ .icon-clearedformat:before {
+ content: "\e67e";
+ }
+
+ .icon-font:before {
+ content: "\e684";
+ }
+
+ .icon-723bianjiqi_duanhouju:before {
+ content: "\e65f";
+ }
+
+ .icon-722bianjiqi_duanqianju:before {
+ content: "\e660";
+ }
+
+ .icon-text_color:before {
+ content: "\e72c";
+ }
+
+ .icon-format-header-2:before {
+ content: "\e75c";
+ }
+
+ .icon-format-header-3:before {
+ content: "\e75d";
+ }
+
+ .icon--checklist:before {
+ content: "\e664";
+ }
+
+ .icon-baocun:before {
+ content: "\ec09";
+ }
+
+ .icon-line-height:before {
+ content: "\e7f8";
+ }
+
+ .icon-quanping:before {
+ content: "\ec13";
+ }
+
+ .icon-direction-rtl:before {
+ content: "\e66e";
+ }
+
+ .icon-direction-ltr:before {
+ content: "\e66d";
+ }
+
+ .icon-selectall:before {
+ content: "\e62b";
+ }
+
+ .icon-fuzhi:before {
+ content: "\ec7a";
+ }
+
+ .icon-shanchu:before {
+ content: "\ec7b";
+ }
+
+ .icon-bianjisekuai:before {
+ content: "\ec7c";
+ }
+
+ .icon-fengexian:before {
+ content: "\ec7f";
+ }
+
+ .icon-dianzan:before {
+ content: "\ec80";
+ }
+
+ .icon-charulianjie:before {
+ content: "\ec81";
+ }
+
+ .icon-charutupian:before {
+ content: "\ec82";
+ }
+
+ .icon-wuxupailie:before {
+ content: "\ec83";
+ }
+
+ .icon-juzhongduiqi:before {
+ content: "\ec84";
+ }
+
+ .icon-yinyong:before {
+ content: "\ec85";
+ }
+
+ .icon-youxupailie:before {
+ content: "\ec86";
+ }
+
+ .icon-youduiqi:before {
+ content: "\ec87";
+ }
+
+ .icon-zitidaima:before {
+ content: "\ec88";
+ }
+
+ .icon-xiaolian:before {
+ content: "\ec89";
+ }
+
+ .icon-zitijiacu:before {
+ content: "\ec8a";
+ }
+
+ .icon-zitishanchuxian:before {
+ content: "\ec8b";
+ }
+
+ .icon-zitishangbiao:before {
+ content: "\ec8c";
+ }
+
+ .icon-zitibiaoti:before {
+ content: "\ec8d";
+ }
+
+ .icon-zitixiahuaxian:before {
+ content: "\ec8e";
+ }
+
+ .icon-zitixieti:before {
+ content: "\ec8f";
+ }
+
+ .icon-zitiyanse:before {
+ content: "\ec90";
+ }
+
+ .icon-zuoduiqi:before {
+ content: "\ec91";
+ }
+
+ .icon-zitiyulan:before {
+ content: "\ec92";
+ }
+
+ .icon-zitixiabiao:before {
+ content: "\ec93";
+ }
+
+ .icon-zuoyouduiqi:before {
+ content: "\ec94";
+ }
+
+ .icon-duigoux:before {
+ content: "\ec9e";
+ }
+
+ .icon-guanbi:before {
+ content: "\eca0";
+ }
+
+ .icon-shengyin_shiti:before {
+ content: "\eca5";
+ }
+
+ .icon-Character-Spacing:before {
+ content: "\e964";
+ }
+
+ .item-wrap {
+ display: flex;
+ }
+
+ .color-000000-item {
+ background-color: #000000;
+ }
+
+ .color-7a7e83-item {
+ background-color: #7a7e83;
+ }
+
+ .color-ff0000-item {
+ background-color: #ff0000;
+ }
+
+ .color-ff9900-item {
+ background-color: #ff9900;
+ }
+
+ .color-1aad19-item {
+ background-color: #1aad19;
+ }
+
+ .color-1a73e8-item {
+ background-color: #1a73e8;
+ }
+
+ .color-cc00cc-item {
+ background-color: #cc00cc;
+ }
+
+ .color-item {
+ display: inline-block;
+ cursor: pointer;
+ font-size: 20px;
+ border-radius: 50%;
+ background-clip: content-box;
+ margin: 8px 8px;
+ width: 16px;
+ height: 16px;
+ }
+
+
+ .page-body {
+ height: calc(100vh - var(--window-top) - var(--status-bar-height));
+ }
+
+ .wrapper {
+ height: 100%;
+ }
+
+ .editor-wrapper {
+ height: calc(100vh - var(--window-top) - var(--status-bar-height) - 140px);
+ background: #fff;
+ }
+
+ .iconfont {
+ display: inline-block;
+ padding: 8px 8px;
+ width: 24px;
+ height: 24px;
+ cursor: pointer;
+ font-size: 20px;
+ }
+
+ .toolbar {
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ z-index: 99;
+
+ box-sizing: border-box;
+ border-bottom: 0;
+ font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
+
+ margin-bottom: 30rpx;;
+ }
+
+ .is-color {
+ border:12rpx solid #ccc;
+ }
+
+ .not-color {
+ border:12rpx solid #fff;
+ }
+
+ .ql-container {
+ box-sizing: border-box;
+ padding: 12px 15px;
+ width: 100%;
+ min-height: 30vh;
+ height: 100%;
+ margin-top: 20px;
+ font-size: 16px;
+ line-height: 1.5;
+ }
+
+ .ql-active {
+ color: #06c;
+ }
diff --git a/pages2/editCms/editCms.vue b/pages2/editCms/editCms.vue
new file mode 100644
index 0000000..01e8ccb
--- /dev/null
+++ b/pages2/editCms/editCms.vue
@@ -0,0 +1,1171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+ 标题样式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加图片
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 投票
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+ 点击添加文字
+
+
+
+
+
+ {{ item.text }}
+
+
+ 点击添加文字
+
+
+
+
+
+
+
+
+
+
+
+ {{ index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages2/editCms/editSetting.vue b/pages2/editCms/editSetting.vue
new file mode 100644
index 0000000..d5316ad
--- /dev/null
+++ b/pages2/editCms/editSetting.vue
@@ -0,0 +1,516 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages2/editCms/editText.vue b/pages2/editCms/editText.vue
new file mode 100644
index 0000000..4f37e71
--- /dev/null
+++ b/pages2/editCms/editText.vue
@@ -0,0 +1,500 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages2/editCms/preview.vue b/pages2/editCms/preview.vue
new file mode 100644
index 0000000..a2f44d3
--- /dev/null
+++ b/pages2/editCms/preview.vue
@@ -0,0 +1,770 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ userInfo.nickname || '' }}
+ ·
+
+ 刚刚
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.vote.voteTitle }}
+ 截止时间:{{ item.vote.datetime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 已截止
+
+
+
+ {{ isExpired ? '已截止' : '点击登录后投票' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.value?item.value:0}}
+
+
+
+
+
+
+
+
+
+
diff --git a/pages2/editCms/smallTitle.vue b/pages2/editCms/smallTitle.vue
new file mode 100644
index 0000000..fe8d0fa
--- /dev/null
+++ b/pages2/editCms/smallTitle.vue
@@ -0,0 +1,331 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages2/editCms/titleStyle.vue b/pages2/editCms/titleStyle.vue
new file mode 100644
index 0000000..59716d0
--- /dev/null
+++ b/pages2/editCms/titleStyle.vue
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages2/editCms/vote.vue b/pages2/editCms/vote.vue
new file mode 100644
index 0000000..707b4e4
--- /dev/null
+++ b/pages2/editCms/vote.vue
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + 添加选项
+
+
+
+
+
+ {{ birthday ? birthday : "请选择截止日期" }}
+
+
+
+
+ {{array[select]}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages2/edit_list/edit_list.vue b/pages2/edit_list/edit_list.vue
new file mode 100644
index 0000000..72b1a86
--- /dev/null
+++ b/pages2/edit_list/edit_list.vue
@@ -0,0 +1,266 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+ 阅读量 {{ item.view_count }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uniCloud-alipay/cloudfunctions/cms-vote/index.obj.js b/uniCloud-alipay/cloudfunctions/cms-vote/index.obj.js
new file mode 100644
index 0000000..4213a72
--- /dev/null
+++ b/uniCloud-alipay/cloudfunctions/cms-vote/index.obj.js
@@ -0,0 +1,168 @@
+const { count } = require("console");
+
+const db = uniCloud.database();
+const _ =db.command;
+module.exports = {
+ _before: function () { // 通用预处理器
+
+ },
+ async getVoteInfo(query) {
+ try {
+ let {
+ vote_id,
+ user_id
+ } = query;
+ // 用户选择
+ const user_res = await db.collection("cms-vote")
+ .where({
+ user_id: user_id,
+ vote_id: vote_id
+ })
+ .get();
+ // 获得总选择
+ const all_res = await db.collection("cms-vote-info")
+ .where({
+ vote_id: vote_id
+ })
+ .get();
+
+ return {
+ code: 200,
+ user_data: user_res.data[0],
+ all_data: all_res.data[0]
+ }
+
+
+ } catch(e) {
+ return {
+ code: 500,
+ msg: e.message
+ }
+ }
+ },
+ async add_vote(query) {
+ try {
+ let {
+ vote_id,
+ selectValue,
+ user_id,
+ type
+ } = query;
+
+ let t = await db.collection("cms-vote")
+ .where({
+ user_id: user_id,
+ vote_id: vote_id
+ })
+ .count();
+
+
+
+ if (t.total > 0) {
+ return {
+ code: 500,
+ msg: "已投票!"
+ }
+ } else {
+ await db.collection("cms-vote").add({
+ vote_id: vote_id,
+ selectValue: selectValue,
+ user_id: user_id,
+ type: type
+ });
+ const res = await db.collection("cms-vote-info")
+ .where({
+ vote_id: vote_id
+ })
+ .count();
+
+ if (res.total > 0) {
+ if (type === "单选(默认)") {
+ const voteInfo = await db.collection("cms-vote-info")
+ .where({
+ vote_id: vote_id
+ })
+ .get();
+ console.log(voteInfo)
+ let values = voteInfo.data[0].selectValue;
+ values[selectValue] = (values[selectValue] || 0) + 1;
+
+ await db.collection("cms-vote-info")
+ .where({
+ vote_id: vote_id
+ })
+ .update({
+ selectValue: values,
+ count: voteInfo.data[0].count + 1
+ });
+
+
+
+ } else {
+ const voteInfo = await db.collection("cms-vote-info")
+ .where({
+ vote_id: vote_id
+ })
+ .get();
+ console.log(voteInfo)
+
+ let values = voteInfo.data[0].selectValue;
+
+ for (let i = 0; i < selectValue.length ; i ++ ) {
+ values[selectValue[i]] = (values[selectValue[i]] || 0) + 1;
+ console.log((values[selectValue] || 0) + 1, values);
+ }
+ console.log(values);
+
+ await db.collection("cms-vote-info")
+ .where({
+ vote_id: vote_id
+ })
+ .update({
+ selectValue: values,
+ count: voteInfo.data[0].count + 1
+ });
+ }
+ } else {
+ if (type === "单选(默认)") {
+ await db.collection("cms-vote-info")
+ .add({
+ vote_id: vote_id,
+ selectValue: {
+ [selectValue]: 1
+ },
+ type: type,
+ count: 1
+ });
+ } else {
+ let values = {};
+
+ for (let i = 0 ; i < selectValue.length; i ++ ) {
+ values[selectValue[i]] = 1;
+ }
+ console.log(values);
+ await db.collection("cms-vote-info")
+ .add({
+ vote_id: vote_id,
+ selectValue: values,
+ type: type,
+ count: 1
+ });
+ }
+
+ }
+
+ return {
+ code: 200
+ }
+ }
+
+
+ } catch(e) {
+ return {
+ code: 500,
+ msg: e.message
+ }
+ }
+ }
+}
diff --git a/uniCloud-alipay/cloudfunctions/cms-vote/package.json b/uniCloud-alipay/cloudfunctions/cms-vote/package.json
new file mode 100644
index 0000000..6b65650
--- /dev/null
+++ b/uniCloud-alipay/cloudfunctions/cms-vote/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "cms-vote",
+ "dependencies": {},
+ "extensions": {
+ "uni-cloud-jql": {}
+ }
+}
\ No newline at end of file
diff --git a/uniCloud-alipay/cloudfunctions/ext-storage-co/ext-storage-co.param.js b/uniCloud-alipay/cloudfunctions/ext-storage-co/ext-storage-co.param.js
new file mode 100644
index 0000000..b38c3c6
--- /dev/null
+++ b/uniCloud-alipay/cloudfunctions/ext-storage-co/ext-storage-co.param.js
@@ -0,0 +1,2 @@
+// 本文件中的内容将在云对象【运行】时解析为运行参数
+// 配置教程参考:https://uniapp.dcloud.net.cn/uniCloud/rundebug.html#run-obj-param
\ No newline at end of file
diff --git a/uniCloud-alipay/database/cms-temp.schema.json b/uniCloud-alipay/database/cms-temp.schema.json
new file mode 100644
index 0000000..2730d54
--- /dev/null
+++ b/uniCloud-alipay/database/cms-temp.schema.json
@@ -0,0 +1,70 @@
+{
+ "bsonType": "object",
+ "required": [
+ "temptele_name",
+ "select_src",
+ "font_color",
+ "temptele_src",
+ "backgrond_color",
+ "select_icon_color",
+ "icon_color",
+ "user_name_color",
+ "btn_color"
+ ],
+ "permission": {
+ "read": true,
+ "create": "'admin' in auth.role", // 登录用户可创建
+ "update": "'admin' in auth.role", // 仅作者可修改
+ "delete": "'admin' in auth.role" // 作者或管理员可删除
+ },
+ "properties": {
+ "_id": {
+ "description": "ID,系统自动生成",
+ "bsonType": "objectId"
+ },
+ "font_color": {
+ "bsonType": "string",
+ "description": "文字颜色代码",
+ "pattern": "^#[0-9a-fA-F]{3,6}$"
+ },
+ "backgrond_color": {
+ "bsonType": "string",
+ "description": "背景颜色代码",
+ "pattern": "^#[0-9a-fA-F]{3,6}$"
+ },
+ "select_src": {
+ "bsonType": "string",
+ "description": "素材选择(选择模板的样例图)地址"
+ },
+ "temptele_src": {
+ "bsonType": "string",
+ "description": "模板图片(实际使用)地址"
+ },
+ "temptele_name": {
+ "bsonType": "string",
+ "description": "模板名称",
+ "minLength": 2,
+ "maxLength": 50
+ },
+ "select_icon_color": {
+ "bsonType": "string",
+ "description": "图标选中颜色的代码",
+ "pattern": "^#[0-9a-fA-F]{3,6}$"
+ },
+ "icon_color": {
+ "bsonType": "string",
+ "description": "图标未选中颜色的代码",
+ "pattern": "^#[0-9a-fA-F]{3,6}$"
+ },
+ "user_name_color": {
+ "bsonType": "string",
+ "description": "默认用户名字颜色的代码",
+ "pattern": "^#[0-9a-fA-F]{3,6}$"
+ },
+ "btn_color": {
+ "bsonType": "string",
+ "description": "按钮(回复和删除评论)默认颜色的代码",
+ "pattern": "^#[0-9a-fA-F]{3,6}$"
+ }
+ }
+}
\ No newline at end of file
diff --git a/uniCloud-alipay/database/cms-vote-info.schema.json b/uniCloud-alipay/database/cms-vote-info.schema.json
new file mode 100644
index 0000000..c34b09e
--- /dev/null
+++ b/uniCloud-alipay/database/cms-vote-info.schema.json
@@ -0,0 +1,27 @@
+{
+ "bsonType": "object",
+ "required": [],
+ "permission": {
+ "read": true,
+ "create": true,
+ "update": true,
+ "delete": true
+ },
+ "properties": {
+ "_id": {
+ "description": "ID,系统自动生成"
+ },
+ "vote_id": {
+ "bsonType": "string"
+ },
+ "selectValue": {
+ "bsonType": "object"
+ },
+ "type": {
+ "bsonType": "string"
+ },
+ "count": {
+ "bsonType": "int"
+ }
+ }
+}
\ No newline at end of file
diff --git a/uniCloud-alipay/database/cms-vote.schema.json b/uniCloud-alipay/database/cms-vote.schema.json
new file mode 100644
index 0000000..7df81b3
--- /dev/null
+++ b/uniCloud-alipay/database/cms-vote.schema.json
@@ -0,0 +1,27 @@
+{
+ "bsonType": "object",
+ "required": [],
+ "permission": {
+ "read": true,
+ "create": true,
+ "update": true,
+ "delete": true
+ },
+ "properties": {
+ "_id": {
+ "description": "ID,系统自动生成"
+ },
+ "user_id": {
+ "bsonType": "string"
+ },
+ "vote_id": {
+ "bsonType": "string"
+ },
+ "selectValue": {
+ "bsonType": "array"
+ },
+ "type": {
+ "bsonType": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/uniCloud-alipay/database/db_init.json b/uniCloud-alipay/database/db_init.json
new file mode 100644
index 0000000..c00926f
--- /dev/null
+++ b/uniCloud-alipay/database/db_init.json
@@ -0,0 +1,23 @@
+{
+ "uni-cms-unlock-record": {
+ "data": [],
+ "index": [
+ {
+ "IndexName": "unique_article_trans_",
+ "MgoKeySchema": {
+ "MgoIndexKeys": [{
+ "Name": "unique_id",
+ "Direction": "1"
+ },{
+ "Name": "article_id",
+ "Direction": "1"
+ },{
+ "Name": "trans_id",
+ "Direction": "1"
+ }],
+ "MgoIsUnique": false
+ }
+ }
+ ]
+ }
+}
diff --git a/uniCloud-alipay/database/ip.schema.json b/uniCloud-alipay/database/ip.schema.json
new file mode 100644
index 0000000..e1e3915
--- /dev/null
+++ b/uniCloud-alipay/database/ip.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":[],"permission":{"read":false,"create":false,"update":false,"delete":false},"properties":{"_id":{"description":"ID,系统自动生成"}}}
\ No newline at end of file
diff --git a/uniCloud-alipay/database/user-give-gift-log.schema.json b/uniCloud-alipay/database/user-give-gift-log.schema.json
new file mode 100644
index 0000000..e1e3915
--- /dev/null
+++ b/uniCloud-alipay/database/user-give-gift-log.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":[],"permission":{"read":false,"create":false,"update":false,"delete":false},"properties":{"_id":{"description":"ID,系统自动生成"}}}
\ No newline at end of file
diff --git a/uniCloud-alipay/database/user_select_vote.schema.json b/uniCloud-alipay/database/user_select_vote.schema.json
new file mode 100644
index 0000000..3c5c244
--- /dev/null
+++ b/uniCloud-alipay/database/user_select_vote.schema.json
@@ -0,0 +1,25 @@
+// 文档教程: https://uniapp.dcloud.net.cn/uniCloud/schema
+{
+ "bsonType": "object",
+ "required": [],
+ "permission": {
+ "read": true,
+ "create": true,
+ "update": true,
+ "delete": true
+ },
+ "properties": {
+ "_id": {
+ "description": "ID,系统自动生成"
+ },
+ "user_id": {
+ "bsonType": "string",
+ "foreignKey": "uni-id-users._id",
+ "pattern": "^[0-9a-f]{24}$"
+ },
+ "vote_id": {
+ "bsonType": "string",
+ "foreignKey": "cms_vote.vote_id"
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/buuug7-simple-datetime-picker/changelog.md b/uni_modules/buuug7-simple-datetime-picker/changelog.md
new file mode 100644
index 0000000..2965133
--- /dev/null
+++ b/uni_modules/buuug7-simple-datetime-picker/changelog.md
@@ -0,0 +1,43 @@
+# CHANGELOG
+
+## 0.7.0(2023-07-11)
+- 增加`time-init`属性, 自定义初始时间, 默认为当前时间, 值为时间戳
+## 0.6.0(2023-07-11)
+
+- 增加对秒的选择
+- 增加`timeHidden`属性, 自定义年月日时分秒自由显示
+- 增加`timeLabel`属性, 自定义界面时间单位,默认为 `["年", "月", "日", "时", "分", "秒"]`
+- 修复微信小程序中无法定位到当前时间
+
+## 0.5.0(2021-08-17)
+
+- refactor
+
+## 0.4.1(2021-08-17)
+
+- update readme.md
+
+## 0.4.0(2021-08-17)
+
+- 移除组件 `color` 属性
+- update readme.md
+
+## 0.3.3(2021-08-15)
+
+- 修改插件基本信息
+
+## 0.3.2(2021-08-15)
+
+- 更新文档
+
+## 0.3.1(2021-08-15)
+
+- fix
+
+## 0.3.0(2019-07-22)
+
+- 增加 color 属性,可以更换按钮颜色
+
+## 0.0.4(2019-07-17)
+
+- 增加从 npm 安装方式
diff --git a/uni_modules/buuug7-simple-datetime-picker/components/buuug7-simple-datetime-picker/buuug7-simple-datetime-picker.vue b/uni_modules/buuug7-simple-datetime-picker/components/buuug7-simple-datetime-picker/buuug7-simple-datetime-picker.vue
new file mode 100644
index 0000000..02d3308
--- /dev/null
+++ b/uni_modules/buuug7-simple-datetime-picker/components/buuug7-simple-datetime-picker/buuug7-simple-datetime-picker.vue
@@ -0,0 +1,335 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item + timeLabel[0] }}
+
+
+
+
+ {{ formatNum(item) + timeLabel[1] }}
+
+
+
+
+ {{ formatNum(item) + timeLabel[2] }}
+
+
+
+
+ {{ formatNum(item) + timeLabel[3] }}
+
+
+
+
+ {{ formatNum(item) + timeLabel[4] }}
+
+
+
+
+ {{ formatNum(item) + timeLabel[5] }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/buuug7-simple-datetime-picker/package.json b/uni_modules/buuug7-simple-datetime-picker/package.json
new file mode 100644
index 0000000..3826da4
--- /dev/null
+++ b/uni_modules/buuug7-simple-datetime-picker/package.json
@@ -0,0 +1,77 @@
+{
+ "id": "buuug7-simple-datetime-picker",
+ "displayName": "简单的日期时间选择器",
+ "version": "0.7.0",
+ "description": "uniApp 简单的日期时间选择器, 可选择年, 月, 日, 时, 分, 秒",
+ "keywords": [
+ "时间",
+ "日期",
+ "时间选择器",
+ "日期时间选择器",
+ "datetime"
+],
+ "repository": "",
+ "engines": {
+ "HBuilderX": "^3.6.1"
+ },
+"dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": "3190136675"
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "",
+ "type": "component-vue"
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "u"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "n",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "u",
+ "百度": "u",
+ "字节跳动": "u",
+ "QQ": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ }
+ }
+ }
+ }
+}
diff --git a/uni_modules/buuug7-simple-datetime-picker/readme.md b/uni_modules/buuug7-simple-datetime-picker/readme.md
new file mode 100644
index 0000000..e1578f2
--- /dev/null
+++ b/uni_modules/buuug7-simple-datetime-picker/readme.md
@@ -0,0 +1,97 @@
+# uniApp 简单的日期时间选择器
+
+uniApp 日期时间选择器, 可选择年, 月, 日, 时, 分, 秒.
+
+## screenshot
+
+
+
+
+
+## 安装
+
+推荐从[dcloud 插件市场](https://ext.dcloud.net.cn/plugin?id=592) 安装.
+
+## 用法
+
+在 template 中:
+
+```vue
+
+
+
+
+
+
+```
+
+在 script 中:
+
+- 该插件遵循 easycom 规范, 不用显式导入就可以使用 ``
+- 如需显式导入可以使用`import SimpleDateTimePicker from "uni_modules/buuug7-simple-datetime-picker/components/buuug7-simple-datetime-picker/buuug7-simple-datetime-picker.vue";`
+
+```javascript
+export default {
+ data() {
+ return {
+ birthday: "",
+ };
+ },
+ methods: {
+ // 打开picker
+ openDatetimePicker() {
+ this.$refs.myPicker.show();
+ },
+
+ // 关闭picker
+ closeDatetimePicker() {
+ this.$refs.myPicker.hide();
+ },
+
+ handleSubmit(e) {
+ // console.log(e);
+ // {year: "2023", month: "07", day: "11", hour: "15", minute: "21", seconds: '55'}
+ this.birthday = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:${seconds}`;
+ },
+ },
+};
+```
+
+> Note: 不要把组件放 swiper 里面或者 v-for 里面等, 最好放在页面根部. 通常情况下打开 picker 需要调用`this.$refs.refName.show()`, 在选择完毕后 picker 会自动隐藏,不需要调用`this.$refs.refName.hide()`来手动隐藏。
+
+## 属性说明
+
+#### start-year
+
+类型 `Number`,选择开始年份
+
+#### end-year
+
+类型 `Number`, 选择结束年份
+
+#### time-init
+
+类型`Number`, 自定义初始时间, 默认为当前时间, 值为时间戳
+
+#### time-hidden
+
+类型 `Array`, 自定义时间列显示,默认显示年月日日分 `[true, true, true, true, true, false]`
+
+- 只显示年月日, 则可以设置为`[true, true, true, false, false, false]`
+- 时分秒, 则可以设置为`[false, false, false, true, true, true]`
+
+#### time-label
+
+类型 `Array`, 自定义各个时间单位,默认为 `['年', '月', '日', '时', '分', '秒']`, 比如想切换成显示英文的年月日, 可以设置 `['year', 'month', 'day', 'hour', 'minute', 'second']`
+
+#### @submit
+
+类型 `function`, 监听选择事件, 回调函数的第一个参数包含了选择时间的完整信息
diff --git a/uni_modules/buuug7-simple-datetime-picker/screenshot_1.png b/uni_modules/buuug7-simple-datetime-picker/screenshot_1.png
new file mode 100644
index 0000000..81da693
Binary files /dev/null and b/uni_modules/buuug7-simple-datetime-picker/screenshot_1.png differ
diff --git a/uni_modules/uni-cms/uniCloud/database/uni-cms-categories.schema.json b/uni_modules/uni-cms/uniCloud/database/uni-cms-categories.schema.json
new file mode 100644
index 0000000..f0416aa
--- /dev/null
+++ b/uni_modules/uni-cms/uniCloud/database/uni-cms-categories.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":["name"],"permission":{"read":true,"create":"'admin' in auth.role || 'CREATE_UNI_CMS_CATEGORY' in auth.permission","update":"'admin' in auth.role || 'UPDATE_UNI_CMS_CATEGORY' in auth.permission","delete":"'admin' in auth.role || 'DELETE_UNI_CMS_CATEGORY' in auth.permission"},"properties":{"_id":{"description":"存储文档 ID(文章 ID),系统自动生成"},"name":{"bsonType":"string","description":"类别名称","label":"名称","trim":"both"},"description":{"bsonType":"string","description":"类别描述","label":"描述","trim":"both"},"icon":{"bsonType":"string","description":"类别图标地址","label":"图标地址","pattern":"^(http:\/\/|https:\/\/|\/|.\/|@\/)\\S","trim":"both"},"sort":{"bsonType":"int","description":"类别显示顺序","label":"排序"},"article_count":{"bsonType":"int","description":"该类别下文章数量"},"create_date":{"bsonType":"timestamp","description":"创建时间","forceDefaultValue":{"$env":"now"}}}}
\ No newline at end of file
diff --git a/uni_modules/uni-feedback/uniCloud/database/opendb-feedback.schema.json b/uni_modules/uni-feedback/uniCloud/database/opendb-feedback.schema.json
new file mode 100644
index 0000000..941ecb4
--- /dev/null
+++ b/uni_modules/uni-feedback/uniCloud/database/opendb-feedback.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":["content"],"permission":{"create":"auth.uid != null","read":true,"delete":false,"update":false},"properties":{"_id":{"description":"ID,系统自动生成"},"user_id":{"bsonType":"string","description":"留言反馈用户ID\/回复留言用户ID,参考uni-id-users表","foreignKey":"uni-id-users._id","forceDefaultValue":{"$env":"uid"}},"create_date":{"bsonType":"timestamp","title":"留言时间\/回复留言时间","forceDefaultValue":{"$env":"now"}},"content":{"bsonType":"string","title":"留言内容\/回复内容","componentForEdit":{"name":"textarea"},"trim":"right"},"imgs":{"bsonType":"array","arrayType":"file","maxLength":6,"fileMediaType":"image","title":"图片列表"},"is_reply":{"bsonType":"bool","title":"是否是回复类型"},"feedback_id":{"bsonType":"string","title":"被回复留言ID"},"contact":{"bsonType":"string","title":"联系人","trim":"both"},"mobile":{"bsonType":"string","title":"联系电话","pattern":"^\\+?[0-9-]{3,20}$","trim":"both"},"reply_count":{"permission":{"write":false},"bsonType":"int","title":"被回复条数","defaultValue":0}}}
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/uniCloud/database/opendb-department.schema.json b/uni_modules/uni-id-pages/uniCloud/database/opendb-department.schema.json
new file mode 100644
index 0000000..38cc920
--- /dev/null
+++ b/uni_modules/uni-id-pages/uniCloud/database/opendb-department.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":["name"],"permission":{"read":true,"create":false,"update":false,"delete":false},"properties":{"_id":{"description":"ID,系统自动生成"},"parent_id":{"bsonType":"string","description":"父级部门ID","parentKey":"_id"},"name":{"bsonType":"string","description":"部门名称","title":"部门名称","trim":"both"},"level":{"bsonType":"int","description":"部门层级,为提升检索效率而作的冗余设计"},"sort":{"bsonType":"int","description":"部门在当前层级下的顺序,由小到大","title":"显示顺序"},"manager_uid":{"bsonType":"string","description":"部门主管的userid, 参考`uni-id-users` 表","foreignKey":"uni-id-users._id"},"create_date":{"bsonType":"timestamp","description":"部门创建时间","forceDefaultValue":{"$env":"now"}}},"version":"0.1.0"}
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/uniCloud/database/opendb-device.schema.json b/uni_modules/uni-id-pages/uniCloud/database/opendb-device.schema.json
new file mode 100644
index 0000000..3fc4cb2
--- /dev/null
+++ b/uni_modules/uni-id-pages/uniCloud/database/opendb-device.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":[],"permission":{"read":false,"create":true,"update":false,"delete":false},"properties":{"_id":{"description":"ID,系统自动生成"},"appid":{"bsonType":"string","description":"DCloud appid"},"device_id":{"bsonType":"string","description":"设备唯一标识"},"vendor":{"bsonType":"string","description":"设备厂商"},"push_clientid":{"bsonType":"string","description":"推送设备客户端标识"},"imei":{"bsonType":"string","description":"国际移动设备识别码IMEI(International Mobile Equipment Identity)"},"oaid":{"bsonType":"string","description":"移动智能设备标识公共服务平台提供的匿名设备标识符(OAID)"},"idfa":{"bsonType":"string","description":"iOS平台配置应用使用广告标识(IDFA)"},"imsi":{"bsonType":"string","description":"国际移动用户识别码(International Mobile Subscriber Identification Number)"},"model":{"bsonType":"string","description":"设备型号"},"platform":{"bsonType":"string","description":"平台类型"},"uni_platform":{"bsonType":"string","description":"uni-app 运行平台,与条件编译平台相同。"},"os_name":{"bsonType":"string","description":"ios|android|windows|mac|linux "},"os_version":{"bsonType":"string","description":"操作系统版本号 "},"os_language":{"bsonType":"string","description":"操作系统语言 "},"os_theme":{"bsonType":"string","description":"操作系统主题 light|dark"},"pixel_ratio":{"bsonType":"string","description":"设备像素比 "},"network_model":{"bsonType":"string","description":"设备网络型号wifi\/3G\/4G\/"},"window_width":{"bsonType":"string","description":"设备窗口宽度 "},"window_height":{"bsonType":"string","description":"设备窗口高度"},"screen_width":{"bsonType":"string","description":"设备屏幕宽度"},"screen_height":{"bsonType":"string","description":"设备屏幕高度"},"rom_name":{"bsonType":"string","description":"rom 名称"},"rom_version":{"bsonType":"string","description":"rom 版本"},"location_latitude":{"bsonType":"double","description":"纬度"},"location_longitude":{"bsonType":"double","description":"经度"},"location_country":{"bsonType":"string","description":"国家"},"location_province":{"bsonType":"string","description":"省份"},"location_city":{"bsonType":"string","description":"城市"},"create_date":{"bsonType":"timestamp","description":"创建时间","forceDefaultValue":{"$env":"now"}},"last_update_date":{"bsonType":"timestamp","description":"最后一次修改时间","forceDefaultValue":{"$env":"now"}}},"version":"0.0.1"}
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/uniCloud/database/opendb-frv-logs.schema.json b/uni_modules/uni-id-pages/uniCloud/database/opendb-frv-logs.schema.json
new file mode 100644
index 0000000..ba36734
--- /dev/null
+++ b/uni_modules/uni-id-pages/uniCloud/database/opendb-frv-logs.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","permission":{"read":"doc._id == auth.uid || 'CREATE_UNI_ID_USERS' in auth.permission","create":"'CREATE_UNI_ID_USERS' in auth.permission","update":"doc._id == auth.uid || 'UPDATE_UNI_ID_USERS' in auth.permission","delete":"'DELETE_UNI_ID_USERS' in auth.permission"},"properties":{"_id":{"description":"存储文档 ID(用户 ID),系统自动生成"},"certify_id":{"bsonType":"string","description":"认证id"},"user_id":{"bsonType":"string","description":"用户id"},"real_name":{"bsonType":"string","description":"姓名"},"identity":{"bsonType":"string","description":"身份证号码"},"status":{"bsonType":"int","description":"认证状态:0 未认证 1 等待认证 2 认证通过 3 认证失败","maximum":3,"minimum":0},"created_date":{"bsonType":"timestamp","description":"创建时间","forceDefaultValue":{"$env":"now"}}},"required":[]}
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/uniCloud/database/uni-id-device.schema.json b/uni_modules/uni-id-pages/uniCloud/database/uni-id-device.schema.json
new file mode 100644
index 0000000..6f301c3
--- /dev/null
+++ b/uni_modules/uni-id-pages/uniCloud/database/uni-id-device.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":["user_id"],"properties":{"_id":{"description":"ID,系统自动生成"},"user_id":{"bsonType":"string","description":"用户id,参考uni-id-users表"},"ua":{"bsonType":"string","description":"userAgent"},"uuid":{"bsonType":"string","description":"设备唯一标识(需要加密存储)"},"os_name":{"bsonType":"string","description":"ios|android|windows|mac|linux "},"os_version":{"bsonType":"string","description":"操作系统版本号 "},"os_language":{"bsonType":"string","description":"操作系统语言 "},"os_theme":{"bsonType":"string","description":"操作系统主题 light|dark"},"vendor":{"bsonType":"string","description":"设备厂商"},"push_clientid":{"bsonType":"string","description":"推送设备客户端标识"},"imei":{"bsonType":"string","description":"国际移动设备识别码IMEI(International Mobile Equipment Identity)"},"oaid":{"bsonType":"string","description":"移动智能设备标识公共服务平台提供的匿名设备标识符(OAID)"},"idfa":{"bsonType":"string","description":"iOS平台配置应用使用广告标识(IDFA)"},"model":{"bsonType":"string","description":"设备型号"},"platform":{"bsonType":"string","description":"平台类型"},"create_date":{"bsonType":"timestamp","description":"创建时间","forceDefaultValue":{"$env":"now"}},"last_active_date":{"bsonType":"timestamp","description":"最后登录时间"},"last_active_ip":{"bsonType":"string","description":"最后登录IP"}},"version":"0.0.1"}
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/uniCloud/database/uni-id-log.schema.json b/uni_modules/uni-id-pages/uniCloud/database/uni-id-log.schema.json
new file mode 100644
index 0000000..762e8c7
--- /dev/null
+++ b/uni_modules/uni-id-pages/uniCloud/database/uni-id-log.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":["user_id"],"permission":{"read":"'READ_UNI_ID_LOG' in auth.permission"},"properties":{"_id":{"description":"ID,系统自动生成"},"create_date":{"bsonType":"timestamp","description":"创建时间","forceDefaultValue":{"$env":"now"}},"device_uuid":{"bsonType":"string","description":"设备唯一标识"},"ip":{"bsonType":"string","description":"ip地址"},"state":{"bsonType":"int","description":"结果:0 失败、1 成功"},"type":{"bsonType":"string","description":"操作类型","enum":["logout","login","register","reset-pwd","bind-mobile","bind-weixin","bind-qq","bind-apple","bind-alipay"]},"ua":{"bsonType":"string","description":"userAgent"},"user_id":{"bsonType":"string","foreignKey":"uni-id-users._id","description":"用户id,参考uni-id-users表"},"username":{"bsonType":"string","description":"用户名"},"email":{"bsonType":"string","description":"邮箱"},"mobile":{"bsonType":"string","description":"手机号"},"appid":{"bsonType":"string","description":"客户端DCloud AppId"}}}
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/uniCloud/database/uni-id-permissions.schema.json b/uni_modules/uni-id-pages/uniCloud/database/uni-id-permissions.schema.json
new file mode 100644
index 0000000..eafcd6c
--- /dev/null
+++ b/uni_modules/uni-id-pages/uniCloud/database/uni-id-permissions.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":["permission_id","permission_name"],"permission":{"read":"'READ_UNI_ID_PERMISSIONS' in auth.permission","create":"'CREATE_UNI_ID_PERMISSIONS' in auth.permission","update":"'UPDATE_UNI_ID_PERMISSIONS' in auth.permission","delete":"'DELETE_UNI_ID_PERMISSIONS' in auth.permission"},"properties":{"_id":{"description":"存储文档 ID,系统自动生成"},"comment":{"bsonType":"string","component":{"name":"textarea"},"description":"备注","label":"备注","title":"备注","trim":"both"},"create_date":{"bsonType":"timestamp","description":"创建时间","forceDefaultValue":{"$env":"now"}},"permission_id":{"bsonType":"string","component":{"name":"input"},"description":"权限唯一标识,不可修改,不允许重复","label":"权限标识","title":"权限ID","trim":"both"},"permission_name":{"bsonType":"string","component":{"name":"input"},"description":"权限名称","label":"权限名称","title":"权限名称","trim":"both"}}}
\ No newline at end of file
diff --git a/uni_modules/uni-id-pages/uniCloud/database/uni-id-roles.schema.json b/uni_modules/uni-id-pages/uniCloud/database/uni-id-roles.schema.json
new file mode 100644
index 0000000..57a7d5f
--- /dev/null
+++ b/uni_modules/uni-id-pages/uniCloud/database/uni-id-roles.schema.json
@@ -0,0 +1 @@
+{"bsonType":"object","required":["role_id","role_name"],"permission":{"read":true,"create":"'CREATE_UNI_ID_ROLES' in auth.permission","update":"'UPDATE_UNI_ID_ROLES' in auth.permission","delete":"'DELETE_UNI_ID_ROLES' in auth.permission"},"properties":{"_id":{"description":"存储文档 ID,系统自动生成"},"comment":{"title":"备注","bsonType":"string","description":"备注","trim":"both"},"create_date":{"bsonType":"timestamp","description":"创建时间","forceDefaultValue":{"$env":"now"}},"permission":{"title":"权限","bsonType":"array","foreignKey":"uni-id-permissions.permission_id","description":"角色拥有的权限列表","enum":{"collection":"uni-id-permissions","field":"permission_name as text, permission_id as value"}},"role_id":{"title":"唯一ID","bsonType":"string","description":"角色唯一标识,不可修改,不允许重复","trim":"both"},"role_name":{"title":"名称","bsonType":"string","description":"角色名称","trim":"both"}}}
\ No newline at end of file
diff --git a/uni_modules/uni-sign-in/uniCloud/database/opendb-sign-in.schema.json b/uni_modules/uni-sign-in/uniCloud/database/opendb-sign-in.schema.json
new file mode 100644
index 0000000..d70fb39
--- /dev/null
+++ b/uni_modules/uni-sign-in/uniCloud/database/opendb-sign-in.schema.json
@@ -0,0 +1,41 @@
+// 文档教程: https://uniapp.dcloud.net.cn/uniCloud/schema
+{
+ "bsonType": "object",
+ "required": [],
+ "permission": {
+ "read": "auth.uid == doc.user_id",
+ "create": "auth.uid != null && 'signIn' in action", //如果你要使用`看广告签到`的方式请将这里的值改为:false
+ "update": false,
+ "delete": false
+ },
+ "properties": {
+ "_id": {
+ "description": "ID,系统自动生成"
+ },
+ "user_id":{
+ "forceDefaultValue":{
+ "$env":"uid"
+ }
+ },
+ "date":{
+ "bsonType":"timestamp",
+ "description":"签到的日期时间戳",
+ "permission":{
+ "write":false
+ }
+ },
+ "create_date":{
+ "bsonType":"timestamp",
+ "description":"签到的时间戳",
+ "forceDefaultValue":{
+ "$env":"now"
+ }
+ },
+ "ip":{
+ "bsonType":"string",
+ "forceDefaultValue":{
+ "$env":"clientIP"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/zb-popover/changelog.md b/uni_modules/zb-popover/changelog.md
new file mode 100644
index 0000000..7a5528b
--- /dev/null
+++ b/uni_modules/zb-popover/changelog.md
@@ -0,0 +1,6 @@
+## 1.0.2(2023-10-22)
+修改报错
+## 1.0.1(2023-06-14)
+增加 readme.md
+## 1.0.0(2023-06-14)
+初始化
diff --git a/uni_modules/zb-popover/components/zb-popover/zb-popover.vue b/uni_modules/zb-popover/components/zb-popover/zb-popover.vue
new file mode 100644
index 0000000..ff54726
--- /dev/null
+++ b/uni_modules/zb-popover/components/zb-popover/zb-popover.vue
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{item.text}}
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/zb-popover/package.json b/uni_modules/zb-popover/package.json
new file mode 100644
index 0000000..9127602
--- /dev/null
+++ b/uni_modules/zb-popover/package.json
@@ -0,0 +1,82 @@
+{
+ "id": "zb-popover",
+ "displayName": "zb-popover 气泡弹出框",
+ "version": "1.0.2",
+ "description": "Popover 气泡弹出框",
+ "keywords": [
+ "Popover",
+ "气泡弹出框"
+],
+ "repository": "",
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ },
+ "dcloudext": {
+ "type": "component-vue",
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": ""
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ },
+ "App": {
+ "app-vue": "u",
+ "app-nvue": "u"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+ "小程序": {
+ "微信": "y",
+ "阿里": "y",
+ "百度": "y",
+ "字节跳动": "y",
+ "QQ": "y",
+ "钉钉": "y",
+ "快手": "y",
+ "飞书": "y",
+ "京东": "y"
+ },
+ "快应用": {
+ "华为": "y",
+ "联盟": "y"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/zb-popover/readme.md b/uni_modules/zb-popover/readme.md
new file mode 100644
index 0000000..dab7659
--- /dev/null
+++ b/uni_modules/zb-popover/readme.md
@@ -0,0 +1,73 @@
+## 介绍
+弹出式的气泡菜单。
+
+
+## 友情链接
+#### vue-admin-perfect —— [企业级、通用型中后台前端解决方案 预览地址](https://yuanzbz.gitee.io/vue-admin-perfect/#/home/)
+#### vue-admin-perfect —— [企业级、通用型中后台前端解决方案(基于vue3.0+TS+Element-Plus 最新版,同时支持电脑,手机,平板)](https://github.com/zouzhibin/vue-admin-perfect)
+
+## Events 事件
+|事件名 | 说明 | 回调参数 |
+| ------ | ------ |
+| select | 点击选项时触发 | item |
+| handleClick | 点击按钮事件 | boolean |
+
+
+
+## Tooltip 属性
+| 参数 | 说明 | 类型 | 可选值 | 默认值 |
+| ------ | ------ | ------ | ------ | ------ |
+| options | 选项列表 | Array |-- | [] |
+| theme | 主题风格,可选值为 dark| String |dark,light | light |
+| actionsDirection | 选项列表的排列方向,可选值为 horizontal| String |vertical,horizontal | vertical |
+| placement | Tooltip 的出现位置 | String |top/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-end | top |
+
+
+placement 支持以下值:
+```
+top # 顶部中间位置
+top-start # 顶部左侧位置
+top-end # 顶部右侧位置
+left # 左侧中间位置
+left-start # 左侧上方位置
+left-end # 左侧下方位置
+right # 右侧中间位置
+right-start # 右侧上方位置
+right-end # 右侧下方位置
+bottom # 底部中间位置
+bottom-start # 底部左侧位置
+bottom-end # 底部右侧位置
+```
+
+## Slots 插槽
+| 参数 | 说明 |
+| ------ | ------ |
+| content | 显示提示框得内容 |
+
+
+```
+因为uniapp 中小程序中没有window对象,需手动调用 关闭
+ 第一种办法关闭:this.$refs.Popover.close()
+
+```
+
+示例
+```
+
+
+
+
+
+const actions = [
+ { text: '选项一' },
+ { text: '选项二' },
+ { text: '选项三' },
+ ];
+```