mm_os 2.8.7 → 2.8.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/core/base/index.js +28 -28
  2. package/core/base/mqtt/index.js +314 -314
  3. package/core/base/mqtt/lib.js +39 -39
  4. package/core/base/web/index.js +109 -109
  5. package/core/com/mqtt/index.js +2 -6
  6. package/core/com/nav/tpl/admin_pc/page_channel.vue +137 -131
  7. package/core/com/nav/tpl/admin_pc/page_config.vue +280 -279
  8. package/core/com/nav/tpl/admin_pc/page_config_form.vue +194 -194
  9. package/core/com/nav/tpl/admin_pc/page_default.vue +47 -87
  10. package/core/com/nav/tpl/admin_pc/page_form.vue +19 -19
  11. package/core/com/nav/tpl/admin_pc/page_lang.vue +44 -45
  12. package/core/com/nav/tpl/admin_pc/page_nav.vue +140 -132
  13. package/core/com/nav/tpl/admin_pc/page_table.vue +135 -124
  14. package/core/com/nav/tpl/admin_pc/page_type.vue +139 -131
  15. package/core/com/nav/tpl/admin_pc/page_view.vue +124 -0
  16. package/core/com/nav/tpl/dev_pc/page_channel.vue +34 -34
  17. package/core/com/nav/tpl/dev_pc/page_config.vue +26 -26
  18. package/core/com/nav/tpl/dev_pc/page_default.vue +4 -4
  19. package/core/com/nav/tpl/dev_pc/page_form.vue +2 -2
  20. package/core/com/nav/tpl/dev_pc/page_nav.vue +34 -34
  21. package/core/com/nav/tpl/dev_pc/page_table.vue +34 -34
  22. package/core/com/nav/tpl/dev_pc/page_type.vue +131 -71
  23. package/core/com/nav/tpl/home_pc/page_default.vue +2 -2
  24. package/core/com/nav/tpl/home_pc/page_form.vue +2 -2
  25. package/core/com/nav/tpl/home_pc/page_view.vue +2 -2
  26. package/core/com/nav/tpl/home_phone/page_form.vue +2 -2
  27. package/core/com/nav/tpl/home_phone/page_list.vue +2 -2
  28. package/core/com/nav/tpl/home_phone/page_view.vue +2 -2
  29. package/demo/index.js +28 -0
  30. package/middleware/cors/index.js +84 -84
  31. package/middleware/cors/middleware.json +6 -6
  32. package/middleware/log/index.js +20 -20
  33. package/middleware/log/middleware.json +8 -8
  34. package/middleware/mqtt_base/index.js +10 -10
  35. package/middleware/mqtt_base/middleware.json +7 -7
  36. package/middleware/waf/index.js +64 -64
  37. package/middleware/waf/middleware.json +8 -8
  38. package/middleware/waf_ip/index.js +115 -115
  39. package/middleware/waf_ip/middleware.json +9 -9
  40. package/middleware/web_base/index.js +65 -65
  41. package/middleware/web_base/middleware.json +8 -8
  42. package/middleware/web_event/index.js +412 -412
  43. package/middleware/web_event/middleware.json +9 -9
  44. package/middleware/web_proxy/index.js +23 -23
  45. package/middleware/web_proxy/middleware.json +8 -8
  46. package/middleware/web_router/index.js +33 -33
  47. package/middleware/web_router/middleware.json +9 -9
  48. package/middleware/web_socket/index.js +21 -21
  49. package/middleware/web_socket/middleware.json +8 -8
  50. package/middleware/web_static/index.js +25 -25
  51. package/middleware/web_static/middleware.json +8 -8
  52. package/package.json +8 -8
  53. package/static/file/image/user/42/2025_01_02_10_58_15.png +0 -0
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <main id="${id}">
3
- <mm_warp>
4
- <mm_container>
5
- <mm_row>
6
- <mm_col class="col-mm-12">
7
- <mm_card>
3
+ <div class="mm_warp">
4
+ <div class="mm_container">
5
+ <div class="mm_row">
6
+ <div class="col-mm-12">
7
+ <div class="mm_card">
8
8
  <div class="card_head arrow">
9
9
  <h5>{{ form[field] ? '修改' : '创建' }}${api.title}</h5>
10
10
  </div>
11
11
  <div class="card_body">
