chengjie лет назад: 7
Сommit
35e76eadff
100 измененных файлов с 3476 добавлено и 0 удалено
  1. 35 0
      app.js
  2. 38 0
      app.json
  3. 78 0
      app.wxss
  4. BIN
      pages/images/practice_index_footer.png
  5. BIN
      pages/images/practice_introduction_bg.png
  6. BIN
      pages/images/practice_introduction_marks_a.png
  7. BIN
      pages/images/practice_introduction_marks_b.png
  8. BIN
      pages/images/practice_report_bg.png
  9. BIN
      pages/images/practice_report_footer.png
  10. BIN
      pages/images/practice_report_header.png
  11. BIN
      pages/images/program_start_footer.png
  12. BIN
      pages/images/program_tabbar_add_default.png
  13. BIN
      pages/images/program_tabbar_note_default.png
  14. BIN
      pages/images/program_tabbar_note_normal.png
  15. BIN
      pages/images/program_tabbar_task_default.png
  16. BIN
      pages/images/program_tabbar_task_normal.png
  17. BIN
      pages/images/task_index_aside_bg.png
  18. BIN
      pages/images/task_index_footer.png
  19. BIN
      pages/images/task_index_goon.png
  20. BIN
      pages/images/task_index_report.png
  21. BIN
      pages/images/task_index_start.png
  22. BIN
      pages/images/universalpic_add_white_22x22.png
  23. BIN
      pages/images/universalpic_del_gray_14x14.png
  24. BIN
      pages/images/universalpic_editbar_brackets_gray.png
  25. BIN
      pages/images/universalpic_editbar_div_gray.png
  26. BIN
      pages/images/universalpic_editbar_equal_gray.png
  27. BIN
      pages/images/universalpic_editbar_mul_gray.png
  28. BIN
      pages/images/universalpic_editbar_plus_gray.png
  29. BIN
      pages/images/universalpic_editbar_sqr_gray.png
  30. BIN
      pages/images/universalpic_editbar_sub_gray.png
  31. BIN
      pages/images/universalpic_editbar_underline_gray_14x20.png
  32. BIN
      pages/images/universalpic_empty_blue_26x26.png
  33. BIN
      pages/images/universalpic_face_default_green_240x240.png
  34. BIN
      pages/images/universalpic_help_gray_26x26.png
  35. BIN
      pages/images/universalpic_more_40x10.png
  36. BIN
      pages/images/universalpic_more_black_32x8.png
  37. BIN
      pages/images/universalpic_more_white_32x8.png
  38. BIN
      pages/images/universalpic_next_black_30x30.png
  39. BIN
      pages/images/universalpic_prev_black_30x30.png
  40. BIN
      pages/images/universalpic_preview_black_30x30.png
  41. BIN
      pages/images/universalpic_read_begin_gray_40x20.png
  42. BIN
      pages/images/universalpic_read_end_gray_40x20.png
  43. BIN
      pages/images/universalpic_read_gray_40x40.png
  44. BIN
      pages/images/universalpic_read_mark_black_20x20.gif
  45. BIN
      pages/images/universalpic_read_mark_black_20x20.png
  46. BIN
      pages/images/universalpic_restore_black_34x34.png
  47. BIN
      pages/images/universalpic_restore_white_34x34.png
  48. BIN
      pages/images/universalpic_search_gray_30x30.png
  49. BIN
      pages/images/universalpic_setup_gray_40x40.png
  50. BIN
      pages/images/universalpic_share_white_52x40.png
  51. BIN
      pages/images/universalpic_shelve_black_30x14.png
  52. BIN
      pages/images/universalpic_shelve_black_46x24.png
  53. BIN
      pages/images/universalpic_shelve_white_30x14.png
  54. BIN
      pages/images/universalpic_singlebox_check_black_30x30.png
  55. BIN
      pages/images/universalpic_typesize_black_30x18.png
  56. BIN
      pages/images/universalpic_typesize_white_30x18.png
  57. BIN
      pages/images/universalpic_undo_black_20x28.png
  58. BIN
      pages/images/universalpic_undo_black_24x30.png
  59. BIN
      pages/images/universalpic_undo_white_20x28.png
  60. 54 0
      pages/index/index.js
  61. 3 0
      pages/index/index.json
  62. 13 0
      pages/index/index.wxml
  63. 21 0
      pages/index/index.wxss
  64. 193 0
      pages/miaoguo/add.js
  65. 3 0
      pages/miaoguo/add.json
  66. 73 0
      pages/miaoguo/add.wxml
  67. 267 0
      pages/miaoguo/add.wxss
  68. 148 0
      pages/miaoguo/addItem.js
  69. 3 0
      pages/miaoguo/addItem.json
  70. 48 0
      pages/miaoguo/addItem.wxml
  71. 158 0
      pages/miaoguo/addItem.wxss
  72. 36 0
      pages/miaoguo/cardInfo.js
  73. 3 0
      pages/miaoguo/cardInfo.json
  74. 64 0
      pages/miaoguo/cardInfo.wxml
  75. 39 0
      pages/miaoguo/cardInfo.wxss
  76. 77 0
      pages/miaoguo/default.js
  77. 7 0
      pages/miaoguo/default.json
  78. 41 0
      pages/miaoguo/default.wxml
  79. 66 0
      pages/miaoguo/default.wxss
  80. 532 0
      pages/miaoguo/detail.js
  81. 5 0
      pages/miaoguo/detail.json
  82. 156 0
      pages/miaoguo/detail.wxml
  83. 336 0
      pages/miaoguo/detail.wxss
  84. 176 0
      pages/miaoguo/preview.js
  85. 6 0
      pages/miaoguo/preview.json
  86. 89 0
      pages/miaoguo/preview.wxml
  87. 162 0
      pages/miaoguo/preview.wxss
  88. 48 0
      pages/miaoguo/searchCard.js
  89. 3 0
      pages/miaoguo/searchCard.json
  90. 38 0
      pages/miaoguo/searchCard.wxml
  91. 82 0
      pages/miaoguo/searchCard.wxss
  92. 52 0
      pages/miaoguo/searchCard1.js
  93. 3 0
      pages/miaoguo/searchCard1.json
  94. 15 0
      pages/miaoguo/searchCard1.wxml
  95. 115 0
      pages/miaoguo/searchCard1.wxss
  96. 98 0
      pages/miaoguo/searchCardList.js
  97. 4 0
      pages/miaoguo/searchCardList.json
  98. 29 0
      pages/miaoguo/searchCardList.wxml
  99. 59 0
      pages/miaoguo/searchCardList.wxss
  100. 0 0
      pages/miaoguo/searchWeb.js

+ 35 - 0
app.js

@@ -0,0 +1,35 @@
1
+//app.js
2
+App({
3
+  onLaunch: function (options) {
4
+    this.getSystemInfo();
5
+    if (options && options.scene) {
6
+      this.globalData.userSource = options.scene;
7
+    }
8
+    if (options && options.shareTicket) {
9
+      this.globalData.shareTicket = options.shareTicket;
10
+    }
11
+  },
12
+  getSystemInfo: function () {
13
+    this.globalData.systemInfo = wx.getSystemInfoSync();
14
+  },
15
+  globalData: {
16
+    Version: "1.0.0",
17
+    IsProduction: false,
18
+    ShareTitle: "秒过",
19
+    ProgramID: 166,
20
+    serverUrl: "https://www.kylx365.com/apiData/",
21
+    serverUrlServer: "https://www.kylx365.com/apiData/",
22
+    serverUrlLocalhost: "http://localhost:3020/apiData/",
23
+    audioUrlBaidu: "https://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=[token]&tex=[word]&vol=9&per=0&spd=3&pit=5",
24
+    audioUrlYoudao: "https://dict.youdao.com/dictvoice?rate=5&le=auto&audio=",
25
+    BaiduToken: "",//百度开发平台token
26
+    systemInfo: null,
27
+    userInfo: null,
28
+    SourceID: 0,//来源ID
29
+    shareTicket: null,
30
+    userSource: null,//用户来源方式
31
+    Key: "kylx365_chengjie",
32
+    IV: "kylx365hongliren",
33
+    IsEnter: true,//是否是刚进来
34
+  }
35
+})

+ 38 - 0
app.json

@@ -0,0 +1,38 @@
1
+{
2
+  "pages": [
3
+    "pages/miaoguo/default",
4
+    "pages/miaoguo/cardInfo",
5
+    "pages/miaoguo/preview",
6
+    "pages/miaoguo/searchCardList",
7
+    "pages/miaoguo/searchCard1",
8
+    "pages/miaoguo/searchCard",
9
+    "pages/miaoguo/add",
10
+    "pages/miaoguo/addItem",
11
+    "pages/miaoguo/searchWeb2",
12
+    "pages/miaoguo/searchWeb1",
13
+    "pages/miaoguo/searchWeb",
14
+    "pages/miaoguo/detail",
15
+    "pages/miaoguo/setting",
16
+    "pages/index/index"
17
+  ],
18
+  "window": {
19
+    "navigationBarBackgroundColor": "#fff",
20
+    "navigationBarTitleText": "秒过",
21
+    "navigationBarTextStyle": "black",
22
+    "backgroundColor": "#ffffff",
23
+    "disableScroll": false,
24
+    "enablePullDownRefresh": false
25
+  },
26
+  "navigateToMiniProgramAppIdList": [
27
+    "wx84b3feac6069eec3",
28
+    "wxa5441bbf344692ba",
29
+    "wx46a7b4c420e6d38f",
30
+    "wx1fef080f74481cbd",
31
+    "wx331e8dd070f01d0e",
32
+    "wx313a8f2c0741efe1",
33
+    "wxb54a6d5aff836ee3",
34
+    "wxa5e33c61fe37dd01",
35
+    "wxaa1a8b48d9853872",
36
+    "wx80059777521b897c"
37
+  ]
38
+}

Разница между файлами не показана из-за своего большого размера
+ 78 - 0
app.wxss


BIN
pages/images/practice_index_footer.png


BIN
pages/images/practice_introduction_bg.png


BIN
pages/images/practice_introduction_marks_a.png


BIN
pages/images/practice_introduction_marks_b.png


BIN
pages/images/practice_report_bg.png


BIN
pages/images/practice_report_footer.png


BIN
pages/images/practice_report_header.png


BIN
pages/images/program_start_footer.png


BIN
pages/images/program_tabbar_add_default.png


BIN
pages/images/program_tabbar_note_default.png


BIN
pages/images/program_tabbar_note_normal.png


BIN
pages/images/program_tabbar_task_default.png


BIN
pages/images/program_tabbar_task_normal.png


BIN
pages/images/task_index_aside_bg.png


BIN
pages/images/task_index_footer.png


BIN
pages/images/task_index_goon.png


BIN
pages/images/task_index_report.png


BIN
pages/images/task_index_start.png


BIN
pages/images/universalpic_add_white_22x22.png


BIN
pages/images/universalpic_del_gray_14x14.png


BIN
pages/images/universalpic_editbar_brackets_gray.png


BIN
pages/images/universalpic_editbar_div_gray.png


BIN
pages/images/universalpic_editbar_equal_gray.png


BIN
pages/images/universalpic_editbar_mul_gray.png


BIN
pages/images/universalpic_editbar_plus_gray.png


BIN
pages/images/universalpic_editbar_sqr_gray.png


BIN
pages/images/universalpic_editbar_sub_gray.png


BIN
pages/images/universalpic_editbar_underline_gray_14x20.png


BIN
pages/images/universalpic_empty_blue_26x26.png


BIN
pages/images/universalpic_face_default_green_240x240.png


BIN
pages/images/universalpic_help_gray_26x26.png


BIN
pages/images/universalpic_more_40x10.png


BIN
pages/images/universalpic_more_black_32x8.png


BIN
pages/images/universalpic_more_white_32x8.png


BIN
pages/images/universalpic_next_black_30x30.png


BIN
pages/images/universalpic_prev_black_30x30.png


BIN
pages/images/universalpic_preview_black_30x30.png


BIN
pages/images/universalpic_read_begin_gray_40x20.png


BIN
pages/images/universalpic_read_end_gray_40x20.png


BIN
pages/images/universalpic_read_gray_40x40.png


BIN
pages/images/universalpic_read_mark_black_20x20.gif


BIN
pages/images/universalpic_read_mark_black_20x20.png


BIN
pages/images/universalpic_restore_black_34x34.png


BIN
pages/images/universalpic_restore_white_34x34.png


BIN
pages/images/universalpic_search_gray_30x30.png


BIN
pages/images/universalpic_setup_gray_40x40.png


BIN
pages/images/universalpic_share_white_52x40.png


BIN
pages/images/universalpic_shelve_black_30x14.png


BIN
pages/images/universalpic_shelve_black_46x24.png


BIN
pages/images/universalpic_shelve_white_30x14.png


BIN
pages/images/universalpic_singlebox_check_black_30x30.png


BIN
pages/images/universalpic_typesize_black_30x18.png


BIN
pages/images/universalpic_typesize_white_30x18.png


BIN
pages/images/universalpic_undo_black_20x28.png


BIN
pages/images/universalpic_undo_black_24x30.png


BIN
pages/images/universalpic_undo_white_20x28.png


+ 54 - 0
pages/index/index.js

@@ -0,0 +1,54 @@
1
+//index.js
2
+//获取应用实例
3
+const app = getApp()
4
+
5
+Page({
6
+  data: {
7
+    motto: 'Hello World',
8
+    userInfo: {},
9
+    hasUserInfo: false,
10
+    canIUse: wx.canIUse('button.open-type.getUserInfo')
11
+  },
12
+  //事件处理函数
13
+  bindViewTap: function() {
14
+    wx.navigateTo({
15
+      url: '../logs/logs'
16
+    })
17
+  },
18
+  onLoad: function () {
19
+    if (app.globalData.userInfo) {
20
+      this.setData({
21
+        userInfo: app.globalData.userInfo,
22
+        hasUserInfo: true
23
+      })
24
+    } else if (this.data.canIUse){
25
+      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
26
+      // 所以此处加入 callback 以防止这种情况
27
+      app.userInfoReadyCallback = res => {
28
+        this.setData({
29
+          userInfo: res.userInfo,
30
+          hasUserInfo: true
31
+        })
32
+      }
33
+    } else {
34
+      // 在没有 open-type=getUserInfo 版本的兼容处理
35
+      wx.getUserInfo({
36
+        success: res => {
37
+          app.globalData.userInfo = res.userInfo
38
+          this.setData({
39
+            userInfo: res.userInfo,
40
+            hasUserInfo: true
41
+          })
42
+        }
43
+      })
44
+    }
45
+  },
46
+  getUserInfo: function(e) {
47
+    console.log(e)
48
+    app.globalData.userInfo = e.detail.userInfo
49
+    this.setData({
50
+      userInfo: e.detail.userInfo,
51
+      hasUserInfo: true
52
+    })
53
+  }
54
+})

+ 3 - 0
pages/index/index.json

@@ -0,0 +1,3 @@
1
+{
2
+  "usingComponents": {}
3
+}

+ 13 - 0
pages/index/index.wxml

@@ -0,0 +1,13 @@
1
+<!--index.wxml-->
2
+<view class="container">
3
+  <view class="userinfo">
4
+    <button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
5
+    <block wx:else>
6
+      <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
7
+      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
8
+    </block>
9
+  </view>
10
+  <view class="usermotto">
11
+    <text class="user-motto">{{motto}}</text>
12
+  </view>
13
+</view>

+ 21 - 0
pages/index/index.wxss

@@ -0,0 +1,21 @@
1
+/**index.wxss**/
2
+.userinfo {
3
+  display: flex;
4
+  flex-direction: column;
5
+  align-items: center;
6
+}
7
+
8
+.userinfo-avatar {
9
+  width: 128rpx;
10
+  height: 128rpx;
11
+  margin: 20rpx;
12
+  border-radius: 50%;
13
+}
14
+
15
+.userinfo-nickname {
16
+  color: #aaa;
17
+}
18
+
19
+.usermotto {
20
+  margin-top: 200px;
21
+}

+ 193 - 0
pages/miaoguo/add.js

