From 170c4eb4f7d822c7056ab569d4827b10118f3f79 Mon Sep 17 00:00:00 2001 From: boi Date: Fri, 16 May 2025 01:00:48 +0800 Subject: [PATCH] Initial --- .gitignore | 23 + .vscode/launch.json | 18 + .vscode/settings.json | 4 + .vscode/tasks.json | 18 + LICENSE | 117 + README.md | 113 + cdn.cfg | 4 + cert/.gitkeep | 0 fapp/ciyon_ap/.hbuilderx/launch.json | 32 + fapp/ciyon_ap/App.vue | 228 + .../ciy-aicameraocr/ciy-aicameraocr.vue | 272 + .../components/ciy-aivoice/ciy-aivoice.vue | 105 + .../components/ciy-alert/ciy-alert.vue | 166 + fapp/ciyon_ap/components/ciy-ani/ciy-ani.vue | 49 + .../components/ciy-anipop/ciy-anipop.vue | 193 + .../components/ciy-audio/ciy-audio.vue | 216 + .../ciyon_ap/components/ciy-auth/ciy-auth.vue | 407 + .../components/ciy-btreader/ciy-btreader.vue | 187 + .../components/ciy-calendar/ciy-calendar.vue | 558 + .../ciy-cameraqrcode/ciy-cameraqrcode.vue | 451 + .../components/ciy-capcode/ciy-capcode.vue | 111 + .../ciy-chart-pie/ciy-chart-pie.vue | 74 + .../components/ciy-checkbox/ciy-checkbox.vue | 265 + .../ciy-checkitem/ciy-checkitem.vue | 213 + .../components/ciy-dialog/ciy-dialog.vue | 96 + .../components/ciy-gesture/ciy-gesture.vue | 89 + .../components/ciy-handsign/ciy-handsign.vue | 499 + .../components/ciy-header/ciy-header.vue | 185 + .../components/ciy-input/ciy-input.vue | 150 + .../components/ciy-inputbet/ciy-inputbet.vue | 190 + .../components/ciy-inputcyc/ciy-inputcyc.vue | 202 + .../ciy-inputdaterange/ciy-inputdaterange.vue | 185 + .../ciy-inputdatetime/ciy-inputdatetime.vue | 539 + .../ciy-inputnumber/ciy-inputnumber.vue | 153 + .../components/ciy-inputocr/ciy-inputocr.vue | 189 + .../ciy-inputtimepoint/ciy-inputtimepoint.vue | 144 + .../ciy-inputunitedit/ciy-inputunitedit.vue | 188 + .../components/ciy-listend/ciy-listend.vue | 74 + .../ciy-machinecheck/ciy-machinecheck.vue | 69 + .../components/ciy-markdown/ciy-markdown.vue | 171 + .../components/ciy-mdedit/ciy-mdedit.vue | 423 + .../components/ciy-movable/ciy-movable.vue | 262 + .../components/ciy-popmenu/ciy-popmenu.vue | 118 + .../components/ciy-query/ciy-query.vue | 343 + .../components/ciy-radiobox/ciy-radiobox.vue | 194 + .../components/ciy-ratestar/ciy-ratestar.vue | 134 + .../ciy-searchbar/ciy-searchbar.vue | 103 + .../components/ciy-segment/ciy-segment.vue | 163 + .../components/ciy-selbool/ciy-selbool.vue | 289 + .../components/ciy-selcas/ciy-selcas.vue | 404 + .../components/ciy-select/ciy-select.vue | 460 + .../components/ciy-selmap/ciy-selmap.vue | 209 + .../components/ciy-selpage/ciy-selpage.vue | 183 + .../components/ciy-showimgs/ciy-showimgs.vue | 129 + .../components/ciy-shownum/ciy-shownum.vue | 114 + .../components/ciy-slider/ciy-slider.vue | 83 + .../components/ciy-svgimg/ciy-svgimg.vue | 87 + .../ciy-swipelist/ciy-swipelist.vue | 118 + .../components/ciy-swiper/ciy-swiper.vue | 194 + .../components/ciy-switch/ciy-switch.vue | 283 + .../components/ciy-tabbar/ciy-tabbar.vue | 146 + .../ciyon_ap/components/ciy-test/ciy-test.vue | 66 + .../components/ciy-textarea/ciy-textarea.vue | 145 + .../components/ciy-textmore/ciy-textmore.vue | 85 + .../components/ciy-toast/ciy-toast.vue | 71 + .../components/ciy-upload/ciy-upload.vue | 680 + .../components/diy-xxlist/diy-xxlist.vue | 63 + fapp/ciyon_ap/defpages.json | 31 + fapp/ciyon_ap/index.html | 20 + fapp/ciyon_ap/main.js | 38 + fapp/ciyon_ap/manifest.json | 173 + fapp/ciyon_ap/pages.json | 371 + fapp/ciyon_ap/pages/demo/case/comlife.vue | 60 + fapp/ciyon_ap/pages/demo/case/dict.vue | 100 + fapp/ciyon_ap/pages/demo/case/pagecal.vue | 70 + fapp/ciyon_ap/pages/demo/case/pagefix.vue | 238 + fapp/ciyon_ap/pages/demo/case/promise.vue | 63 + fapp/ciyon_ap/pages/demo/case/proxy.vue | 64 + fapp/ciyon_ap/pages/demo/case/vproject.vue | 53 + fapp/ciyon_ap/pages/demo/comform/calendar.vue | 208 + fapp/ciyon_ap/pages/demo/comform/capcode.vue | 131 + fapp/ciyon_ap/pages/demo/comform/checkbox.vue | 192 + .../ciyon_ap/pages/demo/comform/checkitem.vue | 163 + fapp/ciyon_ap/pages/demo/comform/define.vue | 87 + fapp/ciyon_ap/pages/demo/comform/handsign.vue | 149 + fapp/ciyon_ap/pages/demo/comform/input.vue | 195 + fapp/ciyon_ap/pages/demo/comform/inputbet.vue | 177 + fapp/ciyon_ap/pages/demo/comform/inputcyc.vue | 124 + .../pages/demo/comform/inputdaterange.vue | 165 + .../pages/demo/comform/inputdatetime.vue | 188 + .../pages/demo/comform/inputnumber.vue | 121 + .../pages/demo/comform/inputtimepoint.vue | 142 + .../pages/demo/comform/inputunitedit.vue | 113 + fapp/ciyon_ap/pages/demo/comform/radiobox.vue | 164 + fapp/ciyon_ap/pages/demo/comform/ratestar.vue | 140 + fapp/ciyon_ap/pages/demo/comform/selbool.vue | 168 + fapp/ciyon_ap/pages/demo/comform/selcas.vue | 226 + fapp/ciyon_ap/pages/demo/comform/select.vue | 334 + fapp/ciyon_ap/pages/demo/comform/selmap.vue | 134 + fapp/ciyon_ap/pages/demo/comform/selpage.vue | 184 + fapp/ciyon_ap/pages/demo/comform/slider.vue | 96 + fapp/ciyon_ap/pages/demo/comform/switch.vue | 168 + fapp/ciyon_ap/pages/demo/comform/textarea.vue | 163 + fapp/ciyon_ap/pages/demo/comform/upload.vue | 308 + fapp/ciyon_ap/pages/demo/comview/alert.vue | 242 + fapp/ciyon_ap/pages/demo/comview/ani.vue | 191 + fapp/ciyon_ap/pages/demo/comview/anipop.vue | 156 + fapp/ciyon_ap/pages/demo/comview/audio.vue | 131 + fapp/ciyon_ap/pages/demo/comview/auth.vue | 91 + .../ciyon_ap/pages/demo/comview/cameraocr.vue | 136 + fapp/ciyon_ap/pages/demo/comview/gesture.vue | 110 + fapp/ciyon_ap/pages/demo/comview/header.vue | 102 + fapp/ciyon_ap/pages/demo/comview/listend.vue | 120 + fapp/ciyon_ap/pages/demo/comview/markdown.vue | 85 + fapp/ciyon_ap/pages/demo/comview/movable.vue | 155 + fapp/ciyon_ap/pages/demo/comview/popmenu.vue | 161 + fapp/ciyon_ap/pages/demo/comview/query.vue | 172 + .../ciyon_ap/pages/demo/comview/searchbar.vue | 90 + fapp/ciyon_ap/pages/demo/comview/segment.vue | 132 + fapp/ciyon_ap/pages/demo/comview/showimgs.vue | 103 + fapp/ciyon_ap/pages/demo/comview/shownum.vue | 79 + fapp/ciyon_ap/pages/demo/comview/svgimg.vue | 86 + .../ciyon_ap/pages/demo/comview/swipelist.vue | 93 + fapp/ciyon_ap/pages/demo/comview/swiper.vue | 89 + fapp/ciyon_ap/pages/demo/comview/tabbar.vue | 125 + fapp/ciyon_ap/pages/demo/comview/textmore.vue | 81 + fapp/ciyon_ap/pages/demo/comview/toast.vue | 101 + fapp/ciyon_ap/pages/demo/css/chart_pie.vue | 54 + fapp/ciyon_ap/pages/demo/css/cssdemo.vue | 218 + fapp/ciyon_ap/pages/demo/css/grid.vue | 22 + fapp/ciyon_ap/pages/demo/css/pageflex.vue | 36 + fapp/ciyon_ap/pages/demo/css/skeleton.vue | 39 + fapp/ciyon_ap/pages/demo/css/tailwind.vue | 106 + fapp/ciyon_ap/pages/demo/css/waterfall.vue | 40 + fapp/ciyon_ap/pages/demo/css/zindex.vue | 42 + fapp/ciyon_ap/pages/demo/curd/demo_edit.vue | 300 + fapp/ciyon_ap/pages/demo/curd/demo_list.vue | 347 + fapp/ciyon_ap/pages/demo/curd/me.vue | 215 + fapp/ciyon_ap/pages/demo/index.vue | 467 + fapp/ciyon_ap/pages/demo/page/func.vue | 807 + fapp/ciyon_ap/pages/demo/page/lang.vue | 291 + fapp/ciyon_ap/pages/demo/page/oldfont.vue | 81 + fapp/ciyon_ap/pages/demo/page/sysinfo.vue | 86 + fapp/ciyon_ap/pages/demo/page/theme.vue | 91 + fapp/ciyon_ap/pages/demo/test.vue | 65 + fapp/ciyon_ap/pages/demo/zdemo.css | 106 + fapp/ciyon_ap/pages/demo/zmixin.js | 50 + fapp/ciyon_ap/pages/main/index.vue | 138 + fapp/ciyon_ap/pages/main/me.vue | 401 + fapp/ciyon_ap/pages/main/me_cash.vue | 131 + fapp/ciyon_ap/pages/main/me_cash_bank.vue | 90 + fapp/ciyon_ap/pages/main/me_cash_in.vue | 93 + fapp/ciyon_ap/pages/main/me_cash_out.vue | 87 + fapp/ciyon_ap/pages/main/me_info.vue | 107 + fapp/ciyon_ap/pages/main/me_invoice.vue | 94 + .../pages/main/me_invoice_history.vue | 102 + fapp/ciyon_ap/pages/main/me_invoicetitle.vue | 221 + fapp/ciyon_ap/pages/main/me_passchange.vue | 68 + fapp/ciyon_ap/pages/main/me_pnt.vue | 138 + fapp/ciyon_ap/pages/main/me_pnt_buy.vue | 100 + fapp/ciyon_ap/pages/main/me_pnt_record.vue | 70 + fapp/ciyon_ap/pages/main/me_problechat.vue | 209 + fapp/ciyon_ap/pages/main/me_problem.vue | 142 + fapp/ciyon_ap/pages/main/me_qrcode.vue | 37 + fapp/ciyon_ap/pages/main/me_real.vue | 212 + fapp/ciyon_ap/pages/main/me_shipaddr.vue | 251 + fapp/ciyon_ap/pages/main/me_suggest.vue | 90 + fapp/ciyon_ap/pages/main/paper.vue | 41 + fapp/ciyon_ap/pages/main/part.vue | 93 + fapp/ciyon_ap/pages/main/psection.vue | 76 + fapp/ciyon_ap/pages/pub/camera.vue | 59 + fapp/ciyon_ap/pages/pub/web.vue | 32 + fapp/ciyon_ap/prod.css | 0 fapp/ciyon_ap/uni.scss | 76 + fapp/ciyon_ap/util/ciy.js | 2515 +++ fapp/ciyon_ap/util/gcoord.js | 8 + fapp/ciyon_ap/util/lang/en.json | 102 + fapp/ciyon_ap/util/lang/fr.json | 103 + fapp/ciyon_ap/util/lang/ja.json | 105 + fapp/ciyon_ap/util/lang/zh-Hans.json | 105 + fapp/ciyon_ap/util/lang/zh-Hant.json | 105 + fapp/ciyon_ap/util/langload.js | 12 + fapp/ciyon_ap/util/md5.js | 259 + fapp/ciyon_ap/util/style.css | 1241 ++ fapp/ciyon_ap/vite.config.js | 43 + fapp/ciyon_xa/vite.config.js | 43 + fapp/ciyon_xb/vite.config.js | 43 + fapp/h5_ap.bat | 4 + go.mod | 9 + go.sum | 5 + gobuild.bat | 4 + log/.gitkeep | 0 main.go | 216 + route_adm.go | 177 + test/xx2_test.go | 9 + test/xx_test.go | 16 + test_ok.go | 275 + web.ini.temp | 52 + web/admin/ap/art_post.html | 230 + web/admin/ap/art_post.php | 540 + web/admin/ap/art_section.html | 156 + web/admin/ap/art_section.php | 185 + web/admin/ap/art_vent.html | 99 + web/admin/ap/art_vent.php | 197 + web/admin/ap/banner.html | 140 + web/admin/ap/banner.php | 127 + web/admin/ap/cash_in.html | 95 + web/admin/ap/cash_in.php | 185 + web/admin/ap/cash_out_1.html | 147 + web/admin/ap/cash_out_1.php | 216 + web/admin/ap/cash_out_2.html | 140 + web/admin/ap/cash_out_2.php | 168 + web/admin/ap/demo.go | 1177 ++ web/admin/ap/demo.html | 846 + web/admin/ap/demo.php | 991 + web/admin/ap/paper.go | 198 + web/admin/ap/paper.html | 192 + web/admin/ap/paper.php | 182 + web/admin/ap/pnt_bundle.html | 173 + web/admin/ap/pnt_bundle.php | 333 + web/admin/ap/pnt_buy.html | 87 + web/admin/ap/pnt_buy.php | 186 + web/admin/ap/pnt_record.html | 86 + web/admin/ap/pnt_record.php | 153 + web/admin/ap/pnt_track.html | 164 + web/admin/ap/pnt_track.php | 181 + web/admin/ap/user.html | 320 + web/admin/ap/user.php | 272 + web/admin/ap/user_service.html | 60 + web/admin/ap/user_service.php | 272 + web/admin/ap/usr_buy_bundle.html | 187 + web/admin/ap/usr_buy_bundle.php | 368 + web/admin/ap/usr_buy_user.html | 94 + web/admin/ap/usr_buy_user.php | 215 + web/admin/ap/usr_capcode.html | 79 + web/admin/ap/usr_capcode.php | 124 + web/admin/ap/usr_invoicetitle.html | 177 + web/admin/ap/usr_invoicetitle.php | 199 + web/admin/ap/usr_invoicing.html | 188 + web/admin/ap/usr_invoicing.php | 228 + web/admin/ap/usr_problem.html | 152 + web/admin/ap/usr_problem.php | 229 + web/admin/ap/usr_real_apply.html | 173 + web/admin/ap/usr_real_apply.php | 228 + web/admin/ap/usr_shipaddr.html | 165 + web/admin/ap/usr_shipaddr.php | 194 + web/admin/ap/usr_suggest.html | 195 + web/admin/ap/usr_suggest.php | 198 + web/admin/autotask/at_ai.php | 89 + web/admin/autotask/at_base.go | 227 + web/admin/autotask/at_base.php | 242 + web/admin/autotask/run.php | 12 + web/admin/autotask/task.go | 208 + web/admin/autotask/task.php | 192 + web/admin/cemap/bill.html | 162 + web/admin/cemap/bill.php | 149 + web/admin/cemap/ceeditor.html | 1202 ++ web/admin/cemap/ceeditor.php | 101 + web/admin/cemap/cemap.html | 164 + web/admin/cemap/cemap.php | 24 + web/admin/cemap/glb.html | 244 + web/admin/cemap/glb.php | 158 + web/admin/cemap/glb_thumb.html | 100 + web/admin/cemap/pathbill.html | 331 + web/admin/cemap/pathbill.php | 152 + web/admin/cemap/pathglb.html | 331 + web/admin/cemap/pathglb.php | 152 + web/admin/common.go | 211 + web/admin/common.js | 8 + web/admin/common.php | 225 + web/admin/datasse/expo.php | 150 + web/admin/datasse/imgs.php | 45 + web/admin/datasse/index.go | 73 + web/admin/datasse/index.html | 64 + web/admin/datasse/index.php | 24 + web/admin/demo/bs/b64/bank1_c1.js | 40 + web/admin/demo/bs/b64/bank1_c2.js | 96 + web/admin/demo/bs/b64/bank1_l1.js | 141 + web/admin/demo/bs/b64/bank1_l2.js | 114 + web/admin/demo/bs/b64/bank1_l3.js | 137 + web/admin/demo/bs/b64/bank1_r1.js | 153 + web/admin/demo/bs/b64/bank1_r2.js | 121 + web/admin/demo/bs/b64/bank1_r3.js | 139 + web/admin/demo/bs/b64/cesiumbg.png | Bin 0 -> 3324093 bytes web/admin/demo/bs/b64/farm1_bg_cemap.js | 98 + web/admin/demo/bs/b64/farm1_c1.js | 26 + web/admin/demo/bs/b64/farm1_l1.js | 54 + web/admin/demo/bs/b64/farm1_l2.js | 50 + web/admin/demo/bs/b64/farm1_l3.js | 73 + web/admin/demo/bs/b64/farm1_r1.js | 91 + web/admin/demo/bs/b64/farm1_r2.js | 86 + web/admin/demo/bs/b64/farm1_r3.js | 115 + web/admin/demo/bs/b64/nozz.jpg | Bin 0 -> 22154 bytes web/admin/demo/bs/b64/video1_c1.js | 49 + web/admin/demo/bs/index.html | 325 + web/admin/demo/bs/index.php | 125 + web/admin/demo/demo_ajax.html | 146 + web/admin/demo/demo_alert.html | 221 + web/admin/demo/demo_alertcb.html | 46 + web/admin/demo/demo_css.html | 129 + web/admin/demo/demo_cssn.html | 50 + web/admin/demo/demo_dom.html | 336 + web/admin/demo/demo_drag.html | 117 + web/admin/demo/demo_flip.html | 67 + web/admin/demo/demo_jq.html | 36 + web/admin/demo/demo_proxy.html | 41 + web/admin/demo/demo_shadow.html | 47 + web/admin/demo/demo_showend.html | 67 + web/admin/demo/demo_tabcard.html | 88 + web/admin/demo/demo_toast.html | 92 + web/admin/demo/dyn/openai.html | 97 + web/admin/demo/dyn/openai.php | 65 + web/admin/demo/dyn/sse.html | 73 + web/admin/demo/dyn/sse.php | 120 + web/admin/demo/form_checkbox.html | 77 + web/admin/demo/form_daterange.html | 64 + web/admin/demo/form_datetime.html | 64 + web/admin/demo/form_inputbet.html | 63 + web/admin/demo/form_inputcyc.html | 62 + web/admin/demo/form_inputunitedit.html | 62 + web/admin/demo/form_map.html | 62 + web/admin/demo/form_md.html | 51 + web/admin/demo/form_radio.html | 69 + web/admin/demo/form_selcas.html | 80 + web/admin/demo/form_select.html | 79 + web/admin/demo/form_selmulti.html | 80 + web/admin/demo/form_switch.html | 65 + web/admin/demo/form_textarea.html | 61 + web/admin/demo/form_timepoint.html | 65 + web/admin/demo/form_upload.html | 97 + web/admin/demo/index.html | 208 + web/admin/develop/code_common.php | 65 + web/admin/develop/code_create.html | 769 + web/admin/develop/code_create.php | 190 + web/admin/develop/code_list.html | 161 + web/admin/develop/code_list.php | 75 + web/admin/develop/code_mb_vue3.php | 613 + web/admin/develop/code_pc_html.php | 852 + web/admin/develop/code_pc_php.php | 1230 ++ web/admin/develop/note.html | 56 + web/admin/develop/note.php | 77 + web/admin/index.html | 187 + web/admin/login.go | 163 + web/admin/login.php | 129 + web/admin/manage.go | 175 + web/admin/manage.html | 998 + web/admin/manage.php | 69 + web/admin/rigger/admin.go | 634 + web/admin/rigger/admin.html | 251 + web/admin/rigger/admin.php | 525 + web/admin/rigger/autotask.go | 226 + web/admin/rigger/autotask.html | 194 + web/admin/rigger/autotask.php | 190 + web/admin/rigger/autotskrun.go | 222 + web/admin/rigger/autotskrun.html | 94 + web/admin/rigger/autotskrun.php | 175 + web/admin/rigger/cata.go | 244 + web/admin/rigger/cata.html | 302 + web/admin/rigger/cata.php | 314 + web/admin/rigger/cataindex.go | 177 + web/admin/rigger/cataindex.html | 202 + web/admin/rigger/cataindex.php | 147 + web/admin/rigger/chgpass.go | 58 + web/admin/rigger/chgpass.html | 101 + web/admin/rigger/chgpass.php | 51 + web/admin/rigger/config.go | 170 + web/admin/rigger/config.html | 116 + web/admin/rigger/config.php | 136 + web/admin/rigger/crawtable.html | 59 + web/admin/rigger/crawtable.php | 49 + web/admin/rigger/debug_user.go | 225 + web/admin/rigger/debug_user.html | 182 + web/admin/rigger/debug_user.php | 180 + web/admin/rigger/depart.go | 203 + web/admin/rigger/depart.html | 338 + web/admin/rigger/depart.php | 178 + web/admin/rigger/funcslow.go | 190 + web/admin/rigger/funcslow.html | 91 + web/admin/rigger/funcslow.php | 152 + web/admin/rigger/logdb.go | 171 + web/admin/rigger/logdb.html | 113 + web/admin/rigger/logdb.php | 151 + web/admin/rigger/logfile.go | 137 + web/admin/rigger/logfile.html | 123 + web/admin/rigger/logfile.php | 84 + web/admin/rigger/menu.go | 341 + web/admin/rigger/menu.html | 397 + web/admin/rigger/menu.php | 286 + web/admin/rigger/mock.go | 198 + web/admin/rigger/mock.html | 161 + web/admin/rigger/mock.php | 154 + web/admin/rigger/online.go | 136 + web/admin/rigger/online.html | 75 + web/admin/rigger/online.php | 109 + web/admin/rigger/power.go | 200 + web/admin/rigger/power.html | 99 + web/admin/rigger/power.php | 159 + web/admin/rigger/role.go | 103 + web/admin/rigger/role.html | 105 + web/admin/rigger/role.php | 83 + web/admin/rigger/role_u.go | 120 + web/admin/rigger/role_u.html | 198 + web/admin/rigger/role_u.php | 95 + web/admin/rigger/statsdb.go | 297 + web/admin/rigger/statsdb.html | 79 + web/admin/rigger/statsdb.php | 282 + web/admin/rigger/statsfunc.go | 215 + web/admin/rigger/statsfunc.html | 72 + web/admin/rigger/statsfunc.php | 175 + web/admin/rigger/statssrv.go | 38 + web/admin/rigger/statssrv.html | 90 + web/admin/rigger/statssrv.php | 33 + web/admin/upload.go | 112 + web/admin/upload.php | 126 + web/admin/welcome.go | 29 + web/admin/welcome.html | 146 + web/admin/welcome.php | 68 + web/admin/wsdemo/index.go | 48 + web/admin/wsdemo/index.html | 101 + web/amb/aiapi.php | 277 + web/amb/common.php | 226 + web/amb/demo/demo.php | 1064 ++ web/amb/index.php | 121 + web/amb/login.php | 391 + web/amb/me.php | 842 + web/amb/upload.php | 127 + web/amb/wxpay.php | 222 + web/api/craw.php | 39 + web/api/gitpull.php | 54 + web/favicon.ico | Bin 0 -> 72566 bytes web/index.html | 381 + web/jscss/ciy.js | 2639 +++ web/jscss/ciybigscreen.js | 322 + web/jscss/ciycmp.js | 1456 ++ web/jscss/ciycmp2.js | 1142 ++ web/jscss/ciytable.js | 1673 ++ web/jscss/echarts.min.js | 45 + web/jscss/gcoord.js | 20 + web/jscss/imgreview.html | 4080 ++++ web/jscss/jquery-1.12.4.min.js | 5 + web/jscss/lang/en.json | 308 + web/jscss/lang/ja.json | 310 + web/jscss/map_loc.html | 224 + web/jscss/map_polygon.html | 125 + web/jscss/marked.min.js | 6 + web/jscss/md5.js | 256 + web/jscss/qrcode.js | 616 + web/jscss/qrcode.min.js | 1 + web/jscss/style.css | 2524 +++ web/jscss/theme.js | 12 + web/jscss/vue3.js | 15748 ++++++++++++++++ web/jscss/web.css | 961 + web/jscss/web.js | 20 + web/jscss/web3.min.js | 57 + web/ud/bill/loc1.png | Bin 0 -> 3329 bytes web/ud/bill/loc2.png | Bin 0 -> 3223 bytes web/ud/bill/loc3.png | Bin 0 -> 3252 bytes web/ud/bill/map1.png | Bin 0 -> 3724 bytes web/ud/bill/map2.png | Bin 0 -> 3308 bytes web/ud/bill/map3.png | Bin 0 -> 3766 bytes web/ud/bill/map9.png | Bin 0 -> 3690 bytes web/ud/bill/s1.png | Bin 0 -> 3848 bytes web/ud/bill/s2.png | Bin 0 -> 3731 bytes web/ud/bill/s3.png | Bin 0 -> 3365 bytes web/ud/dict/ciy_arearpc.js | 1 + web/ud/glb/img.jpg | Bin 0 -> 37849 bytes web/ud/glb/s1.jpg | Bin 0 -> 25836 bytes web/ud/glb/s11.jpg | Bin 0 -> 14003 bytes web/ud/glb/s12.jpg | Bin 0 -> 41132 bytes web/ud/glb/s13.jpg | Bin 0 -> 24781 bytes web/ud/glb/s14.jpg | Bin 0 -> 51888 bytes web/ud/glb/s15.jpg | Bin 0 -> 35397 bytes web/ud/glb/s16.jpg | Bin 0 -> 37703 bytes web/ud/glb/s18.jpg | Bin 0 -> 25547 bytes web/ud/glb/s2.jpg | Bin 0 -> 3372 bytes web/ud/glb/s20.jpg | Bin 0 -> 20769 bytes web/ud/glb/s21.jpg | Bin 0 -> 17747 bytes web/ud/glb/s22.jpg | Bin 0 -> 10416 bytes web/ud/glb/s23.jpg | Bin 0 -> 37713 bytes web/ud/glb/s24.jpg | Bin 0 -> 2111 bytes web/ud/glb/s25.jpg | Bin 0 -> 10478 bytes web/ud/glb/s26.jpg | Bin 0 -> 18819 bytes web/ud/glb/s27.jpg | Bin 0 -> 7755 bytes web/ud/glb/s28.jpg | Bin 0 -> 12122 bytes web/ud/glb/s29.jpg | Bin 0 -> 14026 bytes web/ud/glb/s3.jpg | Bin 0 -> 3393 bytes web/ud/glb/s30.jpg | Bin 0 -> 17433 bytes web/ud/glb/s31.jpg | Bin 0 -> 20804 bytes web/ud/glb/s32.jpg | Bin 0 -> 14553 bytes web/ud/glb/s33.jpg | Bin 0 -> 21265 bytes web/ud/glb/s34.jpg | Bin 0 -> 7684 bytes web/ud/glb/s35.jpg | Bin 0 -> 24831 bytes web/ud/glb/s36.jpg | Bin 0 -> 17831 bytes web/ud/glb/s37.jpg | Bin 0 -> 25187 bytes web/ud/glb/s38.jpg | Bin 0 -> 17702 bytes web/ud/glb/s39.jpg | Bin 0 -> 30283 bytes web/ud/glb/s4.jpg | Bin 0 -> 11059 bytes web/ud/glb/s41.jpg | Bin 0 -> 20082 bytes web/ud/glb/s5.jpg | Bin 0 -> 16561 bytes web/ud/glb/s6.jpg | Bin 0 -> 31380 bytes web/ud/glb/s7.jpg | Bin 0 -> 11384 bytes web/ud/glb/s8.jpg | Bin 0 -> 10090 bytes web/ud/glb/s9.jpg | Bin 0 -> 22203 bytes web/ud/img/banner.jpg | Bin 0 -> 179197 bytes web/ud/img/bglogin.png | Bin 0 -> 115972 bytes web/ud/img/demo.svg | 1 + web/ud/img/face.png | Bin 0 -> 33129 bytes web/ud/img/lmap.jpg | Bin 0 -> 402158 bytes web/ud/img/logo.png | Bin 0 -> 12292 bytes web/ud/img/maskcamera.png | Bin 0 -> 97118 bytes web/ud/img/mbnone.png | Bin 0 -> 15364 bytes web/ud/img/nopic.png | Bin 0 -> 10930 bytes web/ud/img/nosnap.jpg | Bin 0 -> 18964 bytes web/ud/img/nosnapdark.jpg | Bin 0 -> 22622 bytes web/ud/img/wav1.png | Bin 0 -> 5206 bytes web/ud/img/wav2.png | Bin 0 -> 3960 bytes web/ud/img/welcome.png | Bin 0 -> 116895 bytes web/ud/img/xcxdemo.png | Bin 0 -> 37387 bytes web/ud/inpl/zc_admin.xlsx | Bin 0 -> 11812 bytes web/z/index.php | 96 + zciyon/c.go | 1336 ++ zciyon/db.go | 33 + zciyon/dbroute.go | 58 + zciyon/excel.go | 172 + zciyon/grpc.go | 9 + zciyon/http.go | 33 + zciyon/i18n.go | 8 + zciyon/ini.go | 117 + zciyon/json.go | 227 + zciyon/log.go | 188 + zciyon/memkv.go | 50 + zciyon/mq.go | 10 + zciyon/mqtt.go | 7 + zciyon/mysql.go | 711 + zciyon/post.go | 198 + zciyon/redis.go | 10 + zciyon/sql.go | 290 + zciyon/sse.go | 50 + zciyon/sys_linux.go | 21 + zciyon/sys_win.go | 14 + zciyon/tcpclient.go | 11 + zciyon/tcpserver.go | 10 + zciyon/udpclient.go | 15 + zciyon/udpserver.go | 8 + zciyon/upload.go | 40 + zciyon/web.go | 380 + zciyon/ws.go | 338 + zciyon/xlsx/cell.go | 565 + zciyon/xlsx/cellstore.go | 63 + zciyon/xlsx/col.go | 403 + zciyon/xlsx/data_validation.go | 200 + zciyon/xlsx/date.go | 147 + zciyon/xlsx/file.go | 325 + zciyon/xlsx/format_code.go | 680 + zciyon/xlsx/hsl.go | 145 + zciyon/xlsx/lib.go | 1249 ++ zciyon/xlsx/memory.go | 220 + zciyon/xlsx/read.go | 126 + zciyon/xlsx/reftable.go | 129 + zciyon/xlsx/richtext.go | 207 + zciyon/xlsx/row.go | 127 + zciyon/xlsx/sheet.go | 952 + zciyon/xlsx/style.go | 214 + zciyon/xlsx/templates.go | 339 + zciyon/xlsx/theme.go | 47 + zciyon/xlsx/utility.go | 22 + zciyon/xlsx/xmlContentTypes.go | 50 + zciyon/xlsx/xmlSharedStrings.go | 164 + zciyon/xlsx/xmlStyle.go | 1162 ++ zciyon/xlsx/xmlTheme.go | 55 + zciyon/xlsx/xmlWorkbook.go | 228 + zciyon/xlsx/xmlWorksheet.go | 559 + zciyphp/comm.php | 1105 ++ zciyphp/db.php | 315 + zciyphp/excel.php | 385 + zciyphp/html.php | 1584 ++ zciyphp/http.php | 587 + zciyphp/mail.php | 245 + zciyphp/openai.php | 220 + zciyphp/pdo.php | 217 + zciyphp/post.php | 154 + zciyphp/sql.php | 305 + zciyphp/upload.php | 32 + zciyphp/web.php | 419 + zciyphp/wxfunc.php | 434 + 585 files changed, 128041 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 LICENSE create mode 100644 README.md create mode 100644 cdn.cfg create mode 100644 cert/.gitkeep create mode 100644 fapp/ciyon_ap/.hbuilderx/launch.json create mode 100644 fapp/ciyon_ap/App.vue create mode 100644 fapp/ciyon_ap/components/ciy-aicameraocr/ciy-aicameraocr.vue create mode 100644 fapp/ciyon_ap/components/ciy-aivoice/ciy-aivoice.vue create mode 100644 fapp/ciyon_ap/components/ciy-alert/ciy-alert.vue create mode 100644 fapp/ciyon_ap/components/ciy-ani/ciy-ani.vue create mode 100644 fapp/ciyon_ap/components/ciy-anipop/ciy-anipop.vue create mode 100644 fapp/ciyon_ap/components/ciy-audio/ciy-audio.vue create mode 100644 fapp/ciyon_ap/components/ciy-auth/ciy-auth.vue create mode 100644 fapp/ciyon_ap/components/ciy-btreader/ciy-btreader.vue create mode 100644 fapp/ciyon_ap/components/ciy-calendar/ciy-calendar.vue create mode 100644 fapp/ciyon_ap/components/ciy-cameraqrcode/ciy-cameraqrcode.vue create mode 100644 fapp/ciyon_ap/components/ciy-capcode/ciy-capcode.vue create mode 100644 fapp/ciyon_ap/components/ciy-chart-pie/ciy-chart-pie.vue create mode 100644 fapp/ciyon_ap/components/ciy-checkbox/ciy-checkbox.vue create mode 100644 fapp/ciyon_ap/components/ciy-checkitem/ciy-checkitem.vue create mode 100644 fapp/ciyon_ap/components/ciy-dialog/ciy-dialog.vue create mode 100644 fapp/ciyon_ap/components/ciy-gesture/ciy-gesture.vue create mode 100644 fapp/ciyon_ap/components/ciy-handsign/ciy-handsign.vue create mode 100644 fapp/ciyon_ap/components/ciy-header/ciy-header.vue create mode 100644 fapp/ciyon_ap/components/ciy-input/ciy-input.vue create mode 100644 fapp/ciyon_ap/components/ciy-inputbet/ciy-inputbet.vue create mode 100644 fapp/ciyon_ap/components/ciy-inputcyc/ciy-inputcyc.vue create mode 100644 fapp/ciyon_ap/components/ciy-inputdaterange/ciy-inputdaterange.vue create mode 100644 fapp/ciyon_ap/components/ciy-inputdatetime/ciy-inputdatetime.vue create mode 100644 fapp/ciyon_ap/components/ciy-inputnumber/ciy-inputnumber.vue create mode 100644 fapp/ciyon_ap/components/ciy-inputocr/ciy-inputocr.vue create mode 100644 fapp/ciyon_ap/components/ciy-inputtimepoint/ciy-inputtimepoint.vue create mode 100644 fapp/ciyon_ap/components/ciy-inputunitedit/ciy-inputunitedit.vue create mode 100644 fapp/ciyon_ap/components/ciy-listend/ciy-listend.vue create mode 100644 fapp/ciyon_ap/components/ciy-machinecheck/ciy-machinecheck.vue create mode 100644 fapp/ciyon_ap/components/ciy-markdown/ciy-markdown.vue create mode 100644 fapp/ciyon_ap/components/ciy-mdedit/ciy-mdedit.vue create mode 100644 fapp/ciyon_ap/components/ciy-movable/ciy-movable.vue create mode 100644 fapp/ciyon_ap/components/ciy-popmenu/ciy-popmenu.vue create mode 100644 fapp/ciyon_ap/components/ciy-query/ciy-query.vue create mode 100644 fapp/ciyon_ap/components/ciy-radiobox/ciy-radiobox.vue create mode 100644 fapp/ciyon_ap/components/ciy-ratestar/ciy-ratestar.vue create mode 100644 fapp/ciyon_ap/components/ciy-searchbar/ciy-searchbar.vue create mode 100644 fapp/ciyon_ap/components/ciy-segment/ciy-segment.vue create mode 100644 fapp/ciyon_ap/components/ciy-selbool/ciy-selbool.vue create mode 100644 fapp/ciyon_ap/components/ciy-selcas/ciy-selcas.vue create mode 100644 fapp/ciyon_ap/components/ciy-select/ciy-select.vue create mode 100644 fapp/ciyon_ap/components/ciy-selmap/ciy-selmap.vue create mode 100644 fapp/ciyon_ap/components/ciy-selpage/ciy-selpage.vue create mode 100644 fapp/ciyon_ap/components/ciy-showimgs/ciy-showimgs.vue create mode 100644 fapp/ciyon_ap/components/ciy-shownum/ciy-shownum.vue create mode 100644 fapp/ciyon_ap/components/ciy-slider/ciy-slider.vue create mode 100644 fapp/ciyon_ap/components/ciy-svgimg/ciy-svgimg.vue create mode 100644 fapp/ciyon_ap/components/ciy-swipelist/ciy-swipelist.vue create mode 100644 fapp/ciyon_ap/components/ciy-swiper/ciy-swiper.vue create mode 100644 fapp/ciyon_ap/components/ciy-switch/ciy-switch.vue create mode 100644 fapp/ciyon_ap/components/ciy-tabbar/ciy-tabbar.vue create mode 100644 fapp/ciyon_ap/components/ciy-test/ciy-test.vue create mode 100644 fapp/ciyon_ap/components/ciy-textarea/ciy-textarea.vue create mode 100644 fapp/ciyon_ap/components/ciy-textmore/ciy-textmore.vue create mode 100644 fapp/ciyon_ap/components/ciy-toast/ciy-toast.vue create mode 100644 fapp/ciyon_ap/components/ciy-upload/ciy-upload.vue create mode 100644 fapp/ciyon_ap/components/diy-xxlist/diy-xxlist.vue create mode 100644 fapp/ciyon_ap/defpages.json create mode 100644 fapp/ciyon_ap/index.html create mode 100644 fapp/ciyon_ap/main.js create mode 100644 fapp/ciyon_ap/manifest.json create mode 100644 fapp/ciyon_ap/pages.json create mode 100644 fapp/ciyon_ap/pages/demo/case/comlife.vue create mode 100644 fapp/ciyon_ap/pages/demo/case/dict.vue create mode 100644 fapp/ciyon_ap/pages/demo/case/pagecal.vue create mode 100644 fapp/ciyon_ap/pages/demo/case/pagefix.vue create mode 100644 fapp/ciyon_ap/pages/demo/case/promise.vue create mode 100644 fapp/ciyon_ap/pages/demo/case/proxy.vue create mode 100644 fapp/ciyon_ap/pages/demo/case/vproject.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/calendar.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/capcode.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/checkbox.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/checkitem.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/define.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/handsign.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/input.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/inputbet.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/inputcyc.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/inputdaterange.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/inputdatetime.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/inputnumber.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/inputtimepoint.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/inputunitedit.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/radiobox.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/ratestar.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/selbool.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/selcas.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/select.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/selmap.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/selpage.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/slider.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/switch.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/textarea.vue create mode 100644 fapp/ciyon_ap/pages/demo/comform/upload.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/alert.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/ani.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/anipop.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/audio.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/auth.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/cameraocr.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/gesture.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/header.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/listend.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/markdown.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/movable.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/popmenu.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/query.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/searchbar.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/segment.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/showimgs.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/shownum.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/svgimg.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/swipelist.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/swiper.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/tabbar.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/textmore.vue create mode 100644 fapp/ciyon_ap/pages/demo/comview/toast.vue create mode 100644 fapp/ciyon_ap/pages/demo/css/chart_pie.vue create mode 100644 fapp/ciyon_ap/pages/demo/css/cssdemo.vue create mode 100644 fapp/ciyon_ap/pages/demo/css/grid.vue create mode 100644 fapp/ciyon_ap/pages/demo/css/pageflex.vue create mode 100644 fapp/ciyon_ap/pages/demo/css/skeleton.vue create mode 100644 fapp/ciyon_ap/pages/demo/css/tailwind.vue create mode 100644 fapp/ciyon_ap/pages/demo/css/waterfall.vue create mode 100644 fapp/ciyon_ap/pages/demo/css/zindex.vue create mode 100644 fapp/ciyon_ap/pages/demo/curd/demo_edit.vue create mode 100644 fapp/ciyon_ap/pages/demo/curd/demo_list.vue create mode 100644 fapp/ciyon_ap/pages/demo/curd/me.vue create mode 100644 fapp/ciyon_ap/pages/demo/index.vue create mode 100644 fapp/ciyon_ap/pages/demo/page/func.vue create mode 100644 fapp/ciyon_ap/pages/demo/page/lang.vue create mode 100644 fapp/ciyon_ap/pages/demo/page/oldfont.vue create mode 100644 fapp/ciyon_ap/pages/demo/page/sysinfo.vue create mode 100644 fapp/ciyon_ap/pages/demo/page/theme.vue create mode 100644 fapp/ciyon_ap/pages/demo/test.vue create mode 100644 fapp/ciyon_ap/pages/demo/zdemo.css create mode 100644 fapp/ciyon_ap/pages/demo/zmixin.js create mode 100644 fapp/ciyon_ap/pages/main/index.vue create mode 100644 fapp/ciyon_ap/pages/main/me.vue create mode 100644 fapp/ciyon_ap/pages/main/me_cash.vue create mode 100644 fapp/ciyon_ap/pages/main/me_cash_bank.vue create mode 100644 fapp/ciyon_ap/pages/main/me_cash_in.vue create mode 100644 fapp/ciyon_ap/pages/main/me_cash_out.vue create mode 100644 fapp/ciyon_ap/pages/main/me_info.vue create mode 100644 fapp/ciyon_ap/pages/main/me_invoice.vue create mode 100644 fapp/ciyon_ap/pages/main/me_invoice_history.vue create mode 100644 fapp/ciyon_ap/pages/main/me_invoicetitle.vue create mode 100644 fapp/ciyon_ap/pages/main/me_passchange.vue create mode 100644 fapp/ciyon_ap/pages/main/me_pnt.vue create mode 100644 fapp/ciyon_ap/pages/main/me_pnt_buy.vue create mode 100644 fapp/ciyon_ap/pages/main/me_pnt_record.vue create mode 100644 fapp/ciyon_ap/pages/main/me_problechat.vue create mode 100644 fapp/ciyon_ap/pages/main/me_problem.vue create mode 100644 fapp/ciyon_ap/pages/main/me_qrcode.vue create mode 100644 fapp/ciyon_ap/pages/main/me_real.vue create mode 100644 fapp/ciyon_ap/pages/main/me_shipaddr.vue create mode 100644 fapp/ciyon_ap/pages/main/me_suggest.vue create mode 100644 fapp/ciyon_ap/pages/main/paper.vue create mode 100644 fapp/ciyon_ap/pages/main/part.vue create mode 100644 fapp/ciyon_ap/pages/main/psection.vue create mode 100644 fapp/ciyon_ap/pages/pub/camera.vue create mode 100644 fapp/ciyon_ap/pages/pub/web.vue create mode 100644 fapp/ciyon_ap/prod.css create mode 100644 fapp/ciyon_ap/uni.scss create mode 100644 fapp/ciyon_ap/util/ciy.js create mode 100644 fapp/ciyon_ap/util/gcoord.js create mode 100644 fapp/ciyon_ap/util/lang/en.json create mode 100644 fapp/ciyon_ap/util/lang/fr.json create mode 100644 fapp/ciyon_ap/util/lang/ja.json create mode 100644 fapp/ciyon_ap/util/lang/zh-Hans.json create mode 100644 fapp/ciyon_ap/util/lang/zh-Hant.json create mode 100644 fapp/ciyon_ap/util/langload.js create mode 100644 fapp/ciyon_ap/util/md5.js create mode 100644 fapp/ciyon_ap/util/style.css create mode 100644 fapp/ciyon_ap/vite.config.js create mode 100644 fapp/ciyon_xa/vite.config.js create mode 100644 fapp/ciyon_xb/vite.config.js create mode 100644 fapp/h5_ap.bat create mode 100644 go.mod create mode 100644 go.sum create mode 100644 gobuild.bat create mode 100644 log/.gitkeep create mode 100644 main.go create mode 100644 route_adm.go create mode 100644 test/xx2_test.go create mode 100644 test/xx_test.go create mode 100644 test_ok.go create mode 100644 web.ini.temp create mode 100644 web/admin/ap/art_post.html create mode 100644 web/admin/ap/art_post.php create mode 100644 web/admin/ap/art_section.html create mode 100644 web/admin/ap/art_section.php create mode 100644 web/admin/ap/art_vent.html create mode 100644 web/admin/ap/art_vent.php create mode 100644 web/admin/ap/banner.html create mode 100644 web/admin/ap/banner.php create mode 100644 web/admin/ap/cash_in.html create mode 100644 web/admin/ap/cash_in.php create mode 100644 web/admin/ap/cash_out_1.html create mode 100644 web/admin/ap/cash_out_1.php create mode 100644 web/admin/ap/cash_out_2.html create mode 100644 web/admin/ap/cash_out_2.php create mode 100644 web/admin/ap/demo.go create mode 100644 web/admin/ap/demo.html create mode 100644 web/admin/ap/demo.php create mode 100644 web/admin/ap/paper.go create mode 100644 web/admin/ap/paper.html create mode 100644 web/admin/ap/paper.php create mode 100644 web/admin/ap/pnt_bundle.html create mode 100644 web/admin/ap/pnt_bundle.php create mode 100644 web/admin/ap/pnt_buy.html create mode 100644 web/admin/ap/pnt_buy.php create mode 100644 web/admin/ap/pnt_record.html create mode 100644 web/admin/ap/pnt_record.php create mode 100644 web/admin/ap/pnt_track.html create mode 100644 web/admin/ap/pnt_track.php create mode 100644 web/admin/ap/user.html create mode 100644 web/admin/ap/user.php create mode 100644 web/admin/ap/user_service.html create mode 100644 web/admin/ap/user_service.php create mode 100644 web/admin/ap/usr_buy_bundle.html create mode 100644 web/admin/ap/usr_buy_bundle.php create mode 100644 web/admin/ap/usr_buy_user.html create mode 100644 web/admin/ap/usr_buy_user.php create mode 100644 web/admin/ap/usr_capcode.html create mode 100644 web/admin/ap/usr_capcode.php create mode 100644 web/admin/ap/usr_invoicetitle.html create mode 100644 web/admin/ap/usr_invoicetitle.php create mode 100644 web/admin/ap/usr_invoicing.html create mode 100644 web/admin/ap/usr_invoicing.php create mode 100644 web/admin/ap/usr_problem.html create mode 100644 web/admin/ap/usr_problem.php create mode 100644 web/admin/ap/usr_real_apply.html create mode 100644 web/admin/ap/usr_real_apply.php create mode 100644 web/admin/ap/usr_shipaddr.html create mode 100644 web/admin/ap/usr_shipaddr.php create mode 100644 web/admin/ap/usr_suggest.html create mode 100644 web/admin/ap/usr_suggest.php create mode 100644 web/admin/autotask/at_ai.php create mode 100644 web/admin/autotask/at_base.go create mode 100644 web/admin/autotask/at_base.php create mode 100644 web/admin/autotask/run.php create mode 100644 web/admin/autotask/task.go create mode 100644 web/admin/autotask/task.php create mode 100644 web/admin/cemap/bill.html create mode 100644 web/admin/cemap/bill.php create mode 100644 web/admin/cemap/ceeditor.html create mode 100644 web/admin/cemap/ceeditor.php create mode 100644 web/admin/cemap/cemap.html create mode 100644 web/admin/cemap/cemap.php create mode 100644 web/admin/cemap/glb.html create mode 100644 web/admin/cemap/glb.php create mode 100644 web/admin/cemap/glb_thumb.html create mode 100644 web/admin/cemap/pathbill.html create mode 100644 web/admin/cemap/pathbill.php create mode 100644 web/admin/cemap/pathglb.html create mode 100644 web/admin/cemap/pathglb.php create mode 100644 web/admin/common.go create mode 100644 web/admin/common.js create mode 100644 web/admin/common.php create mode 100644 web/admin/datasse/expo.php create mode 100644 web/admin/datasse/imgs.php create mode 100644 web/admin/datasse/index.go create mode 100644 web/admin/datasse/index.html create mode 100644 web/admin/datasse/index.php create mode 100644 web/admin/demo/bs/b64/bank1_c1.js create mode 100644 web/admin/demo/bs/b64/bank1_c2.js create mode 100644 web/admin/demo/bs/b64/bank1_l1.js create mode 100644 web/admin/demo/bs/b64/bank1_l2.js create mode 100644 web/admin/demo/bs/b64/bank1_l3.js create mode 100644 web/admin/demo/bs/b64/bank1_r1.js create mode 100644 web/admin/demo/bs/b64/bank1_r2.js create mode 100644 web/admin/demo/bs/b64/bank1_r3.js create mode 100644 web/admin/demo/bs/b64/cesiumbg.png create mode 100644 web/admin/demo/bs/b64/farm1_bg_cemap.js create mode 100644 web/admin/demo/bs/b64/farm1_c1.js create mode 100644 web/admin/demo/bs/b64/farm1_l1.js create mode 100644 web/admin/demo/bs/b64/farm1_l2.js create mode 100644 web/admin/demo/bs/b64/farm1_l3.js create mode 100644 web/admin/demo/bs/b64/farm1_r1.js create mode 100644 web/admin/demo/bs/b64/farm1_r2.js create mode 100644 web/admin/demo/bs/b64/farm1_r3.js create mode 100644 web/admin/demo/bs/b64/nozz.jpg create mode 100644 web/admin/demo/bs/b64/video1_c1.js create mode 100644 web/admin/demo/bs/index.html create mode 100644 web/admin/demo/bs/index.php create mode 100644 web/admin/demo/demo_ajax.html create mode 100644 web/admin/demo/demo_alert.html create mode 100644 web/admin/demo/demo_alertcb.html create mode 100644 web/admin/demo/demo_css.html create mode 100644 web/admin/demo/demo_cssn.html create mode 100644 web/admin/demo/demo_dom.html create mode 100644 web/admin/demo/demo_drag.html create mode 100644 web/admin/demo/demo_flip.html create mode 100644 web/admin/demo/demo_jq.html create mode 100644 web/admin/demo/demo_proxy.html create mode 100644 web/admin/demo/demo_shadow.html create mode 100644 web/admin/demo/demo_showend.html create mode 100644 web/admin/demo/demo_tabcard.html create mode 100644 web/admin/demo/demo_toast.html create mode 100644 web/admin/demo/dyn/openai.html create mode 100644 web/admin/demo/dyn/openai.php create mode 100644 web/admin/demo/dyn/sse.html create mode 100644 web/admin/demo/dyn/sse.php create mode 100644 web/admin/demo/form_checkbox.html create mode 100644 web/admin/demo/form_daterange.html create mode 100644 web/admin/demo/form_datetime.html create mode 100644 web/admin/demo/form_inputbet.html create mode 100644 web/admin/demo/form_inputcyc.html create mode 100644 web/admin/demo/form_inputunitedit.html create mode 100644 web/admin/demo/form_map.html create mode 100644 web/admin/demo/form_md.html create mode 100644 web/admin/demo/form_radio.html create mode 100644 web/admin/demo/form_selcas.html create mode 100644 web/admin/demo/form_select.html create mode 100644 web/admin/demo/form_selmulti.html create mode 100644 web/admin/demo/form_switch.html create mode 100644 web/admin/demo/form_textarea.html create mode 100644 web/admin/demo/form_timepoint.html create mode 100644 web/admin/demo/form_upload.html create mode 100644 web/admin/demo/index.html create mode 100644 web/admin/develop/code_common.php create mode 100644 web/admin/develop/code_create.html create mode 100644 web/admin/develop/code_create.php create mode 100644 web/admin/develop/code_list.html create mode 100644 web/admin/develop/code_list.php create mode 100644 web/admin/develop/code_mb_vue3.php create mode 100644 web/admin/develop/code_pc_html.php create mode 100644 web/admin/develop/code_pc_php.php create mode 100644 web/admin/develop/note.html create mode 100644 web/admin/develop/note.php create mode 100644 web/admin/index.html create mode 100644 web/admin/login.go create mode 100644 web/admin/login.php create mode 100644 web/admin/manage.go create mode 100644 web/admin/manage.html create mode 100644 web/admin/manage.php create mode 100644 web/admin/rigger/admin.go create mode 100644 web/admin/rigger/admin.html create mode 100644 web/admin/rigger/admin.php create mode 100644 web/admin/rigger/autotask.go create mode 100644 web/admin/rigger/autotask.html create mode 100644 web/admin/rigger/autotask.php create mode 100644 web/admin/rigger/autotskrun.go create mode 100644 web/admin/rigger/autotskrun.html create mode 100644 web/admin/rigger/autotskrun.php create mode 100644 web/admin/rigger/cata.go create mode 100644 web/admin/rigger/cata.html create mode 100644 web/admin/rigger/cata.php create mode 100644 web/admin/rigger/cataindex.go create mode 100644 web/admin/rigger/cataindex.html create mode 100644 web/admin/rigger/cataindex.php create mode 100644 web/admin/rigger/chgpass.go create mode 100644 web/admin/rigger/chgpass.html create mode 100644 web/admin/rigger/chgpass.php create mode 100644 web/admin/rigger/config.go create mode 100644 web/admin/rigger/config.html create mode 100644 web/admin/rigger/config.php create mode 100644 web/admin/rigger/crawtable.html create mode 100644 web/admin/rigger/crawtable.php create mode 100644 web/admin/rigger/debug_user.go create mode 100644 web/admin/rigger/debug_user.html create mode 100644 web/admin/rigger/debug_user.php create mode 100644 web/admin/rigger/depart.go create mode 100644 web/admin/rigger/depart.html create mode 100644 web/admin/rigger/depart.php create mode 100644 web/admin/rigger/funcslow.go create mode 100644 web/admin/rigger/funcslow.html create mode 100644 web/admin/rigger/funcslow.php create mode 100644 web/admin/rigger/logdb.go create mode 100644 web/admin/rigger/logdb.html create mode 100644 web/admin/rigger/logdb.php create mode 100644 web/admin/rigger/logfile.go create mode 100644 web/admin/rigger/logfile.html create mode 100644 web/admin/rigger/logfile.php create mode 100644 web/admin/rigger/menu.go create mode 100644 web/admin/rigger/menu.html create mode 100644 web/admin/rigger/menu.php create mode 100644 web/admin/rigger/mock.go create mode 100644 web/admin/rigger/mock.html create mode 100644 web/admin/rigger/mock.php create mode 100644 web/admin/rigger/online.go create mode 100644 web/admin/rigger/online.html create mode 100644 web/admin/rigger/online.php create mode 100644 web/admin/rigger/power.go create mode 100644 web/admin/rigger/power.html create mode 100644 web/admin/rigger/power.php create mode 100644 web/admin/rigger/role.go create mode 100644 web/admin/rigger/role.html create mode 100644 web/admin/rigger/role.php create mode 100644 web/admin/rigger/role_u.go create mode 100644 web/admin/rigger/role_u.html create mode 100644 web/admin/rigger/role_u.php create mode 100644 web/admin/rigger/statsdb.go create mode 100644 web/admin/rigger/statsdb.html create mode 100644 web/admin/rigger/statsdb.php create mode 100644 web/admin/rigger/statsfunc.go create mode 100644 web/admin/rigger/statsfunc.html create mode 100644 web/admin/rigger/statsfunc.php create mode 100644 web/admin/rigger/statssrv.go create mode 100644 web/admin/rigger/statssrv.html create mode 100644 web/admin/rigger/statssrv.php create mode 100644 web/admin/upload.go create mode 100644 web/admin/upload.php create mode 100644 web/admin/welcome.go create mode 100644 web/admin/welcome.html create mode 100644 web/admin/welcome.php create mode 100644 web/admin/wsdemo/index.go create mode 100644 web/admin/wsdemo/index.html create mode 100644 web/amb/aiapi.php create mode 100644 web/amb/common.php create mode 100644 web/amb/demo/demo.php create mode 100644 web/amb/index.php create mode 100644 web/amb/login.php create mode 100644 web/amb/me.php create mode 100644 web/amb/upload.php create mode 100644 web/amb/wxpay.php create mode 100644 web/api/craw.php create mode 100644 web/api/gitpull.php create mode 100644 web/favicon.ico create mode 100644 web/index.html create mode 100644 web/jscss/ciy.js create mode 100644 web/jscss/ciybigscreen.js create mode 100644 web/jscss/ciycmp.js create mode 100644 web/jscss/ciycmp2.js create mode 100644 web/jscss/ciytable.js create mode 100644 web/jscss/echarts.min.js create mode 100644 web/jscss/gcoord.js create mode 100644 web/jscss/imgreview.html create mode 100644 web/jscss/jquery-1.12.4.min.js create mode 100644 web/jscss/lang/en.json create mode 100644 web/jscss/lang/ja.json create mode 100644 web/jscss/map_loc.html create mode 100644 web/jscss/map_polygon.html create mode 100644 web/jscss/marked.min.js create mode 100644 web/jscss/md5.js create mode 100644 web/jscss/qrcode.js create mode 100644 web/jscss/qrcode.min.js create mode 100644 web/jscss/style.css create mode 100644 web/jscss/theme.js create mode 100644 web/jscss/vue3.js create mode 100644 web/jscss/web.css create mode 100644 web/jscss/web.js create mode 100644 web/jscss/web3.min.js create mode 100644 web/ud/bill/loc1.png create mode 100644 web/ud/bill/loc2.png create mode 100644 web/ud/bill/loc3.png create mode 100644 web/ud/bill/map1.png create mode 100644 web/ud/bill/map2.png create mode 100644 web/ud/bill/map3.png create mode 100644 web/ud/bill/map9.png create mode 100644 web/ud/bill/s1.png create mode 100644 web/ud/bill/s2.png create mode 100644 web/ud/bill/s3.png create mode 100644 web/ud/dict/ciy_arearpc.js create mode 100644 web/ud/glb/img.jpg create mode 100644 web/ud/glb/s1.jpg create mode 100644 web/ud/glb/s11.jpg create mode 100644 web/ud/glb/s12.jpg create mode 100644 web/ud/glb/s13.jpg create mode 100644 web/ud/glb/s14.jpg create mode 100644 web/ud/glb/s15.jpg create mode 100644 web/ud/glb/s16.jpg create mode 100644 web/ud/glb/s18.jpg create mode 100644 web/ud/glb/s2.jpg create mode 100644 web/ud/glb/s20.jpg create mode 100644 web/ud/glb/s21.jpg create mode 100644 web/ud/glb/s22.jpg create mode 100644 web/ud/glb/s23.jpg create mode 100644 web/ud/glb/s24.jpg create mode 100644 web/ud/glb/s25.jpg create mode 100644 web/ud/glb/s26.jpg create mode 100644 web/ud/glb/s27.jpg create mode 100644 web/ud/glb/s28.jpg create mode 100644 web/ud/glb/s29.jpg create mode 100644 web/ud/glb/s3.jpg create mode 100644 web/ud/glb/s30.jpg create mode 100644 web/ud/glb/s31.jpg create mode 100644 web/ud/glb/s32.jpg create mode 100644 web/ud/glb/s33.jpg create mode 100644 web/ud/glb/s34.jpg create mode 100644 web/ud/glb/s35.jpg create mode 100644 web/ud/glb/s36.jpg create mode 100644 web/ud/glb/s37.jpg create mode 100644 web/ud/glb/s38.jpg create mode 100644 web/ud/glb/s39.jpg create mode 100644 web/ud/glb/s4.jpg create mode 100644 web/ud/glb/s41.jpg create mode 100644 web/ud/glb/s5.jpg create mode 100644 web/ud/glb/s6.jpg create mode 100644 web/ud/glb/s7.jpg create mode 100644 web/ud/glb/s8.jpg create mode 100644 web/ud/glb/s9.jpg create mode 100644 web/ud/img/banner.jpg create mode 100644 web/ud/img/bglogin.png create mode 100644 web/ud/img/demo.svg create mode 100644 web/ud/img/face.png create mode 100644 web/ud/img/lmap.jpg create mode 100644 web/ud/img/logo.png create mode 100644 web/ud/img/maskcamera.png create mode 100644 web/ud/img/mbnone.png create mode 100644 web/ud/img/nopic.png create mode 100644 web/ud/img/nosnap.jpg create mode 100644 web/ud/img/nosnapdark.jpg create mode 100644 web/ud/img/wav1.png create mode 100644 web/ud/img/wav2.png create mode 100644 web/ud/img/welcome.png create mode 100644 web/ud/img/xcxdemo.png create mode 100644 web/ud/inpl/zc_admin.xlsx create mode 100644 web/z/index.php create mode 100644 zciyon/c.go create mode 100644 zciyon/db.go create mode 100644 zciyon/dbroute.go create mode 100644 zciyon/excel.go create mode 100644 zciyon/grpc.go create mode 100644 zciyon/http.go create mode 100644 zciyon/i18n.go create mode 100644 zciyon/ini.go create mode 100644 zciyon/json.go create mode 100644 zciyon/log.go create mode 100644 zciyon/memkv.go create mode 100644 zciyon/mq.go create mode 100644 zciyon/mqtt.go create mode 100644 zciyon/mysql.go create mode 100644 zciyon/post.go create mode 100644 zciyon/redis.go create mode 100644 zciyon/sql.go create mode 100644 zciyon/sse.go create mode 100644 zciyon/sys_linux.go create mode 100644 zciyon/sys_win.go create mode 100644 zciyon/tcpclient.go create mode 100644 zciyon/tcpserver.go create mode 100644 zciyon/udpclient.go create mode 100644 zciyon/udpserver.go create mode 100644 zciyon/upload.go create mode 100644 zciyon/web.go create mode 100644 zciyon/ws.go create mode 100644 zciyon/xlsx/cell.go create mode 100644 zciyon/xlsx/cellstore.go create mode 100644 zciyon/xlsx/col.go create mode 100644 zciyon/xlsx/data_validation.go create mode 100644 zciyon/xlsx/date.go create mode 100644 zciyon/xlsx/file.go create mode 100644 zciyon/xlsx/format_code.go create mode 100644 zciyon/xlsx/hsl.go create mode 100644 zciyon/xlsx/lib.go create mode 100644 zciyon/xlsx/memory.go create mode 100644 zciyon/xlsx/read.go create mode 100644 zciyon/xlsx/reftable.go create mode 100644 zciyon/xlsx/richtext.go create mode 100644 zciyon/xlsx/row.go create mode 100644 zciyon/xlsx/sheet.go create mode 100644 zciyon/xlsx/style.go create mode 100644 zciyon/xlsx/templates.go create mode 100644 zciyon/xlsx/theme.go create mode 100644 zciyon/xlsx/utility.go create mode 100644 zciyon/xlsx/xmlContentTypes.go create mode 100644 zciyon/xlsx/xmlSharedStrings.go create mode 100644 zciyon/xlsx/xmlStyle.go create mode 100644 zciyon/xlsx/xmlTheme.go create mode 100644 zciyon/xlsx/xmlWorkbook.go create mode 100644 zciyon/xlsx/xmlWorksheet.go create mode 100644 zciyphp/comm.php create mode 100644 zciyphp/db.php create mode 100644 zciyphp/excel.php create mode 100644 zciyphp/html.php create mode 100644 zciyphp/http.php create mode 100644 zciyphp/mail.php create mode 100644 zciyphp/openai.php create mode 100644 zciyphp/pdo.php create mode 100644 zciyphp/post.php create mode 100644 zciyphp/sql.php create mode 100644 zciyphp/upload.php create mode 100644 zciyphp/web.php create mode 100644 zciyphp/wxfunc.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..acb9821 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.out +*.so +*.dylib +*.pem +*.log +*.glb +*.gltf +*.mp3 +*.mp4 + +# Dependency directories (remove the comment below to include it) +资料/* +web/ud/2025/* +web/ud/2026/* +web/ud/2027/* +web/ud/2028/* +**/unpackage/ +web.ini + diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..9fbb181 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "ciyon main", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${workspaceRoot}", + "env": {}, + "args": [], + "showLog": true + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..327df4c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.unicodeHighlight.includeComments": false, + "editor.unicodeHighlight.includeStrings": false +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..19193b5 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,18 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "刷新CDN缓存", + "type": "shell", + "command": "node ../../nodejs/refreshcdn/refreshcdn.js ${workspaceFolder} https://ciyon.ciy.cn", + "group": { + "kind": "build", + "isDefault": true + }, + "presentation": { + "reveal": "always" + }, + "problemMatcher": [] + } + ] + } \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..17cb286 --- /dev/null +++ b/LICENSE @@ -0,0 +1,117 @@ +GNU GENERAL PUBLIC LICENSE +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + + c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. + +6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + +7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. + + one line to give the program's name and an idea of what it does. Copyright (C) yyyy name of author + + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. + +signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice diff --git a/README.md b/README.md new file mode 100644 index 0000000..eaebf52 --- /dev/null +++ b/README.md @@ -0,0 +1,113 @@ +# Ciyon - 众产全栈开发框架 +## 技术特点 +### AI辅助决策 + 基于Function Call和JSON的AI能力,实现了定期AI决策及渐进式主动决策执行能力。 + + 利用置信度缓解AI幻觉难题,基于量化函数可实现专用AI能力。 + +### Web3D地球 + 基于Cesium与ThreeJS,实现了三维场景可视化配置和开发JS独立组件。 + + 支持多种地图源、地形图、GLB模型、光照、无人机建模等。 + +### 原生重构组件 + 内生发展,尽量不引用第三方库,拆解掌握原理后重写。 + + PC端组件20+,移动端组件60+,不断扩展中。 + +### PHP+Golang + PHP在项目原型验证阶段快速开发上线。 + + Golang作为服务器集群降成本的高并发优化。 + +### 免编译模式 + 尽量用免编译模式开发,降低老旧代码维护难度。 + + 是未来演进的重要研究基础。 + +### 代码生成器 + 支持基于数据表的通用功能的代码生成能力。 + + 数据表注解定义,自动生成代码,再利用AI补全微调。 + + 遵循一定的开发规范,能产生90%高质量直接运行代码。 + + +## 软件架构 +### 总控端原生JS + 使用原生JS实现一系列的常用函数封装。 + + 包括websocket、bigscreen、openai、sse、i18n等。 + + 结合Web3D的数据大屏驾驶舱示例代码实现。 + +### 总控端PHP + 原生实现独立开发框架,输入安全校验、唯一访问入口。 + + 拆解吸收多种大型框架源码。本框架结构简单,可读性强。 + +### 总控端Golang + 原生实现独立开发框架,未实现函数自动转至PHP执行。 + + 支持mock、连接池、自更新等。 + +### 移动端Vue3 + 在Vue3基础上极简封装各类常用组件。 + + 统一封装常见函数,页面全面可自定义,多语言。 + + 提供路由工具,一键生成路由代码。 + +### Web站原生JS库 + 让Web呈现扁平的价值传达,减少酷炫效果对阅读的干扰,整站SEO可完整解析。 + +### Web站缓存机制 + 自定义的动态页面缓存模式,结合各类CDN回源策略减轻对源服务器请求。 + + +## 软件工程 +### 项目可行性验证阶段 + 用原生JS+PHP+微信小程序开发。 + + 在数周内完成项目快速开发。 + + 低成本投入市场验证迭代。 + +### 项目快速发展阶段 + Web服务器集群规模或数据库服务器连接数承压后, + + 用Golang重写高并发请求的函数接口,逐步替代。 + +### 项目稳定运营阶段 + Golang将业务侧数据全部重写,完全替换PHP低效代码。 + + 根据业务特点拆分,扩展成多地多中心异构拓扑。 + + +## 未来演进 +### 全量区块链 + 创新的实现区块链底层架构,将上传的文件图片视频资源、数据库资源全部完整上链。 + + 非简单的hash上链。 + +### 无后端时代 + 底层研发基于海量矿机的多中心(无中心)异构拓扑, + + 实现统一的JS访问入口,实现区块链级分布式事务。 + +### 大前端时代 + 从区块链上下载前端包后,加载到用户端(PC/手机/XR眼镜等),任何交互操作均直接请求区块链接口。 + +### 代码可审计 + 区块链基于共识算法开放协议,天然可审计。 + + 前端代码不允许混淆和编译。 + + 用户端可随时调阅源码分析。 + + +# 在线演示 + +https://ciyon.ciy.cn/ + +https://ciyon.ciy.cn/admin/ diff --git a/cdn.cfg b/cdn.cfg new file mode 100644 index 0000000..0387fe7 --- /dev/null +++ b/cdn.cfg @@ -0,0 +1,4 @@ +/*.html +/*.js +/*.css + diff --git a/cert/.gitkeep b/cert/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/fapp/ciyon_ap/.hbuilderx/launch.json b/fapp/ciyon_ap/.hbuilderx/launch.json new file mode 100644 index 0000000..1604752 --- /dev/null +++ b/fapp/ciyon_ap/.hbuilderx/launch.json @@ -0,0 +1,32 @@ +{ + // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version" : "0.0", + "configurations" : [ + { + "app-plus" : { + "launchtype" : "local" + }, + "default" : { + "launchtype" : "local" + }, + "mp-weixin" : { + "launchtype" : "local" + }, + "type" : "uniCloud" + }, + { + "openVueDevtools" : false, + "type" : "uni-app:app-ios" + }, + { + "openVueDevtools" : false, + "playground" : "standard", + "type" : "uni-app:app-android" + }, + { + "openVueDevtools" : false, + "type" : "uni-app:h5" + } + ] +} diff --git a/fapp/ciyon_ap/App.vue b/fapp/ciyon_ap/App.vue new file mode 100644 index 0000000..978e41e --- /dev/null +++ b/fapp/ciyon_ap/App.vue @@ -0,0 +1,228 @@ + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-aicameraocr/ciy-aicameraocr.vue b/fapp/ciyon_ap/components/ciy-aicameraocr/ciy-aicameraocr.vue new file mode 100644 index 0000000..f8e00b2 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-aicameraocr/ciy-aicameraocr.vue @@ -0,0 +1,272 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-aivoice/ciy-aivoice.vue b/fapp/ciyon_ap/components/ciy-aivoice/ciy-aivoice.vue new file mode 100644 index 0000000..813163d --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-aivoice/ciy-aivoice.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-alert/ciy-alert.vue b/fapp/ciyon_ap/components/ciy-alert/ciy-alert.vue new file mode 100644 index 0000000..ec4d738 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-alert/ciy-alert.vue @@ -0,0 +1,166 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-ani/ciy-ani.vue b/fapp/ciyon_ap/components/ciy-ani/ciy-ani.vue new file mode 100644 index 0000000..1ccc3a9 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-ani/ciy-ani.vue @@ -0,0 +1,49 @@ + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-anipop/ciy-anipop.vue b/fapp/ciyon_ap/components/ciy-anipop/ciy-anipop.vue new file mode 100644 index 0000000..53c7326 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-anipop/ciy-anipop.vue @@ -0,0 +1,193 @@ + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-audio/ciy-audio.vue b/fapp/ciyon_ap/components/ciy-audio/ciy-audio.vue new file mode 100644 index 0000000..038f6cc --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-audio/ciy-audio.vue @@ -0,0 +1,216 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-auth/ciy-auth.vue b/fapp/ciyon_ap/components/ciy-auth/ciy-auth.vue new file mode 100644 index 0000000..a9ef4f9 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-auth/ciy-auth.vue @@ -0,0 +1,407 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-btreader/ciy-btreader.vue b/fapp/ciyon_ap/components/ciy-btreader/ciy-btreader.vue new file mode 100644 index 0000000..0578d67 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-btreader/ciy-btreader.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/fapp/ciyon_ap/components/ciy-calendar/ciy-calendar.vue b/fapp/ciyon_ap/components/ciy-calendar/ciy-calendar.vue new file mode 100644 index 0000000..918149b --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-calendar/ciy-calendar.vue @@ -0,0 +1,558 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-cameraqrcode/ciy-cameraqrcode.vue b/fapp/ciyon_ap/components/ciy-cameraqrcode/ciy-cameraqrcode.vue new file mode 100644 index 0000000..ba472b8 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-cameraqrcode/ciy-cameraqrcode.vue @@ -0,0 +1,451 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-capcode/ciy-capcode.vue b/fapp/ciyon_ap/components/ciy-capcode/ciy-capcode.vue new file mode 100644 index 0000000..4d03ab7 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-capcode/ciy-capcode.vue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-chart-pie/ciy-chart-pie.vue b/fapp/ciyon_ap/components/ciy-chart-pie/ciy-chart-pie.vue new file mode 100644 index 0000000..ea8e1ea --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-chart-pie/ciy-chart-pie.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-checkbox/ciy-checkbox.vue b/fapp/ciyon_ap/components/ciy-checkbox/ciy-checkbox.vue new file mode 100644 index 0000000..71b3e48 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-checkbox/ciy-checkbox.vue @@ -0,0 +1,265 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-checkitem/ciy-checkitem.vue b/fapp/ciyon_ap/components/ciy-checkitem/ciy-checkitem.vue new file mode 100644 index 0000000..80dcf1a --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-checkitem/ciy-checkitem.vue @@ -0,0 +1,213 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-dialog/ciy-dialog.vue b/fapp/ciyon_ap/components/ciy-dialog/ciy-dialog.vue new file mode 100644 index 0000000..b861785 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-dialog/ciy-dialog.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-gesture/ciy-gesture.vue b/fapp/ciyon_ap/components/ciy-gesture/ciy-gesture.vue new file mode 100644 index 0000000..8ffd823 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-gesture/ciy-gesture.vue @@ -0,0 +1,89 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-handsign/ciy-handsign.vue b/fapp/ciyon_ap/components/ciy-handsign/ciy-handsign.vue new file mode 100644 index 0000000..09aadb1 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-handsign/ciy-handsign.vue @@ -0,0 +1,499 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-header/ciy-header.vue b/fapp/ciyon_ap/components/ciy-header/ciy-header.vue new file mode 100644 index 0000000..2b68a75 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-header/ciy-header.vue @@ -0,0 +1,185 @@ + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-input/ciy-input.vue b/fapp/ciyon_ap/components/ciy-input/ciy-input.vue new file mode 100644 index 0000000..f619408 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-input/ciy-input.vue @@ -0,0 +1,150 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-inputbet/ciy-inputbet.vue b/fapp/ciyon_ap/components/ciy-inputbet/ciy-inputbet.vue new file mode 100644 index 0000000..397088c --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-inputbet/ciy-inputbet.vue @@ -0,0 +1,190 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-inputcyc/ciy-inputcyc.vue b/fapp/ciyon_ap/components/ciy-inputcyc/ciy-inputcyc.vue new file mode 100644 index 0000000..0528e22 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-inputcyc/ciy-inputcyc.vue @@ -0,0 +1,202 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-inputdaterange/ciy-inputdaterange.vue b/fapp/ciyon_ap/components/ciy-inputdaterange/ciy-inputdaterange.vue new file mode 100644 index 0000000..717c8b0 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-inputdaterange/ciy-inputdaterange.vue @@ -0,0 +1,185 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-inputdatetime/ciy-inputdatetime.vue b/fapp/ciyon_ap/components/ciy-inputdatetime/ciy-inputdatetime.vue new file mode 100644 index 0000000..dab042f --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-inputdatetime/ciy-inputdatetime.vue @@ -0,0 +1,539 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-inputnumber/ciy-inputnumber.vue b/fapp/ciyon_ap/components/ciy-inputnumber/ciy-inputnumber.vue new file mode 100644 index 0000000..717e1a4 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-inputnumber/ciy-inputnumber.vue @@ -0,0 +1,153 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-inputocr/ciy-inputocr.vue b/fapp/ciyon_ap/components/ciy-inputocr/ciy-inputocr.vue new file mode 100644 index 0000000..baf56c2 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-inputocr/ciy-inputocr.vue @@ -0,0 +1,189 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-inputtimepoint/ciy-inputtimepoint.vue b/fapp/ciyon_ap/components/ciy-inputtimepoint/ciy-inputtimepoint.vue new file mode 100644 index 0000000..7268975 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-inputtimepoint/ciy-inputtimepoint.vue @@ -0,0 +1,144 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-inputunitedit/ciy-inputunitedit.vue b/fapp/ciyon_ap/components/ciy-inputunitedit/ciy-inputunitedit.vue new file mode 100644 index 0000000..3f1cb74 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-inputunitedit/ciy-inputunitedit.vue @@ -0,0 +1,188 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-listend/ciy-listend.vue b/fapp/ciyon_ap/components/ciy-listend/ciy-listend.vue new file mode 100644 index 0000000..67075e1 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-listend/ciy-listend.vue @@ -0,0 +1,74 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-machinecheck/ciy-machinecheck.vue b/fapp/ciyon_ap/components/ciy-machinecheck/ciy-machinecheck.vue new file mode 100644 index 0000000..cd11920 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-machinecheck/ciy-machinecheck.vue @@ -0,0 +1,69 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-markdown/ciy-markdown.vue b/fapp/ciyon_ap/components/ciy-markdown/ciy-markdown.vue new file mode 100644 index 0000000..57b2209 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-markdown/ciy-markdown.vue @@ -0,0 +1,171 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-mdedit/ciy-mdedit.vue b/fapp/ciyon_ap/components/ciy-mdedit/ciy-mdedit.vue new file mode 100644 index 0000000..09e9f65 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-mdedit/ciy-mdedit.vue @@ -0,0 +1,423 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-textmore/ciy-textmore.vue b/fapp/ciyon_ap/components/ciy-textmore/ciy-textmore.vue new file mode 100644 index 0000000..b2f242a --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-textmore/ciy-textmore.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-toast/ciy-toast.vue b/fapp/ciyon_ap/components/ciy-toast/ciy-toast.vue new file mode 100644 index 0000000..9a347af --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-toast/ciy-toast.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/ciy-upload/ciy-upload.vue b/fapp/ciyon_ap/components/ciy-upload/ciy-upload.vue new file mode 100644 index 0000000..d0f6e33 --- /dev/null +++ b/fapp/ciyon_ap/components/ciy-upload/ciy-upload.vue @@ -0,0 +1,680 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/components/diy-xxlist/diy-xxlist.vue b/fapp/ciyon_ap/components/diy-xxlist/diy-xxlist.vue new file mode 100644 index 0000000..81dfdc8 --- /dev/null +++ b/fapp/ciyon_ap/components/diy-xxlist/diy-xxlist.vue @@ -0,0 +1,63 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/defpages.json b/fapp/ciyon_ap/defpages.json new file mode 100644 index 0000000..91682a0 --- /dev/null +++ b/fapp/ciyon_ap/defpages.json @@ -0,0 +1,31 @@ +{ + "pages": [{ + "path": "pages/main/index", + "style": { + "enablePullDownRefresh": true + } + }], + "ciycfg": { + "mainpackage": ["main", "pub"] + }, + "globalStyle": { + "navigationBarTitleText": "众产Ciyon", + "navigationStyle": "custom", + "navigationBarTextStyle": "black" + }, + "tabBar": { + "list": [{ + "pagePath": "pages/main/index" + }, + { + "pagePath": "pages/main/me" + } + ] + }, + "preloadRule": { + "pages/main/index": { + "packages": ["pages/demo"], + "network": "all" + } + } +} \ No newline at end of file diff --git a/fapp/ciyon_ap/index.html b/fapp/ciyon_ap/index.html new file mode 100644 index 0000000..2197227 --- /dev/null +++ b/fapp/ciyon_ap/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/fapp/ciyon_ap/main.js b/fapp/ciyon_ap/main.js new file mode 100644 index 0000000..6f0cda6 --- /dev/null +++ b/fapp/ciyon_ap/main.js @@ -0,0 +1,38 @@ +/* +================================================================================= +* License: GPL-2.0 license +* Author: 众产® https://ciy.cn/code +* Version: 0.1.0 +================================================================================= +支持i18n多语言、深色模式、通用css色系 +在ciy.js中混入了常用函数库。自定义组件与页面均可调用。 +app.* 系统函数 +c.* 独立函数 +this.* 页面函数 +*/ +import messages from './util/langload'; +let lang = uni.getStorageSync("_lang"); +if(!lang) + lang = uni.getLocale(); +let i18nConfig = { + locale: lang, + silentTranslationWarn: true, + silentFallbackWarn: true, + messages +}; +import App from './App'; +import { createSSRApp } from 'vue'; +import { createI18n } from 'vue-i18n'; +import ciy from './util/ciy'; + +import './util/style.css'; +import './prod.css'; +const i18n = createI18n(i18nConfig); +export function createApp() { + const app = createSSRApp(App); + app.use(i18n); + app.use(ciy, App); + return { + app + }; +} \ No newline at end of file diff --git a/fapp/ciyon_ap/manifest.json b/fapp/ciyon_ap/manifest.json new file mode 100644 index 0000000..ef57506 --- /dev/null +++ b/fapp/ciyon_ap/manifest.json @@ -0,0 +1,173 @@ +{ + "name" : "众产DAO", + "appid" : "__UNI__0372782", + "description" : "", + "versionName" : "1.0.1", + "versionCode" : 1000001, + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : { + "Bluetooth" : {}, + "iBeacon" : {} + }, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : { + "dSYMs" : false + }, + /* SDK配置 */ + "sdkConfigs" : { + "push" : { + "unipush" : { + "version" : "2", + "offline" : true, + "hms" : {}, + "oppo" : {}, + "vivo" : {}, + "mi" : {}, + "meizu" : {}, + "honor" : {}, + "fcm" : {} + } + }, + "share" : { + "weixin" : { + "appid" : "", + "UniversalLinks" : "" + } + }, + "speech" : { + "baidu" : { + "appid" : "", + "apikey" : "", + "secretkey" : "" + } + }, + "payment" : {}, + "oauth" : {}, + "maps" : { + "amap" : { + "name" : "", + "appkey_ios" : "", + "appkey_android" : "" + } + }, + "ad" : {} + }, + "icons" : { + "android" : { + "hdpi" : "unpackage/res/icons/72x72.png", + "xhdpi" : "unpackage/res/icons/96x96.png", + "xxhdpi" : "unpackage/res/icons/144x144.png", + "xxxhdpi" : "unpackage/res/icons/192x192.png" + }, + "ios" : { + "appstore" : "unpackage/res/icons/1024x1024.png", + "ipad" : { + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png" + }, + "iphone" : { + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png" + } + } + } + } + }, + "h5" : { + "router" : { + "base" : "./" + }, + "sdkConfigs" : { + "maps" : { + "qqmap" : { + "key" : "TCEBZ-PACWI-OQCGA-5ST3L-CYEDS-OJFW4" + } + } + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "wx0408640a187feb35", + "setting" : { + "urlCheck" : false, + "minified" : false + }, + "usingComponents" : true, + "requiredBackgroundModes" : [ "audio" ], + "libVersion" : "3.4", + "plugins" : { + "WechatSI" : { + "version" : "0.3.6", + "provider" : "wx069ba97219f66d99" + } + }, + "permission" : { + "scope.userLocation" : { + "desc" : "用户位置自动获取" + } + }, + "requiredPrivateInfos" : [ "chooseLocation", "getLocation", "chooseAddress" ] + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "3" +} diff --git a/fapp/ciyon_ap/pages.json b/fapp/ciyon_ap/pages.json new file mode 100644 index 0000000..c8ff12d --- /dev/null +++ b/fapp/ciyon_ap/pages.json @@ -0,0 +1,371 @@ +{ + "pages": [ + { + "path": "pages/main/index", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "pages/main/me", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "pages/main/me_cash" + }, + { + "path": "pages/main/me_cash_bank" + }, + { + "path": "pages/main/me_cash_in", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "pages/main/me_cash_out", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "pages/main/me_info" + }, + { + "path": "pages/main/me_invoice" + }, + { + "path": "pages/main/me_invoicetitle" + }, + { + "path": "pages/main/me_invoice_history", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "pages/main/me_passchange" + }, + { + "path": "pages/main/me_pnt" + }, + { + "path": "pages/main/me_pnt_buy", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "pages/main/me_pnt_record", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "pages/main/me_problechat" + }, + { + "path": "pages/main/me_problem", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "pages/main/me_qrcode" + }, + { + "path": "pages/main/me_real" + }, + { + "path": "pages/main/me_shipaddr" + }, + { + "path": "pages/main/me_suggest" + }, + { + "path": "pages/main/paper" + }, + { + "path": "pages/main/part" + }, + { + "path": "pages/main/psection", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "pages/pub/camera" + }, + { + "path": "pages/pub/web", + "style": { + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black" + } + } + ], + "ciycfg": { + "mainpackage": [ + "main", + "pub" + ] + }, + "globalStyle": { + "navigationBarTitleText": "众产Ciyon", + "navigationStyle": "custom", + "navigationBarTextStyle": "black" + }, + "tabBar": { + "list": [ + { + "pagePath": "pages/main/index" + }, + { + "pagePath": "pages/main/me" + } + ] + }, + "preloadRule": { + "pages/main/index": { + "packages": [ + "pages/demo" + ], + "network": "all" + } + }, + "subPackages": [ + { + "root": "pages/demo", + "pages": [ + { + "path": "case/comlife" + }, + { + "path": "case/dict" + }, + { + "path": "case/pagecal" + }, + { + "path": "case/pagefix" + }, + { + "path": "case/promise" + }, + { + "path": "case/proxy" + }, + { + "path": "case/vproject" + }, + { + "path": "comform/calendar" + }, + { + "path": "comform/capcode" + }, + { + "path": "comform/checkbox" + }, + { + "path": "comform/checkitem" + }, + { + "path": "comform/define" + }, + { + "path": "comform/handsign" + }, + { + "path": "comform/input" + }, + { + "path": "comform/inputbet" + }, + { + "path": "comform/inputcyc" + }, + { + "path": "comform/inputdaterange" + }, + { + "path": "comform/inputdatetime" + }, + { + "path": "comform/inputnumber" + }, + { + "path": "comform/inputtimepoint" + }, + { + "path": "comform/inputunitedit" + }, + { + "path": "comform/radiobox" + }, + { + "path": "comform/ratestar" + }, + { + "path": "comform/selbool" + }, + { + "path": "comform/selcas" + }, + { + "path": "comform/select" + }, + { + "path": "comform/selmap" + }, + { + "path": "comform/selpage" + }, + { + "path": "comform/slider" + }, + { + "path": "comform/switch" + }, + { + "path": "comform/textarea" + }, + { + "path": "comform/upload" + }, + { + "path": "comview/alert" + }, + { + "path": "comview/ani" + }, + { + "path": "comview/anipop" + }, + { + "path": "comview/audio" + }, + { + "path": "comview/auth" + }, + { + "path": "comview/cameraocr" + }, + { + "path": "comview/gesture" + }, + { + "path": "comview/header" + }, + { + "path": "comview/listend", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "comview/markdown" + }, + { + "path": "comview/movable" + }, + { + "path": "comview/popmenu" + }, + { + "path": "comview/query" + }, + { + "path": "comview/searchbar" + }, + { + "path": "comview/segment" + }, + { + "path": "comview/showimgs" + }, + { + "path": "comview/shownum" + }, + { + "path": "comview/svgimg" + }, + { + "path": "comview/swipelist" + }, + { + "path": "comview/swiper" + }, + { + "path": "comview/tabbar" + }, + { + "path": "comview/textmore" + }, + { + "path": "comview/toast" + }, + { + "path": "css/chart_pie" + }, + { + "path": "css/cssdemo" + }, + { + "path": "css/grid" + }, + { + "path": "css/pageflex" + }, + { + "path": "css/skeleton" + }, + { + "path": "css/tailwind" + }, + { + "path": "css/waterfall" + }, + { + "path": "css/zindex" + }, + { + "path": "curd/demo_edit" + }, + { + "path": "curd/demo_list", + "style": { + "enablePullDownRefresh": true + } + }, + { + "path": "curd/me" + }, + { + "path": "index" + }, + { + "path": "page/func" + }, + { + "path": "page/lang" + }, + { + "path": "page/oldfont" + }, + { + "path": "page/sysinfo" + }, + { + "path": "page/theme" + }, + { + "path": "test" + } + ] + } + ] +} \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/case/comlife.vue b/fapp/ciyon_ap/pages/demo/case/comlife.vue new file mode 100644 index 0000000..62c5a56 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/case/comlife.vue @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/case/dict.vue b/fapp/ciyon_ap/pages/demo/case/dict.vue new file mode 100644 index 0000000..d88035a --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/case/dict.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/case/pagecal.vue b/fapp/ciyon_ap/pages/demo/case/pagecal.vue new file mode 100644 index 0000000..5db8cb6 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/case/pagecal.vue @@ -0,0 +1,70 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/case/pagefix.vue b/fapp/ciyon_ap/pages/demo/case/pagefix.vue new file mode 100644 index 0000000..60c371c --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/case/pagefix.vue @@ -0,0 +1,238 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/case/promise.vue b/fapp/ciyon_ap/pages/demo/case/promise.vue new file mode 100644 index 0000000..2b5d7f0 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/case/promise.vue @@ -0,0 +1,63 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/case/proxy.vue b/fapp/ciyon_ap/pages/demo/case/proxy.vue new file mode 100644 index 0000000..cecb949 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/case/proxy.vue @@ -0,0 +1,64 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/case/vproject.vue b/fapp/ciyon_ap/pages/demo/case/vproject.vue new file mode 100644 index 0000000..e959801 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/case/vproject.vue @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/calendar.vue b/fapp/ciyon_ap/pages/demo/comform/calendar.vue new file mode 100644 index 0000000..c2fb9a6 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/calendar.vue @@ -0,0 +1,208 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/capcode.vue b/fapp/ciyon_ap/pages/demo/comform/capcode.vue new file mode 100644 index 0000000..4339447 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/capcode.vue @@ -0,0 +1,131 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/checkbox.vue b/fapp/ciyon_ap/pages/demo/comform/checkbox.vue new file mode 100644 index 0000000..07cdddd --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/checkbox.vue @@ -0,0 +1,192 @@ + + + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/checkitem.vue b/fapp/ciyon_ap/pages/demo/comform/checkitem.vue new file mode 100644 index 0000000..59cb958 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/checkitem.vue @@ -0,0 +1,163 @@ + + + + + + + diff --git a/fapp/ciyon_ap/pages/demo/comform/define.vue b/fapp/ciyon_ap/pages/demo/comform/define.vue new file mode 100644 index 0000000..96169e6 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/define.vue @@ -0,0 +1,87 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/handsign.vue b/fapp/ciyon_ap/pages/demo/comform/handsign.vue new file mode 100644 index 0000000..914fd39 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/handsign.vue @@ -0,0 +1,149 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/input.vue b/fapp/ciyon_ap/pages/demo/comform/input.vue new file mode 100644 index 0000000..67f2569 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/input.vue @@ -0,0 +1,195 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/inputbet.vue b/fapp/ciyon_ap/pages/demo/comform/inputbet.vue new file mode 100644 index 0000000..23345fe --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/inputbet.vue @@ -0,0 +1,177 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/inputcyc.vue b/fapp/ciyon_ap/pages/demo/comform/inputcyc.vue new file mode 100644 index 0000000..38ab245 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/inputcyc.vue @@ -0,0 +1,124 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/inputdaterange.vue b/fapp/ciyon_ap/pages/demo/comform/inputdaterange.vue new file mode 100644 index 0000000..dc1fb16 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/inputdaterange.vue @@ -0,0 +1,165 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/inputdatetime.vue b/fapp/ciyon_ap/pages/demo/comform/inputdatetime.vue new file mode 100644 index 0000000..ebe5f0d --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/inputdatetime.vue @@ -0,0 +1,188 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/inputnumber.vue b/fapp/ciyon_ap/pages/demo/comform/inputnumber.vue new file mode 100644 index 0000000..df6e82e --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/inputnumber.vue @@ -0,0 +1,121 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/inputtimepoint.vue b/fapp/ciyon_ap/pages/demo/comform/inputtimepoint.vue new file mode 100644 index 0000000..cbd3d41 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/inputtimepoint.vue @@ -0,0 +1,142 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/inputunitedit.vue b/fapp/ciyon_ap/pages/demo/comform/inputunitedit.vue new file mode 100644 index 0000000..3f483c4 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/inputunitedit.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/radiobox.vue b/fapp/ciyon_ap/pages/demo/comform/radiobox.vue new file mode 100644 index 0000000..eaa86ce --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/radiobox.vue @@ -0,0 +1,164 @@ + + + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/ratestar.vue b/fapp/ciyon_ap/pages/demo/comform/ratestar.vue new file mode 100644 index 0000000..b7d2c91 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/ratestar.vue @@ -0,0 +1,140 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/selbool.vue b/fapp/ciyon_ap/pages/demo/comform/selbool.vue new file mode 100644 index 0000000..1fddc0d --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/selbool.vue @@ -0,0 +1,168 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/selcas.vue b/fapp/ciyon_ap/pages/demo/comform/selcas.vue new file mode 100644 index 0000000..a8bf400 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/selcas.vue @@ -0,0 +1,226 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/select.vue b/fapp/ciyon_ap/pages/demo/comform/select.vue new file mode 100644 index 0000000..9b28544 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/select.vue @@ -0,0 +1,334 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/selmap.vue b/fapp/ciyon_ap/pages/demo/comform/selmap.vue new file mode 100644 index 0000000..9607e52 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/selmap.vue @@ -0,0 +1,134 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/selpage.vue b/fapp/ciyon_ap/pages/demo/comform/selpage.vue new file mode 100644 index 0000000..a229b94 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/selpage.vue @@ -0,0 +1,184 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/slider.vue b/fapp/ciyon_ap/pages/demo/comform/slider.vue new file mode 100644 index 0000000..aee4868 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/slider.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/switch.vue b/fapp/ciyon_ap/pages/demo/comform/switch.vue new file mode 100644 index 0000000..4146c4f --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/switch.vue @@ -0,0 +1,168 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/textarea.vue b/fapp/ciyon_ap/pages/demo/comform/textarea.vue new file mode 100644 index 0000000..bcdaa1a --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/textarea.vue @@ -0,0 +1,163 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comform/upload.vue b/fapp/ciyon_ap/pages/demo/comform/upload.vue new file mode 100644 index 0000000..d4b8f19 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comform/upload.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/fapp/ciyon_ap/pages/demo/comview/alert.vue b/fapp/ciyon_ap/pages/demo/comview/alert.vue new file mode 100644 index 0000000..a0d7cfc --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/alert.vue @@ -0,0 +1,242 @@ + + + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/ani.vue b/fapp/ciyon_ap/pages/demo/comview/ani.vue new file mode 100644 index 0000000..5cc5b4e --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/ani.vue @@ -0,0 +1,191 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/anipop.vue b/fapp/ciyon_ap/pages/demo/comview/anipop.vue new file mode 100644 index 0000000..01e22ee --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/anipop.vue @@ -0,0 +1,156 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/audio.vue b/fapp/ciyon_ap/pages/demo/comview/audio.vue new file mode 100644 index 0000000..c5367a2 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/audio.vue @@ -0,0 +1,131 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/auth.vue b/fapp/ciyon_ap/pages/demo/comview/auth.vue new file mode 100644 index 0000000..91cec81 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/auth.vue @@ -0,0 +1,91 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/cameraocr.vue b/fapp/ciyon_ap/pages/demo/comview/cameraocr.vue new file mode 100644 index 0000000..3e3159b --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/cameraocr.vue @@ -0,0 +1,136 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/gesture.vue b/fapp/ciyon_ap/pages/demo/comview/gesture.vue new file mode 100644 index 0000000..f0d0c6f --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/gesture.vue @@ -0,0 +1,110 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/header.vue b/fapp/ciyon_ap/pages/demo/comview/header.vue new file mode 100644 index 0000000..f6e3424 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/header.vue @@ -0,0 +1,102 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/listend.vue b/fapp/ciyon_ap/pages/demo/comview/listend.vue new file mode 100644 index 0000000..2483666 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/listend.vue @@ -0,0 +1,120 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/markdown.vue b/fapp/ciyon_ap/pages/demo/comview/markdown.vue new file mode 100644 index 0000000..294b6af --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/markdown.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/movable.vue b/fapp/ciyon_ap/pages/demo/comview/movable.vue new file mode 100644 index 0000000..8aaf6ac --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/movable.vue @@ -0,0 +1,155 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/popmenu.vue b/fapp/ciyon_ap/pages/demo/comview/popmenu.vue new file mode 100644 index 0000000..78e790c --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/popmenu.vue @@ -0,0 +1,161 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/query.vue b/fapp/ciyon_ap/pages/demo/comview/query.vue new file mode 100644 index 0000000..8e26cb0 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/query.vue @@ -0,0 +1,172 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/searchbar.vue b/fapp/ciyon_ap/pages/demo/comview/searchbar.vue new file mode 100644 index 0000000..b4f1d29 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/searchbar.vue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/segment.vue b/fapp/ciyon_ap/pages/demo/comview/segment.vue new file mode 100644 index 0000000..3877dd5 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/segment.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/fapp/ciyon_ap/pages/demo/comview/showimgs.vue b/fapp/ciyon_ap/pages/demo/comview/showimgs.vue new file mode 100644 index 0000000..5c33312 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/showimgs.vue @@ -0,0 +1,103 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/shownum.vue b/fapp/ciyon_ap/pages/demo/comview/shownum.vue new file mode 100644 index 0000000..297f341 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/shownum.vue @@ -0,0 +1,79 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/svgimg.vue b/fapp/ciyon_ap/pages/demo/comview/svgimg.vue new file mode 100644 index 0000000..9d4ec66 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/svgimg.vue @@ -0,0 +1,86 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/swipelist.vue b/fapp/ciyon_ap/pages/demo/comview/swipelist.vue new file mode 100644 index 0000000..344e906 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/swipelist.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/swiper.vue b/fapp/ciyon_ap/pages/demo/comview/swiper.vue new file mode 100644 index 0000000..c5182fa --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/swiper.vue @@ -0,0 +1,89 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/tabbar.vue b/fapp/ciyon_ap/pages/demo/comview/tabbar.vue new file mode 100644 index 0000000..fbc7c3f --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/tabbar.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/textmore.vue b/fapp/ciyon_ap/pages/demo/comview/textmore.vue new file mode 100644 index 0000000..88302bd --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/textmore.vue @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/comview/toast.vue b/fapp/ciyon_ap/pages/demo/comview/toast.vue new file mode 100644 index 0000000..1992f9c --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/comview/toast.vue @@ -0,0 +1,101 @@ + + + + + + + diff --git a/fapp/ciyon_ap/pages/demo/css/chart_pie.vue b/fapp/ciyon_ap/pages/demo/css/chart_pie.vue new file mode 100644 index 0000000..d6eb8c9 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/css/chart_pie.vue @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/css/cssdemo.vue b/fapp/ciyon_ap/pages/demo/css/cssdemo.vue new file mode 100644 index 0000000..65ef88b --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/css/cssdemo.vue @@ -0,0 +1,218 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/css/grid.vue b/fapp/ciyon_ap/pages/demo/css/grid.vue new file mode 100644 index 0000000..2882371 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/css/grid.vue @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/css/pageflex.vue b/fapp/ciyon_ap/pages/demo/css/pageflex.vue new file mode 100644 index 0000000..5e91067 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/css/pageflex.vue @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/css/skeleton.vue b/fapp/ciyon_ap/pages/demo/css/skeleton.vue new file mode 100644 index 0000000..d4b0722 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/css/skeleton.vue @@ -0,0 +1,39 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/css/tailwind.vue b/fapp/ciyon_ap/pages/demo/css/tailwind.vue new file mode 100644 index 0000000..b708056 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/css/tailwind.vue @@ -0,0 +1,106 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/css/waterfall.vue b/fapp/ciyon_ap/pages/demo/css/waterfall.vue new file mode 100644 index 0000000..f98c3e9 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/css/waterfall.vue @@ -0,0 +1,40 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/css/zindex.vue b/fapp/ciyon_ap/pages/demo/css/zindex.vue new file mode 100644 index 0000000..620257c --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/css/zindex.vue @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/curd/demo_edit.vue b/fapp/ciyon_ap/pages/demo/curd/demo_edit.vue new file mode 100644 index 0000000..1f81928 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/curd/demo_edit.vue @@ -0,0 +1,300 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/curd/demo_list.vue b/fapp/ciyon_ap/pages/demo/curd/demo_list.vue new file mode 100644 index 0000000..785a28d --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/curd/demo_list.vue @@ -0,0 +1,347 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/curd/me.vue b/fapp/ciyon_ap/pages/demo/curd/me.vue new file mode 100644 index 0000000..af89f06 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/curd/me.vue @@ -0,0 +1,215 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/index.vue b/fapp/ciyon_ap/pages/demo/index.vue new file mode 100644 index 0000000..cd46ffc --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/index.vue @@ -0,0 +1,467 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/page/func.vue b/fapp/ciyon_ap/pages/demo/page/func.vue new file mode 100644 index 0000000..ab9ab84 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/page/func.vue @@ -0,0 +1,807 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/page/lang.vue b/fapp/ciyon_ap/pages/demo/page/lang.vue new file mode 100644 index 0000000..b26e7a6 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/page/lang.vue @@ -0,0 +1,291 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/page/oldfont.vue b/fapp/ciyon_ap/pages/demo/page/oldfont.vue new file mode 100644 index 0000000..6c8ec36 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/page/oldfont.vue @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/page/sysinfo.vue b/fapp/ciyon_ap/pages/demo/page/sysinfo.vue new file mode 100644 index 0000000..5020898 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/page/sysinfo.vue @@ -0,0 +1,86 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/page/theme.vue b/fapp/ciyon_ap/pages/demo/page/theme.vue new file mode 100644 index 0000000..5b35f2b --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/page/theme.vue @@ -0,0 +1,91 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/test.vue b/fapp/ciyon_ap/pages/demo/test.vue new file mode 100644 index 0000000..45e3425 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/test.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/zdemo.css b/fapp/ciyon_ap/pages/demo/zdemo.css new file mode 100644 index 0000000..bb3bcd3 --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/zdemo.css @@ -0,0 +1,106 @@ +.zw { + padding: 1em; + color: var(--txt1); + background: var(--bg1); +} + +.tip { + padding: 0.5em 0 0.5em 1em; +} + +.fun, +.prp, +.evt { + font-weight: bold; +} + +.log { + white-space: pre; + padding-bottom: 0.5em; + border-bottom: 1px solid #eeeeee; + margin: 0.5em 0; +} + +.hr { + height: 1px; + width: 100%; + margin: 1em 0; + background: linear-gradient(90deg, transparent, var(--bg7), transparent); +} + +.formcard { + margin-top:-0.5em; +} +.formdata { + white-space: break-spaces; +} + +.lang { + padding: 0.1em 0.4em 0 0.4em; + margin: 0 0.2em; + font-size: 0.9em; + line-height: 1.3em; + display: inline-block; + vertical-align: bottom; + color: var(--txt1); + border: 1px solid var(--bg7); + background-color: var(--bg5); + border-radius: 0.2em; +} + +.lang.selected { + color: var(--txt9); + background-color: var(--bg1); +} + +.fun::before { + content: '方法'; + font-size: 0.8em; + background: var(--bg5); + padding: 0.3em; + margin: 0 0.4em; + border-radius: 0.4em; + height: 1em; + line-height: 1em; + display: inline-block; + color: var(--man6); +} + +.prp::before { + content: '属性'; + font-size: 0.8em; + background: var(--bg5); + padding: 0.3em; + margin: 0 0.4em; + border-radius: 0.4em; + height: 1em; + line-height: 1em; + display: inline-block; + color: var(--succ5); +} + +.evt::before { + content: '事件'; + font-size: 0.8em; + background: var(--bg5); + padding: 0.3em; + margin: 0 0.4em; + border-radius: 0.4em; + height: 1em; + line-height: 1em; + display: inline-block; + color: var(--warn5); +} + +.slt::before { + content: '插槽'; + font-size: 0.8em; + background: var(--bg5); + padding: 0.3em; + margin: 0 0.4em; + border-radius: 0.4em; + height: 1em; + line-height: 1em; + display: inline-block; + color: var(--man7); +} \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/demo/zmixin.js b/fapp/ciyon_ap/pages/demo/zmixin.js new file mode 100644 index 0000000..0be154d --- /dev/null +++ b/fapp/ciyon_ap/pages/demo/zmixin.js @@ -0,0 +1,50 @@ +export default { + data() { + return { + locale: 'zh-Hans', + locales: [{ + id: 'zh-Hans', + name: '简体中文' + }, { + id: 'zh-Hant', + name: '繁体中文' + }, { + id: 'en', + name: 'English' + }, { + id: 'ja', + name: '日本語' + }], + formdata:'', + props: {}, + eventlog: [] + }; + }, + created() { + let lang = uni.getStorageSync("_lang"); + if (!lang) + lang = uni.getLocale(); + this.locale = lang; + }, + methods: { + chglog(event, e) { + console.log(event, e); + if(e.com) + delete e.com; + this.eventlog.unshift(event + ': ' + JSON.stringify(e, null, ' ')); + }, + submitlog(e) { + console.log(e); + this.formdata = '表单数据: '+JSON.stringify(e.detail.value, null, ' '); + }, + callfun(com, fun) { + this.getrefs(com).then(ref => { + console.log(ref[fun]()); + }); + }, + setlocale(locale) { + this.locale = locale; + this.$i18n.locale = locale; + }, + } +}; \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/index.vue b/fapp/ciyon_ap/pages/main/index.vue new file mode 100644 index 0000000..a5d86ee --- /dev/null +++ b/fapp/ciyon_ap/pages/main/index.vue @@ -0,0 +1,138 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me.vue b/fapp/ciyon_ap/pages/main/me.vue new file mode 100644 index 0000000..bae716a --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me.vue @@ -0,0 +1,401 @@ + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_cash.vue b/fapp/ciyon_ap/pages/main/me_cash.vue new file mode 100644 index 0000000..e20fd94 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_cash.vue @@ -0,0 +1,131 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_cash_bank.vue b/fapp/ciyon_ap/pages/main/me_cash_bank.vue new file mode 100644 index 0000000..1bac5c5 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_cash_bank.vue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_cash_in.vue b/fapp/ciyon_ap/pages/main/me_cash_in.vue new file mode 100644 index 0000000..7c9732b --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_cash_in.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_cash_out.vue b/fapp/ciyon_ap/pages/main/me_cash_out.vue new file mode 100644 index 0000000..1051cbb --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_cash_out.vue @@ -0,0 +1,87 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_info.vue b/fapp/ciyon_ap/pages/main/me_info.vue new file mode 100644 index 0000000..f38b94c --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_info.vue @@ -0,0 +1,107 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_invoice.vue b/fapp/ciyon_ap/pages/main/me_invoice.vue new file mode 100644 index 0000000..9b12c7a --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_invoice.vue @@ -0,0 +1,94 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_invoice_history.vue b/fapp/ciyon_ap/pages/main/me_invoice_history.vue new file mode 100644 index 0000000..4d524c1 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_invoice_history.vue @@ -0,0 +1,102 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_invoicetitle.vue b/fapp/ciyon_ap/pages/main/me_invoicetitle.vue new file mode 100644 index 0000000..d5989f9 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_invoicetitle.vue @@ -0,0 +1,221 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_passchange.vue b/fapp/ciyon_ap/pages/main/me_passchange.vue new file mode 100644 index 0000000..8a10361 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_passchange.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/fapp/ciyon_ap/pages/main/me_pnt.vue b/fapp/ciyon_ap/pages/main/me_pnt.vue new file mode 100644 index 0000000..f4ade44 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_pnt.vue @@ -0,0 +1,138 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_pnt_buy.vue b/fapp/ciyon_ap/pages/main/me_pnt_buy.vue new file mode 100644 index 0000000..fe50e50 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_pnt_buy.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_pnt_record.vue b/fapp/ciyon_ap/pages/main/me_pnt_record.vue new file mode 100644 index 0000000..2121556 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_pnt_record.vue @@ -0,0 +1,70 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_problechat.vue b/fapp/ciyon_ap/pages/main/me_problechat.vue new file mode 100644 index 0000000..d566067 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_problechat.vue @@ -0,0 +1,209 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_problem.vue b/fapp/ciyon_ap/pages/main/me_problem.vue new file mode 100644 index 0000000..ae521d1 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_problem.vue @@ -0,0 +1,142 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_qrcode.vue b/fapp/ciyon_ap/pages/main/me_qrcode.vue new file mode 100644 index 0000000..73eaa51 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_qrcode.vue @@ -0,0 +1,37 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_real.vue b/fapp/ciyon_ap/pages/main/me_real.vue new file mode 100644 index 0000000..073e969 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_real.vue @@ -0,0 +1,212 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_shipaddr.vue b/fapp/ciyon_ap/pages/main/me_shipaddr.vue new file mode 100644 index 0000000..4bb28ec --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_shipaddr.vue @@ -0,0 +1,251 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/me_suggest.vue b/fapp/ciyon_ap/pages/main/me_suggest.vue new file mode 100644 index 0000000..b639bd1 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/me_suggest.vue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/paper.vue b/fapp/ciyon_ap/pages/main/paper.vue new file mode 100644 index 0000000..03c329d --- /dev/null +++ b/fapp/ciyon_ap/pages/main/paper.vue @@ -0,0 +1,41 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/part.vue b/fapp/ciyon_ap/pages/main/part.vue new file mode 100644 index 0000000..099e7a5 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/part.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/main/psection.vue b/fapp/ciyon_ap/pages/main/psection.vue new file mode 100644 index 0000000..fa59403 --- /dev/null +++ b/fapp/ciyon_ap/pages/main/psection.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/pub/camera.vue b/fapp/ciyon_ap/pages/pub/camera.vue new file mode 100644 index 0000000..9510191 --- /dev/null +++ b/fapp/ciyon_ap/pages/pub/camera.vue @@ -0,0 +1,59 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/pub/web.vue b/fapp/ciyon_ap/pages/pub/web.vue new file mode 100644 index 0000000..7c47773 --- /dev/null +++ b/fapp/ciyon_ap/pages/pub/web.vue @@ -0,0 +1,32 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/prod.css b/fapp/ciyon_ap/prod.css new file mode 100644 index 0000000..e69de29 diff --git a/fapp/ciyon_ap/uni.scss b/fapp/ciyon_ap/uni.scss new file mode 100644 index 0000000..17b7a53 --- /dev/null +++ b/fapp/ciyon_ap/uni.scss @@ -0,0 +1,76 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333333;//基本色 +$uni-text-color-inverse:#ffffff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16px; + +/* 图片尺寸 */ +$uni-img-size-sm:20px; +$uni-img-size-base:26px; +$uni-img-size-lg:40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:15px; diff --git a/fapp/ciyon_ap/util/ciy.js b/fapp/ciyon_ap/util/ciy.js new file mode 100644 index 0000000..b63e283 --- /dev/null +++ b/fapp/ciyon_ap/util/ciy.js @@ -0,0 +1,2515 @@ +/* +================================================================================= +* License: GPL-2.0 license +* Author: 众产® https://ciy.cn/code +* Version: 0.1.15 +================================================================================= +app函数库 + * alert (await)默认alert + * toast (await)默认提示 + * getpage 获取当前/上页页面 + * setuserstorage 保存用户信息、字典缓存、积分埋点 + * appupdate APP自动更新 + * connectbt 连接蓝牙 + * CiyWebSocket websocket客户端类 + + app&page函数库 + * getme 获取本地me缓存 + * callajax (await)服务端ajax请求 + * lang 多语言 + * uperr 错误捕获处理 + * json_parse 字符串转json + * json_string json转字符串 + * getstorage 读取storage + * setstorage 写入storage + * clearstorage 清空所有storage + * removestorage 删除storage + +page函数库 + * gourl 页面跳转。支持 http[web]、![原型]、*[alert提示]、$[需登录常规url]、常规url + * goweb 带授权的打开H5页面 + * goloc 按经纬度打开地图 + * gophone 拨打电话 + * goani 持续生成动画 + * copyboard 拷贝文本 + + * isfloat0 校验float是否0 + * isarray 判断变量是否array + * isobject 判断变量是否object + * islocalmedia 判断文件名是否本地文件 + * isimg 是否图片 + * isvideo 是否视频 + * file_ext 获取文件扩展名 + * file_stor ud url转绝对url + * hasstr 字符串是否包含另一个字符串 + * ccode 以id查询字典中的值 + * scode 以ids查询字典中的多个name + * mcode 以id查询字典中的多级name + * bcode 以int查询字典中的多个name + * enbase64 base64编码 + * svg2bg 将svg转成backgroundImage语法 + + * topad0 数字前面补0 + * tonumtho 整数部分千分位显示 + * tonumdec 小数部分 + * tostr 转字符串 + * toint 转整数 + * tofloat 转小数 + * tostamp 转时间戳 + * todatetime 时间戳转日期时间 + * tofix 处理小数显示 + * tounit 显示多级单位 + * tocyc 显示周期 月/天/分钟 + * tomsk 显示文字遮罩 + * totimespan 将时间转成 xx天后/xx小时前 + * totimesec 将秒数转成 xx天/xx小时 + * totimepoint 将数字转成 xx:xx[:xx] + * todayage 返回日龄天数 + * tobr 将\n替换成
,将<>替换成可显示 + + * pagenoscroll 页面滚动控制 + * settheme 设置暗黑模式 + * setfont 设置敬老模式 + * executepnt 触发积分埋点 + * setTabbar 设置Tabbar + + * getauth (await)获取用户信息,未登录调起登录界面,填充me/g + * scanqr (await)扫二维码 + * popmenu (await)弹出上拉菜单 + * toast (await)提示 + * alert (await)alert弹出框 + * askmsg (await)询问弹出框 + * inputmsg (await)输入弹出框 + * sleep (await)延迟毫秒 + * load_ciydict (await)获取远程静态dict + + * shareparam 分享链接转换 + * getstrparam 解析简易参数 + * urlparam 解析url + * arrayfind 从数组中匹配值。返回index + * objdeepmerge object合并,自动避开静态字典,自动处理带id数组 + * objclone 深度复制obj + * str2date 字符串转Date + * bin2hex bin转hex字符串 + * hex2bin hex字符串转bin + + * style2obj 将style属性转成object + * nopower 权限检查 + * getroute 获取route + * com_getpage 组件中获取页面句柄 + * com_gethdft (await)组件中获取页面标题栏/导航栏高度 + * getrefs (await)稳定获取ref + * getrefsSync 确保已加载com的同步函数 + * getrect (await)获取元素尺寸 + * file_upload1 (await)上传单个文件返回url + * file_uploads (await)上传多个文件 + * go/goe (await)golang式异步错误处理 + + page生命周期函数 + * onLoad 页面初始化。存储upid,构建post + * onShow 页面显示调用。设置暗黑主题/敬老字体 + * onPageScroll 页面滚动事件。scrollcbs传递函数引用 + +page默认数据 + * init 初始交互数据 + * srv 默认微服务指向 + * opn 页面urlget参数 + * me 用户状态 + * g 用户及字典数据引用 + * jsnurl 指向动态服务器(多个)。默认t + * header_* 页面边角尺寸 + * footer_* 页面边角尺寸 + * sysinfo systemInfo缓存 + +*/ +export default { + install(ap, app) { + ap.config.globalProperties._proptest = () => {}; //代码受限 + ap.directive('swipe', { //微信小程序暂时无法使用,app/h5支持 + mounted: function(el, binding) { + console.log('wx?', el, binding); + } + }); + app.methods.launch = function() { + var app = this; + // #ifdef MP-WEIXIN + var sys_system = wx.getSystemSetting(); + var sys_window = wx.getWindowInfo(); + var sys_appinfo = wx.getAppBaseInfo(); + var sys_appauth = wx.getAppAuthorizeSetting(); + var sys_device = wx.getDeviceInfo(); + console.log('sys_system', sys_system); + console.log('sys_window', sys_window); + console.log('sys_appinfo', sys_appinfo); + console.log('sys_appauth', sys_appauth); + console.log('sys_device', sys_device); + var sys = { + ...sys_system, + ...sys_window, + ...sys_appinfo, + ...sys_appauth, + ...sys_device + }; + if (!sys.screenHeight) { + sys = uni.getSystemInfoSync(); + console.log('getSystemInfoSync', sys); + } + // #endif + // #ifndef MP-WEIXIN + var sys = uni.getSystemInfoSync(); + // #endif + app.globalData._sysinfo = sys; + + app.globalData._header_statusbar_height = sys.statusBarHeight; + if (sys.safeAreaInsets) + app.globalData._footer_safe_height = sys.safeAreaInsets.bottom; + else if (sys.safeArea) + app.globalData._footer_safe_height = sys.screenHeight - sys.safeArea.bottom; + else + app.globalData._footer_safe_height = 0; + app.globalData._header_title_height = 40; + app.globalData._header_title_margin = 0; + // #ifdef MP-WEIXIN + var menubtn = wx.getMenuButtonBoundingClientRect(); + console.log('menubtn', menubtn); + app.globalData._menubtn = menubtn; + app.globalData._header_title_margin = sys.screenWidth - menubtn.left; + app.globalData._header_title_height = (menubtn.top - sys.statusBarHeight) * 2 + menubtn.height; + + try { + app.globalData.plugin_wechatsi = requirePlugin("WechatSI"); + app.globalData.plugin_wechatsi_manager = app.globalData.plugin_wechatsi.getRecordRecognitionManager(); + } catch (e) { + console.log('err', e); + } + // #endif + }; + app.methods.lang = function(str) { + var app = this; + if (typeof(app.$t) == 'function') + return app.$t(str); + return str; + }; + app.methods.alert = async function(content) { + return new Promise((resolve, reject) => { + var opt = { + content: content, + showCancel: false + }; + opt.success = res => { + resolve(true); + }; + uni.showModal(opt); + }).catch(e => { + return e; + }); + }; + app.methods.toast = async function(content, icon) { + return new Promise((resolve, reject) => { + if (typeof(icon) === 'function') { + cb = icon; + icon = 'none'; + } + if (!icon) + icon = 'none'; + uni.showToast({ + title: content, + icon: icon + }); + setTimeout(function() { + resolve(); + }, 2000); + }).catch(e => { + return e; + }); + }; + app.methods.getpage = function(idx) { //idx 0当前页,1上一页 + var ps = getCurrentPages(); + var p = null; + idx = idx || 0; + if (idx == 1) { + if (ps.length == 1) + return null; + p = ps[ps.length - 2]; + } else { + p = ps[ps.length - 1]; + } + // #ifdef MP-WEIXIN + p = p.$vm; + // #endif + return p; + }; + app.methods.getme = function() { + var me = this.getstorage("me"); + if (!me) + return { + id: 0 + }; + return me; + }; + app.methods.uperr = function(type, msg) { + console.warn('uperr', type, msg); + var errdata = {}; + errdata.type = type; + errdata.t = parseInt(new Date().getTime() / 1000); + errdata.msg = ''; + if (typeof(msg) == 'object') + errdata.msg = this.json_string(msg); + else + errdata.msg = msg + ''; + this.globalData.errdata.push(errdata); + this.setstorage('err', this.globalData.errdata); + }; + app.methods.json_parse = function(data) { + try { + if (data.length > 0 && data[0] != '[' && data[0] != '{') { + var ind = data.indexOf('{'); + if (ind == -1) + return null; + if (ind > 0) + data = data.substring(ind); + } + return JSON.parse(data); + } catch (e) { + console.error('json_parse', e); + } + return null; + }; + app.methods.json_string = function(data) { + try { + return JSON.stringify(data); + } catch (e) { + console.error('json_string', e); + } + return ''; + }; + app.methods.callajax = async function(opt) { + //成功{code:1,...} + //失败{errmsg:'错误信息'} + //func + //data = null 无post数据,GET方法 + //catch=0 不缓存,>0缓存 + //loadhide=true 默认false,取消加载中显示 loadtxt + var app = this; + return new Promise((resolve, reject) => { + opt = opt || {}; + if (opt.func.substring(0, 4) == 'http') + url = opt.func; + else { + opt.srv = opt.srv || app.globalData.srv; + var url = app.globalData.jsnurl[opt.srv]; + if (!url) + return reject({ + errmsg: 'srv无法匹配:' + opt.srv + }); + if (opt.func.indexOf('?') > -1) + url += opt.func; + else + url += app.globalData.jsnajax + opt.func; + } + opt.cache = opt.cache || 0; // 0不缓存 >0 对比时间,是否请求 + if (opt.cache > 0) { + opt.cachekey = opt.cachekey || 'f_' + opt.func; + var dat = app.getstorage(opt.cachekey); + var t = new Date().getTime() - (typeof(dat) == 'object' ? dat.t : 0); + if (t < (opt.cache - 1) * 1000) { + return resolve(dat.d); + } + } + if (!opt.loadhide) { + opt._showload = setTimeout(function() { + opt._showloaded = true; + uni.showToast({ + title: opt.loadtxt || '加载中', + icon: 'loading', + duration: 3000, + mask: true + }); + }, 500); + } + var header = {}; + header[app.globalData.tokenfield] = app.getstorage("_" + app.globalData.tokenfield); + if (opt.data) + opt.data._pf = 'MB'; + uni.request({ + url: url, + data: opt.data, + dataType: 'text', + method: opt.data ? 'POST' : 'GET', + header: header, + fail: res => { + var errmsg = res.errMsg || 'nofind errMsg.'; + if (errmsg.indexOf('fail abort') > 0) + errmsg = '网络信号不好'; + else if (errmsg.indexOf('equest:fail timeout') > 0) + errmsg = '网络访问超时'; + else if (errmsg.indexOf('equest:fail') > 0) + errmsg = '网络不可用'; + return reject({ + errmsg: errmsg + }); + }, + complete: res => { + if (opt._showload) { + clearTimeout(opt._showload); + if (opt._showloaded) + uni.hideToast(); + } + if (opt.pagethis && opt.pagethis._stopPullDown) { + opt.pagethis._stopPullDown = false; + uni.stopPullDownRefresh(); + } + }, + success: res => { + var json = app.json_parse(res.data); + if (json === null) { + res._url = url; + res._post = opt.data; + app.uperr("h5.noajaxjson", res); + return reject({ + errmsg: '返回JSON错误:' + res.statusCode + }); + } + if (json.code != 1) { + if (json.code == 2) { + app.removestorage('me'); + var pg = app.getpage(); + if (pg.isPage) + pg.getauth(); + return reject({ + errmsg: '请重新登录' + }); + } else { + return reject(json); + } + } + try { + var dictversion = res.header[app.globalData.tokenfield + 're']; + if (dictversion) { + console.log('restorage new', dictversion); + app.globalData._restorage = true; //通知app.vue自动刷新 + } + var newauth = ''; + for (var i in res.header) { + if (i.toLowerCase() == app.globalData.tokenfield) + newauth = res.header[i]; + } + if (newauth) { + console.log('newauth new', newauth); + app.setstorage('_' + app.globalData.tokenfield, newauth); + } + //delete json.code; + if (opt.cache > 0) { + app.setstorage(opt.cachekey, { + d: json, + t: new Date().getTime() + }); + } + return resolve(json); + } catch (e) { + res._url = url; + res._post = opt.data; + res._cache = e; + app.uperr("h5.ajaxrun", res); + return reject({ + errmsg: '请求错误:' + e.message + }); + } + } + }); + }).catch(e => { + if (e.error != 'NULL') { + //app.toast(e.errmsg); + } + return e; + }); + }; + app.methods.setuserstorage = function(json) { + var app = this; + if (json.me.name) { + if (json.me.name[0] == ':') { + json.me.neednick = true; + json.me.name = json.me.name.substring(1); + } + } + app.setstorage("me", json.me); + var pnttrack = app.getstorage('_pnttrack', {}); + if (!(pnttrack instanceof Object)) + pnttrack = {}; + var day = new Date(); + day.setHours(0, 0, 0, 0); + day = parseInt(day.getTime() / 1000); + for (var pt in json.pnttrack) { + let track = json.pnttrack[pt]; + let cnt = 0; + if (pnttrack[track.id]) + cnt = pnttrack[track.id].pnt; + pnttrack[track.id] = { + name: track.name, + p: track.point, + h24: track.limh24, + day: day, + cnt: cnt + } + } + app.setstorage("_pnttrack", pnttrack); + + var sav = app.getstorage('g', {}); + var arr = json.storage; + for (var code in arr) { + if (code == 'cata') { + for (var c in arr[code]) { + if (arr[code][c].cbid > 0) + continue; + var types = arr[code][c].codeid; + var codes = new Array(); + for (var d in arr[code]) { + if (arr[code][d].cbid != arr[code][c].id) + continue; + var cs = {}; + cs.id = arr[code][d].codeid; + cs.name = arr[code][d].name; + if (arr[code][d].extdata) + cs.extdata = arr[code][d].extdata; + if (arr[code][d].clas) + cs.clas = arr[code][d].clas; + if (arr[code][d].upid > 0) { + for (var i in arr[code]) { + if (arr[code][d].upid == arr[code][i].id) { + cs.upid = arr[code][i].codeid; + break; + } + } + } + codes.push(cs); + } + if (types) + sav[types] = codes; + } + } else { + sav[code] = arr[code]; + } + } + app.setstorage('g', sav); + return { + me: json.me + } + }; + app.methods.appupdate = async function(plat, cb) { + var app = this; + // #ifdef APP-PLUS + plus.runtime.getProperty(plus.runtime.appid, async widgetInfo => { + app.callajax({ + func: 'login.getappver', + cache: 0, + showload: false, + data: { + vercode: widgetInfo.versionCode + }, + success: async json => { + if (!json.url) + return app.toast('已经是最新版本'); + if (json.must && typeof(cb) == 'function') { + if (!await cb(json.verinfo)) + return; + } + app.toast('更新中...'); + uni.downloadFile({ + url: json.url, + success: res => { + if (res.statusCode !== 200) + return app.alert('更新文件下载失败' + json.url); + plus.runtime.install(res.tempFilePath, { + force: true + }, function() { + app.toast('更新成功,即将热重启', () => { + plus.runtime.restart(); + }); + }, function(e) { + console.log(e); + app.alert('更新失败:' + e.message); + }); + } + }); + } + }); + }); + // #endif + // #ifdef MP-WEIXIN + if (plat != 'app') { + const updateManager = uni.getUpdateManager(); + updateManager.onCheckForUpdate(res => { + console.log('onCheckForUpdate', res); + if (!res.hasUpdate) + return app.toast('已经是最新版本'); + app.toast('新版本更新中...'); + updateManager.onUpdateReady(async res => { + console.log('onUpdateReady', res); + if (typeof(cb) == 'function') { + if (await cb('新版本已经准备好,是否重启应用?')) + updateManager.applyUpdate(); + } + }); + updateManager.onUpdateFailed(res => { + console.log('onUpdateFailed', res); + app.alert('更新失败,请重新启动微信再试'); + }); + }); + } + // #endif + }; + app.methods.connectbt = function(devup, devtype, deviceid) { + var app = this; + if (app.globalData.dev_bt[devup]) { + app.globalData.dev_bt[devup].bt_devclose(); + } else { + app.globalData.dev_bt[devup] = new cbt.CBTBase(devup, devtype); + } + var btdev = app.globalData.dev_bt[devup]; + btdev.oncreated = services => { + btdev.setwrt(services); + } + // btdev.onfail = res => { + // } + // btdev.onsuccess = res => { + // } + btdev.bt_devopen(deviceid); + }; + app.methods.CiyWebSocket = function(addr) { + var app = getApp(); + var thos = this; + this.buffer = new Array(); //发送数据缓冲区 + this.reOpenData = [2, 5, 3, 5, 5, 3, 5, 8, 10, 20, 30, 30]; //断线重连,每次间隔时间/秒 + this.reOpen = 0; //断线重连次数 + this.keepAliveTimer = setInterval(function() { + console.log('keep'); + try { + if (thos.wsock && thos.wsock.readyState !== 1) { + thos.reOpenSec--; + if (thos.reOpenSec <= 0) { + thos.reOpen++; + thos.reOpenSec = 10; + thos.open(); + } + return; + } + if (thos.buffer.length > 0) { + var data = thos.buffer.pop(); + thos.send(data); + } else { + if (new Date().getTime() - thos.last_health_time >= 15000 && thos.wsock + .readyState === 1) { + thos.wsock.send({ + data: 'h' + }); + thos.last_health_time = new Date().getTime(); + } + } + } catch (err) { + app.uperr("app.ws.error", err); + } + }, 1000); + this.setOpenSec = function() { + (thos.reOpen < thos.reOpenData.length) ? thos.reOpenSec = thos.reOpenData[thos.reOpen]: thos + .reOpenSec = 90; //断线重试太多后的间隔时间 + } + this.open = function() { + try { + if (thos.wsock && thos.wsock.trueClose) + return; + thos.setOpenSec(); + if (thos.wsock) { + if (thos.wsock.readyState == 1) + return; + thos.wsock.close(); + } + thos.wsock = uni.connectSocket({ + url: addr, + complete: () => {} + }); + thos.wsock.onOpen(function(event) { + try { + thos.reOpen = 0; + thos.last_health_time = new Date().getTime(); + if (typeof(thos.onopen) == "function") + thos.onopen(event); + } catch (err) { + app.uperr('app.ws.onopen', err); + } + }); + thos.wsock.onMessage(function(e) { + try { + if (typeof(thos.onmessage) == "function") + thos.onmessage(e); + } catch (err) { + app.uperr('app.ws.onmessage', err); + } + }); + thos.wsock.onClose(function(e) { + try { + if (thos.wsock.trueClose) { + clearInterval(thos.keepAliveTimer); + return; + } + thos.setOpenSec(); + if (typeof(thos.onclose) == "function") + thos.onclose(e); + } catch (err) { + app.uperr('app.ws.onclose', err); + } + }); + thos.wsock.onError(function(e) { + try { + thos.setOpenSec(); + if (typeof(thos.onerror) == "function") + thos.onerror(e); + } catch (err) { + app.uperr('app.ws.onerror', err); + } + }); + } catch (err) { + console.log(app, err); + app.uperr('app.ws.open', err); + } + } + this.send = function(msg) { + try { + if (this.wsock === undefined || this.wsock.trueClose) + return false; + if (this.wsock.readyState !== 1 || this.wsock.bufferedAmount > 0) + this.buffer.push(msg); + else { + this.wsock.send({ + data: msg + }); + this.last_health_time = new Date().getTime(); + } + return true; + } catch (err) { + app.uperr('app.ws.send', err); + } + } + this.close = function(send) { + this.wsock.trueClose = true; + this.wsock.close(); + } + this.open(); + }; + app.methods.getstorage = function(key, def) { + def = def || ''; + var x = uni.getStorageSync(key); + if (x == '') + return def; + var json = this.json_parse(x); + if (json !== null) + return json; + return x; + }; + app.methods.setstorage = function(key, val) { + var x = val; + if (typeof(val) == 'object') + x = JSON.stringify(val); + return uni.setStorageSync(key, x); + }; + app.methods.clearstorage = function() { + return uni.clearStorageSync(); + }; + app.methods.removestorage = function(key) { + return uni.removeStorageSync(key); + }; + + ap.mixin({ + data() { + return { + header_statusbar_height: 0, //顶部状态栏(时间电池、躲过刘海/镂空位置) + header_title_height: 40, //顶部标题栏高度(正好容纳胶囊) + header_title_margin: 0, //顶部标题栏左右留白(正好躲过胶囊,且可使文字居中) + footer_safe_height: 0, //底部安全高度(躲过刘海屏、底部横线等) + pageclass: 'dark', + sysinfo: {}, + version: '', + isPage: false, + jsnurl: {}, + init: {}, + srv: 't', + meta: { + theme: 'light', + bgcolor: '#ffffff', + styles: { + 'min-height': '100vh', + 'background-color': '#ffffff', + 'color': '#000000' + }, + style: 'min-height:100vh;background-color:#ffffff;color:#000000;', + fontsize: '16px', + pulldown: true, + }, + opn: {}, //页面传参 + me: {}, + g: {}, //本地与dydict整合,onshow更新本地,同时合并dydict。 + }; + }, + created() {}, //全局混入的 created 钩子被调用 + mounted() {}, + onLoad(opn) { + this.isPage = true; + if (opn.scene) { + var scene = decodeURIComponent(opn.scene); + console.log(scene); + var obj = this.getstrparam(scene); + for (var i in obj) + opn[i] = obj[i]; + } + this.opn = opn; + var upid = this.toint(this.opn.upid); + if (upid > 0) + this.setstorage('upid', upid); + this.pagepost = { //page快捷检索post值 + query: {}, + ...this.opn + }; + this.header_statusbar_height = app.globalData._header_statusbar_height; + this.header_title_height = app.globalData._header_title_height; + this.header_title_margin = app.globalData._header_title_margin; + this.footer_safe_height = app.globalData._footer_safe_height; + this.version = app.globalData._version; + this.sysinfo = app.globalData._sysinfo; + this.jsnurl = app.globalData.jsnurl; + this.me = this.getme(); + this.g = this.getstorage('g', {}); + uni.hideTabBar({ + fail: res => {} + }); + }, + onShow() { + this.settheme(); + this.setfont(); + this.me = this.getme(); + // var ref = this.getrefsSync('tabbar'); + // if (ref) + // ref.loadtabbardata(); + }, + onPageScroll(e) { + var app = getApp(); + if (Object.keys(app.globalData.scrollcbs).length == 0) + return; + for (var i in app.globalData.scrollcbs) { + app.globalData.scrollcbs[i](e); + } + }, + methods: { + showe(e) { + console.log('showe', e); + return ''; + }, + callajax(opt) { + opt.pagethis = this; + return getApp().callajax(opt); + }, + getme() { + return getApp().getme(); + }, + uperr(type, msg) { + return getApp().uperr(type, msg); + }, + json_parse(data) { + return getApp().json_parse(data); + }, + json_string(data) { + try { + return JSON.stringify(data); + } catch (e) { + console.log('json_string', e); + } + return ''; + }, + getstorage(key, def) { + var app = getApp(); + return app.getstorage(key, def); + }, + setstorage(key, val) { + var app = getApp(); + return app.setstorage(key, val); + }, + clearstorage() { + return uni.clearStorageSync(); + }, + removestorage(key) { + return uni.removeStorageSync(key); + }, + lang(str) { + if (typeof(this.$t) == 'function') + return this.$t(str); + return str; + }, + + async gourl(b, type) { //url支持 http[web]、![原型]、*[alert提示]、$[需登录常规url]、常规url + var url = ''; + if (typeof(b) != 'string') { + url = b.currentTarget.dataset.url; + } else { + url = b; + } + if (!url) + return this.toast('gourl传参错误:' + url); + var app = getApp(); + if (url.substring(0, 4) == 'http') { + this.goweb(url, name); + } else if (url.substring(0, 1) == '!') { + var dmos = url.substring(1).split('|'); + if (dmos.length < 2) + dmos[1] = ''; + uni.navigateTo({ + url: '/pages/pub/web?web=' + encodeURIComponent(app.globalData.demourl + '?menuid=' + dmos[0] + '&title=no&tag=' + dmos[1]) + (dmos[2] ? '&name=' + dmos[2] : ''), + animationType: 'pop-in', + animationDuration: 1000 + }); + } else if (url.substring(0, 1) == '*') { + this.alert(dataset.url.substring(1)); + } else { + if (url.substring(0, 1) == '$') { + url = url.substring(1); + var auth = await this.getauth(); + if (auth.me.id == 0) + return; + } + if (type == 'redirect') { + uni.redirectTo({ + url: url, + animationType: 'pop-in', + animationDuration: 1000, + fail: res => { + uni.switchTab({ + url: url, + fail: res => { + return this.toast(name + ' 未定义链接:' + url); + } + }); + } + }); + } else { + uni.navigateTo({ + url: url, + animationType: 'pop-in', + animationDuration: 1000, + fail: res => { + uni.switchTab({ + url: url, + fail: res => { + return this.toast(name + ' 未定义链接:' + url); + } + }); + } + }); + } + } + }, + goweb(url, name) { + var app = getApp(); + url += (url.indexOf('?') == -1) ? '?' : '&'; + url += '_' + app.globalData.tokenfield + '=' + app.getstorage('_' + app.globalData.tokenfield); + uni.navigateTo({ + url: '/pages/pub/web?web=' + encodeURIComponent(url) + (name ? '&name=' + name : ''), + animationType: 'pop-in', + animationDuration: 1000 + }); + }, + goloc(lat, lng) { + uni.openLocation({ + latitude: this.tofloat(lat), + longitude: this.tofloat(lng) + }); + }, + gophone(phone) { + if (!phone) + return; + uni.makePhoneCall({ + phoneNumber: phone + }); + }, + async goani(opn, cb, othcb) { + return new Promise(async (resolve, reject) => { + var aniinit = { + timingFunction: 'ease', + transformOrigin: '50% 50% 0', + delay: 0 + }; + if (typeof(opn) == 'string') + opn = { + anis: opn + }; + opn.init = opn.init || aniinit; + if (typeof(opn.anis) == 'string') { + var anist = opn.anis.split('|'); + var aniarr = []; + for (var i in anist) { + if (anist[i] == 'hide') { + aniarr.push({ + hide: true + }); + continue; + } + var stp = anist[i].split(','); + var dur = 0; + for (var s in stp) { + var pre = stp[s].substring(0, 2); + var val = stp[s].substring(2); + if (pre == 'ra') + aniarr.push({ + rotate: parseFloat(val) + }); + else if (pre == 'rx') + aniarr.push({ + rotateX: parseFloat(val) + }); + else if (pre == 'ry') + aniarr.push({ + rotateY: parseFloat(val) + }); + else if (pre == 'rz') + aniarr.push({ + rotateZ: parseFloat(val) + }); + else if (pre == 'sa') + aniarr.push({ + scale: parseFloat(val) + }); + else if (pre == 'sx') + aniarr.push({ + scaleX: parseFloat(val) + }); + else if (pre == 'sy') + aniarr.push({ + scaleY: parseFloat(val) + }); + else if (pre == 'sz') + aniarr.push({ + scaleZ: parseFloat(val) + }); + else if (pre == 'ta') + aniarr.push({ + translate: val + }); + else if (pre == 'tx') + aniarr.push({ + translateX: val + }); + else if (pre == 'ty') + aniarr.push({ + translateY: val + }); + else if (pre == 'tz') + aniarr.push({ + translateZ: val + }); + else if (pre == 'wa') + aniarr.push({ + skew: parseFloat(val) + }); + else if (pre == 'wx') + aniarr.push({ + skewX: parseFloat(val) + }); + else if (pre == 'wy') + aniarr.push({ + skewY: parseFloat(val) + }); + else if (pre == 'op') + aniarr.push({ + opacity: parseFloat(val) + }); + else if (pre == 'bc') + aniarr.push({ + backgroundColor: val + }); + else if (pre == 'ww') + aniarr.push({ + width: val + }); + else if (pre == 'hh') + aniarr.push({ + height: val + }); + else if (pre == 'tt') + aniarr.push({ + top: val + }); + else if (pre == 'll') + aniarr.push({ + left: val + }); + else if (pre == 'bb') + aniarr.push({ + bottom: val + }); + else if (pre == 'rr') + aniarr.push({ + right: val + }); + else + dur = this.toint(stp[s]); + } + aniarr.push({ + step: { + duration: dur + } + }); + } + opn.anis = aniarr; + } + var animation = uni.createAnimation(opn.init); + for (var aa in opn.anis) { + var key = Object.keys(opn.anis[aa])[0]; + var val = opn.anis[aa][key]; + if (key == 'step') { + val.duration = this.toint(val.duration); + if (val.duration < 16) + val.duration = 16; + animation.step(val); + cb(animation.export()); + await this.sleep(val.duration); + animation = uni.createAnimation(opn.init); + } else if (key == 'hide') { + if (typeof(othcb) == 'function') + othcb(key, val); + } else if (animation[key]) { + if (typeof(val) == 'object') + animation[key](...val); + else + animation[key](val); + } + } + resolve(); + }).catch(e => { + return e; + }); + }, + copyboard(b, bsilent) { + if (this.isobject(b)) + b = b.currentTarget.dataset.text; + if (!b) + return; + uni.setClipboardData({ + data: b + }); + if (!bsilent) + app.toast('已复制到剪贴板'); + }, + + isfloat0(num) { + num = parseFloat(num); + if (isNaN(num)) + return true; + return (num < 0.001 && num > -0.001); + }, + isarray(value) { + return Object.prototype.toString.call(value).toLowerCase().indexOf('object array') > -1; + }, + isobject(value) { + return Object.prototype.toString.call(value).toLowerCase().indexOf('object object') > -1; + }, + islocalmedia(file) { + if (!file) + return false; + if (file.substring(0, 9) == 'wxfile://') + return true; + return false; + }, + isimg(file) { + var ext = this.file_ext(file); + return (["PNG", "JPG", "GIF", "BMP", "WEBP", "SVG"].indexOf(ext) >= 0); + }, + isvideo(file) { + var ext = this.file_ext(file); + return (["MP3", "MP4"].indexOf(ext) >= 0); + }, + file_ext(file) { + if (typeof(file) != 'string') { + if (file.name) + file = file.name; + if (file.tempFilePath) + file = file.tempFilePath; + } + var d = file.lastIndexOf('.'); + if (d >= 0) { + var ext = file.substring(d + 1).toUpperCase(); + if (ext == 'JPEG' || ext == 'JPE') + return 'JPG'; + return ext; + } + return ''; + }, + file_stor(url, pre) { + if (!url) + return ''; + if (this.islocalmedia(url)) + return url; + if (url.substring(0, 4).toLowerCase() == 'http') + return url; + var app = getApp(); + var cdnurl = app.globalData.storlist[url.substring(0, 1)]; + if (this.isobject(cdnurl)) { + var fast = false; + if (url.indexOf('banner') > -1) + fast = true; + if (pre) + fast = true; + if (fast) + cdnurl = cdnurl.fast; + else + cdnurl = cdnurl.all; + } + return cdnurl + url.substring(1) + (pre ? pre : ''); + }, + hasstr(str, find) { + if (!str) + return false; + return str.indexOf(find) > -1; + }, + ccode(arr, value, field, nonestr) { + field = field || 'name'; + nonestr = nonestr || '--'; + if (typeof(arr) != 'object') { + arr = this.g[arr] || (this.init.once && this.init.once[arr]) || this.init[arr]; + if (typeof(arr) != 'object') + return '!'; + } + for (var i = 0; i < arr.length; i++) { + if (arr[i].id == value) { + if (field == 'idx') + return i; + if (field == '_obj') + return arr[i]; + if (arr[i][field]) + return arr[i][field]; + return nonestr; + } + } + if (field == '_obj') + return null; + if (value < 1) + return nonestr; + return ''; //[' + value + ']'; + }, + scode(arr, ids, field) { + if (typeof(arr) != 'object') + return ['!']; + ids = ids || ''; + var vals = ids.split(','); + var names = []; + for (var v = 0; v < vals.length; v++) { + for (var i = 0; i < arr.length; i++) { + if (arr[i].id != vals[v]) + continue; + if (field) + names.push(arr[i][field]); + else + names.push(arr[i]); + } + } + return names; + }, + mcode(arr, value, field) { + if (typeof(arr) != 'object') + return []; + var ret = []; + for (var x = 0; x < 100; x++) { + var bfind = false; + for (var i = 0; i < arr.length; i++) { + if (arr[i].id == value) { + bfind = true; + value = arr[i].upid; + if (field) + ret.unshift(arr[i][field]); + else + ret.unshift(arr[i]); + break; + } + } + if (!bfind) + break; + } + return ret; + }, + bcode(arr, value, field) { + if (typeof(arr) != 'object') + return ['!']; + var names = []; + for (var i = 0; i < arr.length; i++) { + if ((value & (1 << i))) { + if (field) + names.push(arr[i][field]); + else + names.push(arr[i]); + } + } + return names; + }, + enbase64(str) { + var c1, c2, c3; + var base64EncodeChars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var i = 0, + len = str.length, + string = ''; + while (i < len) { + c1 = str.charCodeAt(i++) & 255; + if (i == len) { + string += base64EncodeChars.charAt(c1 >> 2); + string += base64EncodeChars.charAt((c1 & 3) << 4); + string += "=="; + break; + } + c2 = str.charCodeAt(i++); + if (i == len) { + string += base64EncodeChars.charAt(c1 >> 2); + string += base64EncodeChars.charAt(((c1 & 3) << 4) | ((c2 & 240) >> 4)); + string += base64EncodeChars.charAt((c2 & 15) << 2); + string += "="; + break; + } + c3 = str.charCodeAt(i++); + string += base64EncodeChars.charAt(c1 >> 2); + string += base64EncodeChars.charAt(((c1 & 3) << 4) | ((c2 & 240) >> 4)); + string += base64EncodeChars.charAt(((c2 & 15) << 2) | ((c3 & 192) >> 6)); + string += base64EncodeChars.charAt(c3 & 63) + } + return string; + }, + svg2bg(svg) { + if (!svg) + return ''; + if (svg.substring(0, 4) == 'url(') + return svg; + return "url('data:image/svg+xml;charset=utf-8;base64," + this.enbase64(svg) + "')"; + }, + + topad0(num, length) { + if ((num + "").length > length) + return num; + return (Array(length).join('0') + num).slice(-length); + }, + tonumtho(num) { + return this.toint(num).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); + }, + tonumdec(num, showzero, len) { + len = len || 2; // 与tofix不同点,小数长度不变,如 1.10 + var m2 = Math.ceil((num - parseInt(num)) * 100); + if (m2 < 10) + m2 = '0' + m2; + else + m2 = m2 + ''; + if (showzero) + return '.' + m2; + if (m2 == '00') + return ''; + else + return '.' + m2; + }, + tostr(obj) { + if (!obj) + return ''; + if (typeof(obj) == 'object') + return JSON.stringify(obj).replace(/"/g, '“'); + return obj + ''; + }, + toint(val, defval) { + defval = defval || 0; + var ret = parseInt(val); + if (isNaN(ret)) + return defval; + else if (ret == undefined) + return defval; + else + return ret; + }, + tofloat(val, defval) { + defval = defval || 0; + var ret = parseFloat(val); + if (isNaN(ret)) + return defval; + else + return ret; + }, + tostamp(dt) { + if (dt === undefined) + dt = new Date(); + var t = dt.getTime(); + if (isNaN(t)) + return 0; + return parseInt(t / 1000); + }, + todatetime(time, format, nostr) { + nostr = nostr || '--'; + if (time == 0) + return nostr; + var t; + if (time instanceof Date) { + if (time.getTime() == 0) + return nostr; + t = time; + } else if (time == -1) + t = new Date(); + else + t = new Date(time * 1000); + var year = t.getFullYear(); + var month = t.getMonth() + 1; + var month0 = month < 10 ? '0' + month : month; + var day = t.getDate(); + var day0 = day < 10 ? '0' + day : day; + var hour = t.getHours(); + var hour0 = hour < 10 ? '0' + hour : hour; + var minute = t.getMinutes(); + var minute0 = minute < 10 ? '0' + minute : minute; + var second = t.getSeconds(); + var second0 = second < 10 ? '0' + second : second; + if (format == 'id') + return day0 + hour0 + minute; + if (format == 'H') + return year + "-" + month0 + "-" + day0 + " " + hour0; + if (format == 'd') + return year + "-" + month0 + "-" + day0; + if (format == 'D') + return year + "年" + month + "月" + day + '日'; + if (format == 'x') + return month0 + "-" + day0; + if (format == 'm') + return year + "-" + month0; + if (format == 'n') + return year + "-" + month; + if (format == 'y') + return year; + if (format == 'M') + return year + "年" + month + '月'; + if (format == 'i') + return hour0 + ":" + minute0; + if (format == 's') + return year + "-" + month0 + "-" + day0 + " " + hour0 + ":" + minute0 + ":" + + second0; + if (format == 'st') + return month0 + "-" + day0 + " " + hour0 + ":" + minute0; + return year + "-" + month0 + "-" + day0 + " " + hour0 + ":" + minute0; + }, + tofix(num, length) { + //length,正数,小数点保留n位,不去0。 + //负数,小数点保留n位,全0则不显示。 + //0,按数长保留,尽量少的位数显示。 + //不填,-4 + num = parseFloat(num); + if (isNaN(num)) + num = 0; + if (length === undefined) + length = -4; + if (length == 0) { + if (num >= 1000) + return parseInt(num); + var numlen = (parseInt(num) + '').length; + length = 4 - numlen; + if (Math.abs(num % 1) < Math.pow(0.1, length)) + return parseInt(num); + num = num.toFixed(length); + var y = '.'; + for (var i = 0; i < length; i++) + y += "0"; + if (num.substring(num.length - length - 1) == y) + num = num.substring(0, num.length - length - 1); + return num; + } else if (length < 0) { + num = num.toFixed(-length); //xx.xx + var inde = num.split('.'); + if (inde[1] && /^0+$/.test(inde[1])) + return inde[0]; + return num; + } + num = num.toFixed(length); + return num; + }, + tounit(ori) { + var us = ori.split('|'); + if (us.length == 5) + return '1' + us[4] + us[3] + us[2] + ' 1' + us[2] + us[1] + us[0]; + else if (us.length == 3) + return '1' + us[2] + us[1] + us[0]; + return us[0]; + }, + tocyc(ori) { + if (ori == 0) + return '--'; + if (ori < 0) + return -ori + this.lang('月'); + if (ori >= 86400) + return parseInt(ori / 86400) + this.lang('天'); + return parseInt(ori / 60) + this.lang('分钟'); + }, + tomsk(ori, pstr) { + if (!ori) + return ''; + var retstr = ''; + if (ori.length > pstr.length) { + retstr = ori.substring(0, ori.length - pstr.length); + ori = ori.substring(ori.length - pstr.length); + } + for (var i = 0; i < Math.min(ori.length, pstr.length); i++) { + if (pstr.charAt(i) == '*') + retstr += '*'; + else + retstr += ori.charAt(i); + } + return retstr; + }, + totimespan(time, bestr, zero, before) { + bestr = bestr || ''; + zero = zero || this.lang('time.now'); + if (time == 0 || time === undefined) + return '--'; + var t = new Date(time * 1000); + var diff = (new Date() - t) / 1000; + if (before) + diff = -diff; + if (diff < 10) //10秒以内 + return zero; + return this.totimesec(diff, bestr); + }, + totimesec(diff, bestr) { + bestr = bestr || ''; + if (diff < 60) //60秒以内 + return parseInt(diff) + this.lang("秒") + bestr; + if (diff < 3600) //60分以内 + return parseInt(diff / 60) + this.lang("分钟") + bestr; + if (diff < 86400) //24小时以内 + return parseInt(diff / 3600) + this.lang("小时") + bestr; + if (diff < 2592000) //30天以内 + return parseInt(diff / 86400) + this.lang("天") + bestr; + if (diff < 31536000) //12月以内 + return parseInt(diff / 2592000) + this.lang("个月") + bestr; + return parseInt(diff / 31536000) + this.lang("年") + bestr; + }, + totimepoint(time, bsecond) { + if (time <= 0 || time > 86400) + return ''; + time--; + var hour = this.toint(time / 3600); + var minute = this.toint((time - hour * 3600) / 60); + var ret = this.topad0(hour, 2) + ':' + this.topad0(minute, 2); + if (!bsecond) + return ret; + var second = time - hour * 3600 - minute * 60; + ret += ':' + this.topad0(second, 2); + return ret; + }, + todayage(time, noday) { + if (time == 0 || time === undefined) + return '--'; + var t = new Date(time * 1000); + var diff = (new Date() - t) / 1000; + diff = parseInt(diff / 86400) + 1; + if (diff < 30) //30天以内 + return diff + "天"; + var month = parseInt(diff / 30); + if (noday) + return month + '个月'; + return month + '个月 ' + (diff - month * 30) + '天'; + }, + tobr(txt, autohtml) { + if (!txt) + return ''; + if (!autohtml) { + txt = txt.replace(//g, '>'); + //txt = txt.replace(/\|/g, '
'); + } + txt = txt.replace(/\n/g, '
'); + return txt; + }, + + pagenoscroll(b) { + // #ifdef MP-WEIXIN + if (b) { + wx.setPageStyle({ + style: { + overflow: 'hidden' + } + }); + } else { + wx.setPageStyle({ + style: { + overflow: 'auto' + } + }); + //uni.setPageMeta() + } + // #endif + + // #ifdef H5 + if (b) { + document.body.style.overflow = 'hidden'; + } else { + document.body.style.overflow = 'auto'; + } + // #endif + }, + settheme(theme) { + if (theme) { + this.setstorage('_theme', theme); + } else { + theme = this.getstorage('_theme'); + if (!theme) { + if (this.sysinfo.theme == 'dark') + theme = 'dark'; + } + } + var bgcolor = '#f7f8f8'; + var txtcolor = '#576067'; //txt5 + if (theme == 'dark') { + bgcolor = '#151a1b'; + txtcolor = '#c2cad0'; + } else { + theme = 'light'; + } + this.meta.theme = theme; + this.meta.bgcolor = bgcolor; + this.meta.styles['background-color'] = bgcolor; + this.meta.styles['color'] = txtcolor; + this.meta.style = Object.keys(this.meta.styles).map(key => key + ':' + this.meta.styles[ + key]).join(';') + ';'; + this.pageclass = theme; + // // #ifdef MP-WEIXIN + // wx.setBackgroundTextStyle({ + // textStyle: theme + // }) + // // #endif + }, + setfont(font) { + // 空,lg xl xxl xxl + if (!font) { + font = this.getstorage('_font'); + if (!font) { + font = 'def'; + var fsize = this.sysinfo.fontSizeSetting * this.sysinfo.fontSizeScaleFactor; + if (fsize >= 20 && fsize < 30) + font = 'lg'; + if (fsize >= 30 && fsize < 40) + font = 'xl'; + else if (fsize >= 40) + font = 'xxl'; + //标准:16*1=16 1:18*1.1=19.8 2:18*1.12=20.16 3:18*1.125=20.25 4:22*1.4=30.8 5:25*1.55=38.75 max:26*1.65=42.9 + } + } else { + this.setstorage('_font', font); + } + var fontsize; + if (font == 'def') + fontsize = 30; + else if (font == 'lg') + fontsize = 40; + else if (font == 'xl') + fontsize = 50; + else if (font == 'xxl') + fontsize = 60; + else + fontsize = this.toint(font); + if (fontsize < 20) + fontsize = 30; + var fz = (fontsize / 750 * this.sysinfo.windowWidth) + 'px'; + this.meta.styles['font-size'] = fz; + this.meta.style = Object.keys(this.meta.styles).map(key => key + ':' + this.meta.styles[key]).join(';') + ';'; + this.meta.fontsize = fz; + }, + executepnt(pntid, post) { + var me = this.getme(); + if (me.id == 0) + return; + var pnttrack = this.getstorage('_pnttrack', {}); + if (!this.isobject(pnttrack[pntid])) + return; + var day = this.str2date(this.todatetime(-1, 'd')).getTime() / 1000; + var cnt = 0; + if (day == pnttrack[pntid].day) { + cnt = this.toint(pnttrack[pntid].cnt); + if (pnttrack[pntid].h24 > 0 && pnttrack[pntid].h24 <= cnt) + return; + } + cnt += this.toint(pnttrack[pntid].p); + pnttrack[pntid].day = day; + pnttrack[pntid].cnt = cnt; + if (!post) + post = {}; + post.id = pntid; + this.setstorage('_pnttrack', pnttrack); + this.callajax({ + func: 'me.pnt_up', + loadhide: true, + data: post + }).then(res => { + if (res.code != 1) + return; + if (res.msg) + this.toast(res.msg); + }); + }, + setTabbar(nameobj) { + var app = this; + if (nameobj instanceof Array) { + app.globalData.tabbarArr = nameobj; + return; + } + if (nameobj instanceof Object) { + for (var i in app.globalData.tabbarArr) { + if (!nameobj[app.globalData.tabbarArr[i].name]) + continue; + var obj = nameobj[app.globalData.tabbarArr[i].name]; + for (var o in obj) { + app.globalData.tabbarArr[i][o] = obj[o]; + } + } + } + app.getpage().getrefs('tabbar').then(ref => { + ref.loadtabbardata(); + }); + }, + + async getauth(must) { + return new Promise((resolve, reject) => { + this.$nextTick(() => { + this.getrefs('auth').then(ref => { + ref.Open(auth => { + if (auth.me.id == 0) + return; + this.me = auth.me; + this.g = this.objdeepmerge(this.g, this.getstorage('g', {})); + resolve(auth); + }, must); + }); + }); + }).catch(e => { + console.error('getauth error', e); + return e; + }); + }, + async scanqr() { + return new Promise((resolve, reject) => { + var ret = {}; + if (process.env.NODE_ENV === 'development') { + this.inputmsg('输入二维码').then(itm => { + if (!itm.text) + return; + ret.type = 'input'; + ret.code = itm.text; + resolve(ret); + }); + return; + } + var res = uni.scanCode().then(res => { + ret.type = res.scanType; + ret.code = res.result; + if (!ret.code) + ret.code = res.code; + resolve(ret); + }).catch(res => { + console.log('scanCode err', res); + resolve({ + type: 'error' + }); + }); + }).catch(e => { + return e; + }); + }, + async popmenu(opn) { //items one rowcount title + return new Promise((resolve, reject) => { + this.getrefs('popmenu').then(ref => { + ref.Open(opn).then(item => { + if (item.func == 'go' && item.url) { + if (item.data) { + var app = getApp(); + app.globalData.ciy_page_init = { + ...item.data + }; + app.globalData.ciy_page_g = this.g; + } + uni.navigateTo({ + url: item.url + }); + return; + } + if (typeof(this[item.func]) == 'function') { + this[item.func](item); + return; + } + resolve(item); + }); + }); + }).catch(e => { + return e; + }); + }, + async toast(opn) { + var ref = await this.getrefs('toast'); + if (!ref) + return this.alert('no find toast'); + return await ref.Open(opn); + }, + async alert(opn, btns) { + if (!opn) + return; + if (typeof(opn) == 'string') { + opn = { + content: opn + }; + } + if (btns) { + opn.btns = btns; + } + var ref = await this.getrefs('alert'); + if (!ref) + return this.alert('no find alert'); + return await ref.Open(opn); + }, + async askmsg(content, btns) { + var opn = { + content + }; + if (!btns) + btns = [{ + name: '确定', + btn: 'ok' + }, { + name: '取消', + btn: 'cancel', + cls: 'def' + }]; + else if (typeof(btns) == 'string') + btns = [{ + name: btns, + btn: 'ok' + }, { + name: '取消', + btn: 'cancel', + cls: 'def' + }]; + opn.btns = btns; + var ref = await this.getrefs('alert'); + if (!ref) + return this.alert('no find alert'); + return await ref.Open(opn); + }, + async inputmsg(opn, btns) { + if (typeof(opn) == 'string') + opn = { + content: opn + }; + opn = opn || {}; + if (opn.title === undefined) + opn.title = '操作项'; + opn.ele = opn.ele || 'input'; + if (!btns) + opn.btns = [{ + name: '确定', + btn: 'ok' + }, { + name: '取消', + btn: 'cancel', + cls: 'def' + }]; + else if (typeof(btns) == 'string') + opn.btns = [{ + name: btns, + btn: 'ok' + }, { + name: '取消', + btn: 'cancel', + cls: 'def' + }]; + else + opn.btns = btns; + var ref = await this.getrefs('alert'); + if (!ref) + return this.alert('no find alert'); + var ret = await ref.Open(opn); + if (typeof(ret) == 'string') + return { + btn: 'cancel' + }; + return ret; + }, + async sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + }, + async load_ciydict(url) { + if (url.indexOf('.local.') === -1) + url = url.replace('http://', 'https://'); + return new Promise((resolve, reject) => { + uni.request({ + url: url, + dataType: 'text', + method: 'GET', + fail: res => { + res._url = url; + this.uperr("h5.loadjs.fail", res); + return reject({ + errmsg: 'dict' + res.errMsg + }); + }, + success: res => { + var ind = res.data.indexOf('['); + if (ind == -1) + return reject({ + errmsg: 'dict数据缺少数组' + }); + if (res.data.substring(0, 8) != 'var ciy_') + return reject({ + errmsg: 'dict数据格式错误' + }); + var name = res.data.substring(8, ind - 1); + var json = this.json_parse(res.data.substring(ind)); + if (json === null) { + this.uperr("app.loadjs.json", res); + return reject({ + errmsg: 'dict数组解析错误' + }); + } + return resolve({ + code: 1, + name: name, + arr: json + }); + } + }); + }).catch(e => { + return e; //不返回,res为 undefined + }); + }, + + shareparam(opn) { + var app = getApp(); + var param = {}; + param.title = opn.title; + if (opn.img) + param.imageUrl = opn.img; + if (opn.promise) + param.promise = opn.promise; + var urlp = ''; + for (var u in opn.query) { + urlp += '&' + u + '=' + opn.query[u]; + } + var me = this.getme(); + if (opn.type == 'message') { + if (opn.path == app.globalData.mainpage) + param.path = opn.path + '?upid=' + me.id + urlp; + else { + if (urlp[0] == '&') + urlp = '?' + urlp.substring(1); + param.path = app.globalData.mainpage + '?upid=' + me.id + '&u=' + encodeURIComponent(opn.path + urlp); + } + } else { + param.query = 'upid=' + me.id + urlp; + } + console.log('shareparam', param); + return param; + }, + getstrparam(str, split) { + split = split || '&'; + var strs = str.split(split); + var ret = {}; + for (var i in strs) { + var ind = strs[i].indexOf('='); + if (ind == -1) + continue; + ret[strs[i].substr(0, ind)] = strs[i].substr(ind + 1); + } + return ret; + }, + setstrparam(obj, split) { + split = split || '&'; + var strs = []; + for (var key in obj) + strs.push(key + '=' + obj[key]); + return strs.join(split); + }, + urlparam(url) { + var obj = {}; + var ind = url.indexOf('?'); + if (ind === -1) + return obj; + var pairs = url.substring(ind + 1).split('&'); + for (var p in pairs) { + var ind = pairs[p].indexOf('='); + if (ind > -1) + obj[decodeURIComponent(pairs[p].substring(0, ind))] = decodeURIComponent(pairs[p].substring(ind + 1)); + else + obj[pairs[p]] = true; + } + return obj; + }, + arrayfind(arr, val, field) { + for (var i in arr) { + if (arr[i][field] == val) + return i; + } + return -1; + }, + objdeepmerge(src, desc, btop) { + for (const key in desc) { + if (!desc.hasOwnProperty(key)) + continue; + if (desc[key] instanceof Array) { + if (!(src[key] instanceof Array)) + src[key] = []; + if (key.substring(0, 4) == 'ciy_') + src[key] = desc[key]; + else { + let srcidmap = {}; + for (let i in src[key]) { + srcidmap[src[key][i].id] = parseInt(i) + 1; + } + for (let i in desc[key]) { + if (desc[key][i].id && srcidmap[desc[key][i].id]) { + src[key][srcidmap[desc[key][i].id] - 1] = this.objdeepmerge(src[key][srcidmap[desc[key][i].id] - 1], desc[key][i]); + continue; + } + if (btop) + src[key].unshift(desc[key][i]); + else + src[key].push(desc[key][i]); + } + } + } else if (desc[key] instanceof Object) { + src[key] = this.objdeepmerge(src[key] || {}, desc[key]); + } else { + if (src[key] != desc[key]) + src[key] = desc[key]; + } + } + if (!desc.errmsg && src.errmsg) + delete src.errmsg; + return src; + }, + objclone(obj) { + if (obj instanceof Date) { + return new Date(obj.getTime()); + } + if (obj instanceof Array) { + var clone = []; + for (var i = 0; i < obj.length; i++) { + clone[i] = this.objclone(obj[i]); + } + return clone; + } + if (obj instanceof Object) { + var clone = {}; + for (var attr in obj) { + if (obj.hasOwnProperty(attr)) + clone[attr] = this.objclone(obj[attr]); + } + return clone; + } + return obj; + }, + str2date(str) { + var val = new Date(str.replace(/\-/g, '/')); + if (isNaN(val.getTime())) + return new Date(0); + return val; + }, + bin2hex(bin) { + var ret = ''; + for (var i = 0, l = bin.length; i < l; i++) { + var c = bin.charCodeAt(i).toString(16); + if (c.length == 1) + c = '0' + c; + ret += c; + } + return ret; + }, + hex2bin(hex) { + var ret = ''; + for (var i = 0; i < hex.length - 1; i += 2) { + ret += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); + } + return ret; + }, + + style2obj(sty, moresty) { + var styleobj = {}; + if (typeof(sty) == 'string') { + sty.split(';').filter(rule => rule.trim() !== '').forEach(rule => { + const [key, value] = rule.split(':').map(part => part.trim()); + if (key && value) { + const camelCaseKey = key.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase()); + styleobj[camelCaseKey] = value; + } + }); + } else { + styleobj = sty || {}; + } + if (this.isobject(moresty)) { + for (var i in moresty) { + if (!styleobj[i]) + styleobj[i] = moresty[i]; + } + } + return styleobj; + }, + nopower(mepower, power) { + if (mepower == '.*.') //超级管理员 + return false; + power = '.' + power; + var dotidx = -1; + for (let i = 0; i < mepower.length; i++) { + if (mepower[i] !== '.') + continue; + if (dotidx > -1 && dotidx + 1 < i) { + if (power.indexOf(mepower.substring(dotidx, i)) === -1) + continue; + return false; //有权限 + } + dotidx = i; + } + return true; //无权限 + }, + getroute() { + var fpath; + if (this.route) + fpath = '/' + this.route; + else if (this.__route__) + fpath = '/' + this.__route__; + return fpath; + }, + com_getpage() { + var thos = this; + for (var i = 0; i < 50; i++) { + if (thos.isPage) + return thos; + thos = thos.$parent; + if (!thos) + return null; + } + return null; + }, + async com_gethdft() { + var ret = { + footerheight: 0, + headerheight: 0 + }; + var compage = this.com_getpage(); + if (!compage) + return ret; + var ref = await compage.getrefs('header'); + if (ref && ref.Getheight) + ret.headerheight = ref.Getheight(); + ref = await compage.getrefs('tabbar'); + if (ref && ref.Getheight) + ret.footerheight = ref.Getheight(); + else { + var mainrect = await compage.getrect('.tabbar'); + if (mainrect) + ret.footerheight = mainrect.height; + } + return ret; + }, + async getrefs(refname) { + return new Promise((resolve, reject) => { + var ref = this.getrefsSync(refname); + if (ref !== null) { + resolve(ref); + } else { + setTimeout(() => { + ref = this.getrefsSync(refname); + resolve(ref); + }, 100); + } + }).catch(e => { + return e; + }); + }, + getrefsSync(refname, compage) { + if (!compage) + compage = this.com_getpage(); + if (compage == null) + return null; + if (compage.$refs) { + if (compage.$refs[refname]) + return compage.$refs[refname]; + } + if (compage.selectComponent) { + var ref = compage.selectComponent('#' + refname); + if (ref) + return ref.$vm; + } + return null; + }, + async getrect(dom) { + return new Promise((resolve, reject) => { + this.$nextTick(() => { + uni.createSelectorQuery().in(this).select(dom).boundingClientRect(rect => { + if (rect) + resolve(rect); + else + reject(); + }).exec(); + }); + }).catch(e => { + return e; + }); + }, + async file_upload1(imgfile, opn) { + return new Promise(async (resolve, reject) => { + if (typeof(imgfile) == 'string') + imgfile = { + tempFilePath: imgfile + }; + await this.file_uploads([imgfile], opn, { + success(url, file) { + resolve(url); + }, + fail(err, gf, al) { + console.warn(err, gf, al); + reject('Upload Fail:' + err); + } + }); + }).catch(e => { + return e; + }); + }, + async file_uploads(files, opn, fn) { //文件批量上传,图片加水印/压缩/尺寸 + //多次返回,不能用Promise,用fn回调 + if (!opn.path) { + opn.basepath = opn.basepath || 'demo'; + var now = new Date(); + var path = now.getFullYear() + '/' + ('0' + (now.getMonth() + 1)).slice(-2) + ('0' + now.getDate()).slice(-2) + '/' + opn.basepath; + if (opn.saas) { + var saasid = this.toint(opn.saas.substring(1)); + path = opn.saas.substring(0, 1) + this.toint(saasid / 1000) + '/' + saasid + '/' + path; + } + opn.path = path; + } + if (opn.action.substring(0, 4) != 'http') { + var uus = opn.action.split('.'); + if (uus.length == 1) + uus[1] = this.srv; + opn.action = app.globalData.jsnurl[uus[1]] + 'z/?func=' + uus[0] + '/upload.'; + } + if (typeof(fn.fail) != 'function') + fn.fail = () => {}; + opn.waterfont = opn.waterfont || '36px Arial'; + for (var u in files) { + (async (gf, tmt) => { + await this.sleep(tmt); + var fpath = gf.tempFilePath || gf.tempImagePath || gf.path; + if (!gf.name) + gf.name = fpath; + if (!this.isimg(gf.name)) + return uploadpfile(gf); + // #ifdef H5 + var fread = new FileReader(); + fread.readAsDataURL(gf); + var err = await this.goe(this.go_load(fread)); + if (err) + return fn.fail('FileReader Error', gf, err); + var img = new Image(); + img.src = fread.result; + var err = await this.goe(this.go_load(img)); + if (err) + return fn.fail('h5Image Load Error', gf, err); + var [width, height] = setimgrect(img); + var zipjpg = this.tofloat(opn.zipjpg); + if (width == 0 && this.isfloat0(zipjpg) && !opn.watertext) + return uploadpfile(gf); + if (width == 0) { + width = img.width; + height = img.height; + } + + var canvas = document.createElement("canvas"); + var ctx = canvas.getContext("2d"); + var attrw = document.createAttribute("width"); + attrw.nodeValue = width; + var attrh = document.createAttribute("height"); + attrh.nodeValue = height; + canvas.setAttributeNode(attrw); + canvas.setAttributeNode(attrh); + ctx.drawImage(img, 0, 0, width, height); + waterctx(ctx, width, height); + if (zipjpg < 0.0001) + zipjpg = 0.7; + var dataurl = canvas.toDataURL("image/jpeg", zipjpg); + var b64s = dataurl.split(","); + var b64type = b64s[0].match(/:(.*?);/)[1]; + var ab = atob(b64s[1]); + var ablen = ab.length; + var abarr = new Uint8Array(ablen); + while (ablen--) { + abarr[ablen] = ab.charCodeAt(ablen); + } + uploadpfile(new File([new Blob([abarr], { + type: b64type + })], gf.name)); + // #endif + + // #ifndef H5 + var [err, img] = await this.go(uni.getImageInfo({ + src: fpath + })); + if (err) + return fn.fail('getImageInfo Error:' + fpath, + gf, err); + var [width, height] = setimgrect(img); + var zipjpg = this.tofloat(opn.zipjpg); + if (width == 0 && this.isfloat0(zipjpg) && !opn.watertext) + return uploadpfile(gf); + if (width == 0) { + width = img.width; + height = img.height; + } + await this.sleep(100); + const canvas = wx.createOffscreenCanvas({ + type: '2d', + width: width, + height: height, + }); + + const fs = uni.getFileSystemManager(); + var base64Data = fs.readFileSync(img.path, 'base64'); + const ctx = canvas.getContext('2d'); + let image = canvas.createImage(); + image.src = 'data:image/png;base64,' + base64Data; + var err = await this.goe(this.go_load(image)); + if (err) + return fn.fail('Image Load Error', gf, err); + ctx.drawImage(image, 0, 0, width, height); + waterctx(ctx, width, height); + if (zipjpg <= 0) + zipjpg = 0.7; + var res = await uni.canvasToTempFilePath({ + canvas: canvas, + fileType: 'jpg', + quality: zipjpg + }); + gf.tempFilePath = res.tempFilePath; + fs.getFileInfo({ + filePath: res.tempFilePath, + success: fsize => { + gf.size = fsize.size; + uploadpfile(gf); + } + }); + // #endif + })(files[u], 1 + u * 1050); + } + + var setimgrect = img => { + var width = 0; + var height = 0; + if (opn.imgwidth > 0) { + if (opn.imgwidth == opn.imgheight) { + width = height = Math.min(img.width, img.height, opn.imgwidth); + } else if (img.width > opn.imgwidth) { + width = opn.imgwidth; + if (opn.imgheight > 0) + height = opn.imgheight; + else + height = width * img.height / img.width; + } + } + return [width, height]; + }; + var waterctx = (ctx, imgwidth, imgheight) => { + if (!opn.watertext) + return; + + if (!this.isarray(opn.watercolors)) + opn.watercolors = ['#fffdea', '#000000']; + if (!opn.wateralpha) + opn.wateralpha = 1; + ctx.globalAlpha = this.tofloat(opn.wateralpha); + + if (opn.watertype == 'full') { + if (!opn.waterpadding) + opn.waterpadding = 30; + if (!opn.waterangle) + opn.waterangle = -20; + ctx.font = opn.waterfont; + + const metrics = ctx.measureText(opn.watertext); + var fontheight = ctx.measureText('啊').width; + const rad = opn.waterangle * Math.PI / 180; + const rotatedWidth = Math.abs(metrics.width * Math.cos(rad)) + Math.abs(fontheight * Math.sin(rad)); + const rotatedHeight = Math.abs(metrics.width * Math.sin(rad)) + Math.abs(fontheight * Math.cos(rad)); + + const itemWidth = rotatedWidth + opn.waterpadding; + const itemHeight = rotatedHeight + opn.waterpadding; + + const cols = Math.ceil(imgwidth / itemWidth); + const rows = Math.ceil(imgheight / itemHeight); + + const placedWatermarks = []; + for (let i = 0; i < rows * cols * 2; i++) { + const x = Math.random() * (imgwidth - itemWidth); + const y = Math.random() * (imgheight - itemHeight); + + let overlap = false; + for (const placed of placedWatermarks) { + const dx = Math.abs(x - placed.x); + const dy = Math.abs(y - placed.y); + if (dx < itemWidth * 0.8 && dy < itemHeight * 0.8) { + overlap = true; + break; + } + } + + if (overlap) + continue; + placedWatermarks.push({ + x, + y + }); + ctx.save(); + ctx.translate(x, y); + ctx.rotate((opn.waterangle + Math.random() * 5) * Math.PI / 180); + ctx.fillStyle = opn.watercolors[Math.floor(Math.random() * opn.watercolors.length)]; + ctx.fillText(opn.watertext, 0, 0); + ctx.restore(); + } + } else { + //右下角多行 + ctx.font = opn.waterfont; + var fontheight = ctx.measureText('啊').width * 1.2; + var lines = opn.watertext.split('|'); + var y = imgheight - fontheight * lines.length; + for (var i in lines) { + if (opn.watercolors.length > 1) { + ctx.fillStyle = opn.watercolors[1]; + ctx.fillText(lines[i], fontheight + 1, y + 1); + ctx.fillText(lines[i], fontheight - 1, y - 1); + ctx.fillText(lines[i], fontheight - 1, y + 1); + ctx.fillText(lines[i], fontheight + 1, y - 1); + } + ctx.fillStyle = opn.watercolors[0]; + ctx.fillText(lines[i], fontheight, y); + y += fontheight; + } + } + ctx.globalAlpha = 1; + }; + var uploadpfile = async gf => { //文件多通道上传 + if (opn.maxkb > 0 && gf.size >= opn.maxkb * 1024) + return fn.fail('MaxSize:' + opn.maxkb + 'KB, This:' + parseInt(gf.size / + 1024) + 'KB', gf); + var app = getApp(); + var header = {}; + header[app.globalData.tokenfield] = app.getstorage("_" + app.globalData + .tokenfield); + var filepath = gf.tempFilePath || gf.tempImagePath || gf.path; + var now = new Date(); + var fext = this.file_ext(gf.name); + var pathfile = opn.path + '/' + now.getHours() + now.getMinutes() + now + .getSeconds() + '_' + + (1000 + Math.round(Math.random() * 8000)) + '.' + fext.toLowerCase(); + if (opn.stor == '/') { + var ufparam = {}; + ufparam.url = opn.action + "upload&pathfile=" + pathfile; + ufparam.header = header; + if (opn.post) + ufparam.formData = opn.post; + if (filepath) { + ufparam.filePath = filepath; + ufparam.name = 'file'; + } else { + ufparam.file = gf; + } + var [err, retupfile] = await this.go(uni.uploadFile(ufparam)); + if (err) + return fn.fail(err.errMsg, gf, err); + var jsonup = this.json_parse(retupfile.data); + if (jsonup === null) + return fn.fail('JSON Parse ERROR:' + retupfile.data.substr(0, 30), + gf); + if (jsonup.code != 1) + return fn.fail(jsonup.errmsg, gf, jsonup); + if (typeof(fn.success) == 'function') + fn.success(jsonup.url, gf); + } else { + var [err, s3json] = await this.go(this.callajax({ + func: opn.action + "s3&pathfile=" + pathfile + + "&storselect=" + opn.stor + })); + if (err) + return fn.fail(err.errMsg, gf, err); + if (s3json.code != 1) + return fn.fail(s3json.errmsg, gf, s3json); + // #ifdef H5 + //H5,直接xhr + var xhr = new XMLHttpRequest(); + xhr.open(s3json.method, s3json.url, true); + for (var i in s3json.headers) { + xhr.setRequestHeader(i, s3json.headers[i]); + } + xhr.onreadystatechange = function() { + if (xhr.readyState == 4 && xhr.status == 200) { + if (typeof(fn.success) == 'function') + fn.success(opn.stor + pathfile, gf); + } else if (xhr.status != 200) { + fn.fail('云存储上传失败:' + xhr.status, gf, xhr); + } + }; + xhr.send(gf); + // #endif + // #ifndef H5 + if (app.globalData.stortransfer.includes(opn.stor)) { + var ufparam = {}; + ufparam.url = opn.action + "yunsync"; + if (s3json.syncurl) + ufparam.url = s3json.syncurl; + s3json.headers = JSON.stringify(s3json.headers); + ufparam.formData = s3json; + if (filepath) { + ufparam.filePath = filepath; + ufparam.name = 'file'; + } else { + ufparam.file = gf; + } + var retupfile = await uni.uploadFile(ufparam); + var jsonup = this.json_parse(retupfile.data); + if (jsonup === null) + return fn.fail('JSON Parse ERROR:' + retupfile.data.substr(0, + 30), gf, jsonup); + if (jsonup.code != 1) + return fn.fail(jsonup.errmsg, gf, jsonup); + if (typeof(fn.success) == 'function') + fn.success(opn.stor + pathfile, gf); + } else { + console.warn('直传,微信小程序需备案域名,添加域名白名单'); + fn.fail('未支持', gf); + } + // #endif + } + }; + }, + async go(promise) { //var [err, tmp] = await this.go(this.go_load(img)); + return promise.then((data) => [null, data]).catch((err) => [err, undefined]); + }, + async goe(promise) { //var err = await this.goe(this.go_load(img)); + return promise.then(() => null).catch((err) => err); + }, + async go_load(obj, act) { + return new Promise((resolve, reject) => { + if (act == 'exec') { //特例 + obj.exec(async data => { + resolve(data); + }); + } else { + obj.onload = (data) => { + resolve(data); + } + obj.onerror = err => { + console.log('go_load error:', err); + reject('load error'); + } + } + }); + } + } + }); + + } +}; \ No newline at end of file diff --git a/fapp/ciyon_ap/util/gcoord.js b/fapp/ciyon_ap/util/gcoord.js new file mode 100644 index 0000000..2e05075 --- /dev/null +++ b/fapp/ciyon_ap/util/gcoord.js @@ -0,0 +1,8 @@ +/** + * @preserve + * gcoord 1.0.6, geographic coordinate library + * Copyright (c) 2024 Jiulong Hu + */ +var gcoord=function(){"use strict";var r=function(){return r=Object.assign||function(r){for(var t,e=1,n=arguments.length;e=72.004&&r<=137.8347&&t>=.8293&&t<=55.8271}function f(r,c){var f,l,s,h=(s=300+(f=r-105)+2*(l=c-35)+.1*f*f+.1*f*l+.1*n(a(f)),s+=2*(20*t(6*f*o)+20*t(2*f*o))/3,(s+=2*(20*t(f*o)+40*t(f/3*o))/3)+2*(150*t(f/12*o)+300*t(f/30*o))/3),g=function(r,e){var i=2*r-100+3*e+.2*e*e+.1*r*e+.2*n(a(r));return i+=2*(20*t(6*r*o)+20*t(2*r*o))/3,i+=2*(20*t(e*o)+40*t(e/3*o))/3,i+2*(160*t(e/12*o)+320*t(e*o/30))/3}(r-105,c-35),M=c/180*o,v=t(M),p=n(v=1-u*v*v);return[h=180*h/(i/p*e(M)*o),g=180*g/(i*(1-u)/(v*p)*o)]}function l(r){var t=r[0],e=r[1];if(!c(t,e))return[t,e];var n=f(t,e);return[t+n[0],e+n[1]]}function s(r){var t=r[0],e=r[1];if(!c(t,e))return[t,e];for(var n=[t,e],o=n[0],i=n[1],u=l([o,i]),f=u[0]-t,s=u[1]-e;a(f)>1e-6||a(s)>1e-6;)f=(u=l([o-=f,i-=s]))[0]-t,s=u[1]-e;return[o,i]}var h=Math.sin,g=Math.cos,M=Math.atan2,v=Math.sqrt,p=3e3*Math.PI/180;function G(r){var t=r[0]-.0065,e=r[1]-.006,n=v(t*t+e*e)-2e-5*h(e*p),a=M(e,t)-3e-6*g(t*p);return[n*g(a),n*h(a)]}function d(r){var t=r[0],e=r[1],n=v(t*t+e*e)+2e-5*h(e*p),a=M(e,t)+3e-6*g(t*p);return[n*g(a)+.0065,n*h(a)+.006]}var S=180/Math.PI,y=Math.PI/180,P=6378137,b=20037508.342789244;function B(r){return[r[0]*S/P,(.5*Math.PI-2*Math.atan(Math.exp(-r[1]/P)))*S]}function C(r){var t=Math.abs(r[0])<=180?r[0]:r[0]-360*(r[0]<0?-1:1),e=[P*t*y,P*Math.log(Math.tan(.25*Math.PI+.5*r[1]*y))];return e[0]>b&&(e[0]=b),e[0]<-b&&(e[0]=-b),e[1]>b&&(e[1]=b),e[1]<-b&&(e[1]=-b),e}var D,E,m,w,I,W,k=Math.abs,J=[12890594.86,8362377.87,5591021,3481989.83,1678043.12,0],x=[75,60,45,30,15,0],L=[[1.410526172116255e-8,898305509648872e-20,-1.9939833816331,200.9824383106796,-187.2403703815547,91.6087516669843,-23.38765649603339,2.57121317296198,-.03801003308653,17337981.2],[-7.435856389565537e-9,8983055097726239e-21,-.78625201886289,96.32687599759846,-1.85204757529826,-59.36935905485877,47.40033549296737,-16.50741931063887,2.28786674699375,10260144.86],[-3.030883460898826e-8,898305509983578e-20,.30071316287616,59.74293618442277,7.357984074871,-25.38371002664745,13.45380521110908,-3.29883767235584,.32710905363475,6856817.37],[-1.981981304930552e-8,8983055099779535e-21,.03278182852591,40.31678527705744,.65659298677277,-4.44255534477492,.85341911805263,.12923347998204,-.04625736007561,4482777.06],[3.09191371068437e-9,8983055096812155e-21,6995724062e-14,23.10934304144901,-.00023663490511,-.6321817810242,-.00663494467273,.03430082397953,-.00466043876332,2555164.4],[2.890871144776878e-9,8983055095805407e-21,-3.068298e-8,7.47137025468032,-353937994e-14,-.02145144861037,-1234426596e-14,.00010322952773,-323890364e-14,826088.5]],j=[[-.0015702102444,111320.7020616939,0x60e374c3105a3,-0x24bb4115e2e164,0x5cc55543bb0ae8,-0x7ce070193f3784,0x5e7ca61ddf8150,-0x261a578d8b24d0,0x665d60f3742ca,82.5],[.0008277824516172526,111320.7020463578,647795574.6671607,-4082003173.641316,10774905663.51142,-15171875531.51559,12053065338.62167,-5124939663.577472,913311935.9512032,67.5],[.00337398766765,111320.7020202162,4481351.045890365,-23393751.19931662,79682215.47186455,-115964993.2797253,97236711.15602145,-43661946.33752821,8477230.501135234,52.5],[.00220636496208,111320.7020209128,51751.86112841131,3796837.749470245,992013.7397791013,-1221952.21711287,1340652.697009075,-620943.6990984312,144416.9293806241,37.5],[-.0003441963504368392,111320.7020576856,278.2353980772752,2485758.690035394,6070.750963243378,54821.18345352118,9540.606633304236,-2710.55326746645,1405.483844121726,22.5],[-.0003218135878613132,111320.7020701615,.00369383431289,823725.6402795718,.46104986909093,2351.343141331292,1.58060784298199,8.77738589078284,.37238884252424,7.45]];function q(r,t,e){var n=k(t)/e[9],a=e[0]+e[1]*k(r),o=e[2]+e[3]*n+e[4]*Math.pow(n,2)+e[5]*Math.pow(n,3)+e[6]*Math.pow(n,4)+e[7]*Math.pow(n,5)+e[8]*Math.pow(n,6);return[a*=r<0?-1:1,o*=t<0?-1:1]}function N(r){for(var t=r[0],e=r[1],n=[],a=0;ax[a]){n=j[a];break}return q(t,e,n)}function O(r){for(var t=r[0],e=r[1],n=[],a=0;a=J[a]){n=L[a];break}return q(t,e,n)}function T(r,t){if(!r)throw new Error(t)}function A(r){return!!r&&"[object Array]"===Object.prototype.toString.call(r)}function F(r){return!isNaN(Number(r))&&null!==r&&!A(r)}function R(){for(var r=[],t=0;t=2,"Invalid input coordinate: ".concat(r)),T(F(r[0])&&F(r[1]),"Invalid input coordinate: ".concat(r)),r=r.map(Number),i=!0);var u=a;return i?u(r):(U(r,(function(r){var t;t=u(r),r[0]=t[0],r[1]=t[1]})),r)}});return H}(); + +export default gcoord diff --git a/fapp/ciyon_ap/util/lang/en.json b/fapp/ciyon_ap/util/lang/en.json new file mode 100644 index 0000000..586142b --- /dev/null +++ b/fapp/ciyon_ap/util/lang/en.json @@ -0,0 +1,102 @@ +{ + "code":1, + "lang.showname": "English", + "lang.chname": "英文", + "apptitle": "Ciyon", + "关闭":"Close", + "刷新":"Refresh", + "全部":"All", + "未审核":"Unreviewed", + "审核中":"Reviewing", + "驳回":"Rejected", + "撤回":"Withdraw", + "通过":"Passed", + "变更":"Change", + "删除":"Delete", + "审核":"Review", + "详情": "Detail", + "刚刚": "Just Now", + "多语言切换": "Language Switch", + + "tabbar.index": "Plaza", + "tabbar.me": "Me", + "login.xieyi": "/pages/main/paper?id=3", + "login.tablogin": "Login", + "login.tabreg": "Register", + "login.tabforget": "Forgot Password", + "login.form_mobile": "Mobile", + "login.form_pass": "Password", + "login.form_setpass": "Set Password", + "login.form_repass": "Re Password", + "login.btn_reg": "Register Now", + "login.btn_login": "Login Now", + "login.btn_loginwx": "Weixin Reg/Login", + "login.btn_forget": "Find Password Now", + + "query.pselect": "Please select filter query", + "query.btn_query": "Query", + "query.btn_run":"Run Query", + "query.btn_reset":"Reset", + "query.btn_close":"Close", + + "page.btn_submit":"Submit", + "page.btn_refresh":"Refresh", + "page.loading":"Loading", + + + "alert.deftitle":" Warm Tips", + "audio.rate":"speed", + "capcode.noinput":"Please Enter Account", + + "placeholder.select": "Please Select", + "placeholder.key": "Enter Keyword Query", + + "searchbar.placeholder": "Search", + "searchbar.btn": "Search", + "list.nodatamsg": "No Data", + "selcas.done": "Done", + "selcas.clear": "Clear", + "select.nosearch": "No Search Result", + "select.nodata": "No Selected Data", + "selmap.select": "Please Choose Location", + "selmap.loced": "Positioned ✔", + "selmap.noselect": "No Location Selected", + "showimgs.att": "attachment", + "time.now":"Now", + + "upload.uploadingmsg": "Uploading, Please Waiting...", + "upload.uploading": "Uploading...", + "upload.menu_rehcam": "From CiyCamera", + "upload.menu_camera": "From Camera", + "upload.menu_album": "From Album", + "upload.menu_message": "From Message", + "upload.maxmsg": "Up to {n} can be uploaded", + "upload.tip": "Upload", + + "handsign.close":"Close", + "handsign.rewrite":"Rewrite", + "handsign.done":"Done", + + "cyc.month": "month", + "cyc.day": "day", + "cyc.min": "minute", + "cyc.sec": "second", + "week.0": "Sun", + "week.1": "Mon", + "week.2": "Tue", + "week.3": "Wed", + "week.4": "Thu", + "week.5": "Fri", + "week.6": "Sat", + "calendar.year": "Year", + "calendar.month": "Mon", + "calendar.today":"Today", + "calendar.tomonth": "ThisMouth", + "calendar.nodate":"Select None Date", + + "inputdate.date":"Select Date", + "inputdate.hour":"Select Hour", + "inputdate.minute":"Select Min", + "inputdate.now":"Now", + "inputdate.done":"Done" +} \ No newline at end of file diff --git a/fapp/ciyon_ap/util/lang/fr.json b/fapp/ciyon_ap/util/lang/fr.json new file mode 100644 index 0000000..f91878b --- /dev/null +++ b/fapp/ciyon_ap/util/lang/fr.json @@ -0,0 +1,103 @@ +{ + "code":1, + "lang.showname": "Français", + "lang.chname": "法文", + "apptitle": "众产Ciyon", + "关闭": "Fermé", + "刷新": "Rafraîchir", + "全部": "Tous", + "未审核": "Non vérifié", + "审核中": "En vérification", + "驳回": "Rejeter", + "撤回": "Retirer", + "通过": "Approuver", + "变更": "Modifier", + "删除": "Supprimer", + "审核": "Vérifier", + "详情": "Détails", + "刚刚": "À l'instant", + "多语言切换": "Changement de langue", + + "tabbar.index": "Place", + "tabbar.me": "Moi", + "login.xieyi": "/pages/main/paper?id=3", + "login.tablogin": "Connexion", + "login.tabreg": "Inscription", + "login.tabforget": "Récupérer MDP", + "login.form_mobile": "Téléphone", + "login.form_pass": "Mot de passe", + "login.form_setpass": "Définir MDP", + "login.form_repass": "Confirmer MDP", + "login.btn_reg": "S'inscrire", + "login.btn_login": "Se connecter", + "login.btn_loginwx": "WeChat Connexion", + "login.btn_forget": "Récupérer MDP", + + "query.pselect": "Sélectionnez des critères", + "query.btn_query": "Filtrer", + "query.btn_run": "Rechercher", + "query.btn_reset": "Réinitialiser", + "query.btn_close": "Fermer", + + "page.btn_submit": "Soumettre", + "page.btn_refresh": "Actualiser", + "page.loading": "Chargement", + + "alert.deftitle": "Conseil", + "audio.rate": "Vitesse", + "capcode.noinput": "Entrez un compte", + + "placeholder.select": "Sélectionnez", + "placeholder.key": "Filtrer par mot-clé", + + "searchbar.placeholder": "Rechercher", + "searchbar.btn": "Recherche", + "list.nodatamsg": "Aucune donnée", + "selcas.done": "Terminer", + "selcas.clear": "Vider", + "select.nosearch": "Aucun résultat", + "select.nodata": "Aucune option", + "selmap.select": "Sélectionnez un lieu", + "selmap.loced": "Localisé ✔", + "selmap.noselect": "Lieu non sélectionné", + "showimgs.att": "Pièce jointe", + "time.now": "Maintenant", + + "upload.uploadingmsg": "Téléchargement en cours...", + "upload.uploading": "En cours...", + "upload.menu_rehcam": "Appareil photo", + "upload.menu_camera": "Prendre photo", + "upload.menu_album": "Galerie", + "upload.menu_message": "Conversations", + "upload.maxmsg": "Max {n} fichiers", + "upload.tip": "Télécharger", + + "handsign.close": "Fermer", + "handsign.rewrite": "Réeécrire", + "handsign.done": "Valider", + + "cyc.month": "Mois", + "cyc.day": "Jour", + "cyc.min": "Minute", + "cyc.sec": "Seconde", + + "week.0": "Dim", + "week.1": "Lun", + "week.2": "Mar", + "week.3": "Mer", + "week.4": "Jeu", + "week.5": "Ven", + "week.6": "Sam", + + "calendar.year": "Année", + "calendar.month": "Mois", + "calendar.today": "Aujourd'hui", + "calendar.tomonth": "Ce mois", + "calendar.nodate": "Aucune date", + + "inputdate.date": "Choisir date", + "inputdate.hour": "Choisir heure", + "inputdate.minute": "Choisir minute", + "inputdate.now": "Maintenant", + "inputdate.done": "Valider" +} \ No newline at end of file diff --git a/fapp/ciyon_ap/util/lang/ja.json b/fapp/ciyon_ap/util/lang/ja.json new file mode 100644 index 0000000..c4ce282 --- /dev/null +++ b/fapp/ciyon_ap/util/lang/ja.json @@ -0,0 +1,105 @@ +{ + "code":1, + "lang.showname": "日本語", + "lang.chname": "日文", + "apptitle": "众产Ciyon", + + "关闭":"閉じる", + "刷新":"リフレッシュ", + "全部":"すべて", + "未审核":"未審査", + "审核中":"審査中", + "驳回":"却下", + "撤回":"", + "通过":"承認", + "变更":"变更", + "删除":"削除", + "审核":"レビュー", + "详情": "詳細", + "刚刚": "ちょうど", + "多语言切换": "言語切り替え", + + "tabbar.index": "プラザ", + "tabbar.me": "マイ", + "login.xieyi": "/pages/main/paper?id=3", + "login.tablogin": "ログインする", + "login.tabreg": "登録する", + "login.tabforget": "パスワードを取り戻す", + "login.form_mobile": "携帯番号", + "login.form_pass": "パスワード", + "login.form_setpass": "パスワードの設定", + "login.form_repass": "さいにゅうりょく", + "login.btn_reg": "登録する", + "login.btn_login": "登録する", + "login.btn_loginwx": "ウィーチャット登録/ログイン", + "login.btn_forget": "今すぐパスワードを取り戻す", + + "query.pselect": "フィルタ条件を選択してください", + "query.btn_query": "フィルタリング", + "query.btn_run":"クエリーの実行", + "query.btn_reset":"リセット", + "query.btn_close":"閉じる", + + "page.btn_submit":"送信", + "page.btn_refresh":"リフレッシュ", + "page.loading":"ロード中", + + + "alert.deftitle":"暖かいヒント", + "audio.rate":"スピードを上げる", + "capcode.noinput":"アカウントを入力してください", + + "placeholder.select": "選択してください", + "placeholder.key": "入力キーワードフィルタ", + "searchbar.placeholder": "検索", + "searchbar.btn": "検索", + "list.nodatamsg": "データなし", + "selcas.done": "完了", + "selcas.clear": "クリア", + "select.nosearch": "検索結果なし", + "select.nodata": "選択可能なデータがありません", + "selmap.select": "位置を選択してください", + "selmap.loced": "位置を確定しました ✔", + "selmap.noselect": "マップ上の位置が選択されていません", + "showimgs.att": "添付ファイル", + "time.now":"たった今", + + "upload.uploadingmsg": "アップロード中、しばらくお待ちください...", + "upload.uploading": "アップロード中...", + "upload.menu_rehcam": "カメラ", + "upload.menu_camera": "写真を撮る", + "upload.menu_album": "アルバムから選択", + "upload.menu_message": "メッセージから選択", + "upload.maxmsg": "最大{n}個までアップロード可能です", + "upload.tip": "アップロード", + + "handsign.close":"閉じる", + "handsign.rewrite":"再入力", + "handsign.done":"完了", + + + "cyc.month": "月", + "cyc.day": "日", + "cyc.min": "分", + "cyc.sec": "秒", + + "week.0": "日", + "week.1": "月", + "week.2": "火", + "week.3": "水", + "week.4": "木", + "week.5": "金", + "week.6": "土", + + "calendar.year": "年", + "calendar.month": "月", + "calendar.today": "今日", + "calendar.tomonth": "今月", + "calendar.nodate": "キャンセル", + + "inputdate.date": "日付を選択", + "inputdate.hour": "時間を選択", + "inputdate.minute": "分を選択", + "inputdate.now": "現在", + "inputdate.done": "完了" +} \ No newline at end of file diff --git a/fapp/ciyon_ap/util/lang/zh-Hans.json b/fapp/ciyon_ap/util/lang/zh-Hans.json new file mode 100644 index 0000000..fea4660 --- /dev/null +++ b/fapp/ciyon_ap/util/lang/zh-Hans.json @@ -0,0 +1,105 @@ +{ + "code":1, + "lang.showname": "简体中文", + "lang.chname": "简体中文", + "apptitle": "众产Ciyon", + "关闭":"关闭", + "刷新":"刷新", + "全部":"全部", + "未审核":"未审核", + "审核中":"审核中", + "驳回":"驳回", + "撤回":"撤回", + "通过":"通过", + "变更":"变更", + "删除":"删除", + "审核":"审核", + "详情": "详情", + "刚刚": "刚刚", + "多语言切换": "多语言切换", + + "tabbar.index": "广场", + "tabbar.me": "我的", + "login.xieyi": "/pages/main/paper?id=3", + "login.tablogin": "登录", + "login.tabreg": "注册", + "login.tabforget": "找回密码", + "login.form_mobile": "手机号", + "login.form_pass": "密 码", + "login.form_setpass": "设置密码", + "login.form_repass": "再次输入", + "login.btn_reg": "立即注册", + "login.btn_login": "登  录", + "login.btn_loginwx": "微信一键注册/登录", + "login.btn_forget": "立即找回密码", + + "query.pselect": "请选择筛选条件", + "query.btn_query": "筛选", + "query.btn_run":"执行查询", + "query.btn_reset":"重置", + "query.btn_close":"关闭", + + "page.btn_submit":"提交", + "page.btn_refresh":"刷新", + "page.loading":"加载中", + + + "alert.deftitle":"温馨提示", + "audio.rate":"倍速", + "capcode.noinput":"请输入账号", + + "placeholder.select": "请选择", + "placeholder.key": "输入关键字筛选", + + "searchbar.placeholder": "搜索", + "searchbar.btn": "搜索", + "list.nodatamsg": "无数据", + "selcas.done": "完成", + "selcas.clear": "清空", + "select.nosearch": "无搜索结果", + "select.nodata": "无可选数据", + "selmap.select": "请选择位置", + "selmap.loced": "已定位 ✔", + "selmap.noselect": "未选择地图位置", + "showimgs.att": "附件", + "time.now":"刚刚", + + "upload.uploadingmsg": "上传中,请稍后操作...", + "upload.uploading": "上传中...", + "upload.menu_rehcam": "相机", + "upload.menu_camera": "拍摄", + "upload.menu_album": "从相册选择", + "upload.menu_message": "从会话选择", + "upload.maxmsg": "最多可上传{n}个", + "upload.tip": "上传", + + "handsign.close":"关闭", + "handsign.rewrite":"重写", + "handsign.done":"完成", + + "cyc.month": "月", + "cyc.day": "天", + "cyc.min": "分钟", + "cyc.sec": "秒", + + "week.0":"日", + "week.1":"一", + "week.2":"二", + "week.3":"三", + "week.4":"四", + "week.5":"五", + "week.6":"六", + + "calendar.year":"年", + "calendar.month":"月", + "calendar.today":"今天", + "calendar.tomonth": "本月", + "calendar.nodate":"不选日期", + + + "inputdate.date":"选择日期", + "inputdate.hour":"选择小时", + "inputdate.minute":"选择分钟", + "inputdate.now":"此刻", + "inputdate.done":"完成" +} \ No newline at end of file diff --git a/fapp/ciyon_ap/util/lang/zh-Hant.json b/fapp/ciyon_ap/util/lang/zh-Hant.json new file mode 100644 index 0000000..499e788 --- /dev/null +++ b/fapp/ciyon_ap/util/lang/zh-Hant.json @@ -0,0 +1,105 @@ +{ + "code":1, + "lang.showname": "繁體中文", + "lang.chname": "繁体中文", + "apptitle": "眾產Ciyon", + "关闭":"關閉", + "刷新":"重新", + "全部":"全部", + "未审核":"未審核", + "审核中":"審核中", + "驳回":"駁回", + "撤回":"撤回", + "通过":"通過", + "变更":"變更", + "删除":"刪除", + "审核":"審核", + "详情": "詳情", + "刚刚": "剛剛", + "多语言切换": "多語言切換", + + "tabbar.index": "廣場", + "tabbar.me": "我", + + "login.xieyi": "/pages/main/paper?id=3", + "login.tablogin": "鄧入", + "login.tabreg": "註冊", + "login.tabforget": "找回密碼", + "login.form_mobile": "手機號", + "login.form_pass": "密 碼", + "login.form_setpass": "設置密碼", + "login.form_repass": "再次輸入", + "login.btn_reg": "立即註冊", + "login.btn_login": "鄧  入", + "login.btn_loginwx": "微信一鍵註冊/鄧入", + "login.btn_forget": "立即找回密碼", + + "query.pselect": "請選擇篩選條件", + "query.btn_query": "篩選", + "query.btn_run":"執行查詢", + "query.btn_reset":"重置", + "query.btn_close":"關閉", + + "page.btn_submit":"提交", + "page.btn_refresh":"刷新", + "page.loading":"載入中", + + + "alert.deftitle":"溫馨提示", + "audio.rate":"倍速", + "capcode.noinput":"請輸入賬號", + + "placeholder.select": "請選擇", + "placeholder.key": "輸入關鍵字篩選", + + "searchbar.placeholder": "檢索", + "searchbar.btn": "檢索", + "list.nodatamsg": "無數據", + "selcas.done": "完成", + "selcas.clear": "清空", + "select.nosearch": "無檢索結果", + "select.nodata": "無可選數據", + "selmap.select": "請選擇位置", + "selmap.loced": "已定位 ✔", + "selmap.noselect": "未選擇地圖位置", + "showimgs.att": "附件", + "time.now":"剛剛", + + "upload.uploadingmsg": "上傳中,請稍後操作...", + "upload.uploading": "上傳中...", + "upload.menu_rehcam": "相機", + "upload.menu_camera": "拍攝", + "upload.menu_album": "從相冊選擇", + "upload.menu_message": "從會話選擇", + "upload.maxmsg": "最多可上傳{n}個", + "upload.tip": "上傳", + + "handsign.close":"關閉", + "handsign.rewrite":"重寫", + "handsign.done":"完成", + + "cyc.month": "月", + "cyc.day": "天", + "cyc.min": "分鐘", + "cyc.sec": "秒", + + "week.0": "日", + "week.1": "一", + "week.2": "二", + "week.3": "三", + "week.4": "四", + "week.5": "五", + "week.6": "六", + + "calendar.year": "年", + "calendar.month": "月", + "calendar.today": "今天", + "calendar.tomonth": "本月", + "calendar.nodate": "不選日期", + + "inputdate.date": "選擇日期", + "inputdate.hour": "選擇小時", + "inputdate.minute": "選擇分鐘", + "inputdate.now": "此刻", + "inputdate.done": "完成" +} \ No newline at end of file diff --git a/fapp/ciyon_ap/util/langload.js b/fapp/ciyon_ap/util/langload.js new file mode 100644 index 0000000..66e4bb0 --- /dev/null +++ b/fapp/ciyon_ap/util/langload.js @@ -0,0 +1,12 @@ +import en from './lang/en.json' +import zhHans from './lang/zh-Hans.json' +import zhHant from './lang/zh-Hant.json' +import ja from './lang/ja.json' +import fr from './lang/fr.json' +export default { + en, + ja, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/fapp/ciyon_ap/util/md5.js b/fapp/ciyon_ap/util/md5.js new file mode 100644 index 0000000..c8fbf21 --- /dev/null +++ b/fapp/ciyon_ap/util/md5.js @@ -0,0 +1,259 @@ +/* + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* + * Configurable variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + */ +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ +var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ + +/* + * These are the functions you'll usually want to call + * They take string arguments and return either hex or base-64 encoded strings + */ +function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));} +function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));} +function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));} +function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); } +function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); } +function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); } + +/* + * Perform a simple self-test to see if the VM is working + */ +function md5_vm_test() +{ + return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; +} + +/* + * Calculate the MD5 of an array of little-endian words, and a bit length + */ +function core_md5(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << ((len) % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + + a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); + d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); + d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); + d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i+10], 17, -42063); + b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); + d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); + + a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); + d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); + c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); + d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); + c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); + d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); + c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); + d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); + c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); + + a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); + d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); + d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); + d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); + d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); + + a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); + d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); + d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); + d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); + d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + return Array(a, b, c, d); + +} + +/* + * These functions implement the four basic operations the algorithm uses. + */ +function md5_cmn(q, a, b, x, s, t) +{ + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); +} +function md5_ff(a, b, c, d, x, s, t) +{ + return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); +} +function md5_gg(a, b, c, d, x, s, t) +{ + return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); +} +function md5_hh(a, b, c, d, x, s, t) +{ + return md5_cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5_ii(a, b, c, d, x, s, t) +{ + return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); +} + +/* + * Calculate the HMAC-MD5, of a key and some data + */ +function core_hmac_md5(key, data) +{ + var bkey = str2binl(key); + if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz); + + var ipad = Array(16), opad = Array(16); + for(var i = 0; i < 16; i++) + { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); + return core_md5(opad.concat(hash), 512 + 128); +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* + * Convert a string to an array of little-endian words + * If chrsz is ASCII, characters >255 have their hi-byte silently ignored. + */ +function str2binl(str) +{ + var bin = Array(); + var mask = (1 << chrsz) - 1; + for(var i = 0; i < str.length * chrsz; i += chrsz) + bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); + return bin; +} + +/* + * Convert an array of little-endian words to a string + */ +function binl2str(bin) +{ + var str = ""; + var mask = (1 << chrsz) - 1; + for(var i = 0; i < bin.length * 32; i += chrsz) + str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); + return str; +} + +/* + * Convert an array of little-endian words to a hex string. + */ +function binl2hex(binarray) +{ + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var str = ""; + for(var i = 0; i < binarray.length * 4; i++) + { + str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + + hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); + } + return str; +} + +/* + * Convert an array of little-endian words to a base-64 string + */ +function binl2b64(binarray) +{ + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var str = ""; + for(var i = 0; i < binarray.length * 4; i += 3) + { + var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) + | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) + | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; + else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); + } + } + return str; +} +export default { + md5: hex_md5 +} diff --git a/fapp/ciyon_ap/util/style.css b/fapp/ciyon_ap/util/style.css new file mode 100644 index 0000000..5e9fdd5 --- /dev/null +++ b/fapp/ciyon_ap/util/style.css @@ -0,0 +1,1241 @@ +/* +================================================================================= +* License: GPL-2.0 license +* Author: 众产® https://ciy.cn/code +* Version: 0.1.0 +================================================================================= +--txt[1-9] 文字色系 +--bg[1-9] 背景边框色系 +--man/imp/warn/dag 强调色系 + +.ciy* 常用专属样式 +.btn 定制button样式 +.md* 简约MarkDown样式 + +*/ +page, +body { + /* 1 淡 5 9浓 */ + + /* +zIndex z-index 规划: +1-9 页内rel +10-30 页内fix btnadd 10; +31-39 组件fix +40-49 header/tabbar fix +50-60 auth登录? +99 captcha +100-120 tip/冒泡提示 +50000 header/tabbar +50005 camera +50010 组件全屏mask +50020 alert +50030 toast + + +title bg2 +card bg2 title bg4 +grid bg3 +pagebg bg4 +tabbar bg3 bg6 +card bg3 +*/ + + /* 文字色 */ + --txt1: #8c9ba4; + --txt2: #818e97; + --txt3: #738088; + --txt4: #646e76; + --txt5: #576067; + --txt6: #454d52; + --txt7: #2c3236; + --txt8: #060708; + --txt9: #000000; + + /* 背景边框色 */ + --bg1: #ffffff; + --bg2: #fbfbfc; + --bg3: #f7f8f8; + --bg4: #f0f2f2; + --bg5: #e3e6e7; + --bg6: #cdd2d4; + --bg7: #afb6b9; + --bg8: #939da1; + --bg9: #7e8a8e; + + + /* 主色 */ + --man3: #a6d2fa; + --man4: #80c1f3; + --man5: #1E9FFF; + --man6: #1989d8; + --man7: #8568f7; + --mant: #ffffff; + + /* 成功色 */ + --succ4: #02dd40; + --succ5: #03a547; + --succ6: #036d2d; + --succt: #ffffff; + /* 警示色 */ + --warn4: #fcfbc7; + --warn5: #f5d417; + --warn6: #e39725; + --warnt: #ffffff; + /* 失败色 */ + --dag4: #ffac37; + --dag5: #e34242; + --dag6: #a91313; + --dagt: #ffffff; + + --e-switch-bg: #ffffff; + --e-switch-br: #dcdcdc; + --e-switch-txt: #2c3236; + --e-switch-chkbgdis: #1b709e; + --e-switch-chkbg: #19a2fc; + --e-switch-chktxt: #ffffff; + --e-switch-shadow: 0 2px 5px 1px #00000042; + + --e-userbg1: #aedc05; + --e-userbg2: #16ea2e; + --e-headerbg1: #dff7ff; + --e-headerbg2: #eaffe6; +} + +.dark { + /* 文字色 */ + --txt1: #8d9ca6; + --txt2: #98a5ae; + --txt3: #a5b1b9; + --txt4: #b1bbc2; + --txt5: #c2cad0; + --txt6: #d3d9dd; + --txt7: #e7eaec; + --txt8: #f5f6f7; + --txt9: #ffffff; + + /* 背景边框色 */ + --bg1: #000000; + --bg2: #0d1112; + --bg3: #151a1b; + --bg4: #1f2526; + --bg5: #272e2f; + --bg6: #32393b; + --bg7: #485155; + --bg8: #5d686d; + --bg9: #6f7c82; + + + --man3: #032c44; + --man4: #175787; + --man5: #1E9FFF; + --man6: #83c1f1; + --man7: #8568f7; + --mant: #ffffff; + + /* 成功色 */ + --succ4: #036d2d; + --succ5: #03a547; + --succ6: #02dd40; + --succt: #ffffff; + /* 警示色 */ + --warn4: #e39725; + --warn5: #f5d417; + --warn6: #fcfbc7; + --warnt: #ffffff; + /* 失败色 */ + --dag4: #a91313; + --dag5: #e34242; + --dag6: #f9ddc0; + --dagt: #ffffff; + + --e-userbg1: #b9b527; + --e-userbg2: #00770e; + + --e-headerbg1: #07bff1; + --e-headerbg2: #2c700c; +} + +page, +body, +view, +text { + box-sizing: border-box; +} + +::-webkit-scrollbar { + display: none; +} + +.def { + background: var(--bg2) !important; + color: var(--txt7) !important; +} + +.def.b { + border: 1px solid var(--bg6) !important; +} + +.def.liner { + background: linear-gradient(310deg, var(--bg3), var(--bg6)) !important; +} + +.dag { + background: var(--dag5) !important; + color: var(--dagt) !important; + border: 1px solid var(--dag5) !important; +} + +.dag.b { + border: 1px solid var(--dag6) !important; +} + +.dag.liner { + background: linear-gradient(310deg, var(--dag5), var(--dag6)) !important; +} + +.succ { + background: var(--succ5) !important; + color: var(--succt) !important; + border: 1px solid var(--succ5) !important; +} + +.succ.b { + border: 1px solid var(--succ6) !important; +} + +.succ.liner { + background: linear-gradient(310deg, var(--succ5), var(--succ6)) !important; +} + +.warn { + background: var(--warn6) !important; + color: var(--warnt) !important; + border: 1px solid var(--warn6) !important; +} + +.warn.b { + border: 1px solid var(--warn6) !important; +} + +.warn.liner { + background: linear-gradient(310deg, var(--warn5), var(--warn6)) !important; +} + +.man { + background: var(--man6) !important; + color: var(--mant) !important; + border: 1px solid var(--man6) !important; +} + +.man.b { + border: 1px solid var(--man7) !important; +} + +.man.liner { + background: linear-gradient(310deg, var(--man6), var(--man7)) !important; +} + +/*列表页*/ +.ciy-list { + position: relative; + margin: 1em; + padding: 0.8em; + background: var(--bg1); + border-radius: 0.5em; + overflow: hidden; + transition: transform ease-in 0.5s; +} + +.ciy-list.del { + transform: translateX(-100vw); + opacity: 0.5; +} + +.ciy-list .l0 { + font-size: 0.8em; + padding-right: 6em; + color: var(--txt1); +} + +.ciy-list .l1 { + font-size: 1.2em; + padding: 0.3em 1.5em 0.3em 0.5em; +} + +.ciy-list .l2 { + display: flex; + align-items: center; + min-height: 2em; +} + +.ciy-list .l2>label { + color: var(--txt9); + min-width: 5em; + flex-shrink: 0; + white-space: nowrap; + padding-right: 1em; +} + +.ciy-list .l2>view { + flex: 1; + color: var(--txt6); + text-align: right; +} + +.ciy-list .l3 { + font-size: 0.9em; + padding: 0.3em 1.3em; + color: var(--txt3); +} + +.ciy-list .rtz { + position: absolute; + top: 1em; + right: -2.5em; + height: 2em; + line-height: 2em; + width: 9em; + text-align: center; + transform: rotate(45deg); +} + +.ciy-list .rt { + position: absolute; + top: 0.8em; + right: 0.8em; + text-align: right; + font-size: 0.9em; +} + +.ciy-list .rb { + text-align: right; + font-size: 0.9em; +} + +.ciy-list .lb { + position: absolute; + bottom: 0.8em; + left: 1.2em; + font-size: 0.9em; +} + +.ciy-list .dot { + position: absolute; + bottom: 0.5em; + right: 1em; + padding: 1em; + width: 1.3em; + height: 1.3em; + background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUwOS4xMDAyMzQyNiA1MTJtLTE1My4yNzMzMzEzNCAwYTE1My4yNzMzMzEzNiAxNTMuMjczMzMxMzYgMCAxIDAgMzA2LjU0NjY2MjcgMCAxNTMuMjczMzMxMzYgMTUzLjI3MzMzMTM2IDAgMSAwLTMwNi41NDY2NjI3IDBaIiBmaWxsPSIjNzA3MDcwIj48L3BhdGg+PHBhdGggZD0iTTc4OS43NjE4NDA4MiA1MTJtLTkxLjQ2MTE4MTY0IDBhOTEuNDYxMTgxNjQgOTEuNDYxMTgxNjQgMCAxIDAgMTgyLjkyMjM2MzI5IDAgOTEuNDYxMTgxNjQgOTEuNDYxMTgxNjQgMCAxIDAtMTgyLjkyMjM2MzI5IDBaIiBmaWxsPSIjNzA3MDcwIj48L3BhdGg+PHBhdGggZD0iTTIzNC4yMzgxNTkxOCA1MTJtLTkxLjQ2MTE4MTY0IDBhOTEuNDYxMTgxNjQgOTEuNDYxMTgxNjQgMCAxIDAgMTgyLjkyMjM2MzI4IDAgOTEuNDYxMTgxNjQgOTEuNDYxMTgxNjQgMCAxIDAtMTgyLjkyMjM2MzI4IDBaIiBmaWxsPSIjNzA3MDcwIj48L3BhdGg+PC9zdmc+"); +} + + +.ciy-add { + position: fixed; + bottom: 1em; + right: 1em; + width: 4em; + height: 4em; + opacity: 0.6; + z-index: 10; + border-radius: 2em; + background: linear-gradient(90deg, #8568f7, #4981ff); +} + +.ciy-add::after { + content: ' '; + position: absolute; + margin: 1em; + width: 2em; + height: 2em; + background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkyNS42OTYgMzg0cTE5LjQ1NiAwIDM3LjM3NiA3LjY4dDMwLjcyIDIwLjQ4IDIwLjQ4IDMwLjcyIDcuNjggMzcuMzc2cTAgMjAuNDgtNy42OCAzNy44ODh0LTIwLjQ4IDMwLjIwOC0zMC43MiAyMC40OC0zNy4zNzYgNy42OGwtMjg3Ljc0NCAwIDAgMjg3Ljc0NHEwIDIwLjQ4LTcuNjggMzcuODg4dC0yMC40OCAzMC4yMDgtMzAuNzIgMjAuNDgtMzcuMzc2IDcuNjhxLTIwLjQ4IDAtMzcuODg4LTcuNjh0LTMwLjIwOC0yMC40OC0yMC40OC0zMC4yMDgtNy42OC0zNy44ODhsMC0yODcuNzQ0LTI4Ny43NDQgMHEtMjAuNDggMC0zNy44ODgtNy42OHQtMzAuMjA4LTIwLjQ4LTIwLjQ4LTMwLjIwOC03LjY4LTM3Ljg4OHEwLTE5LjQ1NiA3LjY4LTM3LjM3NnQyMC40OC0zMC43MiAzMC4yMDgtMjAuNDggMzcuODg4LTcuNjhsMjg3Ljc0NCAwIDAtMjg3Ljc0NHEwLTE5LjQ1NiA3LjY4LTM3LjM3NnQyMC40OC0zMC43MiAzMC4yMDgtMjAuNDggMzcuODg4LTcuNjhxMzkuOTM2IDAgNjguMDk2IDI4LjE2dDI4LjE2IDY4LjA5NmwwIDI4Ny43NDQgMjg3Ljc0NCAweiIgZGF0YS1zcG0tYW5jaG9yLWlkPSJhMzEzeC5zZWFyY2hfaW5kZXguMC5pNi41NTEwM2E4MW5Iald1ViIgZmlsbD0iI2ZmZmZmZiI+PC9wYXRoPjwvc3ZnPg=="); +} + +.btn { + background: linear-gradient(347deg, var(--man5), var(--man7)); + color: var(--mant); + border: 1px solid var(--man6); + position: relative; + display: inline-block; + padding: 0.5em 0.8em; + font-size: 1em; + line-height: 1em; + margin: 2px; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + border-radius: 0.7em; +} + +.btn::after { + content: "Loading..."; + position: absolute; + bottom: 0; + right: 0.3em; + width: auto; + height: auto; + top: auto; + left: auto; + font-size: 1em; + transform-origin: right bottom; + opacity: 0; + transform: scale(0.8); + transition: all 0.3s; +} + +.btn.button-hover, +.btn:active { + background: var(--man5); + color: var(--mant); + border: 1px solid var(--bg9); +} + +.btn.loading::after { + opacity: 0.5; + transform: scale(0.4); +} + +.btn.lg { + font-size: 1.3em; + padding-left: 1.5em; + padding-right: 1.5em; +} + +.btn.lgg { + font-size: 1.5em; + padding: 0.7em 1.5em; +} + +.btn.sm { + font-size: 0.8em; +} + +.btn.smm { + font-size: 0.7em; +} + +.btn.xs { + font-size: 0.7em; + padding: 0.2em 0.8em; +} + +.btn.sq { + border-radius: 0.3em; +} + +.btn.cc { + border-radius: 1.5em; +} + +.btn.long { + width: 80%; +} + +.btn.dis { + border: 1px solid var(--bg6); + background: var(--bg1) !important; + color: var(--bg5); +} + +.btn.dis:active { + background: var(--bg1) !important; + color: var(--txt9) !important; + border: 1px solid var(--bg9); +} + +.btn.def { + border: 1px solid var(--bg6); +} + +.btn.def:active { + background: var(--bg1) !important; + color: var(--txt9) !important; + border: 1px solid var(--bg9); +} + +.btn.tran { + border: none; + background: transparent; +} + + +/*页面flex布局模式*/ +.ciy-page { + display: flex; + flex-direction: column; + height: 100vh; +} + +.ciy-page .main { + flex: 1; + overflow: auto; +} + +/*说明块*/ +.ciy-tip { + background: var(--warn4); + margin: 0.5em; + padding: 0.5em; + border: 1px solid var(--warn5); + border-radius: 0.3em; + color: var(--txt8); +} + +/*断行*/ +.ciy-height { + height: 0.3em; +} + + +/*分隔线装饰*/ +.ciy-hr { + position: relative; + z-index: 10; + height: 1px; + width: 100%; + flex: none; + background: linear-gradient(90deg, transparent, var(--bg7), transparent); +} + +/*九宫格*/ +.ciy-grid { + display: flex; + flex-wrap: wrap; +} + +.ciy-grid .grid { + width: 25%; + text-align: center; + padding-top: 0.8em; + padding-bottom: 0.2em; +} + +.ciy-grid .grid3 { + width: 33.3%; +} + +.ciy-grid .grid5 { + width: 20%; +} + +.ciy-grid .name { + padding: 0.5em 0; + color: var(--txt7); + font-size: 0.9em; +} + +.ciy-grid .icon { + width: 2em; + height: 2em; + display: block; + position: relative; + margin: 0 auto; + background-size: cover; +} + +.ciy-grid .br { + width: 100%; + height: 0; +} + +.ciy-grid .title { + width: 100%; + margin: 1em 0 0 0.5em; + font-weight: bolder; + text-shadow: 0 0 2px var(--bg2); + letter-spacing: 2px; + color: var(--txt7); +} + +/*标题分隔*/ +.ciy-caption { + display: flex; + align-items: center; + padding: 0.8em 1em; + font-size: 1.1em; + position: relative; + font-weight: bolder; + background: var(--bg2); + color: var(--txt7); + border-top: 1px solid var(--bg5); + border-bottom: 1px solid var(--bg6); +} + +.ciy-caption .mk { + width: 0.3em; + height: 1.5em; + margin-right: 0.3em; + border-radius: 0.3em; + vertical-align: middle; + background: var(--man5); +} + +.ciy-caption .title { + flex: 1; + color: var(--txt9); +} + +.ciy-caption .right { + font-size: 0.9em; + font-weight: normal; + color: var(--txt5); +} + +.ciy-caption .sub { + position: absolute; + bottom: 0; + left: 3em; + font-size: 0.7em; + font-weight: normal; + color: var(--txt1); +} + +/*卡片块*/ +.ciy-card { + margin: 0.5em; + border: 1px solid var(--bg6); + border-radius: 0.3em; + box-shadow: 0 0 6px var(--bg6); + background: var(--bg2); + position: relative; +} + +.ciy-card>.title { + border-radius: 0.3em 0.3em 0 0; + padding-left: 1em; + height: 2.5em; + line-height: 2.5em; + background: var(--bg4); + font-weight: bold; +} + +.ciy-card>.title .mk { + width: 0.2em; + display: inline-block; + border-radius: 0.2em; + margin-right: 0.4em; + vertical-align: middle; + height: 1.5em; + background: var(--man5); +} + +.ciy-card .right { + position: absolute; + height: 2.5em; + line-height: 2.5em; + padding-right: 1em; + color: var(--txt5); + top: 0; + right: 0; +} + +.ciy-card>.content { + padding: 1em; +} + +.ciy-card>.content>view { + line-height: 1.5em; + margin-bottom: 0.5em; +} + +.ciy-load { + padding: 3em 0 8em 3em; + line-height: 2em; + background: linear-gradient(180deg, var(--bg5), transparent); +} + +.ciy-skeleton { + background: var(--bg4); + background: linear-gradient(45deg, var(--bg4) 25%, var(--bg1) 50%, var(--bg4) 75%); + background-size: 200% 100%; + animation: skeleton 3s linear infinite; + border-radius: 0.3em; + margin-bottom: 1em; +} + +@keyframes skeleton { + 0% { + background-position: 200% 0; + } + + 100% { + background-position: -200% 0; + } +} + +.code, +.kbd { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.1em 0.4em 0 0.4em; + margin: 0 0.2em; + font-size: 0.9em; + line-height: 1.3em; + border-radius: 0.2em; + display: inline-block; + vertical-align: baseline; +} + +.code { + color: #bd210c; + border: 1px solid #f5dde3; + background-color: #f9f2f4; +} + +.kbd { + color: #ffffff; + background: linear-gradient(340deg, var(--man5), var(--man7)); +} + +.ciy-icon-arrow { + background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE5MiAzNjBjMC0xMC43NTIgMy45NjgtMjAuMDk2IDExLjkwNC0yOC4wOTZDMjExLjkwNCAzMjMuOTA0IDIyMS4yNDggMzIwIDIzMiAzMjBsNTYwIDBjMTAuODE2IDAgMjAuMTYgMy45MDQgMjguMDk2IDExLjkwNEM4MjguMDk2IDMzOS45MDQgODMyIDM0OS4yNDggODMyIDM2MHMtMy45MDQgMjAuMDk2LTExLjkwNCAyOC4wOTZsLTI4MCAyODBDNTMyLjE2IDY3NS45NjggNTIyLjgxNiA2ODAgNTEyIDY4MGMtMTAuNzUyIDAtMjAuMDk2LTMuOTY4LTI4LjA5Ni0xMS45MDRMMjAzLjkwNCAzODguMDk2QzE5NS45NjggMzgwLjA5NiAxOTIgMzcwLjc1MiAxOTIgMzYweiIgZmlsbD0iIzhhOGE4YSI+PC9wYXRoPjwvc3ZnPg=="); +} + +.ciy-form-group { + background: var(--bg2); + margin: 1em; + overflow: hidden; + border-radius: 0.5em; + position: relative; + border: 1px solid var(--bg4); + border-bottom: 2px solid var(--bg6); + +} + +.ciy-bottom { + position: fixed; + bottom: 0; + left: 0; + right: 0; + padding: 1em; + z-index: 40; + text-align: center; + background: var(--bg1); + border-top: 1px solid var(--bg6); +} + +.ciy-form-bottom { + /*过时 建议ciy-bottom*/ + position: relative; + z-index: 40; + text-align: center; + padding: 0.5em 0; +} + +.ciy-form { + width: 100%; + display: flex; + position: relative; + align-items: center; + border-bottom: 1px solid var(--bg5); + min-height: 4em; +} + +.ciy-form>view { + text-align: right; + flex: 1; +} + +.ciy-form>view:last-child { + margin-right: 1em; +} + +.ciy-form>label { + margin: 0 1em; + flex-shrink: 0; + white-space: nowrap; + align-self: flex-start; + line-height: 4em; +} + +.ciy-form>label.imp { + font-weight: bold; +} + +.ciy-form>label.imp::before { + content: ''; + position: absolute; + left: 0.3em; + top: 0.8em; + width: 0.4em; + height: 0.4em; + background: var(--dag5); + border-radius: 50%; +} + +.char2 label.imp::before, +.char3 label.imp::before, +.char4 label.imp::before, +.char5 label.imp::before, +.char6 label.imp::before { + right: -0.5em; + left: auto; +} + +.char2 label, +.char3 label, +.char4 label, +.char5 label, +.char6 label { + text-align: right; + position: relative; +} + +.char2 label { + min-width: 2em; +} + +.char3 label { + min-width: 3em; +} + +.char4 label { + min-width: 4em; +} + +.char5 label { + min-width: 5em; +} + +.char6 label { + min-width: 6em; +} + +.ciy-form.v { + flex-direction: column; + align-items: flex-start; + padding-top: 0.5em; +} + +.ciy-form.v>view { + text-align: left; + margin: 0 0.5em; + width: calc(100% - 1em); +} + +.ciy-form.v>label { + height: 2em; + line-height: 2em; +} + +.ciy-waterfall { + column-count: 2; + column-gap: 0.5em; +} + +.ciy-waterfall .itmcont { + margin-bottom: 0.5em; + width: 100%; + break-inside: avoid; +} + +.md-h1 { + font-weight: bold; + font-size: 1.2em; + margin: 0 0.3em; + line-height: 1.5em; + text-align: left; + padding: 0.5em; +} + +.md-h2 { + font-weight: bold; + font-size: 1.1em; + margin: 0 0.4em; + line-height: 1.8em; + padding: 0.5em; +} + +.md-h3 { + font-weight: bold; + font-size: 1em; + margin: 0 1.5em; + line-height: 1.5em; + padding: 0.5em; +} + +.md-h4 { + font-weight: bold; + font-size: 1em; + margin: 0 2em; + line-height: 1.5em; + padding: 0.5em; +} + +.md-content { + font-size: 1em; + text-indent: 1em; + padding: 0.3em 1em; + line-height: 2em; + white-space: pre-wrap; +} + +.md-code { + text-indent: 0; + padding: 0.2em 0.4em; + font-size: 0.9em; + line-height: 1em; + margin: 0 0.2em; + display: inline-block; + white-space: nowrap; + color: #ffffff; + background: linear-gradient(340deg, var(--man5), var(--man7)); + border-radius: 0.2em; +} + +.txt-smmm { + font-size: 0.7rem !important; +} + +.txt-smm { + font-size: 0.8rem !important; +} + +.txt-sm { + font-size: 0.9rem !important; +} + +.txt-lg { + font-size: 1.2rem !important; +} + +.txt-lgg { + font-size: 1.5rem !important; +} + +.txt-lggg { + font-size: 2rem !important; +} + +.txt-lgggg { + font-size: 3rem !important; +} + +.txt-wb { + font-weight: bold !important; +} + +.txt-wl { + font-weight: lighter !important; +} + +.txt-un { + text-decoration: underline !important; +} + +.txt-un-hover:hover { + text-decoration: underline !important; +} + +.txt-left { + text-align: left !important; +} + +.txt-center { + text-align: center !important; +} + +.txt-right { + text-align: right !important; +} + +.txt-just { + text-align: justify !important; +} + +.txt-nowrap { + white-space: nowrap !important; +} + +.txt-over { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.txt1 { + color: var(--txt1) !important; +} + +.txt2 { + color: var(--txt2) !important; +} + +.txt3 { + color: var(--txt3) !important; +} + +.txt4 { + color: var(--txt4) !important; +} + +.txt5 { + color: var(--txt5) !important; +} + +.txt6 { + color: var(--txt6) !important; +} + +.txt7 { + color: var(--txt7) !important; +} + +.txt8 { + color: var(--txt8) !important; +} + +.txt9 { + color: var(--txt9) !important; +} + +.bg1 { + background-color: var(--bg1) !important; +} + +.bg2 { + background-color: var(--bg2) !important; +} + +.bg3 { + background-color: var(--bg3) !important; +} + +.bg4 { + background-color: var(--bg4) !important; +} + +.bg5 { + background-color: var(--bg5) !important; +} + +.bg6 { + background-color: var(--bg6) !important; +} + +.bg7 { + background-color: var(--bg7) !important; +} + +.bg8 { + background-color: var(--bg8) !important; +} + +.bg9 { + background-color: var(--bg9) !important; +} + +.px1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; +} + +.px2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.px3 { + padding-left: 0.75rem !important; + padding-right: 0.75rem !important; +} + +.px4 { + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.py1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; +} + +.py4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.mx1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; +} + +.mx2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; +} + +.mx3 { + margin-left: 0.75rem !important; + margin-right: 0.75rem !important; +} + +.mx4 { + margin-left: 1rem !important; + margin-right: 1rem !important; +} + +.my1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; +} + +.my4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.r1 { + border-radius: 0.25rem !important; +} + +.r2 { + border-radius: 0.5rem !important; +} + +.r3 { + border-radius: 0.75rem !important; +} + +.r4 { + border-radius: 1rem !important; +} + +.r5 { + border-radius: 2rem !important; +} + +.block { + display: block !important; +} + +.flex { + display: flex !important; +} + +.flexcol { + display: flex !important; + flex-direction: column !important; +} + +.flex1 { + flex: 1 !important; +} + +.flexnone { + flex: none !important; +} + +.flex-center { + align-items: center !important; +} + +.flex-top { + align-items: flex-start !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.auto-w { + width: auto !important; +} + +.auto-wmin { + min-width: auto !important; +} + +.hide { + display: none !important; +} + +.noselect { + user-select: none !important; +} + +.tran5 { + transition: all .5s !important; + -webkit-transition: all .5s !important; +} + +.tran1 { + transition: all 1s !important; + -webkit-transition: all 1s !important; +} + +.sta { + position: static !important; +} + +.abs { + position: absolute !important; +} + +.fix { + position: fixed !important; +} + +.rel { + position: relative !important; +} + +.sti { + position: sticky !important; + z-index: 40; +} + +.t0 { + top: 0 !important; +} + +.l0 { + left: 0 !important; +} + +.r0 { + right: 0 !important; +} + +.b0 { + bottom: 0 !important; +} + +.t1 { + top: 0.5em !important; +} + +.l1 { + left: 0.5em !important; +} + +.r1 { + right: 0.5em !important; +} + +.b1 { + bottom: 0.5em !important; +} \ No newline at end of file diff --git a/fapp/ciyon_ap/vite.config.js b/fapp/ciyon_ap/vite.config.js new file mode 100644 index 0000000..fc23022 --- /dev/null +++ b/fapp/ciyon_ap/vite.config.js @@ -0,0 +1,43 @@ +import { + defineConfig +} from 'vite' +import uni from '@dcloudio/vite-plugin-uni' + +// @yck-web/vite-plugin-template-inset +const htmlPlugin_ciy = () => { + return { + name: 'html-transform', + transform(code, path) { + if (path.substring(path.length - 4) == '.vue' && path.indexOf('/pages/') > -1) { + // :background-text-style="meta.theme" + let pft = ''; //''; + pft += ''; + pft += ''; //暂时只做微信生态 + pft += ''; + pft += ''; + pft += ''; + + let pfb = ''; + code = code.replace('