mm_os 3.3.1 → 4.0.0

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 (380) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +491 -99
  3. package/README_EN.md +498 -0
  4. package/adapter/adapter.js +431 -0
  5. package/adapter/custom_persistence.js +660 -0
  6. package/adapter/mqtt.js +273 -0
  7. package/adapter/socket.js +113 -0
  8. package/adapter/web.js +67 -0
  9. package/adapter/websocket.js +146 -0
  10. package/com/api/com.json +5 -0
  11. package/{core/com → com}/api/config.tpl.json +8 -8
  12. package/com/api/drive.js +708 -0
  13. package/com/api/index.js +198 -0
  14. package/com/api/oauth.js +200 -0
  15. package/com/api/script.tpl.js +32 -0
  16. package/com/cmd/README.md +11 -0
  17. package/com/cmd/com.json +5 -0
  18. package/com/cmd/config.tpl.json +122 -0
  19. package/com/cmd/drive.js +1548 -0
  20. package/com/cmd/index.js +1066 -0
  21. package/com/cmd/msg.json +48 -0
  22. package/com/cmd/nlp.js +525 -0
  23. package/com/cmd/script.tpl.js +32 -0
  24. package/com/db/com.json +5 -0
  25. package/com/db/drive.js +1999 -0
  26. package/com/db/index.js +242 -0
  27. package/{core/com → com}/event/README.md +4 -4
  28. package/com/event/com.json +5 -0
  29. package/{core/com → com}/event/config.tpl.json +18 -18
  30. package/com/event/drive.js +59 -0
  31. package/com/event/index.js +409 -0
  32. package/com/event/script.tpl.js +23 -0
  33. package/com/mqtt/com.json +5 -0
  34. package/{core/com → com}/mqtt/config.tpl.json +3 -5
  35. package/com/mqtt/drive.js +676 -0
  36. package/com/mqtt/index.js +822 -0
  37. package/com/mqtt/mm_mqtt.js +425 -0
  38. package/com/mqtt/script.tpl.js +723 -0
  39. package/com/nav/com.json +5 -0
  40. package/com/nav/config.tpl.json +84 -0
  41. package/com/nav/drive.js +702 -0
  42. package/com/nav/index.js +231 -0
  43. package/{core/com → com}/nav/tpl/admin_pc/page_config.vue +280 -280
  44. package/{core/com → com}/nav/tpl/admin_pc/page_config_form.vue +194 -194
  45. package/com/nav/tpl/admin_pc/page_form.vue +180 -0
  46. package/com/nav/tpl/admin_pc/page_view.vue +124 -0
  47. package/com/nav/tpl/dev_pc/page_default.vue +247 -0
  48. package/com/nav/tpl/dev_pc/page_type.vue +313 -0
  49. package/com/nav/tpl/home_pc/page_default.vue +234 -0
  50. package/com/nav/tpl/home_pc/page_form.vue +137 -0
  51. package/com/nav/tpl/home_pc/page_list.vue +234 -0
  52. package/com/nav/tpl/home_pc/page_nav.vue +221 -0
  53. package/com/nav/tpl/home_pc/page_type.vue +234 -0
  54. package/com/nav/tpl/home_pc/page_view.vue +125 -0
  55. package/com/nav/tpl/home_phone/page_channel.vue +234 -0
  56. package/com/nav/tpl/home_phone/page_default.vue +234 -0
  57. package/com/nav/tpl/home_phone/page_form.vue +137 -0
  58. package/com/nav/tpl/home_phone/page_nav.vue +237 -0
  59. package/com/nav/tpl/home_phone/page_type.vue +234 -0
  60. package/com/nav/tpl/home_phone/page_view.vue +125 -0
  61. package/com/nav/viewmodel.js +446 -0
  62. package/com/param/com.json +5 -0
  63. package/{core/com → com}/param/config.tpl.json +7 -1
  64. package/com/param/drive.js +502 -0
  65. package/com/param/index.js +155 -0
  66. package/com/param/script.tpl.js +12 -0
  67. package/com/pendant/com.json +5 -0
  68. package/{core/com/component → com/pendant}/config.tpl.json +15 -13
  69. package/com/pendant/drive.js +204 -0
  70. package/com/pendant/index.js +441 -0
  71. package/com/pendant/pendant.html +16 -0
  72. package/com/pendant/script.tpl.js +18 -0
  73. package/com/socket/com.json +5 -0
  74. package/com/socket/config.tpl.json +12 -0
  75. package/com/socket/drive.js +651 -0
  76. package/com/socket/index.js +351 -0
  77. package/com/socket/script.tpl.js +41 -0
  78. package/com/sql/com.json +5 -0
  79. package/{core/com → com}/sql/config.tpl.json +13 -9
  80. package/com/sql/drive.js +1259 -0
  81. package/com/sql/index.js +150 -0
  82. package/com/sql/script.tpl.js +47 -0
  83. package/com/static/com.json +5 -0
  84. package/{core/com → com}/static/config.tpl.json +10 -6
  85. package/com/static/drive.js +194 -0
  86. package/com/static/index.js +226 -0
  87. package/com/static/script.tpl.js +28 -0
  88. package/com/task/com.json +5 -0
  89. package/{core/com → com}/task/config.tpl.json +4 -6
  90. package/com/task/drive.js +405 -0
  91. package/com/task/index.js +148 -0
  92. package/com/task/script.tpl.js +37 -0
  93. package/com/template/com.json +5 -0
  94. package/com/template/config.tpl.json +16 -0
  95. package/com/template/drive.js +80 -0
  96. package/com/template/index.js +141 -0
  97. package/com.js +156 -0
  98. package/common/README.md +2 -0
  99. package/common/handler/msg/handler.json +22 -0
  100. package/common/handler/msg/index.js +23 -0
  101. package/common/handler/player/handler.json +22 -0
  102. package/common/handler/player/index.js +287 -0
  103. package/common/handler/user/handler.json +22 -0
  104. package/common/handler/user/index.js +23 -0
  105. package/common/middleware/web_after/index.js +29 -0
  106. package/common/middleware/web_after/middleware.json +9 -0
  107. package/common/middleware/web_base/index.js +113 -0
  108. package/common/middleware/web_base/middleware.json +19 -0
  109. package/common/middleware/web_before/index.js +33 -0
  110. package/common/middleware/web_before/middleware.json +9 -0
  111. package/common/middleware/web_cors/index.js +87 -0
  112. package/common/middleware/web_cors/middleware.json +24 -0
  113. package/common/middleware/web_error/index.js +119 -0
  114. package/common/middleware/web_error/middleware.json +18 -0
  115. package/common/middleware/web_ip/index.js +15 -0
  116. package/common/middleware/web_ip/middleware.json +14 -0
  117. package/common/middleware/web_logger/index.js +156 -0
  118. package/common/middleware/web_logger/middleware.json +14 -0
  119. package/common/middleware/web_main/index.js +24 -0
  120. package/common/middleware/web_main/middleware.json +9 -0
  121. package/common/middleware/web_static/index.js +73 -0
  122. package/common/middleware/web_static/middleware.json +54 -0
  123. package/common/middleware/web_waf/index.js +385 -0
  124. package/common/middleware/web_waf/middleware.json +13 -0
  125. package/common/model/msg/index.js +88 -0
  126. package/common/model/msg/model.json +401 -0
  127. package/common/model/player/index.js +63 -0
  128. package/common/model/player/model.json +185 -0
  129. package/common/model/user/index.js +11 -0
  130. package/common/model/user/model.json +219 -0
  131. package/core/app/config.tpl.json +67 -0
  132. package/core/app/index.js +632 -0
  133. package/core/app/script.tpl.js +52 -0
  134. package/core/channel/index.js +899 -0
  135. package/core/channel/matcher.js +585 -0
  136. package/core/com/config.tpl.json +16 -0
  137. package/core/com/index.js +74 -0
  138. package/core/com/script.tpl.js +5 -0
  139. package/core/component/component.js +42 -0
  140. package/core/component/config.tpl.json +63 -0
  141. package/core/component/index.js +273 -0
  142. package/core/component/script.tpl.js +19 -0
  143. package/core/controller/config.tpl.json +14 -0
  144. package/core/controller/index.js +373 -0
  145. package/core/controller/script.tpl.js +27 -0
  146. package/core/factory/config.tpl.json +14 -0
  147. package/core/factory/entity.js +275 -0
  148. package/core/factory/index.js +241 -0
  149. package/core/factory/script.tpl.js +16 -0
  150. package/core/game/bat/index.js +137 -0
  151. package/core/game/bat/world.js +622 -0
  152. package/core/game/config.tpl.json +16 -0
  153. package/core/game/entity_admin.js +230 -0
  154. package/core/game/index.js +186 -0
  155. package/core/handler/config.tpl.json +22 -0
  156. package/core/handler/index.js +181 -0
  157. package/core/handler/script.tpl.js +23 -0
  158. package/core/logic/config.tpl.json +14 -0
  159. package/core/logic/index.js +59 -0
  160. package/core/logic/script.tpl.js +19 -0
  161. package/core/middleware/config.tpl.json +16 -0
  162. package/core/middleware/index.js +125 -0
  163. package/core/middleware/script.tpl.js +37 -0
  164. package/core/mod/config.tpl.json +22 -0
  165. package/core/mod/index.js +130 -0
  166. package/core/mod/script.tpl.js +34 -0
  167. package/core/model/config.tpl.json +219 -0
  168. package/core/model/index.js +272 -0
  169. package/core/model/model.js +27 -0
  170. package/core/model/script.tpl.js +20 -0
  171. package/core/notifier/config.tpl.json +14 -0
  172. package/core/notifier/index.js +77 -0
  173. package/core/notifier/script.tpl.js +20 -0
  174. package/core/plugin/config.tpl.json +24 -0
  175. package/core/plugin/index.js +232 -0
  176. package/core/plugin/script.tpl.js +51 -0
  177. package/core/pusher/config.tpl.json +14 -0
  178. package/core/pusher/index.js +161 -0
  179. package/core/pusher/script.tpl.js +20 -0
  180. package/core/room/bat/index.js +170 -0
  181. package/core/room/bat/room.js +524 -0
  182. package/core/room/config.tpl.json +20 -0
  183. package/core/room/index.js +249 -0
  184. package/core/room/room.js +61 -0
  185. package/core/scene/config.tpl.json +14 -0
  186. package/core/scene/index.js +466 -0
  187. package/core/scene/loop.js +1255 -0
  188. package/core/scene/map.js +28 -0
  189. package/core/scene/script.tpl.js +22 -0
  190. package/core/sender/config.tpl.json +14 -0
  191. package/core/sender/index.js +79 -0
  192. package/core/sender/script.tpl.js +20 -0
  193. package/core/service/config.tpl.json +14 -0
  194. package/core/service/index.js +100 -0
  195. package/core/service/script.tpl.js +25 -0
  196. package/core/store/config.tpl.json +26 -0
  197. package/core/store/index.js +1755 -0
  198. package/core/store/script.tpl.js +22 -0
  199. package/core/store/sql.js +1464 -0
  200. package/core/system/config.tpl.json +18 -0
  201. package/core/system/index.js +312 -0
  202. package/core/system/script.tpl.js +77 -0
  203. package/core/view/config.tpl.json +14 -0
  204. package/core/view/index.js +91 -0
  205. package/core/view/script.tpl.js +20 -0
  206. package/core/zone/bat/index.js +725 -0
  207. package/core/zone/config.tpl.json +54 -0
  208. package/core/zone/index.js +614 -0
  209. package/core/zone/script.tpl.js +10 -0
  210. package/core/zone/zone_bat.js +136 -0
  211. package/core//345/237/272/347/261/273/346/250/241/345/235/227/346/270/205/345/215/225.md +24 -0
  212. package/index.js +17 -333
  213. package/os.js +57 -0
  214. package/package.json +58 -58
  215. package/server.js +598 -0
  216. package/README.en.md +0 -36
  217. package/conf.json +0 -3
  218. package/core/base/mqtt/index.js +0 -1110
  219. package/core/base/mqtt/lib.js +0 -40
  220. package/core/base/web/index.js +0 -245
  221. package/core/com/api/com.json +0 -4
  222. package/core/com/api/drive.js +0 -668
  223. package/core/com/api/index.js +0 -108
  224. package/core/com/api/oauth.js +0 -158
  225. package/core/com/api/script.js +0 -32
  226. package/core/com/app/README.md +0 -3
  227. package/core/com/app/com.json +0 -4
  228. package/core/com/app/config.tpl.json +0 -16
  229. package/core/com/app/drive.js +0 -309
  230. package/core/com/app/index.js +0 -211
  231. package/core/com/app/script.js +0 -155
  232. package/core/com/cmd/com.json +0 -4
  233. package/core/com/cmd/config.tpl.json +0 -66
  234. package/core/com/cmd/drive.js +0 -513
  235. package/core/com/cmd/index.js +0 -354
  236. package/core/com/cmd/old/5w2h.js +0 -54
  237. package/core/com/cmd/old/drive.js +0 -423
  238. package/core/com/cmd/script.js +0 -11
  239. package/core/com/component/README.md +0 -3
  240. package/core/com/component/com.json +0 -4
  241. package/core/com/component/component.html +0 -16
  242. package/core/com/component/drive.js +0 -197
  243. package/core/com/component/index.js +0 -312
  244. package/core/com/component/script.js +0 -18
  245. package/core/com/db/com.json +0 -4
  246. package/core/com/db/drive.js +0 -1160
  247. package/core/com/db/index.js +0 -176
  248. package/core/com/event/com.json +0 -4
  249. package/core/com/event/drive.js +0 -133
  250. package/core/com/event/index.js +0 -345
  251. package/core/com/event/script.js +0 -26
  252. package/core/com/eventer/com.js +0 -477
  253. package/core/com/eventer/com.json +0 -4
  254. package/core/com/middleware/com.js +0 -154
  255. package/core/com/middleware/com.json +0 -4
  256. package/core/com/middleware/config.tpl.json +0 -8
  257. package/core/com/middleware/script.js +0 -9
  258. package/core/com/mqtt/com.json +0 -4
  259. package/core/com/mqtt/drive.js +0 -600
  260. package/core/com/mqtt/index.js +0 -572
  261. package/core/com/mqtt/mm_mqtt.js +0 -330
  262. package/core/com/mqtt/script.js +0 -604
  263. package/core/com/msg/com.js +0 -296
  264. package/core/com/msg/com.json +0 -4
  265. package/core/com/nav/com.json +0 -4
  266. package/core/com/nav/config.tpl.json +0 -75
  267. package/core/com/nav/drive.js +0 -549
  268. package/core/com/nav/index.js +0 -182
  269. package/core/com/nav/tpl/admin_pc/page_form.vue +0 -180
  270. package/core/com/nav/tpl/admin_pc/page_view.vue +0 -124
  271. package/core/com/nav/tpl/dev_pc/page_default.vue +0 -247
  272. package/core/com/nav/tpl/dev_pc/page_type.vue +0 -313
  273. package/core/com/nav/tpl/home_pc/page_default.vue +0 -234
  274. package/core/com/nav/tpl/home_pc/page_form.vue +0 -137
  275. package/core/com/nav/tpl/home_pc/page_list.vue +0 -234
  276. package/core/com/nav/tpl/home_pc/page_nav.vue +0 -221
  277. package/core/com/nav/tpl/home_pc/page_type.vue +0 -234
  278. package/core/com/nav/tpl/home_pc/page_view.vue +0 -125
  279. package/core/com/nav/tpl/home_phone/page_channel.vue +0 -234
  280. package/core/com/nav/tpl/home_phone/page_default.vue +0 -234
  281. package/core/com/nav/tpl/home_phone/page_form.vue +0 -137
  282. package/core/com/nav/tpl/home_phone/page_nav.vue +0 -237
  283. package/core/com/nav/tpl/home_phone/page_type.vue +0 -234
  284. package/core/com/nav/tpl/home_phone/page_view.vue +0 -125
  285. package/core/com/nav/viewmodel.js +0 -296
  286. package/core/com/param/drive.js +0 -366
  287. package/core/com/param/index.js +0 -80
  288. package/core/com/param/script.js +0 -12
  289. package/core/com/param/test.js +0 -98
  290. package/core/com/plugin/README.md +0 -3
  291. package/core/com/plugin/com.json +0 -4
  292. package/core/com/plugin/config.tpl.json +0 -26
  293. package/core/com/plugin/drive.js +0 -536
  294. package/core/com/plugin/index.js +0 -259
  295. package/core/com/plugin/script.js +0 -213
  296. package/core/com/rpc/com.json +0 -4
  297. package/core/com/rpc/drive.js +0 -160
  298. package/core/com/rpc/index.js +0 -87
  299. package/core/com/rpc/rpc.js +0 -118
  300. package/core/com/socket/com.json +0 -4
  301. package/core/com/socket/config.tpl.json +0 -14
  302. package/core/com/socket/drive.js +0 -403
  303. package/core/com/socket/index.js +0 -62
  304. package/core/com/socket/script.js +0 -42
  305. package/core/com/sql/drive.js +0 -1087
  306. package/core/com/sql/index.js +0 -83
  307. package/core/com/sql/script.js +0 -48
  308. package/core/com/static/com.json +0 -4
  309. package/core/com/static/drive.js +0 -220
  310. package/core/com/static/index.js +0 -149
  311. package/core/com/static/script.js +0 -28
  312. package/core/com/task/com.json +0 -4
  313. package/core/com/task/drive.js +0 -403
  314. package/core/com/task/index.js +0 -110
  315. package/core/com/task/script.js +0 -37
  316. package/core/com/timer/com.js +0 -217
  317. package/core/com/timer/com.json +0 -4
  318. package/core/com/tpl/com.js +0 -19
  319. package/core/com/tpl/com.json +0 -4
  320. package/lib/actions.js +0 -50
  321. package/lib/base.js +0 -361
  322. package/lib/com.js +0 -29
  323. package/lib/ref.js +0 -121
  324. package/middleware/cors/index.js +0 -119
  325. package/middleware/cors/middleware.json +0 -20
  326. package/middleware/csrf/index.js +0 -202
  327. package/middleware/csrf/middleware.json +0 -24
  328. package/middleware/ip_firewall/index.js +0 -476
  329. package/middleware/ip_firewall/middleware.json +0 -109
  330. package/middleware/mqtt_base/index.js +0 -10
  331. package/middleware/mqtt_base/middleware.json +0 -11
  332. package/middleware/security_audit/index.js +0 -543
  333. package/middleware/security_audit/middleware.json +0 -48
  334. package/middleware/waf/index.js +0 -343
  335. package/middleware/waf/middleware.json +0 -10
  336. package/middleware/waf_ddos/index.js +0 -520
  337. package/middleware/waf_ddos/middleware.json +0 -38
  338. package/middleware/waf_xss/index.js +0 -269
  339. package/middleware/waf_xss/middleware.json +0 -18
  340. package/middleware/web_after/index.js +0 -33
  341. package/middleware/web_after/middleware.json +0 -10
  342. package/middleware/web_base/index.js +0 -90
  343. package/middleware/web_base/middleware.json +0 -10
  344. package/middleware/web_before/index.js +0 -27
  345. package/middleware/web_before/middleware.json +0 -10
  346. package/middleware/web_check/index.js +0 -28
  347. package/middleware/web_check/middleware.json +0 -10
  348. package/middleware/web_main/index.js +0 -28
  349. package/middleware/web_main/middleware.json +0 -10
  350. package/middleware/web_proxy/index.js +0 -37
  351. package/middleware/web_proxy/middleware.json +0 -10
  352. package/middleware/web_render/index.js +0 -87
  353. package/middleware/web_render/middleware.json +0 -10
  354. package/middleware/web_socket/index.js +0 -34
  355. package/middleware/web_socket/middleware.json +0 -10
  356. package/middleware/web_static/index.js +0 -115
  357. package/middleware/web_static/middleware.json +0 -10
  358. /package/{core/com → com}/api/README.md +0 -0
  359. /package/{core/com → com}/db/README.md +0 -0
  360. /package/{core/com → com}/mqtt/README.md +0 -0
  361. /package/{core/com → com}/nav/README.md +0 -0
  362. /package/{core/com → com}/nav/tpl/admin_pc/page_channel.vue +0 -0
  363. /package/{core/com → com}/nav/tpl/admin_pc/page_default.vue +0 -0
  364. /package/{core/com → com}/nav/tpl/admin_pc/page_lang.vue +0 -0
  365. /package/{core/com → com}/nav/tpl/admin_pc/page_nav.vue +0 -0
  366. /package/{core/com → com}/nav/tpl/admin_pc/page_table.vue +0 -0
  367. /package/{core/com → com}/nav/tpl/admin_pc/page_type.vue +0 -0
  368. /package/{core/com → com}/nav/tpl/dev_pc/page_channel.vue +0 -0
  369. /package/{core/com → com}/nav/tpl/dev_pc/page_config.vue +0 -0
  370. /package/{core/com → com}/nav/tpl/dev_pc/page_form.vue +0 -0
  371. /package/{core/com → com}/nav/tpl/dev_pc/page_nav.vue +0 -0
  372. /package/{core/com → com}/nav/tpl/dev_pc/page_table.vue +0 -0
  373. /package/{core/com → com}/nav/tpl/home_pc/page_channel.vue +0 -0
  374. /package/{core/com → com}/nav/tpl/home_phone/page_list.vue +0 -0
  375. /package/{core/com → com}/param/README.md +0 -0
  376. /package/{core/com/cmd → com/pendant}/README.md +0 -0
  377. /package/{core/com → com}/socket/README.md +0 -0
  378. /package/{core/com → com}/sql/README.md +0 -0
  379. /package/{core/com → com}/static/README.md +0 -0
  380. /package/{core/com → com}/task/README.md +0 -0