@@ -0,0 +1,193 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+var field = [[], [], [], []];
6
+var arrTag = [];
7
+
8
+Page({
9
+  data: {
10
+    IsShowRemind: false,
11
+    IsShowRemind2: false,
12
+  },
13
+  onLoad: function (options) {
14
+    var that = this;
15
+    that.setData({
16
+      Containnerheight: main.getWindowHeight(),
17
+      IsTodayStudy: true,
18
+      UpdateType: options.type,
19
+      MiaoguoCardID:options.id,
20
+    });
21
+    wx.setStorageSync("TempMiaoguoCardID", that.data.MiaoguoCardID);
22
+  },
23
+  onShow: function () {
24
+    var that = this;
25
+    var card = {};
26
+    var list = wx.getStorageSync("CardList");
27
+    if (that.data.UpdateType == "add") {
28
+      
29
+      
30
+      card.MiaoguoCardID = 0;
31
+      card.Content = [];
32
+      for (var i = 0; i < 4; i++) {
33
+        var obj = {};
34
+        obj.ContentType = i;
35
+        obj.Content = [];
36
+        card.Content.push(obj);
37
+      }
38
+      wx.setStorageSync("CardList", [card]);
39
+      that.setData({
40
+        MiaoguoCardID: 0,
41
+        Field: [[], [], [], []],
42
+        Tags: [],
43
+        UpdateType:"add2",
44
+      });
45
+    }
46
+    else {
47
+      var card = {};
48
+      for (var i = 0; i < list.length; i++) {
49
+        if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) {
50
+          card = main.changeStringToView(list[i].Content);
51
+          card.MiaoguoCardID = list[i].MiaoguoCardID;
52
+          card.LimitTime = list[i].LimitTime;
53
+          break;
54
+        }
55
+      }
56
+      that.setData({
57
+        MiaoguoCardID: card.MiaoguoCardID,
58
+        Field: card.Field,
59
+        Tags: card.Tags,
60
+      });
61
+
62
+      wx.setNavigationBarTitle({
63
+        title: '编辑笔记'
64
+      });
65
+    }
66
+
67
+    this.setData({
68
+      IsShowRemind: false,
69
+    });
70
+  },
71
+  onUnload: function () {
72
+    field = [[], [], [], []];
73
+    var card = wx.getStorageSync("TempCardInfo");
74
+    if (card){
75
+      var list = wx.getStorageSync("CardList");
76
+      for (var i = 0; i < list.length; i++) {
77
+        if (this.data.MiaoguoCardID == list[i].MiaoguoCardID) {
78
+          list[i]=card;
79
+          break;
80
+        }
81
+      }
82
+      wx.setStorageSync("CardList", list);
83
+    }
84
+  },
85
+  onClose: function () {
86
+    wx.navigateBack({
87
+      delta: 1,
88
+    });
89
+  },
90
+  gotoAddItem: function (e) {
91
+    var fieldid = e.currentTarget.dataset.fieldid;
92
+    wx.navigateTo({
93
+      url: './addItem?id=' + this.data.MiaoguoCardID + '&fieldid=' + fieldid,
94
+    });
95
+  },
96
+  onSearch: function (e) {
97
+    wx.removeStorageSync("TempFieldNumber");
98
+    wx.navigateTo({
99
+      url: './searchWeb',
100
+    })
101
+  },
102
+  onPreview: function (e) {
103
+    wx.navigateTo({
104
+      url: './preview?type=preview&id='+this.data.MiaoguoCardID,
105
+    })
106
+  },
107
+  switch1Change(e) {
108
+    this.setData({
109
+      IsTodayStudy: e.detail.value,
110
+    });
111
+  },
112
+  saveCard: function () {
113
+    var that = this;
114
+
115
+    if (that.data.Field[1] == "") {
116
+      that.setData({
117
+        IsShowRemind: true,
118
+      });
119
+    }
120
+    else {
121
+      var userid = app.globalData.userInfo.UserID;
122
+      var isTodayStudy = 0;
123
+      if (that.data.IsTodayStudy)
124
+        isTodayStudy = 1;
125
+      var param1 = {
126
+        Tags: that.data.Tags,
127
+        Field1: "",
128
+        Field2: "",
129
+        Field3: "",
130
+        IsTodayStudy: isTodayStudy,
131
+        ID: that.data.MiaoguoCardID,
132
+      };
133
+      for (var i = 1; i <= 3; i++) {
134
+        for (var key in that.data.Field[i]) {
135
+          var item = that.data.Field[i][key];
136
+          var str = "";
137
+          if (item.Type == "image") {
138
+            str = "[图]" + item.Content + "[/图]";
139
+          }
140
+          else if (item.Type == "line") {
141
+            str = "[线]" + item.Content + "[/线]";
142
+          }
143
+          else if (item.Type == "sound") {
144
+            if (item.SoundMark)
145
+              str = "[读 src='" + item.SoundMark + "']" + item.Content + "[/读]";
146
+            else
147
+              str = "[读]" + item.Content + "[/读]";
148
+          }
149
+          else if (item.Type == "normal") {
150
+            str = item.Content;
151
+          }
152
+          else if (item.Type == "return") {
153
+            str = "\n";
154
+          }
155
+          param1["Field" + i] += str;
156
+        }
157
+        param1["Field" + i] = main.changeViewToString(param1["Field" + i]);
158
+
159
+      }
160
+      // var param2 = {
161
+      //   param: common.Encrypt(JSON.stringify(param1))
162
+      // }
163
+      main.postData('AddMiaoguoCard?Type=' + that.data.UpdateType + '&UserID=' + userid, param1, function (data) {
164
+        that.setData({
165
+          IsShowRemind2: true,
166
+        });
167
+        setTimeout(function () {
168
+          that.setData({
169
+            IsShowRemind2: false,
170
+          });
171
+        }, 2000);
172
+        if (that.data.UpdateType == "add") {
173
+          that.setData({
174
+            Field: [[], [], [], []],
175
+            MiaoguoCardID: 0,
176
+            Tags: [],
177
+          });
178
+        }
179
+        that.saveNewData();
180
+      });
181
+    }
182
+  },
183
+  saveNewData:function(){
184
+    var list = wx.getStorageSync("CardList");
185
+    for (var i = 0; i < list.length; i++) {
186
+      if (this.data.MiaoguoCardID == list[i].MiaoguoCardID) {
187
+        wx.setStorageSync("TempCardInfo", list[i]);
188
+        break;
189
+      }
190
+    }
191
+
192
+  }
193
+})

+ 3 - 0
pages/miaoguo/add.json

@@ -0,0 +1,3 @@
1
+{
2
+  "navigationBarTitleText": "添加笔记"
3
+}

+ 73 - 0
pages/miaoguo/add.wxml

@@ -0,0 +1,73 @@
1
+<view class="container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
2
+  <block wx:if="{{Tags && Tags.length>0}}">
3
+    <view class="panelTag FlexRow">
4
+      <view class="panelItem1">记号</view>
5
+      <view class="panelItem2 FlexRow">
6
+        <view class="tag" wx:for="{{Tags}}" wx:key="index">{{item}}</view>
7
+      </view>
8
+    </view>
9
+    <view class='lineFooter'></view>
10
+  </block>
11
+  <view class="panelTitle FlexRow">
12
+    <view class="panelTitle1">段落</view>
13
+  </view>
14
+  <block wx:for="{{[1,2,3]}}" wx:key="indexParent" wx:for-index="indexParent" wx:for-item="itemParent">
15
+    <view class="lineWidthAll FlexRow" wx:if="{{indexParent>0}}">
16
+      <view class="lineWidth640"></view>
17
+    </view>
18
+    <view class="panelItem FlexRow" bindtap='gotoAddItem' data-fieldid="{{itemParent}}">
19
+      <view class="panelItem11 FlexColumn">
20
+        <view class="number">{{itemParent}}</view>
21
+      </view>
22
+      <view class="panelItem21 FlexRow">
23
+        <text class="textNull" wx:if="{{!Field[itemParent] || Field[itemParent].length==0}}">
24
+          <block wx:if="{{itemParent==1}}">写题目,必填</block>
25
+          <block wx:if="{{itemParent==2}}">写答案</block>
26
+          <block wx:if="{{itemParent==3}}">其它</block>
27
+        </text>
28
+        <block wx:for="{{Field[itemParent]}}" wx:key="index">
29
+
30
+          <text class="textNormal" wx:if="{{item.Type=='normal'}}">{{item.Content}}</text>
31
+          
32
+          <text class="textNormal FlexRow" wx:if="{{item.Type=='line'}}">
33
+            <text>{{item.Content[0]}}</text>
34
+            <text class="textLine">{{item.Content[1]}}</text>
35
+            <text>{{item.Content[2]}}</text>
36
+          </text>
37
+
38
+          <image class="universalpic_read_gray_40x40" wx:if="{{item.Type=='sound'}}" src='../images/universalpic_read_gray_40x40.png' />
39
+          <text class="textPinyin" wx:if="{{item.Type=='sound'}}">{{item.Content}}</text>
40
+
41
+          <image class="imageBishun" wx:if="{{item.Type=='image'}}" src='{{item.Content}}' />
42
+          <text class="textReturn" wx:if="{{item.Type=='return'}}"></text>
43
+        </block>
44
+      </view>
45
+    </view>
46
+
47
+  </block>
48
+  <view class='lineFooter'></view>
49
+
50
+  <view class="panelItem3 FlexRow" wx:if="{{UpdateType=='add'}}">
51
+    <view class="panelItem1">
52
+      今天练
53
+    </view>
54
+    <switch class='panelItem32' checked="{{IsTodayStudy}}" bindchange="switch1Change" />
55
+  </view>
56
+  <view class='lineFooter'></view>
57
+
58
+  <view style='height:300rpx;'></view>
59
+
60
+  <view wx:if="{{IsShowRemind}}" class="remind">请在第一段输入内容</view>
61
+  <view wx:if="{{IsShowRemind2}}" class="remind1 remind">保存成功</view>
62
+  <view class='panelSave FlexRow'>
63
+    <view class="panelSave1 FlexRow" bindtap="onSearch">
64
+      + 资料
65
+    </view>
66
+    <view class='panelSave0' bindtap="saveCard">保存</view>
67
+    <view class="panelSave2 FlexRow" bindtap='onPreview'>
68
+      <view class="line1"></view>
69
+      <image class="universalpic_preview_black_30x30" src='../images/universalpic_preview_black_30x30.png' />
70
+    </view>
71
+  </view>
72
+
73
+</view>

+ 267 - 0
pages/miaoguo/add.wxss

@@ -0,0 +1,267 @@
1
+.container {
2
+  justify-content: flex-start;
3
+  font-weight: 500;
4
+  color: #1e1e1e;
5
+  background-color: #F0F0F0;
6
+}
7
+
8
+.panelTag{
9
+  width: 100%;
10
+  justify-content: space-between;
11
+  font-size: 28rpx;
12
+  min-height: 120rpx;
13
+  background-color: #fff;
14
+}
15
+
16
+.panelTag .tag{
17
+  font-size: 24rpx;
18
+  background-color: #1e1e1e;
19
+  color:#fff;
20
+  text-align: center;
21
+  line-height: 45rpx;
22
+  padding: 0 20rpx;
23
+  border-radius: 30rpx;
24
+  margin-left: 10rpx;
25
+}
26
+
27
+.panelTitle {
28
+  width: 100%;
29
+  margin-top: 50rpx;
30
+  justify-content: space-between;
31
+}
32
+
33
+.panelTitle .panelTitle1 {
34
+  font-size: 32rpx;
35
+  margin-left: 30rpx;
36
+  margin-bottom: 30rpx;
37
+}
38
+
39
+.panelTitle .panelTitle2 {
40
+  font-size: 28rpx;
41
+  margin-right: 30rpx;
42
+  background-color: #1e1e1e;
43
+  color: #fff;
44
+  border-radius: 22rpx;
45
+  text-align: center;
46
+  padding: 0 20rpx;
47
+  margin-bottom: 32rpx;
48
+}
49
+
50
+.panelItem {
51
+  width: 100%;
52
+  justify-content: flex-start;
53
+  font-size: 28rpx;
54
+  min-height: 130rpx;
55
+  height:auto;
56
+  background-color: #fff;
57
+  align-items: flex-start;
58
+}
59
+
60
+.panelItem0 {
61
+  height: 133rpx;
62
+}
63
+
64
+.panelItem1 {
65
+  margin-left: 30rpx;
66
+  font-weight: 400;
67
+}
68
+
69
+.panelItem .panelItem11{
70
+  margin: 45rpx 0 0 30rpx;
71
+  justify-content: flex-start;
72
+  align-items: flex-start;
73
+}
74
+
75
+.panelItem .number {
76
+  font-family: 'Roboto-Black';
77
+  font-size: 24rpx;
78
+  width: 40rpx;
79
+  background-color: #0071ef;
80
+  border-radius: 50%;
81
+  text-align: center;
82
+  line-height: 40rpx;
83
+  color: #fff;
84
+}
85
+
86
+.panelItem2 {
87
+  margin-right: 30rpx;
88
+  color: #1e1e1e;
89
+  font-weight: 400;
90
+}
91
+
92
+.panelItem .panelItem21 {
93
+  margin-right: 30rpx;
94
+  font-weight: 400;
95
+  flex-wrap: wrap;
96
+  align-items: flex-start;
97
+  justify-content: flex-start;
98
+  width: 610rpx;
99
+  font-size: 36rpx;
100
+  color:#1e1e1e;
101
+  margin: 40rpx 0 40rpx 40rpx;
102
+}
103
+
104
+.panelItem .textNull {
105
+  color: #d2d2d2;
106
+  font-weight: 400;
107
+}
108
+
109
+
110
+.panelItem .universalpic_read_gray_40x40 {
111
+  width:40rpx;
112
+  height:40rpx;
113
+  margin: 5rpx 10rpx 0 10rpx;
114
+}
115
+
116
+.panelItem .textLine {
117
+  text-decoration: underline;
118
+}
119
+.panelItem .textPinyin {
120
+  text-decoration: underline;
121
+  margin-right: 10rpx;
122
+}
123
+.panelItem .imageBishun {
124
+  width:100rpx;
125
+  height:100rpx;
126
+}
127
+
128
+
129
+.panelItem .textReturn{
130
+  width:100%;
131
+}
132
+.panelItem .textReturn2{
133
+  width:100%;
134
+  height:30rpx;
135
+}
136
+
137
+.panelItem3 {
138
+  min-height: 100rpx;
139
+  margin-top: 50rpx;
140
+  width: 100%;
141
+  justify-content: space-between;
142
+  font-size: 28rpx;
143
+  background-color: #fff;
144
+}
145
+
146
+.panelItem3 .panelItem32 {
147
+  margin-right: 30rpx;
148
+}
149
+
150
+.remind{
151
+  width:100%;
152
+  line-height: 60rpx;
153
+  text-align: center;
154
+  color:#fff;
155
+  background-color: #B3443B;
156
+  font-size:24rpx;
157
+  position: fixed;
158
+  bottom: 120rpx;
159
+}
160
+
161
+.remind1{
162
+  background-color: #2e2e2e;
163
+}
164
+
165
+.panelSave {
166
+  width: 100%;
167
+  background-color: #fff;
168
+  position: fixed;
169
+  bottom: 0;
170
+  height: 120rpx;
171
+  font-size: 36rpx;
172
+  z-index: 10;
173
+  color: #0071ef;
174
+  justify-content: space-between;
175
+}
176
+
177
+.panelSave .panelSave1 {
178
+  width: 148rpx;
179
+  background-color: #0071ef;
180
+  color:#fff;
181
+  text-align: center;
182
+  line-height: 80rpx;
183
+  border-radius: 10rpx;
184
+  font-size:28rpx;
185
+  margin-left: 30rpx;
186
+}
187
+
188
+.panelSave .panelSave0{
189
+  width:400rpx;
190
+  line-height:100rpx;
191
+  text-align: center;
192
+}
193
+
194
+.panelSave .line1 {
195
+  width: 4rpx;
196
+  height: 30rpx;
197
+  background-color: #d2d2d2;
198
+}
199
+
200
+.universalpic_preview_black_30x30 {
201
+  width: 36rpx;
202
+  height: 36rpx;
203
+  margin: 0 40rpx;
204
+}
205
+
206
+/* 
207
+.panelTop {
208
+  width: 690rpx;
209
+  background-color: #eee;
210
+  height: 100rpx;
211
+  justify-content: flex-start;
212
+}
213
+
214
+.btn {
215
+  width: 80rpx;
216
+  line-height: 50rpx;
217
+  text-align: center;
218
+  border-radius: 10rpx;
219
+  border: 1rpx solid #999;
220
+  font-size: 24rpx;
221
+  background-color: #ddd;
222
+  margin: 0 5rpx;
223
+  font-weight: 400;
224
+  padding: 0 10rpx;
225
+}
226
+
227
+.panel{
228
+  width:690rpx;
229
+  margin-top: 30rpx;
230
+  font-size: 30rpx;
231
+}
232
+
233
+.title{
234
+  margin-bottom: 15rpx;
235
+  font-size: 30rpx;
236
+}
237
+
238
+.panelInput{
239
+  width:690rpx;
240
+  border-radius: 10rpx;
241
+  background-color: #fff;
242
+}
243
+
244
+.input{
245
+  margin: 10rpx 20rpx;
246
+  width:650rpx;
247
+  min-height:36rpx;
248
+  background-color: #ffffff;
249
+  text-align: left;
250
+  font-size:28rpx;
251
+  color:#1e1e1e;
252
+}
253
+
254
+.tagList{
255
+  justify-content: flex-start;
256
+  flex-wrap: wrap;
257
+}
258
+.tag{
259
+  margin: 15rpx 15rpx 0 0;
260
+  padding: 10rpx;
261
+  background-color: #dddddd;
262
+  border-radius: 5rpx;
263
+  font-weight: 400;
264
+  font-size:24rpx;
265
+}
266
+
267
+*/