12
- <mm_form>
12
+ <form class="mm_form">
13
13
  <dl>
14
14
  <!--{loop field v idx}-->
15
15
  <!--{if(v.show.form)}-->
@@ -42,20 +42,20 @@
42
42
  <!--{/if}-->
43
43
  <!--{else if(v.dataType === 'date')}-->
44
44
  <dd>
45
- <mm_time v-model="form.${v.name}" type="date" />
45
+ <div class="mm_time" v-model="form.${v.name}" type="date"></div>
46
46
  </dd>
47
47
  <!--{else if(v.dataType === 'time')}-->
48
48
  <dd>
49
- <mm_time v-model="form.${v.name}" type="time" />
49
+ <div class="mm_time" v-model="form.${v.name}" type="time"></div>
50
50
  </dd>
51
51
  <!--{else if(v.dataType.indexOf('time') !== -1)}-->
52
52
  <dd>
53
- <mm_time v-model="form.${v.name}" type="datetime-local" />
53
+ <div class="mm_time" v-model="form.${v.name}" type="datetime-local"></div>
54
54
  </dd>
55
55
  <!--{else if(v.name.indexOf('img') !== -1 || v.name.indexOf('icon') !== -1 || v.name === 'avatar')}-->
56
56
  <dd>
57
- <mm_upload_img width="10rem" height="10rem" name="${v.name}" type="text"
58
- v-model="form.${v.name}" />
57
+ <div class="mm_upload_img" width="10rem" height="10rem" name="${v.name}" type="text"
58
+ v-model="form.${v.name}"></div>
59
59
  </dd>
60
60
  <!--{else if(v.name.indexOf('content') !== -1 || v.dataType.indexOf('longtext') !== -1)}-->
61
61
  <dd>
@@ -93,19 +93,19 @@
93
93
  <!--{/if}-->
94
94
  <!--{/loop}-->
95
95
  </dl>
96
- </mm_form>
96
+ </form>
97
97
  </div>
98
98
  <div class="card_foot">
99
99
  <div class="mm_group">
100
- <button class="btn_default" type="button" @click="cancel">返回</button>
101
- <button class="btn_primary" type="button" @click="submit()">提交</button>
100
+ <button class="mm_btn btn_default" type="button" @click="cancel">返回</button>
101
+ <button class="mm_btn btn_primary" type="button" @click="submit()">提交</button>
102
102
  </div>
103
103
  </div>
104
- </mm_card>
105
- </mm_col>
106
- </mm_row>
107
- </mm_container>
108
- </mm_warp>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ </div>
109
109
  </main>
110
110
  </template>
111
111
 
@@ -1,72 +1,72 @@
1
1
  <template>
2
2
  <main id="${id}">
3
- <mm_warp>
4
- <mm_container>
5
- <mm_row>
6
- <mm_col class="col-12">
7
- <mm_card :class="{ 'hide_filter': !show_filter }">
3
+ <div class="mm_warp">
4
+ <div class="mm_container">
5
+ <div class="mm_row">
6
+ <div class="mm_col col-12">
7
+ <div class="mm_card" :class="{ 'hide_filter': !show_filter }">
8
8
  <div class="card_head arrow" @click="show_filter = !show_filter">
9
9
  <h5>${api.title}</h5>
10
10
  </div>
11
11
  <div class="card_body">
12
- <mm_form class="bar_filter">
12
+ <form class="mm_form bar_filter">
13
13
  <div class="title">
14
14
  <h5><span>筛选条件</span></h5>
15
15
  </div>
16
- <mm_list :col="3">
16
+ <div class="mm_list" :col="3">
17
17
  <!--{loop param.list v idx}-->
18
18
  <!--{if(v.name === 'keyword')}-->
19
- <mm_item>
19
+ <div class="mm_item">
20
20
  <control_input v-model="query.keyword" title="${v.title}" desc="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}"
21
21
  />
22
- </mm_item>
22
+ </div>
23
23
  <!--{/if}-->
24
24
  <!--{/loop}-->
25
25
  <!--{loop field v idx}-->
26
26
  <!--{if(v.show.search)}-->
27
27
  <!--{if(v.show.search === "input")}-->
28
- <mm_item>
28
+ <div class="mm_item">
29
29
  <control_input v-model="query.${v.name}" title="${v.title}" @blur="search()" />