@@ -1,194 +1,194 @@
1
- <template>
2
- <main id="${id}">
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
- <div class="card_head arrow">
9
- <h5>{{ form[field] ? '修改' : '创建' }}${api.title}</h5>
10
- </div>
11
- <div class="card_body">
12
- <form class="mm_form">
13
- <dl>
14
- <!--{loop field v idx}-->
15
- <!--{if(v.show.form)}-->
16
- <!--{if(v.name !== sql.key)}-->
17
- <!--{if(v.required)}-->
18
- <dt class="required">${v.title}</dt>
19
- <!--{else}-->
20
- <dt>${v.title}</dt>
21
- <!--{/if}-->
22
- <!--{if(v.dataType === 'tinyint')}-->
23
- <dd>
24
- <control_switch v-model="form.${v.name}" />
25
- </dd>
26
- <!--{else if(v.format)}-->
27
- <!--{if(v.format.table)}-->
28
- <dd>
29
- <!--{if(v.format.key.endWith('_id') !== -1)}-->
30
- <control_select type="list" v-model="form.${v.name}"
31
- :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
32
- <!--{else}-->
33
- <control_select v-model="form.${v.name}"
34
- :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
35
- <!--{/if}-->
36
- </dd>
37
- <!--{else}-->
38
- <dd>
39
- <control_select v-model="form.${v.name}"
40
- :options="$to_kv(${v.label})" />
41
- </dd>
42
- <!--{/if}-->
43
- <!--{else if(v.dataType === 'date')}-->
44
- <dd>
45
- <control_input class="time" v-model="form.${v.name}" type="date" />
46
- </dd>
47
- <!--{else if(v.dataType === 'time')}-->
48
- <dd>
49
- <control_input class="time" v-model="form.${v.name}" type="time" />
50
- </dd>
51
- <!--{else if(v.dataType.indexOf('time') !== -1)}-->
52
- <dd>
53
- <control_input class="time" v-model="form.${v.name}" type="datetime-local" />
54
- </dd>
55
- <!--{else if(v.name.indexOf('img') !== -1 || v.name.indexOf('icon') !== -1 || v.name === 'avatar')}-->
56
- <dd>
57
- <control_upload_img width="10rem" height="10rem" name="${v.name}" v-model="form.${v.name}"></control_upload_img>
58
- <control_input class="mt-2" v-model="form.${v.name}" type="text"></control_input>
59
- </dd>
60
- <!--{else if(v.name.indexOf('content') !== -1 || v.dataType.indexOf('longtext') !== -1)}-->
61
- <dd>
62
- <control_rich v-model="form.${v.name}"></control_rich>
63
- </dd>
64
- <!--{else if(v.dataType.indexOf('text') !== -1)}-->
65
- <dd>
66
- <control_textarea v-model="form.${v.name}" type="text"
67
- placeholder="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}">
68
- </control_textarea>
69
- </dd>
70
- <!--{else if(v.type === 'number' && v.name.indexOf('id') === -1)}-->
71
- <dd>
72
- <!--{if(v.number.range && v.number.range.length)}-->
73
- <control_number v-model="form.${v.name}" :min="${v.number.range[0]}" :max="${v.number.range[1]}" />
74
- <!--{else}-->
75
- <control_number v-model="form.${v.name}" :min="${v.number ? v.number.min : -99999999}" :max="${v.number ? v.number.max : 99999999}" />
76
- <!--{/if}-->
77
- </dd>
78
- <!--{else if(v.name === 'value')}-->
79
- <dd>
80
- <control_number v-if="form.control == 'number'" tag="number" v-model="form.${v.name}" />
81
- <control_select v-else-if="form.control == 'select'" tag="select" v-model="form.${v.name}" :mod="form.model" />
82
- <control_checkbox v-else-if="form.control == 'checkbox' || form.control == 'radio'" :tag="form.control" v-model="form.${v.name}" :mod="form.model" />
83
- <control_upload_img v-else-if="form.control == 'image'" width="10rem" height="10rem" name="${v.name}" type="text" v-model="form.${v.name}" ></control_upload_img>
84
- <control_file class="bg_white" v-else-if="form.control == 'file'" accept="*.*" @change="$setFile(form, $event, 'value', false)">
85
- <span>{{form.${v.name}}}</span><a class="btn" v-if="form.${v.name}.indexOf('/') === 0" :href="$url(form.${v.name})"><span>下载</span></a>
86
- </control_file>
87
- <control_com v-else :auto="true" :tag="form.control" v-model="form.${v.name}" />
88
- </dd>
89
- <!--{else}-->
90
- <dd>
91
- <!--{if(v.required)}-->
92
- <control_input v-model="form.${v.name}" :minlength="0"
93
- :maxlength="${v.string ? v.string.max : 0}"
94
- placeholder="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}"
95
- :required="true" />
96
- <!--{else}-->
97
- <control_input v-model="form.${v.name}" :minlength="0"
98
- :maxlength="${v.string ? v.string.max : 0}"
99
- placeholder="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}" />
100
- <!--{/if}-->
101
- </dd>
102
- <!--{/if}-->
103
- <!--{/if}-->
104
- <!--{/if}-->
105
- <!--{/loop}-->
106
- </dl>
107
- </form>
108
- </div>
109
- <div class="card_foot">
110
- <div class="mm_group">
111
- <button class="mm_btn btn_default" type="button" @click="cancel()">返回</button>
112
- <button class="mm_btn btn_primary" type="button" @click="submit()">提交</button>
113
- </div>
114
- </div>
115
- </div>
116
- </div>
117
- </div>
118
- </div>
119
- </div>
120
- </main>
121
- </template>
122
-
123
-
124
- <script>
125
- import control_com from '/src/components/control/control_com.vue';
126
- import mixin from '/src/mixins/page.js';
127
-
128
- export default {
129
- mixins: [mixin],
130
- components: {
131
- control_com
132
- },
133
- data() {
134
- return {
135
- url_add: "${api.path}?method=add",
136
- url_set: "${api.path}?method=set",
137
- url_get_obj: "${api.path}?method=get_obj",
138
- field: "${sql.key}",
139
- query: {
140
- "${sql.key}": 0
141
- },
142
- form: {
143
- /*[loop field v idx]*/
144
- // ${v.title}
145
- /*[if v.type === 'number']*/
146
- "${v.name}": ${v.default ? v.default : 0},
147
- /*[else]*/
148
- "${v.name}": '${v.default !== "0" ? v.default : ""}',
149
- /*[/if]*/
150
- /*[/loop]*/
151
- },
152
- /*[loop js.data v idx]*/
153
- // ${' ' + v.title}
154
- '${v.name}': ${@JSON.stringify(v.value)},
155
- /*[/loop]*/
156
- }
157
- },
158
- methods: {
159
- /*[loop js.data v idx]*/
160
- /*[if(v.path)]*/
161
- /**
162
- * 获取 ${v.title}
163
- * @param {query} 查询条件
164
- */
165
- get_/*[v.basename]*/(query) {
166
- var _this = this;
167
- if (!query) {
168
- query = {
169
- field: "${v.id},${v.field}${v.father_id ? ',' + v.father_id : '' }${v.title_name ? ',title' : '' }"
170
- };
171
- }
172
- this.$get('~${v.path}', query, function(json) {
173
- if (json.result) {
174
- _this/*['.' + v.name]*/.clear();
175
- _this/*['.' + v.name]*/.addList(json.result.list)
176
- }
177
- });
178
- },
179
- /*[/if]*/
180
- /*[/loop]*/
181
- },
182
- created() {
183
- /*[loop js.data v idx]*/
184
- /*[if(v.path)]*/
185
- // 获取 ${v.title}
186
- this.get_/*[v.basename]*/();
187
- /*[/if]*/
188
- /*[/loop]*/
189
- }
190
- }
191
- </script>
192
-
193
- <style>
194
- </style>
1
+ <template>
2
+ <main id="${id}">
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
+ <div class="card_head arrow">
9
+ <h5>{{ form[field] ? '修改' : '创建' }}${api.title}</h5>
10
+ </div>
11
+ <div class="card_body">
12
+ <form class="mm_form">
13
+ <dl>
14
+ <!--{loop field v idx}-->
15
+ <!--{if(v.show.form)}-->
16
+ <!--{if(v.name !== sql.key)}-->
17
+ <!--{if(v.required)}-->
18
+ <dt class="required">${v.title}</dt>
19
+ <!--{else}-->
20
+ <dt>${v.title}</dt>
21
+ <!--{/if}-->
22
+ <!--{if(v.dataType === 'tinyint')}-->
23
+ <dd>
24
+ <control_switch v-model="form.${v.name}" />
25
+ </dd>
26
+ <!--{else if(v.format)}-->
27
+ <!--{if(v.format.table)}-->
28
+ <dd>
29
+ <!--{if(v.format.key.endWith('_id') !== -1)}-->
30
+ <control_select type="list" v-model="form.${v.name}"
31
+ :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
32
+ <!--{else}-->
33
+ <control_select v-model="form.${v.name}"
34
+ :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
35
+ <!--{/if}-->
36
+ </dd>
37
+ <!--{else}-->
38
+ <dd>
39
+ <control_select v-model="form.${v.name}"
40
+ :options="$to_kv(${v.label})" />
41
+ </dd>
42
+ <!--{/if}-->
43
+ <!--{else if(v.dataType === 'date')}-->
44
+ <dd>
45
+ <control_input class="time" v-model="form.${v.name}" type="date" />
46
+ </dd>
47
+ <!--{else if(v.dataType === 'time')}-->
48
+ <dd>
49
+ <control_input class="time" v-model="form.${v.name}" type="time" />
50
+ </dd>
51
+ <!--{else if(v.dataType.indexOf('time') !== -1)}-->
52
+ <dd>
53
+ <control_input class="time" v-model="form.${v.name}" type="datetime-local" />
54
+ </dd>
55
+ <!--{else if(v.name.indexOf('img') !== -1 || v.name.indexOf('icon') !== -1 || v.name === 'avatar')}-->
56
+ <dd>
57
+ <control_upload_img width="10rem" height="10rem" name="${v.name}" v-model="form.${v.name}"></control_upload_img>
58
+ <control_input class="mt-2" v-model="form.${v.name}" type="text"></control_input>
59
+ </dd>
60
+ <!--{else if(v.name.indexOf('content') !== -1 || v.dataType.indexOf('longtext') !== -1)}-->
61
+ <dd>
62
+ <control_rich v-model="form.${v.name}"></control_rich>
63
+ </dd>
64
+ <!--{else if(v.dataType.indexOf('text') !== -1)}-->
65
+ <dd>
66
+ <control_textarea v-model="form.${v.name}" type="text"
67
+ placeholder="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}">
68
+ </control_textarea>
69
+ </dd>
70
+ <!--{else if(v.type === 'number' && v.name.indexOf('id') === -1)}-->
71
+ <dd>
72
+ <!--{if(v.number.range && v.number.range.length)}-->
73
+ <control_number v-model="form.${v.name}" :min="${v.number.range[0]}" :max="${v.number.range[1]}" />
74
+ <!--{else}-->
75
+ <control_number v-model="form.${v.name}" :min="${v.number ? v.number.min : -99999999}" :max="${v.number ? v.number.max : 99999999}" />
76
+ <!--{/if}-->
77
+ </dd>
78
+ <!--{else if(v.name === 'value')}-->
79
+ <dd>
80
+ <control_number v-if="form.control == 'number'" tag="number" v-model="form.${v.name}" />
81
+ <control_select v-else-if="form.control == 'select'" tag="select" v-model="form.${v.name}" :mod="form.model" />
82
+ <control_checkbox v-else-if="form.control == 'checkbox' || form.control == 'radio'" :tag="form.control" v-model="form.${v.name}" :mod="form.model" />
83
+ <control_upload_img v-else-if="form.control == 'image'" width="10rem" height="10rem" name="${v.name}" type="text" v-model="form.${v.name}" ></control_upload_img>
84
+ <control_file class="bg_white" v-else-if="form.control == 'file'" accept="*.*" @change="$setFile(form, $event, 'value', false)">
85
+ <span>{{form.${v.name}}}</span><a class="btn" v-if="form.${v.name}.indexOf('/') === 0" :href="$url(form.${v.name})"><span>下载</span></a>
86
+ </control_file>
87
+ <control_com v-else :auto="true" :tag="form.control" v-model="form.${v.name}" />
88
+ </dd>
89
+ <!--{else}-->
90
+ <dd>
91
+ <!--{if(v.required)}-->
92
+ <control_input v-model="form.${v.name}" :minlength="0"
93
+ :maxlength="${v.string ? v.string.max : 0}"
94
+ placeholder="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}"
95
+ :required="true" />
96
+ <!--{else}-->
97
+ <control_input v-model="form.${v.name}" :minlength="0"
98
+ :maxlength="${v.string ? v.string.max : 0}"
99
+ placeholder="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}" />
100
+ <!--{/if}-->
101
+ </dd>
102
+ <!--{/if}-->
103
+ <!--{/if}-->
104
+ <!--{/if}-->
105
+ <!--{/loop}-->
106
+ </dl>
107
+ </form>
108
+ </div>
109
+ <div class="card_foot">
110
+ <div class="mm_group">
111
+ <button class="mm_btn btn_default" type="button" @click="cancel()">返回</button>
112
+ <button class="mm_btn btn_primary" type="button" @click="submit()">提交</button>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ </main>
121
+ </template>
122
+
123
+
124
+ <script>
125
+ import control_com from '/src/components/control/control_com.vue';
126
+ import mixin from '/src/mixins/page.js';
127
+
128
+ export default {
129
+ mixins: [mixin],
130
+ components: {
131
+ control_com
132
+ },
133
+ data() {
134
+ return {
135
+ url_add: "${api.path}?method=add",
136
+ url_set: "${api.path}?method=set",
137
+ url_get_obj: "${api.path}?method=get_obj",
138
+ field: "${sql.key}",
139
+ query: {
140
+ "${sql.key}": 0
141
+ },
142
+ form: {
143
+ /*[loop field v idx]*/
144
+ // ${v.title}
145
+ /*[if v.type === 'number']*/
146
+ "${v.name}": ${v.default ? v.default : 0},
147
+ /*[else]*/
148
+ "${v.name}": '${v.default !== "0" ? v.default : ""}',
149
+ /*[/if]*/
150
+ /*[/loop]*/
151
+ },
152
+ /*[loop js.data v idx]*/
153
+ // ${' ' + v.title}
154
+ '${v.name}': ${@JSON.stringify(v.value)},
155
+ /*[/loop]*/
156
+ }
157
+ },
158
+ methods: {
159
+ /*[loop js.data v idx]*/
160
+ /*[if(v.path)]*/
161
+ /**
162
+ * 获取 ${v.title}
163
+ * @param {query} 查询条件
164
+ */
165
+ get_/*[v.basename]*/(query) {
166
+ var _this = this;
167
+ if (!query) {
168
+ query = {
169
+ field: "${v.id},${v.field}${v.father_id ? ',' + v.father_id : '' }${v.title_name ? ',title' : '' }"
170
+ };
171
+ }
172
+ this.$get('~${v.path}', query, function(json) {
173
+ if (json.result) {
174
+ _this/*['.' + v.name]*/.clear();
175
+ _this/*['.' + v.name]*/.addList(json.result.list)
176
+ }
177
+ });
178
+ },
179
+ /*[/if]*/
180
+ /*[/loop]*/
181
+ },
182
+ created() {
183
+ /*[loop js.data v idx]*/
184
+ /*[if(v.path)]*/
185
+ // 获取 ${v.title}
186
+ this.get_/*[v.basename]*/();
187
+ /*[/if]*/
188
+ /*[/loop]*/
189
+ }
190
+ }
191
+ </script>
192
+
193
+ <style>
194
+ </style>
@@ -0,0 +1,180 @@
1
+ <template>
2
+ <main id="${id}">
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
+ <div class="card_head arrow">
9
+ <h5>{{ form[field] ? '修改' : '创建' }}${api.title}</h5>
10
+ </div>
11
+ <div class="card_body">
12
+ <form class="mm_form">
13
+ <dl>
14
+ <!--{loop field v idx}-->
15
+ <!--{if(v.show.form)}-->
16
+ <!--{if(v.name !== sql.key)}-->
17
+ <!--{if(v.required)}-->
18
+ <dt class="required">${v.title}</dt>
19
+ <!--{else}-->
20
+ <dt>${v.title}</dt>
21
+ <!--{/if}-->
22
+ <!--{if(v.dataType === 'tinyint')}-->
23
+ <dd>
24
+ <control_switch v-model="form.${v.name}" />
25
+ </dd>
26
+ <!--{else if(v.format)}-->
27
+ <!--{if(v.format.table)}-->
28
+ <dd>
29
+ <!--{if(v.format.key.endWith('_id') !== -1)}-->
30
+ <control_select type="list" v-model="form.${v.name}"
31
+ :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
32
+ <!--{else}-->
33
+ <control_select v-model="form.${v.name}"
34
+ :options="$to_kv(${v.label}, '${v.format.id || v.format.key}', '${v.format.name}')" />
35
+ <!--{/if}-->
36
+ </dd>
37
+ <!--{else}-->
38
+ <dd>
39
+ <control_select v-model="form.${v.name}"
40
+ :options="$to_kv(${v.label})" />
41
+ </dd>
42
+ <!--{/if}-->
43
+ <!--{else if(v.dataType === 'date')}-->
44
+ <dd>
45
+ <div class="mm_time" v-model="form.${v.name}" type="date"></div>
46
+ </dd>
47
+ <!--{else if(v.dataType === 'time')}-->
48
+ <dd>
49
+ <div class="mm_time" v-model="form.${v.name}" type="time"></div>
50
+ </dd>
51
+ <!--{else if(v.dataType.indexOf('time') !== -1)}-->
52
+ <dd>
53
+ <div class="mm_time" v-model="form.${v.name}" type="datetime-local"></div>
54
+ </dd>
55
+ <!--{else if(v.name.indexOf('img') !== -1 || v.name.indexOf('icon') !== -1 || v.name === 'avatar')}-->
56
+ <dd>
57
+ <div class="mm_upload_img" width="10rem" height="10rem" name="${v.name}" type="text"
58
+ v-model="form.${v.name}"></div>
59
+ </dd>
60
+ <!--{else if(v.name.indexOf('content') !== -1 || v.dataType.indexOf('longtext') !== -1)}-->
61
+ <dd>
62
+ <control_rich v-model="form.${v.name}"></control_rich>
63
+ </dd>
64
+ <!--{else if(v.dataType.indexOf('text') !== -1)}-->
65
+ <dd>
66
+ <control_textarea v-model="form.${v.name}" type="text"
67
+ placeholder="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}">
68
+ </control_textarea>
69
+ </dd>
70
+ <!--{else if(v.type === 'number' && v.name.indexOf('id') === -1)}-->
71
+ <dd>
72
+ <!--{if(v.number.range && v.number.range.length)}-->
73
+ <control_number v-model="form.${v.name}" :min="${v.number.range[0]}" :max="${v.number.range[1]}" />
74
+ <!--{else}-->
75
+ <control_number v-model="form.${v.name}" :min="${v.number ? v.number.min : -99999999}" :max="${v.number ? v.number.max : 99999999}" />
76
+ <!--{/if}-->
77
+ </dd>
78
+ <!--{else}-->
79
+ <dd>
80
+ <!--{if(v.required)}-->
81
+ <control_input v-model="form.${v.name}" :minlength="0"
82
+ :maxlength="${v.string ? v.string.max : 0}"
83
+ placeholder="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}"
84
+ :required="true" />
85
+ <!--{else}-->
86
+ <control_input v-model="form.${v.name}" :minlength="0"
87
+ :maxlength="${v.string ? v.string.max : 0}"
88
+ placeholder="${v.description.replace(/\([0-9A-Za-z_]+\)/g, '').replace('用于搜索', '').replace(/、/g, ' / ')}" />
89
+ <!--{/if}-->
90
+ </dd>
91
+ <!--{/if}-->
92
+ <!--{/if}-->
93
+ <!--{/if}-->
94
+ <!--{/loop}-->
95
+ </dl>
96
+ </form>
97
+ </div>
98
+ <div class="card_foot">
99
+ <div class="mm_group">
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
+ </div>
103
+ </div>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ </main>
110
+ </template>
111
+
112
+
113
+ <script>
114
+ import mixin from '/src/mixins/page.js';
115
+
116
+ export default {
117
+ mixins: [mixin],
118
+ components: {},
119
+ data() {
120
+ return {
121
+ url_add: "${api.path}?method=add",
122
+ url_set: "${api.path}?method=set",
123
+ url_get_obj: "${api.path}?method=get_obj",
124
+ field: "${sql.key}",
125
+ query: {
126
+ "${sql.key}": 0
127
+ },
128
+ form: {
129
+ /*[loop field v idx]*/
130
+ // ${v.title}
131
+ /*[if v.type === 'number']*/
132
+ "${v.name}": ${v.default ? v.default : 0},
133
+ /*[else]*/
134
+ "${v.name}": '${v.default !== "0" ? v.default : ""}',
135
+ /*[/if]*/
136
+ /*[/loop]*/
137
+ },
138
+ /*[loop js.data v idx]*/
139
+ // ${' ' + v.title}
140
+ '${v.name}': ${@JSON.stringify(v.value)},
141
+ /*[/loop]*/
142
+ }
143
+ },
144
+ methods: {
145
+ /*[loop js.data v idx]*/
146
+ /*[if(v.path)]*/
147
+ /**
148
+ * 获取 ${v.title}
149
+ * @param {query} 查询条件
150
+ */
151
+ get_/*[v.basename]*/(query) {
152
+ var _this = this;
153
+ if (!query) {
154
+ query = {
155
+ field: "${v.id},${v.field}${v.father_id ? ',' + v.father_id : '' }${v.title_name ? ',title' : '' }"
156
+ };
157
+ }
158
+ this.$get('~${v.path}', query, function(json) {
159
+ if (json.result) {
160
+ _this/*['.' + v.name]*/.clear();
161
+ _this/*['.' + v.name]*/.addList(json.result.list)
162
+ }
163
+ });
164
+ },
165
+ /*[/if]*/
166
+ /*[/loop]*/
167
+ },
168
+ created() {
169
+ /*[loop js.data v idx]*/
170
+ /*[if(v.path)]*/
171
+ // 获取 ${v.title}
172
+ this.get_/*[v.basename]*/();
173
+ /*[/if]*/
174
+ /*[/loop]*/
175
+ }
176
+ }
177
+ </script>
178
+
179
+ <style>
180
+ </style>