+ 148 - 0
pages/miaoguo/addItem.js

@@ -0,0 +1,148 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+var field = "";
7
+var tempCursor = 0, btnName = "";
8
+var arrSoundMark=[];
9
+
10
+Page({
11
+  data: {
12
+    Field: "",
13
+    SoundSign: "[读]",
14
+    BtnArray: ["+", "-", "×", "÷", "="],
15
+  },
16
+  onLoad: function (options) {
17
+    var id = options.id;
18
+    var fieldid = options.fieldid;
19
+    var card={};
20
+    var list = wx.getStorageSync("CardList");
21
+    for (var i = 0; i < list.length; i++) {
22
+      if (id == list[i].MiaoguoCardID) {
23
+        card=list[i];
24
+        break;
25
+      }
26
+    }
27
+    var content=card.Content[fieldid].Content;
28
+    content = main.changeViewToString(content);
29
+    content = main.encryptUrl(content);
30
+    
31
+    var that = this;
32
+    that.setData({
33
+      MiaoguoCardID:id,
34
+      Focus: true,
35
+      FieldNumber: fieldid,
36
+      Field: content,
37
+      Containnerheight: main.getWindowHeight(),
38
+    });
39
+    wx.setNavigationBarTitle({
40
+      title: '编辑 段落' + id,
41
+    });
42
+  },
43
+  onShow: function () {
44
+    var that = this;
45
+    var list = wx.getStorageSync("CardList");
46
+    
47
+    var card = {};
48
+    for (var i = 0; i < list.length; i++) {
49
+      if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) {
50
+        this.setData({
51
+          Field: list[i].Content[this.data.FieldNumber].Content,
52
+        });
53
+        break;
54
+      }
55
+    }
56
+  },
57
+  bindinputField: function (e) {
58
+    field = e.detail.value;
59
+    this.setData({
60
+      Field: e.detail.value,
61
+    });
62
+  },
63
+  addSymbol: function (e) {
64
+    btnName = e.currentTarget.dataset.id;
65
+    if (btnName == "[读]") {
66
+      this.setData({
67
+        SoundSign: "[/读]",
68
+      });
69
+    }
70
+    else if (btnName == "[/读]") {
71
+      this.setData({
72
+        SoundSign: "[读]",
73
+      });
74
+    }
75
+  },
76
+  onBindblur: function (e) {
77
+    console.log(e);
78
+    tempCursor = e.detail.cursor;
79
+    console.log("tempCursor:" + tempCursor);
80
+
81
+    if (tempCursor == undefined)
82
+      tempCursor = this.data["Field"].length;
83
+    var str1 = "", str2 = "";
84
+    if (this.data.Field.length > 0) {
85
+      str1 = this.data.Field.substr(0, tempCursor);
86
+      str2 = this.data.Field.substring(tempCursor, this.data.Field.length);
87
+    }
88
+    console.log("str1:" + str1);
89
+    console.log("str2:" + str2);
90
+    var cur = 1;
91
+    if (btnName == "[读]") {
92
+      cur = 3;
93
+    }
94
+    else if (btnName == "[/读]") {
95
+      cur = 4;
96
+    }
97
+    else if (btnName == "[线][/线]") {
98
+      cur = 3;
99
+    }
100
+    this.setData({
101
+      Field: str1 + btnName + str2,
102
+      Focus: true,
103
+      Cursor: tempCursor + cur,
104
+    });
105
+
106
+    btnName = "";
107
+  },
108
+  onSearch: function (e) {
109
+    wx.setStorageSync("TempFieldNumber", this.data.FieldNumber);
110
+    wx.navigateTo({
111
+      url: './searchWeb',
112
+    })
113
+  },
114
+  clear: function () {
115
+    this.setData({
116
+      Field: "",
117
+      Focus: true,
118
+      Cursor: 0,
119
+    });
120
+  },
121
+  closeAddItem: function (e) {
122
+    var isSave = e.currentTarget.dataset.idsave;
123
+    if (isSave=="true") {
124
+      
125
+      var str = this.data.Field;
126
+      str = main.decryptUrl(str);
127
+
128
+      str = str.replace(/\[读\]/g, "\n[读]");
129
+      str = str.replace(/\[图\]/g, "\n[图]");
130
+      str = str.replace(/\[\/读\]/g, "[\/读]\n");
131
+      str = str.replace(/\[\/图\]/g, "[\/图]\n");
132
+      str = str.replace(/\n\n/g, "\n");
133
+
134
+      var list = wx.getStorageSync("CardList");
135
+      for (var i = 0; i < list.length; i++) {
136
+        if (this.data.MiaoguoCardID == list[i].MiaoguoCardID) {
137
+          list[i].Content[this.data.FieldNumber].Content=str;
138
+          break;
139
+        }
140
+      }
141
+      wx.setStorageSync("CardList", list);
142
+
143
+    }
144
+    wx.navigateBack({
145
+      delta: 1,
146
+    });
147
+  }
148
+})

+ 3 - 0
pages/miaoguo/addItem.json

@@ -0,0 +1,3 @@
1
+{
2
+  "navigationBarTitleText": "编辑 段落1"
3
+}

+ 48 - 0
pages/miaoguo/addItem.wxml

@@ -0,0 +1,48 @@
1
+<view class="container FlexColumn" style='height:{{Containnerheight}}rpx;'>
2
+  <view class="panelTag FlexRow">
3
+    <view class='left FlexRow'>
4
+      <view class="panelSave1 FlexRow" bindtap="onSearch">
5
+        <view class="add">+</view> 资料
6
+      </view>
7
+      <view class="panelSave2 panelSave1 FlexRow" bindtap="addSymbol" data-id="{{SoundSign}}" wx:if="{{SoundSign=='[读]'}}">
8
+        <image class="universalpic_read_begin_gray_40x20" src='../images/universalpic_read_begin_gray_40x20.png' />
9
+      </view>
10
+      <view class="panelSave3 panelSave1 FlexRow" bindtap="addSymbol" data-id="{{SoundSign}}" wx:if="{{SoundSign=='[/读]'}}">
11
+        <image class="universalpic_read_begin_gray_40x20" src='../images/universalpic_read_end_gray_40x20.png' />
12
+      </view>
13
+      <view class="panelSave2 panelSave1 FlexRow" bindtap="addSymbol" data-id="[线][/线]">
14
+        <image class="universalpic_editbar_underline_gray_14x20" src='../images/universalpic_editbar_underline_gray_14x20.png' />
15
+      </view>
16
+    </view>
17
+    <view class='right FlexRow'>
18
+      <view class="line1"></view>
19
+      <view class="clear" bindtap="clear">清空</view>
20
+      <image class="universalpic_help_gray_26x26" src='../images/universalpic_help_gray_26x26.png' />
21
+
22
+    </view>
23
+  </view>
24
+  <view class='lineFooter'></view>
25
+  <view class='panelInput'>
26
+    <textarea class="input" maxlength='-1' bindinput="bindinputField" show-confirm-bar="true" value="{{Field}}" focus="{{Focus}}" cursor="{{Cursor}}" bindblur="onBindblur" data-id='{{FieldNumber}}' />
27
+  </view>
28
+  <view class='lineFooter'></view>
29
+  <view class="panelTag0 panelTag FlexRow">
30
+    <view class="btn0"></view>
31
+    <view class="btn1 FlexRow" bindtap="addSymbol" data-id="()">
32
+      <image class="universalpic_editbar_brackets_gray" src='../images/universalpic_editbar_brackets_gray.png' />
33
+    </view>
34
+    <view class="btn" bindtap="addSymbol" wx:for="{{BtnArray}}" wx:key="index" data-id="{{item}}">{{item}}</view>
35
+    <view class="btn1 FlexRow" bindtap="addSymbol" data-id="²">
36
+      <image class="universalpic_editbar_sqr_gray" src='../images/universalpic_editbar_sqr_gray.png' />
37
+    </view>
38
+    
39
+  </view>
40
+  <view class='lineFooter'></view>
41
+  <view class='panelBtn FlexRow'>
42
+    <view class='text1' bindtap="closeAddItem" data-idsave="false">取消</view>
43
+    <view class='line1'></view>
44
+    <view class='text2 text1' bindtap="closeAddItem" data-idsave="true">确定</view>
45
+  </view>
46
+  <view class='lineFooter'></view>
47
+
48
+</view>

+ 158 - 0
pages/miaoguo/addItem.wxss

@@ -0,0 +1,158 @@
1
+.container {
2
+  justify-content: flex-start;
3
+  font-weight: 500;
4
+  color: #1e1e1e;
5
+  background-color: #f0f0f0;
6
+}
7
+
8
+.left {
9
+  margin-left: 25rpx;
10
+}
11
+
12
+.right {
13
+  margin-right: 25rpx;
14
+}
15
+
16
+.panelTag {
17
+  width: 100%;
18
+  justify-content: space-between;
19
+  min-height: 120rpx;
20
+  background-color: #fff;
21
+}
22
+
23
+.panelSave1 {
24
+  width: 148rpx;
25
+  background-color: #0071ef;
26
+  color: #fff;
27
+  text-align: center;
28
+  height: 80rpx;
29
+  line-height: 80rpx;
30
+  border-radius: 10rpx;
31
+  font-size: 28rpx;
32
+}
33
+
34
+.panelSave2 {
35
+  width: 80rpx;
36
+  height: 80rpx;
37
+  background-color: #f0f0f0;
38
+  margin-left: 10rpx;
39
+}
40
+
41
+.panelSave3 {
42
+  width: 80rpx;
43
+  height: 80rpx;
44
+  margin-left: 10rpx;
45
+}
46
+
47
+.universalpic_read_begin_gray_40x20 {
48
+  width: 38rpx;
49
+  height: 22rpx;
50
+}
51
+
52
+.universalpic_editbar_underline_gray_14x20{
53
+  width: 14rpx;
54
+  height: 20rpx;
55
+}
56
+
57
+.add {
58
+  font-size: 42rpx;
59
+  font-weight: 600;
60
+  margin: 0 10rpx 10rpx 0;
61
+}
62
+
63
+.clear {
64
+  width: 100rpx;
65
+  height: 120rpx;
66
+  color: #0071ef;
67
+  text-align: center;
68
+  line-height: 120rpx;
69
+  font-size: 24rpx;
70
+}
71
+
72
+.line1 {
73
+  width: 4rpx;
74
+  height: 30rpx;
75
+  background-color: #d2d2d2;
76
+  margin-right: 20rpx;
77
+}
78
+
79
+.universalpic_help_gray_26x26 {
80
+  width: 26rpx;
81
+  height: 26rpx;
82
+  margin: 0 0 0 30rpx;
83
+}
84
+
85
+.panelTag0 {
86
+  justify-content: flex-start;
87
+}
88
+
89
+.panelTag .btn0 {
90
+  width: 20rpx;
91
+}
92
+
93
+.panelTag .btn {
94
+  font-family: 'Roboto-Black';
95
+  width: 80rpx;
96
+  background-color: #f0f0f0;
97
+  border-radius: 10rpx;
98
+  text-align: center;
99
+  line-height: 80rpx;
100
+  height: 80rpx;
101
+  margin-right: 10rpx;
102
+  color: #787878;
103
+  font-size: 36rpx;
104
+}
105
+
106
+.panelTag .btn1 {
107
+  width: 80rpx;
108
+  height: 80rpx;
109
+  background-color: #f0f0f0;
110
+  border-radius: 10rpx;
111
+  margin-right: 10rpx;
112
+}
113
+
114
+.universalpic_editbar_brackets_gray {
115
+  width: 34rpx;
116
+  height: 26rpx;
117
+}
118
+
119
+.universalpic_editbar_sqr_gray {
120
+  width: 25rpx;
121
+  height: 22rpx;
122
+}
123
+
124
+.panelInput {
125
+  width: 100%;
126
+  height: 300rpx;
127
+  margin-top: 20rpx;
128
+  background-color: #fff;
129
+  font-size: 36rpx;
130
+}
131
+
132
+.input {
133
+  margin: 40rpx 30rpx 0 30rpx;
134
+  width: 690rpx;
135
+}
136
+
137
+.panelBtn {
138
+  width: 100%;
139
+  background-color: #f8f8f8;
140
+}
141
+
142
+.panelBtn .line1 {
143
+  width: 4rpx;
144
+  height: 30rpx;
145
+  background-color: #d2d2d2;
146
+}
147
+
148
+.panelBtn .text1 {
149
+  width: 374rpx;
150
+  line-height: 100rpx;
151
+  text-align: center;
152
+  font-size: 28rpx;
153
+  color: #a20602;
154
+}
155
+
156
+.panelBtn .text2 {
157
+  color: #0071ef;
158
+}

+ 36 - 0
pages/miaoguo/cardInfo.js

@@ -0,0 +1,36 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+Page({
7
+  data: {
8
+  },
9
+  onLoad: function (options) {
10
+    var that = this;
11
+    that.setData({
12
+      Containnerheight: main.getWindowHeight(),
13
+    });
14
+
15
+    that.init(options.id);
16
+  },
17
+  init: function (id) {
18
+    var that = this;
19
+    var card={};
20
+    var list = wx.getStorageSync("CardList");
21
+    for (var i = 0; i < list.length; i++) {
22
+      if (id == list[i].MiaoguoCardID) {
23
+        card.CreateTimeStr = common.formatDateCHS(list[i].CreateTime);
24
+        card.FirstTimeStr = common.formatDateCHS(list[i].FirstTime);
25
+        card.LastTimeStr = common.formatDateCHS(list[i].LastTime);
26
+        card.LimitTimeStr = common.formatDateCHS(list[i].LimitTime);
27
+        card.LearnNumber = list[i].LearnNumber;
28
+        break;
29
+      }
30
+    }
31
+    
32
+    that.setData({
33
+      CardInfo: card
34
+    });
35
+  }
36
+})

+ 3 - 0
pages/miaoguo/cardInfo.json

@@ -0,0 +1,3 @@
1
+{
2
+  "navigationBarTitleText": "详细信息"
3
+}

+ 64 - 0
pages/miaoguo/cardInfo.wxml

@@ -0,0 +1,64 @@
1
+<view class="container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
2
+  <view class="panelTitle FlexRow">
3
+    <view class="panelTitle1">时间</view>
4
+  </view>
5
+  <view class="panelItem FlexRow">
6
+    <view class="panelItem1">添加笔记</view>
7
+    <view class="panelItem2 FlexRow">
8
+      {{CardInfo.CreateTimeStr}}
9
+    </view>
10
+  </view>
11
+  <view class="lineWidthAll FlexRow">
12
+    <view class="lineWidth720"></view>
13
+  </view>
14
+  <view class="panelItem FlexRow">
15
+    <view class="panelItem1">首次练习</view>
16
+    <view class="panelItem2 FlexRow">
17
+      {{CardInfo.FirstTimeStr}}
18
+    </view>
19
+  </view>
20
+  <view class="lineWidthAll FlexRow">
21
+    <view class="lineWidth720"></view>
22
+  </view>
23
+  <view class="panelItem FlexRow">
24
+    <view class="panelItem1">最近练习</view>
25
+    <view class="panelItem2 FlexRow">
26
+      {{CardInfo.LastTimeStr}}
27
+    </view>
28
+  </view>
29
+  <view class="lineWidthAll FlexRow">
30
+    <view class="lineWidth720"></view>
31
+  </view>
32
+  <view class="panelItem FlexRow">
33
+    <view class="panelItem1">到期时间</view>
34
+    <view class="panelItem2 FlexRow">
35
+      {{CardInfo.LimitTimeStr}}
36
+    </view>
37
+  </view>
38
+  <view class="lineWidthAll FlexRow">
39
+    <view class="lineWidth720"></view>
40
+  </view>
41
+  <view class='lineFooter'></view>
42
+
43
+  <view class="panelTitle FlexRow">
44
+    <view class="panelTitle1">进展</view>
45
+  </view>
46
+  <view class="panelItem FlexRow">
47
+    <view class="panelItem1">练习遍数</view>
48
+    <view class="panelItem2 FlexRow">
49
+      {{CardInfo.LearnNumber}}
50
+    </view>
51
+  </view>
52
+  <!-- <view class="lineWidthAll FlexRow">
53
+    <view class="lineWidth720"></view>
54
+  </view>
55
+  <view class="panelItem FlexRow">
56
+    <view class="panelItem1">总练习用时</view>
57
+    <view class="panelItem2 FlexRow">
58
+      {{CardInfo.Duration}}
59
+    </view>
60
+  </view> -->
61
+  <view class='lineFooter'></view>
62
+
63
+  <view style='height:100rpx'></view>
64
+</view>