30
- </mm_item>
30
+ </div>
31
31
  <!--{else if(v.show.search === "select")}-->
32
32
  <!--{if(v.format.table)}-->
33
- <mm_item>
33
+ <div class="mm_item">
34
34
  <!--{if(v.format.key.endWith('_id') !== -1)}-->
35
35
  <control_select type="list" v-model="query.${v.format.key}" title="${v.title}" :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" @change="search()" />
36
36
  <!--{else}-->
37
37
  <control_select v-model="query.${v.format.key}" title="${v.title}" :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')"
38
38
  @change="search()" />
39
39
  <!--{/if}-->
40
- </mm_item>
40
+ </div>
41
41
  <!--{else if(v.format.key.indexOf('user_id') !== -1)}-->
42
- <mm_item>
42
+ <div class="mm_item">
43
43
  <control_select v-model="query.${v.format.key}" title="${v.title}" :options="$to_kv(${v.label})" @change="search()" />
44
- </mm_item>
44
+ </div>
45
45
  <!--{else}-->
46
- <mm_item>
46
+ <div class="mm_item">
47
47
  <control_select v-model="query.${v.format.key}" title="${v.title}" :options="$to_kv(${v.label})" @change="search()" />
48
- </mm_item>
48
+ </div>
49
49
  <!--{/if}-->
50
50
  <!--{/if}-->
51
51
  <!--{/if}-->
52
52
  <!--{/loop}-->
53
- <mm_item>
54
- <mm_btn class="btn_primary-x" type="reset" @click.native="reset();">重置</mm_btn>
55
- </mm_item>
56
- </mm_list>
57
- </mm_form>
53
+ <div class="mm_item">
54
+ <button class="mm_btn btn_primary-x" type="reset" @click.native="reset();">重置</button>
55
+ </div>
56
+ </div>
57
+ </form>
58
58
  <div class="bar_action">
59
59
  <h5><span>操作</span></h5>
60
60
  <div class="btns">
61
- <mm_btn class="btn_primary-x" url="./${name}_form?">添加</mm_btn>
62
- <mm_btn @click.native="show = true" class="btn_primary-x" v-bind:class="{ 'disabled': !selects }">批量修改</mm_btn>
61
+ <button class="mm_btn btn_primary-x" url="./${name}_form?">添加</button>
62
+ <button class="mm_btn btn_primary-x" @click.native="show = true" v-bind:class="{ 'disabled': !selects }">批量修改</button>
63
63
  </div>
64
64
  <div class="btn_small">
65
- <control_file class="btn_default-x" type="excel" :func="import_db" v-if="url_import"></control_file>
66
- <mm_btn class="btn_default-x" @click.native="export_db()" v-if="url_export">导出</mm_btn>
65
+ <control_file class="mm_btn btn_default-x" type="excel" :func="import_db" v-if="url_import"></control_file>
66
+ <button class="mm_btn btn_default-x" @click.native="export_db()" v-if="url_export">导出</button>
67
67
  </div>
68
68
  </div>
69
- <mm_table type="2">
69
+ <div class="mm_table" type="2">
70
70
  <thead class="table-sm">
71
71
  <tr>
72
72
  <th class="th_id"><span>#</span></th>
@@ -81,7 +81,6 @@
81
81
  </tr>
82
82
  </thead>
83
83
  <tbody>
84
- <!-- <draggable v-model="list" tag="tbody" @change="sort_change"> -->
85
84
  <tr v-for="(o, idx) in list" :key="idx" :class="{'active': select == idx}" @click="selected(idx)">
86
85
  <td>{{ o[field] }}</td>
87
86
  <!--{loop field v idx}-->
@@ -116,13 +115,12 @@
116
115
  <!--{/if}-->
117
116
  <!--{/loop}-->
118
117
  <td>
119
- <mm_btn class="btn_primary" :url="'./${name}_form?${sql.key}=' + o[field]">修改</mm_btn>
120
- <mm_btn class="btn_warning" @click.native="del_show(o, field)">删除</mm_btn>
118
+ <a class="mm_btn btn_primary" :href="'./${name}_form?${sql.key}=' + o[field]">修改</a>
119
+ <button class="mm_btn btn_warning" @click.native="del_show(o, field)">删除</button>
121
120
  </td>
122
121
  </tr>
123
122
  </tbody>