+ 39 - 0
pages/miaoguo/cardInfo.wxss

@@ -0,0 +1,39 @@
1
+.container {
2
+  background-color: #f0f0f0;
3
+  color:#1e1e1e;
4
+  font-weight: 500;
5
+  justify-content: flex-start;
6
+}
7
+
8
+.panelTitle{
9
+  width:100%;
10
+  margin-top: 50rpx;
11
+  justify-content: flex-start;
12
+}
13
+.panelTitle .panelTitle1{
14
+  font-size:32rpx;
15
+  margin-left: 30rpx;
16
+  margin-bottom: 30rpx;
17
+}
18
+
19
+.panelItem{
20
+  width:100%;
21
+  justify-content: space-between;
22
+  font-size:28rpx;
23
+  height:100rpx;
24
+  background-color: #fff;
25
+}
26
+
27
+.panelItem0{
28
+  height:133rpx;
29
+}
30
+
31
+.panelItem .panelItem1{
32
+  margin-left: 30rpx;
33
+  font-weight: 400;
34
+}
35
+.panelItem .panelItem2{
36
+  margin-right: 30rpx;
37
+  color:#787878;
38
+  font-weight: 400;
39
+}

+ 77 - 0
pages/miaoguo/default.js

@@ -0,0 +1,77 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+Page({
7
+  data: {
8
+  },
9
+  onLoad: function () {
10
+    app.globalData.userInfo={};
11
+    app.globalData.userInfo.UserID=1;
12
+
13
+    var that = this;
14
+    that.setData({
15
+      Containnerheight: main.getWindowHeight(),
16
+    });
17
+  },
18
+  onShow:function(){
19
+    var that = this;
20
+    main.getLocalHost(function () {
21
+      common.getStorageValue(that, "CardMaxNumberNew", 10, function () {
22
+        common.getStorageValue(that, "CardMaxNumberHistory", 30, function () {
23
+          that.getList();
24
+          wx.stopPullDownRefresh();
25
+        });
26
+      });
27
+    });
28
+  },
29
+  onPullDownRefresh:function(){
30
+    this.onShow();
31
+  },
32
+  goto:function(e){
33
+    var url=e.currentTarget.dataset.url;
34
+    wx.navigateTo({
35
+      url: './'+url,
36
+    })
37
+  },
38
+  getList: function () {
39
+    var that = this;
40
+    var url = 'GetMiaoguoCardToday?UserID=' + app.globalData.userInfo.UserID;
41
+    url += "&New=" + this.data.CardMaxNumberNew;
42
+    url += "&History=" + this.data.CardMaxNumberHistory;
43
+
44
+    main.getData(url, function (data) {
45
+      if (data) {
46
+        var TodayTaskNumber=data.ListNew.length+data.ListReview.length+data.ListHistory.length;
47
+        that.setData({
48
+          List: data,
49
+          TodayTaskNumber: TodayTaskNumber
50
+        });
51
+        wx.setStorageSync("TaskToday", data);
52
+        main.getData("GetBaiduToken",function(data){
53
+          app.globalData.BaiduToken = data;
54
+        });
55
+      }
56
+    });
57
+  },
58
+  gotoCard: function () {
59
+    wx.redirectTo({
60
+      url: './searchCard',
61
+    })
62
+  },
63
+  onShareAppMessage: function () {
64
+    return {
65
+      title: '',
66
+      path: 'pages/miaoguo/default',
67
+      success: function (res) {
68
+      },
69
+      fail: function (err) {
70
+        console.log(err);
71
+      },
72
+      complete: function (res) {
73
+        console.log(res);
74
+      },
75
+    }
76
+  },
77
+})

+ 7 - 0
pages/miaoguo/default.json

@@ -0,0 +1,7 @@
1
+{
2
+  "navigationBarBackgroundColor": "#3157BA",
3
+  "navigationBarTextStyle": "white",
4
+  "navigationBarTitleText": "第1天",
5
+  "backgroundColor": "#3157BA",
6
+  "enablePullDownRefresh": true
7
+}

+ 41 - 0
pages/miaoguo/default.wxml

@@ -0,0 +1,41 @@
1
+<view class="container FlexColumn" style='height:{{Containnerheight}}rpx;'>
2
+  <view class='panel1 FlexColumn'>
3
+    <view class='text1'>今日任务</view>
4
+    <view class='panel11 FlexRow' bindtap="goto" data-url="setting">
5
+      <view class='universalpic_setup_gray_40x40'></view>
6
+      <view class='text2'>{{TodayTaskNumber}}</view>
7
+      <image class="universalpic_setup_gray_40x40" src='../images/universalpic_setup_gray_40x40.png' />
8
+    </view>
9
+  </view>
10
+  <image wx:if="{{TodayTaskNumber>0}}" class="task_index_start" src='../images/task_index_start.png' bindtap="goto" data-url="detail" />
11
+  <image wx:if="{{BtnStatus==1}}" class="task_index_start" src='../images/task_index_goon.png'  bindtap="goto" data-url="detail" />
12
+  <image wx:if="{{TodayTaskNumber==0}}" class="task_index_start" src='../images/task_index_report.png'  bindtap="goto" data-url="detail" />
13
+
14
+  <view class='panelBottom FlexColumn'>
15
+
16
+    <image class="task_index_footer" src='../images/task_index_footer.png' />
17
+
18
+    <view class='panelBottom1 FlexRow'>
19
+      <view class='panelBottom11 FlexColumn'>
20
+        <image class="program_tabbar_task_default" src='../images/program_tabbar_task_normal.png' />
21
+        <view class='text5'>练习</view>
22
+      </view>
23
+      <view class='line1'></view>
24
+      <view class='panelBottom11 FlexColumn' bindtap="goto" data-url="add?type=add&id=0">
25
+        <image class="program_tabbar_task_default" src='../images/program_tabbar_add_default.png' />
26
+        <view class='text5'>添加</view>
27
+      </view>
28
+      <view class='line1'></view>
29
+      <view class='panelBottom11 FlexColumn' bindtap='gotoCard'>
30
+        <image class="program_tabbar_task_default" src='../images/program_tabbar_note_default.png' />
31
+        <view class='text5'>笔记</view>
32
+      </view>
33
+
34
+    </view>
35
+  </view>
36
+  <!-- <view class='panelBtn' bindtap="goto" data-url="detail">今日任务</view>
37
+  <view class='panelBtn' bindtap="goto" data-url="search">题库</view>
38
+  <view class='panelBtn' bindtap="goto" data-url="add?type=add">新增</view>
39
+  <view class='panelBtn'>统计</view>
40
+  <view class='panelBtn' bindtap="goto" data-url="setting">设置</view> -->
41
+</view>

+ 66 - 0
pages/miaoguo/default.wxss

@@ -0,0 +1,66 @@
1
+.container {
2
+  justify-content: flex-start;
3
+  font-weight: 500;
4
+  color: #1e1e1e;
5
+  background-color: #3157ba;
6
+}
7
+
8
+.panel1 {
9
+  margin-top: 120rpx;
10
+  color: #fff;
11
+}
12
+
13
+.panel1 .text1 {
14
+  font-size: 36rpx;
15
+}
16
+
17
+.panel1 .text2 {
18
+  font-family: 'Roboto-Black';
19
+  font-size: 168rpx;
20
+  margin: 0 10rpx;
21
+}
22
+
23
+.universalpic_setup_gray_40x40 {
24
+  width: 40rpx;
25
+  height: 40rpx;
26
+  margin-top: 75rpx;
27
+}
28
+
29
+.task_index_start {
30
+  width: 377rpx;
31
+  height: 240rpx;
32
+  margin-top: 156rpx;
33
+}
34
+
35
+.panelBottom {
36
+  position: fixed;
37
+  bottom: 0;
38
+  width: 100%;
39
+}
40
+.task_index_footer{
41
+  width: 100%;
42
+  height:130rpx;
43
+}
44
+.panelBottom1 {
45
+  width: 100%;
46
+  background-color: #E0E0E0;
47
+}
48
+
49
+.panelBottom11 {
50
+  flex:1;
51
+  background-color: #fff;
52
+  font-size:20rpx;
53
+  color:#787878;
54
+  height:98rpx;
55
+
56
+}
57
+.panelBottom1 .line1{
58
+  height:98rpx;
59
+  width:2rpx;
60
+}
61
+
62
+.program_tabbar_task_default {
63
+  width: 54rpx;
64
+  height: 54rpx;
65
+  margin-bottom: 4rpx;
66
+}

+ 532 - 0
pages/miaoguo/detail.js

@@ -0,0 +1,532 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+var innerAudioContext1;
7
+
8
+var listTaskFinished = []; //完成的任务
9
+var listTaskReview = []; //需重新复习的任务
10
+var timeStart; //计算时长
11
+
12
+Page({
13
+  data: {
14
+    NumberNew: 0,
15
+    NumberReview: 0,
16
+    NumberHistory: 0,
17
+    IsShowNumberInfo: false,
18
+  },
19
+  onLoad: function () {
20
+    var that = this;
21
+    that.setData({
22
+      Containnerheight: main.getWindowHeight(),
23
+      IsShowAnswer: [0, 0],
24
+    });
25
+
26
+    innerAudioContext1 = wx.createInnerAudioContext();
27
+    this.audioCtx = wx.createAudioContext('playAudio');
28
+
29
+    this.getList();
30
+
31
+  },
32
+  onShow: function () {
33
+    var that = this;
34
+
35
+    if (wx.getStorageSync("CardUpdateOK")) {
36
+      var item = wx.getStorageSync("CardEditItem");
37
+      this.data.TaskList[0].Content = item.Content;
38
+      this.setData({
39
+        TaskList: this.data.TaskList,
40
+      });
41
+      wx.removeStorageSync("CardUpdateOK");
42
+    }
43
+
44
+    if (that.data.NumberNew == 0 &&
45
+      that.data.NumberReview == 0 &&
46
+      that.data.NumberHistory == 0) {
47
+
48
+      listTaskFinished = [];
49
+      that.setBackColor(1);
50
+    }
51
+    else
52
+      that.setBackColor(-1);
53
+  },
54
+  setBackColor: function (isFinish) {//isFinish=1 结束 =0正常 =-1开始
55
+    var that = this;
56
+    var url = "/pages/sounds/";
57
+    if (isFinish == 1) {
58
+      wx.setNavigationBarColor({
59
+        frontColor: '#ffffff',
60
+        backgroundColor: '#47413D',
61
+      });
62
+      if (wx.canIUse('setBackgroundColor')) {
63
+        wx.setBackgroundColor({
64
+          backgroundColor: '#47413D',
65
+        });
66
+      }
67
+      url += "end.mp3";
68
+    }
69
+    else {
70
+      wx.setNavigationBarColor({
71
+        frontColor: '#ffffff',
72
+        backgroundColor: "#A5656E",
73
+      });
74
+      if (wx.canIUse('setBackgroundColor')) {
75
+        wx.setBackgroundColor({
76
+          backgroundColor: "#A5656E",
77
+        });
78
+      }
79
+    }
80
+
81
+    wx.pageScrollTo({
82
+      scrollTop: 0,
83
+    });
84
+  },
85
+  getList: function () {
86
+    var task = wx.getStorageSync("TaskToday");
87
+    var that = this;
88
+    var arrNew = task.ListNew;
89
+    var arrHistory = task.ListHistory;
90
+    listTaskReview = task.ListReview;
91
+
92
+    var nMax = [1, 1];
93
+    if (arrNew.length == 0 || arrHistory.length == 0) {
94
+      if (arrNew.length == 0) {
95
+        nMax[0] = 0;
96
+      }
97
+      if (arrHistory.length == 0) {
98
+        nMax[1] = 0;
99
+      }
100
+    } else if (arrNew.length >= arrHistory.length) {
101
+      nMax[0] = Math.floor(arrNew.length / arrHistory.length);
102
+    } else if (arrNew.length < arrHistory.length) {
103
+      nMax[1] = Math.floor(arrHistory.length / arrNew.length);
104
+    }
105
+
106
+    arrNew = common.randomArray(arrNew);
107
+    arrHistory = common.randomArray(arrHistory);
108
+
109
+    var Len = arrNew.length + arrHistory.length;
110
+    var list = [],
111
+      indexNew = 0,
112
+      indexHistory = 0;
113
+    for (var i = 0; i < Len; i++) {
114
+      for (var j = 0; j < nMax[0]; j++) {
115
+        if (indexNew < arrNew.length) {
116
+          arrNew[indexNew].IsNew = true;
117
+          list.push(arrNew[indexNew++]);
118
+        }
119
+      }
120
+      for (var j = 0; j < nMax[1]; j++) {
121
+        if (indexHistory < arrHistory.length) {
122
+          arrHistory[indexHistory].IsHistory = true;
123
+          list.push(arrHistory[indexHistory++]);
124
+        }
125
+      }
126
+    }
127
+
128
+    that.data.NumberReview = listTaskReview.length;
129
+    if (list.length == 0 && listTaskReview.length > 0) {
130
+      list.push(listTaskReview.shift());
131
+    }
132
+
133
+    list = updateNumberStr(list);
134
+    listTaskReview = updateNumberStr(listTaskReview);
135
+
136
+
137
+    wx.setStorageSync("CardEditItem", list[0]);
138
+
139
+    //处理列表
140
+    list = formatList(list);
141
+    listTaskReview = formatList(listTaskReview);
142
+
143
+
144
+    that.setData({
145
+      NumberNew: arrNew.length,
146
+      NumberReview: that.data.NumberReview,
147
+      NumberHistory: arrHistory.length,
148
+      TaskList: list,
149
+      FontSize:list[0].FontSize,
150
+      CanUndo: 0,
151
+    });
152
+
153
+    listTaskFinished = [];
154
+    timeStart = new Date(); //起始时间
155
+
156
+    function formatList(list) {
157
+      for (var i = 0; i < list.length; i++) {
158
+        list[i].Content = main.changeStringToView(list[i].Content);
159
+      }
160
+      return list;
161
+    }
162
+
163
+    function replaceStr(data) {
164
+      var result = "";
165
+      if (data.indexOf("d") > 0) {
166
+        var dayNum = Number(data.replace("d", ""));
167
+        if (dayNum >= 365) {
168
+          var year1 = Math.floor(dayNum / 365);
169
+          var year = year1 + Math.round(10 * (dayNum - year1 * 365) / 365) / 10;
170
+          result = year + "年";
171
+        } else {
172
+          if (dayNum > 31) {
173
+            var month1 = Math.floor(dayNum / 30);
174
+            var month = month1 + Math.round(10 * (dayNum - month1 * 30) / 30) / 10;
175
+            result = month + "月";
176
+          } else
177
+            result = data.replace("d", "天");
178
+        }
179
+
180
+      } else if (data.indexOf("m") > 0)
181
+        result = data.replace("m", "分钟");
182
+      return result;
183
+    }
184
+
185
+    function updateNumberStr(list) {
186
+      for (var i = 0; i < list.length; i++) {
187
+        if (list[i].Number0)
188
+          list[i].Number0Str = replaceStr(list[i].Number0);
189
+        if (list[i].Number1)
190
+          list[i].Number1Str = replaceStr(list[i].Number1);
191
+        if (list[i].Number2)
192
+          list[i].Number2Str = replaceStr(list[i].Number2);
193
+        if (list[i].Number3)
194
+          list[i].Number3Str = replaceStr(list[i].Number3);
195
+      }
196
+      return list;
197
+    }
198
+  },
199
+
200
+  onShowAnswer: function (e) {
201
+    var start = e.currentTarget.dataset.start;
202
+    var that = this;
203
+    if (!(that.data.NumberNew == 0 &&
204
+      that.data.NumberReview == 0 &&
205
+      that.data.NumberHistory == 0)) {
206
+
207
+      if (start) {
208
+        that.data.IsShowAnswer[0] = 0;
209
+        that.data.IsShowAnswer[1] = 0;
210
+      }
211
+      else {
212
+        if (!that.data.IsShowAnswer[0] && !that.data.IsShowAnswer[1]) {
213
+          that.data.IsShowAnswer[0] = 1;
214
+          if (that.data.TaskList[0].Content.Field[3].length == 0) {
215
+            that.data.IsShowAnswer[1] = 1;
216
+          }
217
+        }
218
+        else if (that.data.IsShowAnswer[0] && !that.data.IsShowAnswer[1]) {
219
+          that.data.IsShowAnswer[1] = 1;
220
+        }
221
+      }
222
+
223
+      that.setData({
224
+        IsShowAnswer: that.data.IsShowAnswer,
225
+      });
226
+    }
227
+  },
228
+  onAddQuestion: function () {
229
+    wx.navigateTo({
230
+      url: './add'
231
+    });
232
+  },
233
+  onMore: function () {
234
+    var that = this;
235
+    wx.showActionSheet({
236
+      itemList: ["详细信息", "编辑笔记", "字体紧凑", "字体标准", "字体宽松"],
237
+      success(res) {
238
+        console.log(res.tapIndex);
239
+
240
+        wx.setStorageSync("CardEditItem", that.data.TaskList[0]);
241
+
242
+        if (res.tapIndex == 0) {
243
+          wx.navigateTo({
244
+            url: './cardInfo',
245
+          });
246
+        }
247
+        else if (res.tapIndex == 1) {
248
+          wx.navigateTo({
249
+            url: './add?type=edit'
250
+          });
251
+        }
252
+        else if (res.tapIndex == 2) {
253
+          that.data.TaskList[0].FontSize=46;
254
+          that.setData({
255
+            TaskList: that.data.TaskList,
256
+          });
257
+        }
258
+        else if (res.tapIndex == 3) {
259
+          that.data.TaskList[0].FontSize = 68;
260
+          that.setData({
261
+            TaskList: that.data.TaskList,
262
+          });
263
+        }
264
+        else if (res.tapIndex == 4) {
265
+          that.data.TaskList[0].FontSize = 108;
266
+          that.setData({
267
+            TaskList: that.data.TaskList,
268
+          });
269
+        }
270
+
271
+      },
272
+    })
273
+  },
274
+  gotoPrev: function () {
275
+    if (listTaskFinished.length > 0) {
276
+      var card = listTaskFinished.pop();
277
+      console.log(card);
278
+
279
+      var that = this;
280
+      var url = "UndoMiaoguoCard?";
281
+      url += "ID=" + card.Card.ID;
282
+      url += "&UserID=" + app.globalData.userInfo.UserID;
283
+      url += "&IntervalTime=" + card.IntervalTime;
284
+      url += "&IntervalDay=" + card.IntervalDay;
285
+      url += "&RepetitionCoefficient=" + card.RepetitionCoefficient;
286
+      if (card.Card.FirstTime)
287
+        url += "&FirstTime=" + card.Card.FirstTime;
288
+      if (card.Card.LastTime)
289
+        url += "&LastTime=" + card.Card.LastTime;
290
+
291
+      main.getData(url, function (data) {
292
+        timeStart = new Date();
293
+
294
+        card.Card.Number0 = card.Number0Old;
295
+        card.Card.Number0Str = card.Number0StrOld;
296
+        card.Card.Number1 = card.Number1Old;
297
+        card.Card.Number1Str = card.Number1StrOld;
298
+        card.Card.Number2 = card.Number2Old;
299
+        card.Card.Number2Str = card.Number2StrOld;
300
+        card.Card.Number3 = card.Number3Old;
301
+        card.Card.Number3Str = card.Number3StrOld;
302
+
303
+        if (card.NumberReview < that.data.NumberReview) {
304
+          listTaskReview.pop();
305
+        }
306
+        wx.setStorageSync("CardEditItem", card.Card);
307
+        that.data.TaskList.unshift(card.Card);
308
+        var canUndo = 1;
309
+        if (listTaskFinished.length == 0)
310
+          canUndo = 0;
311
+
312
+        that.setData({
313
+          IsShowAnswer: [0, 0],
314
+          TaskList: that.data.TaskList,
315
+          NumberNew: card.NumberNew,
316
+          NumberReview: card.NumberReview,
317
+          NumberHistory: card.NumberHistory,
318
+          CanUndo: canUndo,
319
+        });
320
+      });
321
+    }
322
+    that.setBackColor(0);
323
+  },
324
+  gotoNext: function (e) {
325
+    var that = this;
326
+
327
+    var btnnumber = e.currentTarget.dataset.btnnumber;
328
+    var time = e.currentTarget.dataset.time;
329
+
330
+    var finishCard = {};
331
+    finishCard.Card = that.data.TaskList[0];
332
+
333
+    finishCard.NumberNew = this.data.NumberNew;
334
+    finishCard.NumberReview = this.data.NumberReview;
335
+    finishCard.NumberHistory = this.data.NumberHistory;
336
+
337
+    finishCard.Number0Old = this.data.TaskList[0].Number0;
338
+    finishCard.Number0StrOld = this.data.TaskList[0].Number0Str;
339
+    finishCard.Number1Old = this.data.TaskList[0].Number1;
340
+    finishCard.Number1StrOld = this.data.TaskList[0].Number1Str;
341
+    finishCard.Number2Old = this.data.TaskList[0].Number2;
342
+    finishCard.Number2StrOld = this.data.TaskList[0].Number2Str;
343
+    finishCard.Number3Old = this.data.TaskList[0].Number3;
344
+    finishCard.Number3StrOld = this.data.TaskList[0].Number3Str;
345
+
346
+    //若不是搁置
347
+    if (btnnumber != "1") {
348
+      //若是分钟,则进入复习列表
349
+      if (time.lastIndexOf("m") == time.length - 1) {
350
+        var minute = Number(time.substr(0, time.indexOf("m")));
351
+        this.data.TaskList[0].LimitTime = common.formatTime(common.addDate("n", minute, new Date()));
352
+        //若是新增,则10m 1d 4d
353
+        if (this.data.TaskList[0].IsNew) {
354
+          this.data.TaskList[0].Number0 = "10m";
355
+          this.data.TaskList[0].Number0Str = "10分钟";
356
+
357
+          delete this.data.TaskList[0].Number1;
358
+          delete this.data.TaskList[0].Number1Str;
359
+
360
+          this.data.TaskList[0].Number2 = "1d";
361
+          this.data.TaskList[0].Number2Str = "1天";
362
+
363
+          this.data.TaskList[0].Number3 = "4d";
364
+          this.data.TaskList[0].Number3Str = "4天";
365
+          this.data.TaskList[0].FirstTime = null;
366
+          this.data.TaskList[0].LastTime = null;
367
+
368
+        }
369
+        //若是历史的,则10m 1d
370
+        else if (this.data.TaskList[0].IsHistory) {
371
+          this.data.TaskList[0].Number0 = "10m";
372
+          this.data.TaskList[0].Number0Str = "10分钟";
373
+
374
+          delete this.data.TaskList[0].Number1;
375
+          delete this.data.TaskList[0].Number1Str;
376
+
377
+          this.data.TaskList[0].Number2 = "1d";
378
+          this.data.TaskList[0].Number2Str = "1天";
379
+
380
+          delete this.data.TaskList[0].Number3;
381
+          delete this.data.TaskList[0].Number3Str;
382
+        }
383
+        this.data.TaskList[0].IsReview = true;
384
+        listTaskReview.push(this.data.TaskList[0]);
385
+      }
386
+      //若是天月年
387
+      else {
388
+        var dayNum = Number(time.substr(0, time.indexOf("d")));
389
+        var date = common.addDate("d", dayNum, new Date());
390
+        this.data.TaskList[0].LimitTime = common.formatTime(date);
391
+      }
392
+
393
+    }
394
+
395
+    //修改学习任务个数
396
+    var learningType = 0;
397
+    if (this.data.TaskList[0].IsReview) {
398
+      learningType = 2;
399
+      this.data.NumberReview = listTaskReview.length;
400
+    }
401
+    if (this.data.TaskList[0].IsNew) {
402
+      learningType = 0;
403
+      this.data.NumberNew--;
404
+      if (this.data.NumberNew < 0)
405
+        this.data.NumberNew = 0;
406
+    } else if (this.data.TaskList[0].IsHistory) {
407
+      learningType = 1;
408
+      this.data.NumberHistory--;
409
+      if (this.data.NumberHistory < 0)
410
+        this.data.NumberHistory = 0;
411
+    }
412
+    if (btnnumber == "1") {
413
+      learningType = 3;
414
+    }
415
+
416
+    finishCard.IntervalTime = time;
417
+    finishCard.BtnNumber = btnnumber;
418
+    finishCard.LearningType = learningType;
419
+
420
+    //保存上传
421
+    var obj = {
422
+      ID: this.data.TaskList[0].ID,
423
+      IntervalTime: time,
424
+      BtnNumber: btnnumber,
425
+      LearningType: learningType,
426
+      IsUndo: 0,
427
+    }
428
+    this.saveCard(obj, function () {
429
+
430
+      //添加完成列表,去掉任务列表数据
431
+      listTaskFinished.push(finishCard);
432
+      that.data.TaskList.shift();
433
+
434
+      that.data.NumberReview = listTaskReview.length;
435
+
436
+      //查看复习卡是否到时间
437
+      if (listTaskReview.length > 0 && listTaskReview[0].LimitTime < common.formatTime(new Date()) || that.data.TaskList.length == 0) {
438
+        that.data.TaskList.unshift(listTaskReview.shift());
439
+      }
440
+
441
+      console.log(JSON.stringify(that.data.TaskList[0]));
442
+
443
+      wx.setStorageSync("CardEditItem", that.data.TaskList[0]);
444
+
445
+      if (that.data.NumberNew == 0 &&
446
+        that.data.NumberReview == 0 &&
447
+        that.data.NumberHistory == 0) {
448
+        that.setData({
449
+          IsShowAnswer: [0, 0],
450
+          NumberNew: 0,
451
+          NumberReview: 0,
452
+          NumberHistory: 0,
453
+          CanUndo: 1,
454
+        });
455
+        that.setBackColor(1);
456
+      } else {
457
+        //任务没有完成,下一张卡片
458
+        that.setData({
459
+          IsShowAnswer: [0, 0],
460
+          TaskList: that.data.TaskList,
461
+          NumberNew: that.data.NumberNew,
462
+          NumberReview: that.data.NumberReview,
463
+          NumberHistory: that.data.NumberHistory,
464
+          FontSize: that.data.TaskList[0].FontSize,
465
+          CanUndo: 1,
466
+        });
467
+        that.setBackColor(0);
468
+      }
469
+    });
470
+
471
+  },
472
+  saveCard: function (obj, callback) {
473
+    var url = "UpdateMiaoguoCardToday?";
474
+    url += "ID=" + obj.ID;
475
+    url += "&UserID=" + app.globalData.userInfo.UserID;
476
+    url += "&IntervalTime=" + obj.IntervalTime;
477
+    url += "&BtnNumber=" + obj.BtnNumber;
478
+    url += "&LearningType=" + obj.LearningType;
479
+    url += "&FontSize=" + this.data.TaskList[0].FontSize;
480
+
481
+    var duration = common.diffDate("s", timeStart, new Date());
482
+    url += "&Duration=" + duration;
483
+
484
+    url += "&IsUndo=" + obj.IsUndo;
485
+    if (obj.LastTime)
486
+      url += "&LastTime=" + obj.LastTime;
487
+
488
+    main.getData(url, function (data) {
489
+      timeStart = new Date();
490
+      callback();
491
+    });
492
+  },
493
+  playSound: function (e) {
494
+    var str = e.currentTarget.dataset.content;
495
+    var url;
496
+    if (str.indexOf("英 [") >= 0 || str.indexOf("美 [") >= 0) {
497
+      str = str.replace("英 [", "[");
498
+      str = str.replace("美 [", "[");
499
+      url = e.currentTarget.dataset.soundmark;
500
+    }
501
+    else {
502
+      var url = app.globalData.audioUrlBaidu;
503
+      url = url.replace("[token]", app.globalData.BaiduToken);
504
+      url = url.replace("[word]", str);
505
+    }
506
+    this.audioCtx.setSrc(url);
507
+    this.audioCtx.play();
508
+  },
509
+  showNumberContainner: function () {
510
+    this.setData({
511
+      IsShowNumberInfo: true,
512
+    });
513
+  },
514
+  closeNumberContainner: function () {
515
+    this.setData({
516
+      IsShowNumberInfo: false,
517
+    });
518
+  },
519
+  onShareAppMessage: function () {
520
+    return {
521
+      title: '',
522
+      path: 'pages/miaoguo/default',
523
+      success: function (res) { },
524
+      fail: function (err) {
525
+        console.log(err);
526
+      },
527
+      complete: function (res) {
528
+        console.log(res);
529
+      },
530
+    }
531
+  },
532
+});

+ 5 - 0
pages/miaoguo/detail.json

@@ -0,0 +1,5 @@
1
+{
2
+  "navigationBarTextStyle": "white",
3
+  "navigationBarTitleText": "练习",
4
+  "enablePullDownRefresh": false
5
+}

+ 156 - 0
pages/miaoguo/detail.wxml