124
- <!-- </draggable> -->
125
- </mm_table>
123
+ </div>
126
124
  </div>
127
125
  <div class="card_foot">
128
126
  <div class="fl">
@@ -136,13 +134,14 @@
136
134
  </div>
137
135
  <control_pager display="2" v-model="query.page" :count="count / query.size" :func="goTo" :icons="['首页', '上一页', '下一页', '尾页']"></control_pager>
138
136
  </div>
139
- </mm_card>
140
- </mm_col>
141
- </mm_row>
142
- </mm_container>
143
- </mm_warp>
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
142
+
144
143
  <mm_modal v-model="show" mask="true">
145
- <mm_card class="card">
144
+ <div class="mm_card">
146
145
  <div class="card_head">
147
146
  <h5>批量修改</h5>
148
147
  </div>
@@ -172,11 +171,11 @@
172
171
  </div>
173
172
  <div class="card_foot">
174
173
  <div class="mm_group">
175
- <button class="btn_default" type="reset" @click="show = false">取消</button>
176
- <button class="btn_primary" type="button" @click="batchSet()">提交</button>
174
+ <button class="mm_btn btn_default" type="reset" @click="show = false">取消</button>
175
+ <button class="mm_btn btn_primary" type="button" @click="batchSet()">提交</button>
177
176
  </div>
178
177
  </div>
179
- </mm_card>
178
+ </div>
180
179
  </mm_modal>
181
180
  </main>
182
181
  </template>
@@ -233,7 +232,7 @@
233
232
  * 获取 ${v.title}
234
233
  * @param {query} 查询条件
235
234
  */