@@ -0,0 +1,156 @@
1
+<view class="container FlexColumn" style='min-height:{{Containnerheight-50}}rpx;background-color:{{CurrentColor.BackColor}}' bindtap="onShowAnswer">
2
+  <block wx:if="{{(NumberNew+NumberReview+NumberHistory)>0}}">
3
+    <view class='panelTop FlexRow' style="background-color:{{CurrentColor.BackColor}}">
4
+      <view class='panelCancel' wx:if="{{CanUndo==0}}">
5
+      </view>
6
+      <view class='panelCancel FlexRow' catchtap='gotoPrev' wx:if="{{CanUndo==1}}">
7
+        <image src="../images/universalpic_undo_white_20x28.png" class='universalpic_undo_white_20x28' />
8
+      </view>
9
+      <view class='panelCancel1 panelCancel FlexRow' catchtap='gotoNext' data-time="1d" data-btnnumber="1" wx:if="{{NumberNew+NumberReview+NumberHistory>0}}">
10
+        <image src="../images/universalpic_shelve_white_30x14.png" class='universalpic_shelve_white_30x14' />
11
+      </view>
12
+      <view class='panelNumber FlexRow' catchtap='showNumberContainner'>
13
+        <view class="panelNumber1">{{NumberNew}}</view>
14
+        <view class="panelNumber1">{{NumberHistory}}</view>
15
+        <view class="panelNumber1">{{NumberReview}}</view>
16
+        <view class="panelNumber2 panelNumber1">{{NumberNew+NumberReview+NumberHistory}}</view>
17
+      </view>
18
+      <view class='panelCancel2 panelCancel FlexRow' catchtap='onShowAnswer' data-start="true" wx:if="{{NumberNew+NumberReview+NumberHistory>0}}">
19
+        <image src="../images/universalpic_restore_white_34x34.png" class='universalpic_restore_white_34x34' />
20
+      </view>
21
+      <view class='panelCancel FlexRow' catchtap='onMore' wx:if="{{NumberNew+NumberReview+NumberHistory>0}}">
22
+        <image src="../images/universalpic_more_white_32x8.png" class='universalpic_more_white_32x8' />
23
+      </view>
24
+
25
+    </view>
26
+    <view class="panelField1 FlexColumn">
27
+      <view class="panelField11 panelItem FlexRow">
28
+        <block wx:for="{{TaskList[0].Content.Field[1]}}" wx:key="index">
29
+          <text class="textReturn" wx:if="{{index>0 && item.Type=='return'}}"></text>
30
+
31
+          <text class="textNormal" wx:if="{{item.Type=='normal'}}">{{item.Content}}</text>
32
+
33
+          <text class="textNormal FlexRow" wx:if="{{item.Type=='line'}}">
34
+          <text>{{item.Content[0]}}</text>
35
+          <text class="textLine">{{item.Content[1]}}</text>
36
+          <text>{{item.Content[2]}}</text>
37
+          </text>
38
+
39
+          <image class="universalpic_read_gray_40x40" wx:if="{{item.Type=='sound'}}" src='../images/universalpic_read_gray_40x40.png' bindtap="playSound" data-content="{{item.Content}}" data-soundmark="{{item.SoundMark}}" />
40
+          <text class="textPinyin" wx:if="{{item.Type=='sound'}}" catchtap="playSound" data-content="{{item.Content}}" data-soundmark="{{item.SoundMark}}">{{item.Content}}</text>
41
+
42
+          <image class="imageBishun" wx:if="{{item.Type=='image'}}" src='{{item.Content}}' />
43
+        </block>
44
+      </view>
45
+
46
+    </view>
47
+    <view class="panelTag FlexRow">
48
+      <view wx:if="{{!TaskList[0].Content.Tags || TaskList[0].Content.Tags.length==0}}"></view>
49
+      <view class="panelTag1 FlexRow" wx:if="{{TaskList[0].Content.Tags && TaskList[0].Content.Tags.length>0}}">
50
+        <view class="tag" wx:for="{{TaskList[0].Content.Tags}}" wx:key="index">{{item}}</view>
51
+      </view>
52
+
53
+      <view class='right2 FlexRow' catchtap='onShowAnswer' data-start="true" wx:if="{{IsShowAnswer[0]==1}}">
54
+        <view class="line1"></view>
55
+        <image class="universalpic_restore_black_34x34" src='../images/universalpic_restore_white_34x34.png' />
56
+      </view>
57
+
58
+    </view>
59
+    <view class="panelField2 FlexRow" wx:for="{{[2,3]}}" wx:key="indexParent" wx:for-index="indexParent" wx:for-item="itemParent" wx:if="{{TaskList[0].Content.Field[itemParent].length>0 && IsShowAnswer[itemParent-2]}}">
60
+
61
+      <view class="panelField21 panelItem FlexRow">
62
+        <block wx:for="{{TaskList[0].Content.Field[itemParent]}}" wx:key="index">
63
+          <text class="textReturn" wx:if="{{index>0 && item.Type=='return'}}"></text>
64
+
65
+          <text class="textNormal" wx:if="{{item.Type=='normal'}}">{{item.Content}}</text>
66
+
67
+          <text class="textNormal FlexRow" wx:if="{{item.Type=='line'}}">
68
+          <text>{{item.Content[0]}}</text>
69
+          <text class="textLine">{{item.Content[1]}}</text>
70
+          <text>{{item.Content[2]}}</text>
71
+          </text>
72
+
73
+          <image class="universalpic_read_gray_40x40" wx:if="{{item.Type=='sound'}}" src='../images/universalpic_read_gray_40x40.png' bindtap="playSound" data-content="{{item.Content}}" data-soundmark="{{item.SoundMark}}" />
74
+          <text class="textPinyin" wx:if="{{item.Type=='sound'}}" catchtap="playSound" data-content="{{item.Content}}" data-soundmark="{{item.SoundMark}}">{{item.Content}}</text>
75
+
76
+          <image class="imageBishun" wx:if="{{item.Type=='image'}}" src='{{item.Content}}' />
77
+
78
+        </block>
79
+      </view>
80
+    </view>
81
+  </block>
82
+
83
+  <!-- 最后一页 -->
84
+  <view class='panelLast FlexColumn' wx:if="{{NumberNew+NumberReview+NumberHistory==0}}" style='min-height:{{Containnerheight}}rpx;'>
85
+    <image class="practice_report_bg" src='../images/practice_report_bg.png' />
86
+    <view class="Avatar"></view>
87
+    <view class='text1'>嗨,第0天</view>
88
+    <text class='text2'>君子曰:学不可以已\n——学习是不可以停止的,语出荀子</text>
89
+    <view class="panelLastTime FlexColumn">
90
+      <view>用时</view>
91
+      <view class="time">00:35:00</view>
92
+    </view>
93
+  </view>
94
+
95
+  <view style='height:180rpx;'></view>
96
+
97
+  <view class='panelBottomAnswer panelBottom FlexRow' wx:if="{{IsShowAnswer[1]}}">
98
+    <view class="Answer FlexColumn" hover-class="AnswerHover" catchtap='gotoNext' data-time="{{TaskList[0].Number0}}" data-btnnumber="0">
99
+      <view class="Answer0 btnColor"></view>
100
+      <view class="btnTime">
101
+        {{TaskList[0].Number0Str}}
102
+      </view>
103
+    </view>
104
+    <view class="Answer FlexColumn" hover-class="AnswerHover" catchtap='gotoNext' data-time="{{TaskList[0].Number1}}" data-btnnumber="3" wx:if="{{TaskList[0].Number1}}">
105
+      <view class="Answer1 btnColor"></view>
106
+      <view class="btnTime">
107
+        {{TaskList[0].Number1Str}}
108
+      </view>
109
+    </view>
110
+    <view class="Answer FlexColumn" hover-class="AnswerHover" catchtap='gotoNext' data-time="{{TaskList[0].Number2}}" data-btnnumber="4">
111
+      <view class="Answer2 btnColor"></view>
112
+      <view class="btnTime">
113
+        {{TaskList[0].Number2Str}}
114
+      </view>
115
+    </view>
116
+    <view class="Answer FlexColumn" hover-class="AnswerHover" catchtap='gotoNext' data-time="{{TaskList[0].Number3}}" data-btnnumber="5" wx:if="{{TaskList[0].Number3}}">
117
+      <view class="Answer3 btnColor"></view>
118
+      <view class="btnTime">
119
+        {{TaskList[0].Number3Str}}
120
+      </view>
121
+    </view>
122
+  </view>
123
+</view>
124
+
125
+<view wx:if="{{IsShowNumberInfo}}" catchtap='closeNumberContainner' class="numberContainer container FlexColumn" style='height:{{Containnerheight}}rpx;'>
126
+  <view class='numberContainer1 FlexColumn'>
127
+    <view class="numberContainer11 FlexRow">
128
+      <view class='left'>剩余任务</view>
129
+      <view class='numberContainer111 right'>今天还剩{{NumberNew+NumberReview+NumberHistory}}条</view>
130
+    </view>
131
+    <view class="numberContainer12 FlexRow">
132
+      <view class='left'>新笔记</view>
133
+      <view class='right'>{{NumberNew}}条</view>
134
+    </view>
135
+    <view class="lineWidthAll FlexRow">
136
+      <view class="lineWidth700"></view>
137
+    </view>
138
+    <view class="numberContainer12 FlexRow">
139
+      <view class='left'>旧笔记</view>
140
+      <view class='right'>{{NumberHistory}}条</view>
141
+    </view>
142
+    <view class="lineWidthAll FlexRow">
143
+      <view class="lineWidth700"></view>
144
+    </view>
145
+    <view class="numberContainer12 FlexRow">
146
+      <view class='left'>重练</view>
147
+      <view class='right'>{{NumberReview}}条</view>
148
+    </view>
149
+    <view class='lineFooter'></view>
150
+    <view class="numberContainer13 FlexRow">
151
+      <view>知道了</view>
152
+    </view>
153
+  </view>
154
+</view>
155
+
156
+<audio hidden='true' id="playAudio"></audio>

+ 336 - 0
pages/miaoguo/detail.wxss

@@ -0,0 +1,336 @@
1
+.container {
2
+  justify-content: flex-start;
3
+  font-weight: 500;
4
+  color: #1e1e1e;
5
+  background-color: #362738;
6
+}
7
+
8
+/* 工具栏 */
9
+
10
+.panelTop {
11
+  width: 100%;
12
+  height: 110rpx;
13
+  position: fixed;
14
+  top: 0;
15
+  font-size: 20rpx;
16
+  z-index: 10;
17
+  background-color: #a5656e;
18
+}
19
+
20
+.panelCancel {
21
+  width: 100rpx;
22
+  height: 110rpx;
23
+}
24
+
25
+.panelCancel1 {
26
+  margin: 0 36rpx 0 10rpx;
27
+}
28
+
29
+.panelCancel2 {
30
+  margin: 0 10rpx 0 36rpx;
31
+}
32
+
33
+.universalpic_undo_white_20x28 {
34
+  width: 17rpx;
35
+  height: 24rpx;
36
+}
37
+
38
+.universalpic_shelve_white_30x14 {
39
+  width: 36rpx;
40
+  height: 20rpx;
41
+}
42
+
43
+.universalpic_restore_white_34x34 {
44
+  width: 26rpx;
45
+  height: 26rpx;
46
+}
47
+
48
+.universalpic_more_white_32x8 {
49
+  width: 32rpx;
50
+  height: 8rpx;
51
+}
52
+
53
+.panelNumber {
54
+  width: 218rpx;
55
+  height: 120rpx;
56
+}
57
+
58
+.panelNumber1 {
59
+  font-family: 'Roboto-Black';
60
+  font-size: 20rpx;
61
+  margin: 0 3rpx;
62
+  color: rgba(255, 255, 255, 0.5);
63
+  height: 50rpx;
64
+  min-width: 50rpx;
65
+  text-align: center;
66
+  line-height: 50rpx;
67
+}
68
+
69
+.panelNumber2 {
70
+  background-color: rgba(0, 0, 0, 0.3);
71
+  color: #fff;
72
+  border-radius: 50%;
73
+}
74
+
75
+/* 段落 */
76
+
77
+.panelField1 {
78
+  width: 100%;
79
+  background-color: #a5656e;
80
+  min-height: 320rpx;
81
+  margin-top: 110rpx;
82
+  justify-content: flex-start;
83
+}
84
+
85
+.panelField11 {
86
+  width: 100%;
87
+  font-size: 68rpx;
88
+  justify-content: flex-start;
89
+  margin: 60rpx 0 80rpx 0;
90
+}
91
+
92
+.panelItem {
93
+  width: 650rpx;
94
+  font-weight: 400;
95
+  flex-wrap: wrap;
96
+  justify-content: flex-start;
97
+  color: #fff;
98
+}
99
+
100
+.panelItem .universalpic_read_gray_40x40 {
101
+  width: 40rpx;
102
+  height: 40rpx;
103
+  margin: 0 10rpx 0 10rpx;
104
+}
105
+
106
+.panelItem .textLine {
107
+  text-decoration: underline;
108
+}
109
+
110
+.panelItem .textPinyin {
111
+  text-decoration: underline;
112
+  margin-right: 10rpx;
113
+}
114
+
115
+.panelItem .imageBishun {
116
+  width: 360rpx;
117
+  height: 360rpx;
118
+  margin: 30rpx 0;
119
+}
120
+
121
+.panelItem .textReturn {
122
+  width: 100%;
123
+}
124
+
125
+.panelItem .textReturn2 {
126
+  width: 100%;
127
+  height: 30rpx;
128
+}
129
+
130
+.panelTag {
131
+  width: 100%;
132
+  justify-content: space-between;
133
+  margin: 60rpx 0 20rpx 0;
134
+}
135
+
136
+.panelTag1 {
137
+  font-size: 28rpx;
138
+  border-radius: 25rpx;
139
+  background-color: #000;
140
+  margin-left: 50rpx;
141
+  padding: 0 10rpx;
142
+}
143
+
144
+.panelTag .tag {
145
+  color: #fff;
146
+  text-align: center;
147
+  margin: 6rpx 10rpx 6rpx 10rpx;
148
+}
149
+
150
+.right2 {
151
+  margin-right: 50rpx;
152
+}
153
+
154
+.line1 {
155
+  width: 4rpx;
156
+  height: 30rpx;
157
+  background-color: #d2d2d2;
158
+}
159
+
160
+.universalpic_restore_black_34x34 {
161
+  width: 26rpx;
162
+  height: 26rpx;
163
+  margin-left: 50rpx;
164
+}
165
+
166
+.panelField2 {
167
+  width: 100%;
168
+  margin-bottom: 20rpx;
169
+}
170
+
171
+.panelField21 {
172
+  width: 650rpx;
173
+  font-size: 36rpx;
174
+  margin: 40rpx 30rpx 0 30rpx;
175
+  color:#fff;
176
+}
177
+
178
+/* 底部记忆选择 */
179
+
180
+.panelBottomAnswer {
181
+  height: 120rpx;
182
+  background-color: #eee;
183
+  width: 100%;
184
+  position: fixed;
185
+  bottom: 0;
186
+  font-size: 20rpx;
187
+  justify-content: space-between;
188
+  z-index: 10;
189
+}
190
+
191
+.Answer {
192
+  flex: 1;
193
+  height: 120rpx;
194
+  font-size: 24rpx;
195
+  color: #1e1e1e;
196
+  justify-content: flex-start;
197
+  background-color: #fff;
198
+}
199
+
200
+.AnswerHover {
201
+  background-color: #f0f0f0;
202
+}
203
+
204
+.Answer .btnColor {
205
+  height: 30rpx;
206
+  width: 90%;
207
+  border-radius: 6rpx;
208
+  margin-top: 20rpx;
209
+}
210
+
211
+.Answer .btnTime {
212
+  margin-top: 10rpx;
213
+}
214
+
215
+.Answer0 {
216
+  background-color: #fe6659;
217
+}
218
+
219
+.Answer1 {
220
+  background-color: #ffbc00;
221
+}
222
+
223
+.Answer2 {
224
+  background-color: #329468;
225
+}
226
+
227
+.Answer3 {
228
+  background-color: #0a60be;
229
+}
230
+
231
+.panelLast {
232
+  background-color: #47413d;
233
+  width: 100%;
234
+  justify-content: flex-start;
235
+}
236
+
237
+.practice_report_bg {
238
+  width: 100%;
239
+  height: 290rpx;
240
+  margin-top: 50rpx;
241
+}
242
+
243
+.Avatar {
244
+  width: 260rpx;
245
+  height: 260rpx;
246
+  border-radius: 50%;
247
+  background-color: #9b9b9b;
248
+  margin-top: -100rpx;
249
+}
250
+
251
+.text1 {
252
+  margin-top: 60rpx;
253
+  color: #f0f0f0;
254
+  font-size: 64rpx;
255
+}
256
+
257
+.text2 {
258
+  margin-top: 10rpx;
259
+  color: #9b9b9b;
260
+  font-size: 28rpx;
261
+  font-weight: 400;
262
+  text-align: center;
263
+}
264
+
265
+.panelLastTime {
266
+  font-size: 28rpx;
267
+  font-weight: 400;
268
+  color: #f0f0f0;
269
+  margin-top: 80rpx;
270
+}
271
+
272
+.panelLastTime .time {
273
+  font-size: 36rpx;
274
+  color: #f0f0f0;
275
+  font-family: 'Roboto-Black';
276
+}
277
+
278
+.numberContainer {
279
+  background-color: rgba(0, 0, 0, 0.7);
280
+  position: fixed;
281
+  width: 100%;
282
+  top: 0;
283
+  z-index: 20;
284
+}
285
+
286
+.numberContainer1 {
287
+  background-color: #f0f0f0;
288
+  margin-top: 10rpx;
289
+  width: 730rpx;
290
+  border-radius: 10rpx;
291
+  font-size: 28rpx;
292
+  color: #1e1e1e;
293
+}
294
+
295
+.numberContainer11 {
296
+  border-top-left-radius: 10rpx;
297
+  border-top-right-radius: 10rpx;
298
+  justify-content: space-between;
299
+  height: 100rpx;
300
+  width: 100%;
301
+}
302
+
303
+.numberContainer111 {
304
+  line-height: 45rpx;
305
+  text-align: center;
306
+  color: #fff;
307
+  padding: 0 20rpx;
308
+  border-radius: 22rpx;
309
+  background-color: #1e1e1e;
310
+}
311
+
312
+.left {
313
+  margin-left: 30rpx;
314
+}
315
+
316
+.right {
317
+  margin-right: 30rpx;
318
+}
319
+
320
+.numberContainer12 {
321
+  justify-content: space-between;
322
+  height: 100rpx;
323
+  width: 100%;
324
+  background-color: #fff;
325
+  font-weight: 400;
326
+}
327
+
328
+.numberContainer13 {
329
+  height: 100rpx;
330
+  width: 100%;
331
+  color: #0071ef;
332
+  border-bottom-left-radius: 10rpx;
333
+  border-bottom-right-radius: 10rpx;
334
+  text-align: center;
335
+  font-weight: 500;
336
+}

+ 176 - 0
pages/miaoguo/preview.js