236
- get_ /*[v.basename]*/(query) {
235
+ get_/*[v.basename]*/(query) {
237
236
  var _this = this;
238
237
  if (!query) {
239
238
  query = {
@@ -242,8 +241,8 @@
242
241
  }
243
242
  this.$get('~${v.path}', query, function(json) {
244
243
  if (json.result) {
245
- _this /*['.' + v.name]*/ .clear();
246
- _this /*['.' + v.name]*/ .addList(json.result.list)
244
+ _this/*['.' + v.name]*/.clear();
245
+ _this/*['.' + v.name]*/.addList(json.result.list)
247
246
  }
248
247
  });
249
248
  },
@@ -254,7 +253,7 @@
254
253
  /*[loop js.data v idx]*/
255
254
  /*[if(v.path)]*/
256
255
  // 获取 ${v.title}
257
- this.get_ /*[v.basename]*/();
256
+ this.get_/*[v.basename]*/();
258
257
  /*[/if]*/
259
258
  /*[/loop]*/
260
259
  }
@@ -1,161 +1,165 @@
1
1
  <template>
2
2
  <main id="${id}">
3
- <mm_warp>
4
- <mm_container>
5
- <mm_row>
6
- <mm_col class="col-12">
7
- <mm_card :class="{ 'hide_filter': !show_filter }">
3
+ <div class="mm_warp">
4
+ <div class="mm_container">
5
+ <div class="mm_row">
6
+ <div class="mm_col col-12">
7
+ <div class="mm_card" :class="{ 'hide_filter': !show_filter }">
8
8
  <div class="card_head arrow" @click="show_filter = !show_filter">
9
9
  <h5>${api.title}</h5>
10
10
  </div>
11
11
  <div class="card_body">
12
- <mm_form class="bar_filter">
12
+ <div class="mm_form" class="bar_filter">
13
13
  <div class="title">
14
14
  <h5><span>筛选条件</span></h5>
15
15
  </div>
16
- <mm_list :col="3">
16
+ <div class="mm_list list-3">
17
17
  <!--{loop param.list v idx}-->
18
18
  <!--{if(v.name === 'keyword')}-->
19
- <mm_item>
20
- <control_input v-model="query.keyword" title="${v.title}" desc="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}"
21
- />
22
- </mm_item>
19
+ <div class="mm_item">
20
+ <control_input v-model="query.keyword" title="${v.title}"
21
+ desc="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}" />
22
+ </div>
23
23
  <!--{/if}-->
24
24
  <!--{/loop}-->
25
25
  <!--{loop field v idx}-->
26
26
  <!--{if(v.show.search)}-->
27
27
  <!--{if(v.show.search === "input")}-->
28
- <mm_item>
29
- <control_input v-model="query.${v.name}" title="${v.title}" @blur="search()" />
30
- </mm_item>
28
+ <div class="mm_item">
29
+ <control_input v-model="query.${v.name}" title="${v.title}"
30
+ @blur="search()" />
31
+ </div>
31
32
  <!--{else if(v.show.search === "select")}-->
32
33
  <!--{if(v.format.table)}-->
33
- <mm_item>
34
+ <div class="mm_item">
34
35
  <!--{if(v.format.key.endWith('_id') !== -1)}-->
35
- <control_select type="list" v-model="query.${v.format.key}" title="${v.title}" :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" @change="search()" />
36
+ <control_select type="list" v-model="query.${v.format.key}"
37
+ title="${v.title}"
38
+ :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')"
39
+ @change="search()" />
36
40
  <!--{else}-->
37
- <control_select v-model="query.${v.format.key}" title="${v.title}" :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')"
38
- @change="search()" />
39
- <!--{/if}-->
40
- </mm_item>
41
+ <control_select v-model="query.${v.format.key}" title="${v.title}"
42
+ :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')"
43
+ @change="search()" />
44
+ <!--{/if}-->
45
+ </div>
41
46
  <!--{else if(v.format.key.indexOf('user_id') !== -1)}-->
42
- <mm_item>
43
- <control_select v-model="query.${v.format.key}" title="${v.title}" :options="$to_kv(${v.label})" @change="search()" />
44
- </mm_item>
47
+ <div class="mm_item">
48
+ <control_select v-model="query.${v.format.key}" title="${v.title}"
49
+ :options="$to_kv(${v.label})" @change="search()" />
50
+ </div>
45
51
  <!--{else}-->
46
- <mm_item>
47
- <control_select v-model="query.${v.format.key}" title="${v.title}" :options="$to_kv(${v.label})" @change="search()" />
48
- </mm_item>
52
+ <div class="mm_item">
53
+ <control_select v-model="query.${v.format.key}" title="${v.title}"
54
+ :options="$to_kv(${v.label})" @change="search()" />
55
+ </div>
49
56
  <!--{/if}-->
50
57
  <!--{/if}-->
51
58
  <!--{/if}-->
52
59
  <!--{/loop}-->
53
- <mm_item>
54
- <mm_btn class="btn_primary-x" type="reset" @click.native="reset();">重置</mm_btn>
55
- </mm_item>
56
- </mm_list>
57
- </mm_form>
60
+ <div class="mm_item">
61
+ <button class="mm_btn btn_primary-x" type="reset"
62
+ @click.native="reset();">重置</button>
63
+ </div>
64
+ </div>
65
+ </div>
58
66
  <div class="bar_action">
59
67
  <h5><span>操作</span></h5>
60
68
  <div class="btns">
61
- <mm_btn class="btn_primary-x" url="./${name}_form?">添加</mm_btn>
62
- <mm_btn @click.native="show = true" class="btn_primary-x" v-bind:class="{ 'disabled': !selects }">批量修改</mm_btn>
69
+ <button class="mm_btn btn_primary-x" url="./${name}_form?">添加</button>
70
+ <button @click.native="show = true" class="mm_btn btn_primary-x"
71
+ v-bind:class="{ 'disabled': !selects }">批量修改</button>
63
72
  </div>
64
73
  <div class="btn_small">
65
- <control_file class="btn_default-x" type="excel" :func="import_db" v-if="url_import"></control_file>
66
- <mm_btn class="btn_default-x" @click.native="export_db()" v-if="url_export">导出</mm_btn>
74
+ <control_file class="btn_default-x" type="excel" :func="import_db"
75
+ v-if="url_import"></control_file>
76
+ <button class="mm_btn btn_default-x" @click.native="export_db()"
77
+ v-if="url_export">导出</button>
67
78
  </div>
68
79
  </div>
69
- <mm_table type="3">
70
- <thead class="table-sm">
71
- <tr>
72
- <th class="th_open"></th>
73
- <th class="th_selected"><input type="checkbox" :checked="select_state" @click="select_all()" /></th>
74
- <th class="th_id"><span>#</span></th>
75
- <!--{loop field v idx}-->
76
- <!--{if(v.show.table)}-->
77
- <!--{if(v.name !== sql.key)}-->
78
- <th class="th_${v.name}">
79
- <span>${v.title}</span>
80
- </th>
81
- <!--{/if}-->
82
- <!--{/if}-->
83
- <!--{/loop}-->
84
- <th class="th_handle"><span>操作</span></th>
85
- </tr>
86
- </thead>
87
- <tbody>
88
- <!-- <draggable v-model="list" tag="tbody" @change="sort_change"> -->
89
- <tr v-for="(o, idx) in list_new" :key="idx" :class="{'active': select == idx, sub: o[father_id], open: opens_has(o[field]), no_sub: !opens_has_sub(o[field]) }"
90
- @click="selected(idx)">
91
- <th class="th_open"><button class="btn_open" :style="'margin-left:' + (1.5 * opens_lv(o[father_id])) + 'rem;'"
92
- @click="opens_change(o[field])"><i class="fa-caret-right"></i></button></th>
93
- <th class="th_selected"><input type="checkbox" :checked="select_has(o[field])" @click="select_change(o[field])" /></th>
94
- <td>{{ o[field] }}</td>
95
- <!--{loop field v idx}-->
96
- <!--{if(v.show.table)}-->
97
- <!--{if(v.name !== sql.key)}-->
98
- <td>
99
- <!--{if(v.dataType === 'tinyint')}-->
100
- <control_switch v-model="o.${v.name}" @click.native="set(o)" />
101
- <!--{else if(v.format)}-->
102
- <!--{if(v.format.table)}-->
103
- <span>{{ $get_name(${v.label}, o.${v.format.key}, '${v.format.id || v.format.key}', '${v.format.name}') }}</span>
104
- <!--{else if(v.name == 'state' || v.name == 'status')}-->
105
- <span v-bind:class="arr_color[o.${v.name}]">{{ ${v.label}[o.${v.name}] }}</span>
106
- <!--{else}-->
107
- <span>{{ ${v.label}[o.${v.name}] }}</span>
108
- <!--{/if}-->
109
- <!--{else if(v.name.indexOf('img') !== -1 || v.name.indexOf('icon') !== -1 || v.name === 'avatar')}-->
110
- <img class="${v.name}" :src="o.${v.name}" alt="${v.title}" />
111
- <!--{else if(v.dataType === 'date')}-->
112
- <span>{{ $to_time(o.${v.name}, 'yyyy-MM-dd') }}</span>
113
- <!--{else if(v.dataType === 'time')}-->
114
- <span>{{ o.${v.name} }}</span>
115
- <!--{else if(v.dataType === 'timestamp' || v.dataType === 'datetime')}-->
116
- <span>{{ $to_time(o.${v.name}, 'yyyy-MM-dd hh:mm') }}</span>
117
- <!--{else if(v.name === 'display' || v.name === 'orderby')}-->
118
- <input class="input_display" v-model.number="o.${v.name}" @blur="set(o)" min="0" max="1000" />
119
- <!--{else}-->
120
- <control_input :auto="true" v-model="o.${v.name}" @blur="set(o)" />
121
- <!--{/if}-->
122
- </td>
123
- <!--{/if}-->
124
- <!--{/if}-->
125
- <!--{/loop}-->
126
- <td>
127
- <mm_btn class="btn_primary" :url="'./${name}_form?${sql.key}=' + o[field]">修改</mm_btn>
128
- <mm_btn class="btn_warning" @click.native="del_show(o, field)">删除</mm_btn>
129
- </td>
130
- </tr>
131
- </tbody>
132
- <!-- </draggable> -->
133
-
134
- <template v-slot:right>
80
+ <div class="mm_table table-3">
81
+ <table>
135
82
  <thead class="table-sm">
136
83
  <tr>
84
+ <th class="th_open"></th>
85
+ <th class="th_selected"><input type="checkbox" :checked="select_state"
86
+ @click="select_all()" /></th>
87
+ <th class="th_id"><span>#</span></th>
88
+ <!--{loop field v idx}-->
89
+ <!--{if(v.show.table)}-->
90
+ <!--{if(v.name !== sql.key)}-->
91
+ <th class="th_${v.name}">
92
+ <span>${v.title}</span>
93
+ </th>
94
+ <!--{/if}-->
95
+ <!--{/if}-->
96
+ <!--{/loop}-->
137
97
  <th class="th_handle"><span>操作</span></th>
138
98
  </tr>
139
99
  </thead>
140
100
  <tbody>
141
- <tr v-for="(o, idx) in list_new" :key="idx" :class="{'active': select == idx, sub: o[father_id], open: opens_has(o[field]), no_sub: !opens_has_sub(o[field]) }"
142
- @click="selected(idx)">
101
+ <tr v-for="(o, idx) in list_new" :key="idx"
102
+ :class="{'active': select == idx, sub: o[father_id], open: opens_has(o[field]), no_sub: !opens_has_sub(o[field]) }"
103
+ @click="selected(idx)">
104
+ <th class="th_open"><button class="btn_open"
105
+ :style="'margin-left:' + (1.5 * opens_lv(o[father_id])) + 'rem;'"
106
+ @click="opens_change(o[field])"><i
107
+ class="fa-caret-right"></i></button></th>
108
+ <th class="th_selected"><input type="checkbox"
109
+ :checked="select_has(o[field])"
110
+ @click="select_change(o[field])" /></th>
111
+ <td>{{ o[field] }}</td>
112
+ <!--{loop field v idx}-->
113
+ <!--{if(v.show.table)}-->
114
+ <!--{if(v.name !== sql.key)}-->
143
115
  <td>
144
- <mm_btn class="btn_primary" :url="'./${name}_form?${sql.key}=' + o[field]">修改</mm_btn>
145
- <mm_btn class="btn_warning" @click.native="del_show(o, field)">删除</mm_btn>
116
+ <!--{if(v.dataType === 'tinyint')}-->
117
+ <control_switch v-model="o.${v.name}" @click.native="set(o)" />
118
+ <!--{else if(v.format)}-->
119
+ <!--{if(v.format.table)}-->
120
+ <span>{{ $get_name(${v.label}, o.${v.format.key}, '${v.format.id || v.format.key}', '${v.format.name}') }}</span>
121
+ <!--{else if(v.name == 'state' || v.name == 'status')}-->
122
+ <span
123
+ v-bind:class="arr_color[o.${v.name}]">{{ ${v.label}[o.${v.name}] }}</span>
124
+ <!--{else}-->
125
+ <span>{{ ${v.label}[o.${v.name}] }}</span>
126
+ <!--{/if}-->
127
+ <!--{else if(v.name.indexOf('img') !== -1 || v.name.indexOf('icon') !== -1 || v.name === 'avatar')}-->
128
+ <img class="${v.name}" :src="o.${v.name}" alt="${v.title}" />
129
+ <!--{else if(v.dataType === 'date')}-->
130
+ <span>{{ $to_time(o.${v.name}, 'yyyy-MM-dd') }}</span>
131
+ <!--{else if(v.dataType === 'time')}-->
132
+ <span>{{ o.${v.name} }}</span>
133
+ <!--{else if(v.dataType === 'timestamp' || v.dataType === 'datetime')}-->
134
+ <span>{{ $to_time(o.${v.name}, 'yyyy-MM-dd hh:mm') }}</span>
135
+ <!--{else if(v.name === 'display' || v.name === 'orderby')}-->
136
+ <input class="input_display" v-model.number="o.${v.name}"
137
+ @blur="set(o)" min="0" max="1000" />
138
+ <!--{else}-->
139
+ <control_input :auto="true" v-model="o.${v.name}" @blur="set(o)" />
140
+ <!--{/if}-->
141
+ </td>
142
+ <!--{/if}-->
143
+ <!--{/if}-->
144
+ <!--{/loop}-->
145
+ <td>
146
+ <a class="mm_btn btn_primary"
147
+ :href="'./${name}_form?${sql.key}=' + o[field]">修改</a>
148
+ <button class="mm_btn btn_warning"
149
+ @click.native="del_show(o, field)">删除</button>
146
150
  </td>
147
151
  </tr>
148
152
  </tbody>
149
- </template>
150
- </mm_table>
153
+ </table>
154
+ </div>
151
155
  </div>
152
- </mm_card>
153
- </mm_col>
154
- </mm_row>
155
- </mm_container>
156
- </mm_warp>
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </div>
160
+ </div>
157
161
  <mm_modal v-model="show" mask="true">
158
- <mm_card class="card">
162
+ <div class="mm_card" class="card">
159
163
  <div class="card_head">
160
164
  <h5>批量修改</h5>
161
165
  </div>
@@ -165,19 +169,21 @@
165
169
  <!--{if(v.show.batch)}-->
166
170
  <dt>${v.title}</dt>
167
171
  <dd>
168
- <!--{if(v.show.batch === "input")}-->
169
- <control_input v-model="form.${v.name}" />
170
- <!--{else if(v.show.batch === "select")}-->
172
+ <!--{if(v.show.batch === "input")}-->
173
+ <control_input v-model="form.${v.name}" />
174
+ <!--{else if(v.show.batch === "select")}-->
171
175
  <!--{if(v.format.table)}-->
172
- <!--{if(v.format.key.endWith('_id') !== -1)}-->
173
- <control_select type="list" v-model="form.${v.format.key}" :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
174
- <!--{else}-->
175
- <control_select v-model="form.${v.format.key}" :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
176
- <!--{/if}-->
176
+ <!--{if(v.format.key.endWith('_id') !== -1)}-->
177
+ <control_select type="list" v-model="form.${v.format.key}"
178
+ :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
179
+ <!--{else}-->
180
+ <control_select v-model="form.${v.format.key}"
181
+ :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
182
+ <!--{/if}-->
177
183
  <!--{else}-->
178
184
  <control_select v-model="form.${v.format.key}" :options="$to_kv(${v.label})" />
179
185
  <!--{/if}-->
180
- <!--{/if}-->
186
+ <!--{/if}-->
181
187
  </dd>
182
188
  <!--{/if}-->
183
189
  <!--{/loop}-->
@@ -185,11 +191,11 @@
185
191
  </div>
186
192
  <div class="card_foot">
187
193
  <div class="mm_group">
188
- <button class="btn_default" type="reset" @click="show = false">取消</button>
189
- <button class="btn_primary" type="button" @click="batchSet()">提交</button>
194
+ <button class="mm_btn btn_default" type="reset" @click="show = false">取消</button>
195
+ <button class="mm_btn btn_primary" type="button" @click="batchSet()">提交</button>
190
196
  </div>
191
197
  </div>
192
- </mm_card>
198
+ </div>
193
199
  </mm_modal>
194
200
  </main>
195
201
  </template>
@@ -222,7 +228,9 @@
222
228
  },