@@ -0,0 +1,176 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+Page({
7
+  data: {
8
+  },
9
+  onLoad: function (options) {
10
+    var that = this;
11
+    var id = 0;
12
+    if (options.id)
13
+      id = options.id;
14
+    that.setData({
15
+      Containnerheight: main.getWindowHeight(),
16
+      ShowType: options.type,
17
+      MiaoguoCardID: id,
18
+    });
19
+    this.audioCtx = wx.createAudioContext('myAudio');
20
+  },
21
+  onShow: function () {
22
+    this.init();
23
+  },
24
+  init: function () {
25
+    var list = wx.getStorageSync("CardList");
26
+    var card = {};
27
+    var prevId=0;
28
+    var nextId=0;
29
+    for (var i = 0; i < list.length; i++) {
30
+      if (this.data.MiaoguoCardID == list[i].MiaoguoCardID) {
31
+        wx.setStorageSync("TempCardInfo", list[i]);
32
+        if (i > 0)
33
+          prevId = list[i - 1].MiaoguoCardID;
34
+        else
35
+          prevId = 0;
36
+        if (i < list.length-1)
37
+          nextId = list[i + 1].MiaoguoCardID;
38
+        else
39
+          nextId = 0;
40
+
41
+        card = main.changeStringToView(list[i].Content);
42
+        card.MiaoguoCardID = list[i].MiaoguoCardID;
43
+        card.LimitTime = list[i].LimitTime;
44
+        break;
45
+      }
46
+    }
47
+    this.setData({
48
+      ID: card.MiaoguoCardID,
49
+      Field: card.Field,
50
+      Tags: card.Tags,
51
+      PrevID:prevId,
52
+      NextID:nextId,
53
+      LimitTimeStr: common.formatDateCHS(card.LimitTime),
54
+    });
55
+  },
56
+  practiceToday: function () {
57
+    var that = this;
58
+    wx.showModal({
59
+      title: '要今天练吗?',
60
+      content: '这条笔记今天必须练习',
61
+      success(res) {
62
+        if (res.confirm) {
63
+          var obj = {
64
+            ID: that.data.ID,
65
+            BtnNumber: -1,
66
+            LearningType: 2,
67
+          }
68
+          that.saveCard(obj, function () {
69
+            var time = common.formatTime(new Date());
70
+            that.setData({
71
+              LimitTimeStr: common.formatDateCHS(time),
72
+            });
73
+            var list = wx.getStorageSync("CardList");
74
+            for (var i = 0; i < list.length; i++) {
75
+              if (that.data.ID == list[i].MiaoguoCardID) {
76
+                list[i].LimitTime = time;
77
+                list[i].LimitTimeStr = "今天";
78
+                break;
79
+              }
80
+            }
81
+            wx.setStorageSync("CardList", list);
82
+          });
83
+        }
84
+        else if (res.cancel) {
85
+
86
+        }
87
+      }
88
+    })
89
+  },
90
+  saveCard: function (obj, callback) {
91
+    var url = "UpdateMiaoguoCardToday?";
92
+    url += "ID=" + obj.ID;
93
+    url += "&UserID=" + app.globalData.userInfo.UserID;
94
+    url += "&BtnNumber=" + obj.BtnNumber;
95
+    url += "&LearningType=" + obj.LearningType;
96
+
97
+    main.getData(url, function (data) {
98
+      callback();
99
+    });
100
+  },
101
+  playSound: function (e) {
102
+    var str = e.currentTarget.dataset.content;
103
+    var url;
104
+    if (str.indexOf("英 [") >= 0 || str.indexOf("美 [") >= 0) {
105
+      str = str.replace("英 [", "[");
106
+      str = str.replace("美 [", "[");
107
+      url = e.currentTarget.dataset.soundmark;
108
+    }
109
+    else {
110
+      var url = app.globalData.audioUrlBaidu;
111
+      url = url.replace("[token]", app.globalData.BaiduToken);
112
+      url = url.replace("[word]", str);
113
+    }
114
+    this.audioCtx.setSrc(url);
115
+    this.audioCtx.play();
116
+  },
117
+  onMore: function () {
118
+    var that = this;
119
+    wx.showActionSheet({
120
+      itemList: ["详细信息", "编辑笔记", "删除笔记"],
121
+      success(res) {
122
+        console.log(res.tapIndex);
123
+        if (res.tapIndex == 0) {
124
+          wx.navigateTo({
125
+            url: './cardInfo?id=' + that.data.MiaoguoCardID,
126
+          });
127
+        }
128
+        else if (res.tapIndex == 1) {
129
+          wx.navigateTo({
130
+            url: './add?type=edit2&id=' + that.data.MiaoguoCardID,
131
+          });
132
+        }
133
+        else if (res.tapIndex == 2) {
134
+          that.deleteCard();
135
+        }
136
+      },
137
+    })
138
+  },
139
+  deleteCard: function () {
140
+    var that = this;
141
+    wx.showModal({
142
+      title: '提醒',
143
+      content: '这条笔记要删除吗?',
144
+      success(res) {
145
+        if (res.confirm) {
146
+          var url = 'DeleteMiaoguoCard?UserID=' + app.globalData.userInfo.UserID;
147
+          url += "&ID=" + that.data.MiaoguoCardID;
148
+          main.getData(url, function (data) {
149
+            var list = wx.getStorageSync("CardList");
150
+            for (var i = 0; i < list.length; i++) {
151
+              if (that.data.MiaoguoCardID == list[i].MiaoguoCardID) {
152
+                list.splice(i, 1);
153
+                break;
154
+              }
155
+            }
156
+            wx.setStorageSync("CardList", list);
157
+            wx.navigateBack({
158
+              delta: 1,
159
+            });
160
+          });
161
+        }
162
+      }
163
+    });
164
+  },
165
+  onPreview: function (e) {
166
+    var id = e.currentTarget.dataset.id;
167
+    wx.redirectTo({
168
+      url: './preview?type=show&id=' + id,
169
+    })
170
+  },
171
+  close: function () {
172
+    wx.navigateBack({
173
+      delta: 1,
174
+    });
175
+  }
176
+})

+ 6 - 0
pages/miaoguo/preview.json

@@ -0,0 +1,6 @@
1
+{
2
+  "navigationBarBackgroundColor": "#ffffff",
3
+  "navigationBarTextStyle": "black",
4
+  "navigationBarTitleText": "预览",
5
+  "backgroundColor": "#E3E3E3"
6
+}

+ 89 - 0
pages/miaoguo/preview.wxml

@@ -0,0 +1,89 @@
1
+<view class="container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
2
+  <view class="panelTop FlexRow" wx:if="{{ShowType=='show'}}">
3
+    <view class='left FlexRow'>
4
+      <view class="text1">到期时间</view>
5
+      <view class="text2">{{LimitTimeStr}}</view>
6
+    </view>
7
+    <view class='FlexRow'>
8
+      <view class="line1"></view>
9
+      <view class="text3" bindtap='practiceToday'>今天练</view>
10
+    </view>
11
+  </view>
12
+  <view class='lineFooter'></view>
13
+  <view class="panelField1 FlexColumn">
14
+    <view class="panelField11 panelItem FlexRow">
15
+      <block wx:for="{{Field[1]}}" wx:key="index">
16
+        <text class="textReturn" wx:if="{{index>0 && item.Type=='return'}}"></text>
17
+
18
+        <text class="textNormal" wx:if="{{item.Type=='normal'}}">{{item.Content}}</text>
19
+
20
+        <text class="textNormal FlexRow" wx:if="{{item.Type=='line'}}">
21
+          <text>{{item.Content[0]}}</text>
22
+        <text class="textLine">{{item.Content[1]}}</text>
23
+        <text>{{item.Content[2]}}</text>
24
+        </text>
25
+
26
+        <image class="universalpic_read_gray_40x40" wx:if="{{item.Type=='sound'}}" src='../images/universalpic_read_gray_40x40.png' bindtap="playSound" data-content="{{item.Content}}" data-soundmark="{{item.SoundMark}}" />
27
+        <text class="textPinyin" wx:if="{{item.Type=='sound'}}" catchtap="playSound" data-content="{{item.Content}}" data-soundmark="{{item.SoundMark}}">{{item.Content}}</text>
28
+
29
+        <image class="imageBishun" wx:if="{{item.Type=='image'}}" src='{{item.Content}}' />
30
+      </block>
31
+    </view>
32
+
33
+  </view>
34
+
35
+  <view class="panelTag FlexRow" wx:if="{{Tags && Tags.length>0}}">
36
+    <view class="panelTag1 FlexRow" wx:if="{{Tags && Tags.length>0}}">
37
+      <view class="tag" wx:for="{{Tags}}" wx:key="index">{{item}}</view>
38
+    </view>
39
+
40
+    <view wx:if="{{true}}"></view>
41
+    <!-- <view class='right2 FlexRow' wx:if="{{ShowType=='preview'}}">
42
+      <view class="line1"></view>
43
+      <image class="universalpic_restore_black_34x34" src='../images/universalpic_restore_black_34x34.png' />
44
+    </view> -->
45
+
46
+  </view>
47
+  <view class="panelField2 FlexRow" wx:for="{{[2,3]}}" wx:key="indexParent" wx:for-index="indexParent" wx:for-item="itemParent" wx:if="{{Field[itemParent].length>0}}">
48
+
49
+    <view class="panelField21 panelItem FlexRow">
50
+      <block wx:for="{{Field[itemParent]}}" wx:key="index">
51
+        <text class="textReturn" wx:if="{{index>0 && item.Type=='return'}}"></text>
52
+
53
+        <text class="textNormal" wx:if="{{item.Type=='normal'}}">{{item.Content}}</text>
54
+
55
+        <text class="textNormal FlexRow" wx:if="{{item.Type=='line'}}">
56
+          <text>{{item.Content[0]}}</text>
57
+        <text class="textLine">{{item.Content[1]}}</text>
58
+        <text>{{item.Content[2]}}</text>
59
+        </text>
60
+
61
+        <image class="universalpic_read_gray_40x40" wx:if="{{item.Type=='sound'}}" src='../images/universalpic_read_gray_40x40.png' bindtap="playSound" data-content="{{item.Content}}" data-soundmark="{{item.SoundMark}}" />
62
+        <text class="textPinyin" wx:if="{{item.Type=='sound'}}" catchtap="playSound" data-content="{{item.Content}}" data-soundmark="{{item.SoundMark}}">{{item.Content}}</text>
63
+
64
+        <image class="imageBishun" wx:if="{{item.Type=='image'}}" src='{{item.Content}}' />
65
+
66
+      </block>
67
+    </view>
68
+  </view>
69
+
70
+  <view style='height:150rpx'></view>
71
+  <view class='panelSave' bindtap="close" wx:if="{{ShowType=='preview'}}">关闭</view>
72
+  <view class='panelSave FlexRow' wx:if="{{ShowType=='show'}}">
73
+    <view class='btn1' wx:if="{{PrevID==0}}"></view>
74
+    <view class='btn1 FlexRow' bindtap="onPreview" data-id="{{PrevID}}" wx:if="{{PrevID>0}}">
75
+      <image class="universalpic_prev_black_30x30" src='../images/universalpic_prev_black_30x30.png' />
76
+    </view>
77
+    <view class='btn1 FlexRow' bindtap="onMore" >
78
+      <image class="universalpic_more_40x10" src='../images/universalpic_more_40x10.png' />
79
+    </view>
80
+    <view class='btn1 FlexRow' bindtap="onPreview" data-id="{{NextID}}" wx:if="{{NextID>0}}">
81
+      <image class="universalpic_prev_black_30x30" src='../images/universalpic_next_black_30x30.png' />
82
+    </view>
83
+    <view class='btn1' wx:if="{{NextID==0}}"></view>
84
+    
85
+  </view>
86
+
87
+</view>
88
+
89
+<audio hidden='true' src="{{AudioSrc}}" id="myAudio"></audio>

+ 162 - 0
pages/miaoguo/preview.wxss

@@ -0,0 +1,162 @@
1
+.container {
2
+  justify-content: flex-start;
3
+  font-weight: 500;
4
+  color: #1e1e1e;
5
+  background-color: #e3e3e3;
6
+}
7
+
8
+.panelTop {
9
+  width: 100%;
10
+  height: 120rpx;
11
+  background-color: #fff;
12
+  justify-content: space-between;
13
+  font-size: 28rpx;
14
+}
15
+
16
+.left {
17
+  margin-left: 25rpx;
18
+  font-weight: 400;
19
+}
20
+
21
+.right {
22
+  margin-right: 25rpx;
23
+}
24
+
25
+.text2 {
26
+  color: #787878;
27
+  margin-left: 30rpx;
28
+  font-weight: 500;
29
+}
30
+
31
+.text3 {
32
+  color: #0071ef;
33
+  width: 164rpx;
34
+  line-height: 120rpx;
35
+  text-align: center;
36
+}
37
+
38
+.panelField1 {
39
+  width: 100%;
40
+  background-color: #fff;
41
+  min-height: 320rpx;
42
+  justify-content: flex-start;
43
+}
44
+.panelField11 {
45
+  width: 100%;
46
+  font-size: 68rpx;
47
+  justify-content: flex-start;
48
+  margin: 60rpx 0 80rpx 0;
49
+}
50
+
51
+
52
+.panelItem {
53
+  width: 650rpx;
54
+  font-weight: 400;
55
+  flex-wrap: wrap;
56
+  justify-content: flex-start;
57
+  color: #1e1e1e;
58
+}
59
+
60
+.panelItem .universalpic_read_gray_40x40 {
61
+  width: 40rpx;
62
+  height: 40rpx;
63
+  margin: 0 10rpx 0 10rpx;
64
+}
65
+
66
+.panelItem .textLine {
67
+  text-decoration: underline;
68
+}
69
+
70
+.panelItem .textPinyin {
71
+  text-decoration: underline;
72
+  margin-right: 10rpx;
73
+}
74
+
75
+.panelItem .imageBishun {
76
+  width: 360rpx;
77
+  height: 360rpx;
78
+  margin: 30rpx 0;
79
+}
80
+
81
+.panelItem .textReturn {
82
+  width: 100%;
83
+}
84
+
85
+.panelItem .textReturn2 {
86
+  width: 100%;
87
+  height: 30rpx;
88
+}
89
+
90
+.panelTag {
91
+  width: 100%;
92
+  justify-content: space-between;
93
+  margin: 60rpx 0 20rpx 0;
94
+}
95
+
96
+.panelTag1 {
97
+  font-size: 28rpx;
98
+  border-radius: 25rpx;
99
+  background-color: #000;
100
+  margin-left: 50rpx;
101
+  padding: 0 10rpx;
102
+}
103
+
104
+.panelTag .tag {
105
+  color: #fff;
106
+  text-align: center;
107
+  margin: 6rpx 10rpx 6rpx 10rpx;
108
+}
109
+
110
+.right2 {
111
+  margin-right: 50rpx;
112
+}
113
+
114
+.line1 {
115
+  width: 4rpx;
116
+  height: 30rpx;
117
+  background-color: #d2d2d2;
118
+}
119
+
120
+.universalpic_restore_black_34x34 {
121
+  width: 26rpx;
122
+  height: 26rpx;
123
+  margin-left: 50rpx;
124
+}
125
+
126
+.panelField2 {
127
+  width: 100%;
128
+  margin-bottom: 20rpx;
129
+}
130
+
131
+.panelField21 {
132
+  width: 650rpx;
133
+  font-size: 36rpx;
134
+  margin: 40rpx 30rpx 0 30rpx;
135
+}
136
+
137
+.panelSave {
138
+  width: 100%;
139
+  background-color: #fff;
140
+  position: fixed;
141
+  bottom: 0;
142
+  font-size: 36rpx;
143
+  z-index: 10;
144
+  color: #0071ef;
145
+  text-align: center;
146
+  line-height: 120rpx;
147
+  border-top: 1rpx solid #d2d2d2;
148
+  justify-content: space-between;
149
+}
150
+
151
+.btn1{
152
+  width:150rpx;
153
+  height:120rpx;
154
+}
155
+.universalpic_prev_black_30x30 {
156
+  width: 28rpx;
157
+  height: 26rpx;
158
+}
159
+.universalpic_more_40x10{
160
+  width: 40rpx;
161
+  height: 10rpx;
162
+}

+ 48 - 0
pages/miaoguo/searchCard.js

@@ -0,0 +1,48 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+Page({
7
+  data: {
8
+  },
9
+  onLoad: function () {
10
+    var that = this;
11
+    that.setData({
12
+      Containnerheight: main.getWindowHeight(),
13
+    });
14
+  },
15
+  gotoDefault:function(){
16
+    wx.redirectTo({
17
+      url: './default',
18
+    })
19
+  },
20
+  goto: function (e) {
21
+    var url = e.currentTarget.dataset.url;
22
+    wx.navigateTo({
23
+      url: './' + url,
24
+    })
25
+  },
26
+  onSearch: function (e) {
27
+    wx.navigateTo({
28
+      url: './searchCard1',
29
+    })
30
+  },
31
+  getList: function (e) {
32
+    var IsToday=e.currentTarget.dataset.id;
33
+    var that = this;
34
+    var url = 'GetMiaoguoCard?UserID=' + app.globalData.userInfo.UserID;
35
+    if (IsToday)
36
+      url += "&IsToday=" + IsToday;
37
+
38
+    main.getData(url, function (data) {
39
+      if (data) {
40
+        wx.setStorageSync("CardList", data);
41
+        wx.navigateTo({
42
+          url: './searchCardList?type='+IsToday,
43
+        })
44
+      }
45
+    });
46
+    
47
+  },
48
+})

+ 3 - 0
pages/miaoguo/searchCard.json

@@ -0,0 +1,3 @@
1
+{
2
+  "navigationBarTitleText": "笔记"
3
+}

+ 38 - 0
pages/miaoguo/searchCard.wxml