223
229
  form: {},
224
230
  //颜色
225
- arr_color: ['', '', 'font_yellow', 'font_success', 'font_warning', 'font_primary', 'font_info', 'font_default'],
231
+ arr_color: ['', '', 'font_yellow', 'font_success', 'font_warning', 'font_primary', 'font_info',
232
+ 'font_default'
233
+ ],
226
234
  /*[loop js.data v idx]*/
227
235
  // ${' ' + v.title}
228
236
  '${v.name}': ${@JSON.stringify(v.value)},
@@ -238,7 +246,7 @@
238
246
  * 获取 ${v.title}
239
247
  * @param {query} 查询条件
240
248
  */
241
- get_ /*[v.basename]*/(query) {
249
+ get_/*[v.basename]*/(query) {
242
250
  var _this = this;
243
251
  if (!query) {
244
252
  query = {
@@ -247,8 +255,8 @@
247
255
  }
248
256
  this.$get('~${v.path}', query, function(json) {
249
257
  if (json.result) {
250
- _this /*['.' + v.name]*/ .clear();
251
- _this /*['.' + v.name]*/ .addList(json.result.list)
258
+ _this/*['.' + v.name]*/.clear();
259
+ _this/*['.' + v.name]*/.addList(json.result.list)
252
260
  }
253
261
  });
254
262
  },
@@ -258,7 +266,7 @@
258
266
  * 获取列表之前
259
267
  * @param {Object} param 参数
260
268
  */
261
- get_list_before(param){
269
+ get_list_before(param) {
262
270
  delete param.page;
263
271
  param.size = "0";
264
272
  return param;
@@ -279,7 +287,7 @@
279
287
  keyword,
280
288
  father_id
281
289
  } = this.query;
282
-
290
+
283
291
  if (keyword && father_id) {
284
292
  return this.list.filter(function(o) {
285
293
  return o.father_id == father_id && (o.title.indexOf(keyword) !== -1 || o.name.indexOf(
@@ -310,4 +318,4 @@
310
318
  </script>
311
319
 
312
320
  <style>
313
- </style>
321
+ </style>