@@ -0,0 +1,38 @@
1
+<view class="container FlexColumn" style='height:{{Containnerheight}}rpx;'>
2
+  <view class="panelSearch FlexRow">
3
+    <view class="panelSearch1 FlexRow" bindtap="onSearch">
4
+      <image class="universalpic_search_gray_30x30" src='../images/universalpic_search_gray_30x30.png' />
5
+      <view>搜索笔记</view>
6
+    </view>
7
+  </view>
8
+  <view class='lineFooter'></view>
9
+  <view class='panelBtn FlexRow'>
10
+    <view class='text1 FlexRow' bindtap="getList" data-id="0">
11
+      <view>全部笔记</view>
12
+      <!-- <view class="text2">127</view> -->
13
+    </view>
14
+    <view class='line1'></view>
15
+    <view class='text1' bindtap="getList" data-id="1">今日的任务</view>
16
+  </view>
17
+  <view class='lineFooter'></view>
18
+
19
+  <view class='panelBottom FlexColumn'>
20
+
21
+    <view class='panelBottom1 FlexRow'>
22
+      <view class='panelBottom11 FlexColumn' bindtap="gotoDefault">
23
+        <image class="program_tabbar_task_default" src='../images/program_tabbar_task_default.png' />
24
+        <view class='text5'>练习</view>
25
+      </view>
26
+      <view class='line1'></view>
27
+      <view class='panelBottom11 FlexColumn' bindtap="goto" data-url="add?type=add&id=0">
28
+        <image class="program_tabbar_task_default" src='../images/program_tabbar_add_default.png' />
29
+        <view class='text5'>添加</view>
30
+      </view>
31
+      <view class='line1'></view>
32
+      <view class='panelBottom11 FlexColumn'>
33
+        <image class="program_tabbar_task_default" src='../images/program_tabbar_note_normal.png' />
34
+        <view class='text5'>笔记</view>
35
+      </view>
36
+    </view>
37
+  </view>
38
+</view>

+ 82 - 0
pages/miaoguo/searchCard.wxss

@@ -0,0 +1,82 @@
1
+.container {
2
+  justify-content: flex-start;
3
+  font-weight: 500;
4
+  color: #1e1e1e;
5
+  background-color: #f0f0f0;
6
+}
7
+
8
+.panelSearch {
9
+  width: 100%;
10
+  height: 140rpx;
11
+  background-color: #fff;
12
+}
13
+
14
+.panelSearch1 {
15
+  width: 690rpx;
16
+  height: 80rpx;
17
+  margin: 20rpx 0 40rpx 0;
18
+  border-radius: 14rpx;
19
+  background-color: #f0f0f0;
20
+  color: #787878;
21
+  font-size: 28rpx;
22
+  font-weight: 400;
23
+}
24
+
25
+.universalpic_search_gray_30x30 {
26
+  width: 30rpx;
27
+  height: 30rpx;
28
+  margin-right: 10rpx;
29
+}
30
+
31
+
32
+.panelBtn{
33
+  width:100%;
34
+  margin-top: 50rpx;
35
+  background-color: #F8F8F8;
36
+}
37
+.panelBtn .line1{
38
+  width:4rpx;
39
+  height:30rpx;
40
+  background-color: #D2D2D2;
41
+}
42
+.panelBtn .text1{
43
+  width:374rpx;
44
+  line-height:100rpx;
45
+  text-align: center;
46
+  font-size:28rpx;
47
+  font-weight: 400;
48
+}
49
+.panelBtn .text2{
50
+  font-family: 'Roboto-Black';
51
+  margin-left: 20rpx;
52
+}
53
+
54
+
55
+.panelBottom {
56
+  position: fixed;
57
+  bottom: 0;
58
+  width: 100%;
59
+}
60
+.panelBottom1 {
61
+  width: 100%;
62
+  background-color: #E0E0E0;
63
+}
64
+
65
+.panelBottom11 {
66
+  flex:1;
67
+  background-color: #fff;
68
+  font-size:20rpx;
69
+  color:#787878;
70
+  height:98rpx;
71
+
72
+}
73
+.panelBottom1 .line1{
74
+  height:98rpx;
75
+  width:2rpx;
76
+}
77
+
78
+.program_tabbar_task_default {
79
+  width: 54rpx;
80
+  height: 54rpx;
81
+  margin-bottom: 4rpx;
82
+}

+ 52 - 0
pages/miaoguo/searchCard1.js

@@ -0,0 +1,52 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+Page({
7
+  data: {
8
+  },
9
+  onLoad: function () {
10
+    var that = this;
11
+    that.setData({
12
+      Containnerheight: main.getWindowHeight(),
13
+      IsShowNull: false,
14
+    });
15
+  },
16
+  onKeyInput: function (e) {
17
+    var search = e.detail.value;
18
+    var that = this;
19
+    that.setData({
20
+      SearchInfo: search,
21
+    });
22
+  },
23
+  onSearch: function (e) {
24
+    if (this.data.SearchInfo && this.data.SearchInfo.length > 0) {
25
+      var search = this.data.SearchInfo;
26
+      
27
+      var that = this;
28
+      var url = 'GetMiaoguoCard?UserID=' + app.globalData.userInfo.UserID;
29
+      if (search)
30
+        url += "&Key=" + search;
31
+
32
+      main.getData(url, function (data) {
33
+        if (data) {
34
+          wx.setStorageSync("CardList", data);
35
+          wx.navigateTo({
36
+            url: './searchCardList?search=' + search,
37
+          })
38
+        }
39
+      });
40
+    }
41
+    else {
42
+      wx.showToast({
43
+        title: '请输搜索内容',
44
+      })
45
+    }
46
+  },
47
+  close: function (e) {
48
+    wx.navigateBack({
49
+      delta: 1,
50
+    });
51
+  }
52
+})

+ 3 - 0
pages/miaoguo/searchCard1.json

@@ -0,0 +1,3 @@
1
+{
2
+  "navigationBarTitleText": "搜索中"
3
+}

+ 15 - 0
pages/miaoguo/searchCard1.wxml

@@ -0,0 +1,15 @@
1
+<view class="container FlexColumn" style='height:{{Containnerheight}}rpx;'>
2
+  <view class="panelSearch FlexRow">
3
+    <view class="panelSearch1 FlexRow">
4
+      <image class="universalpic_search_gray_30x30" src='../images/universalpic_search_gray_30x30.png' />
5
+      <input class='input' maxlength='50' auto-focus bindinput="onKeyInput" value="{{SearchInfo}}" />
6
+    </view>
7
+  </view>
8
+  <view class='lineFooter'></view>
9
+  <view class='panelBtn FlexRow'>
10
+    <view class='text1' bindtap="close">取消</view>
11
+    <view class='line1'></view>
12
+    <view class='text2 text1' bindtap="onSearch">搜索</view>
13
+  </view>
14
+  <view class='lineFooter'></view>
15
+</view>

+ 115 - 0
pages/miaoguo/searchCard1.wxss

@@ -0,0 +1,115 @@
1
+.container {
2
+  justify-content: flex-start;
3
+  font-weight: 500;
4
+  color: #1e1e1e;
5
+  background-color: #F0F0F0;
6
+}
7
+
8
+.panelSearch{
9
+  width:100%;
10
+  height:140rpx;
11
+  background-color: #fff;
12
+}
13
+.panelSearch1{
14
+  width:690rpx;
15
+  height:80rpx;
16
+  margin: 20rpx 0 40rpx 0;
17
+  border-radius: 14rpx;
18
+  background-color: #F0F0F0;
19
+  color:#787878;
20
+  font-size:28rpx;
21
+  font-weight: 400;
22
+  justify-content: flex-start;
23
+}
24
+
25
+.universalpic_search_gray_30x30{
26
+  width:30rpx;
27
+  height:30rpx;
28
+  margin: 0 10rpx 0 30rpx;
29
+}
30
+
31
+.input{
32
+  font-size:28rpx;
33
+  font-weight: 400;
34
+  color:#1e1e1e;
35
+  width:600rpx;
36
+}
37
+
38
+.panelBtn{
39
+  width:100%;
40
+  background-color: #F8F8F8;
41
+}
42
+.panelBtn .line1{
43
+  width:4rpx;
44
+  height:30rpx;
45
+  background-color: #D2D2D2;
46
+}
47
+.panelBtn .text1{
48
+  width:374rpx;
49
+  line-height:100rpx;
50
+  text-align: center;
51
+  font-size:28rpx;
52
+  color:#A20602;
53
+}
54
+.panelBtn .text2{
55
+  color:#0071EF;
56
+}
57
+.panelNull{
58
+  width:100%;
59
+  align-items: flex-start;
60
+  margin-top: 50rpx;
61
+}
62
+.panelNull .text3{
63
+  font-size:32rpx;
64
+  margin-left: 30rpx;
65
+}
66
+.panelNull .text4{
67
+  font-size:24rpx;
68
+  margin-left: 30rpx;
69
+  font-weight: 400;
70
+  margin-top: 10rpx;
71
+}
72
+
73
+
74
+.panelTitle {
75
+  width: 100%;
76
+  margin-top: 50rpx;
77
+  justify-content: space-between;
78
+}
79
+
80
+.panelTitle .panelTitle1 {
81
+  font-size: 32rpx;
82
+  margin-left: 30rpx;
83
+  margin-bottom: 30rpx;
84
+}
85
+
86
+.panelTitle .panelTitle2 {
87
+  font-size: 28rpx;
88
+  margin-right: 30rpx;
89
+  background-color: #1e1e1e;
90
+  color: #fff;
91
+  border-radius: 22rpx;
92
+  text-align: center;
93
+  padding: 0 20rpx;
94
+  margin-bottom: 32rpx;
95
+}
96
+
97
+.panelItem {
98
+  width: 100%;
99
+  justify-content: flex-start;
100
+  font-size: 28rpx;
101
+  min-height: 100rpx;
102
+  height:auto;
103
+  background-color: #fff;
104
+}
105
+
106
+.panelItem1 {
107
+  margin-left: 30rpx;
108
+  font-weight: 400;
109
+}
110
+
111
+.panelItem2 {
112
+  margin-right: 30rpx;
113
+  color: #1e1e1e;
114
+  font-weight: 400;
115
+}

+ 98 - 0
pages/miaoguo/searchCardList.js

@@ -0,0 +1,98 @@
1
+import common from '../../utils/util';
2
+import main from '../../utils/main';
3
+
4
+const app = getApp();
5
+
6
+Page({
7
+  data: {
8
+  },
9
+  onLoad: function (options) {
10
+    var that = this;
11
+    that.setData({
12
+      Containnerheight: main.getWindowHeight(),
13
+    });
14
+
15
+    if (options.search) {
16
+      wx.setNavigationBarTitle({
17
+        title: options.search
18
+      });
19
+    } 
20
+    else if (options.type==1) {
21
+      wx.setNavigationBarTitle({
22
+        title: "今日的任务"
23
+      });
24
+    }
25
+  },
26
+  onPullDownRefresh:function(){
27
+    var that = this;
28
+    that.getList();
29
+    wx.stopPullDownRefresh();
30
+  },
31
+  onShow:function(){
32
+    var that = this;
33
+    that.getList();
34
+  },
35
+  getList: function () {
36
+    var list=wx.getStorageSync("CardList");
37
+    var len=20;
38
+    for(var i=0;i<list.length;i++){
39
+      var item=list[i];
40
+      item.Content[1].ContentStr = replaceString(item.Content[1].Content);
41
+      if (item.Content[1].ContentStr.length > len)
42
+        item.Content[1].ContentStr = replaceString(item.Content[1].ContentStr.substr(0, len)) + "...";
43
+        
44
+      item.Content[2].ContentStr = replaceString(item.Content[2].Content);
45
+      if (item.Content[2].ContentStr.length > len)
46
+        item.Content[2].ContentStr = replaceString(item.Content[2].ContentStr.substr(0, len)) + "...";
47
+      
48
+      var imageUrl = getImage(item.Content[1].Content);
49
+      if (!imageUrl && item.Content[2].Content)
50
+        imageUrl = getImage(item.Content[2].Content);
51
+      if (!imageUrl && item.Content[3].Content)
52
+        imageUrl = getImage(item.Content[3].Content);
53
+
54
+      if (imageUrl)
55
+        item.ImageUrl=imageUrl;
56
+    }
57
+    this.setData({
58
+      List:list,
59
+    });
60
+
61
+    function getImage(str){
62
+      var result="";
63
+      if (str.indexOf("[图]")>=0){
64
+        result = str.substring(str.indexOf("[图]") + 3, str.indexOf("[/图]"));
65
+      }
66
+      return result;
67
+    }
68
+
69
+    function replaceString(str){
70
+      str = str.replace(/\[读]/g, "");
71
+      str = str.replace(/\[\/读\]/g, "");
72
+      str = str.replace(/\[图]/g, "");
73
+      str = str.replace(/\[\/图\]/g, "");
74
+
75
+      var str2="";
76
+      if (str.indexOf("[读") >= 0) {
77
+        str2 = str.substr(str.indexOf("[读"));
78
+        str2 = str2.substring(0, str2.indexOf("]") + 1);
79
+      }
80
+      str = str.replace(str2, "");
81
+      if (str.indexOf("[读") >= 0) {
82
+        str2 = str.substr(str.indexOf("[读"));
83
+        str2 = str2.substring(0, str2.indexOf("]") + 1);
84
+      }
85
+      str = str.replace(str2, "");
86
+      str = str.replace(/\[线]/g, "");
87
+      str = str.replace(/\[\/线\]/g, "");
88
+      str = main.decryptUrl(str);
89
+      return str;
90
+    }
91
+  },
92
+  onPreview: function (e) {
93
+    var id = e.currentTarget.dataset.id;
94
+    wx.navigateTo({
95
+      url: './preview?type=show&id='+id,
96
+    })
97
+  },
98
+})

+ 4 - 0
pages/miaoguo/searchCardList.json

@@ -0,0 +1,4 @@
1
+{
2
+  "navigationBarTitleText": "全部笔记",
3
+  "enablePullDownRefresh": true
4
+}

+ 29 - 0
pages/miaoguo/searchCardList.wxml

@@ -0,0 +1,29 @@
1
+<view class="container FlexColumn" style='min-height:{{Containnerheight}}rpx;'>
2
+  <block wx:if="{{List.length>0}}">
3
+    <view style='width:100%;height:50rpx;'></view>
4
+    <block wx:for="{{List}}" wx:key="index">
5
+      <view class="lineWidthAll FlexRow" wx:if="{{index>0}}">
6
+        <view class="lineWidth720"></view>
7
+      </view>
8
+      <view class="panelItem FlexRow" bindtap='onPreview' data-id="{{item.MiaoguoCardID}}">
9
+        <view class="panelItem1 FlexRow">
10
+          <image class="ImageCSS" src='{{item.ImageUrl}}' wx:if="{{item.ImageUrl}}" />
11
+          <view class="panelItem11 FlexColumn">
12
+            <view class='Text1'>{{item.Content[1].ContentStr}}</view>
13
+            <view class='Text2'>{{item.Content[2].ContentStr}}</view>
14
+          </view>
15
+        </view>
16
+        <view class="panelItem2">
17
+          {{item.LimitTimeStr}}
18
+        </view>
19
+      </view>
20
+    </block>
21
+    <view class='lineFooter'></view>
22
+    <view style='width:100%;height:100rpx;'></view>
23
+  </block>
24
+
25
+  <block wx:if="{{List.length==0}}">
26
+    <view class='Text3'>无此笔记</view>
27
+    <view class='Text4'>请搜索笔记文字内容</view>
28
+  </block>
29
+</view>

+ 59 - 0
pages/miaoguo/searchCardList.wxss

@@ -0,0 +1,59 @@
1
+.container {
2
+  justify-content: flex-start;
3
+  font-weight: 500;
4
+  color: #1e1e1e;
5
+  background-color: #F0F0F0;
6
+}
7
+
8
+.panelItem {
9
+  width: 100%;
10
+  justify-content: space-between;
11
+  font-size: 28rpx;
12
+  height: 136rpx;
13
+  background-color: #fff;
14
+}
15
+
16
+.panelItem1 {
17
+  margin-left: 30rpx;
18
+  justify-content: flex-start;
19
+}
20
+
21
+.ImageCSS{
22
+  width:75rpx;
23
+  height:75rpx;
24
+  margin-right: 20rpx;
25
+}
26
+
27
+.panelItem11 {
28
+  align-items: flex-start;
29
+}
30
+
31
+.panelItem1 .Text1{
32
+  font-weight: 400;
33
+  font-size:30rpx;
34
+  overflow: hidden;
35
+}
36
+.panelItem1 .Text2{
37
+  font-weight: 400;
38
+  font-size:24rpx;
39
+  overflow: hidden;
40
+  color:#787878;
41
+}
42
+
43
+.panelItem2 {
44
+  margin-right: 30rpx;
45
+  color: #9B9B9B;
46
+  font-size:22rpx;
47
+  font-weight: 400;
48
+}
49
+
50
+.Text3{
51
+  margin-top: 495rpx;
52
+  font-size:32rpx;
53
+}
54
+.Text4{
55
+  margin-top: 10rpx;
56
+  font-size:24rpx;
57
+  color:#787878;
58
+  font-weight: 400;
59
+}

+ 0 - 0
pages/miaoguo/searchWeb.js


Некоторые файлы не были показаны из-за большого количества измененных файлов