├── .editorconfig
├── .gitattributes
├── .gitignore
├── .npmignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── apps
├── fis3
│ ├── components
│ │ ├── browsehappy
│ │ │ ├── bg.png
│ │ │ ├── bg2.png
│ │ │ ├── browsehappy.html
│ │ │ ├── firefox.png
│ │ │ ├── google.png
│ │ │ ├── hj5.png
│ │ │ ├── ie.png
│ │ │ ├── me.png
│ │ │ ├── opera.png
│ │ │ └── safari.png
│ │ ├── css
│ │ │ ├── allInOne.css
│ │ │ ├── animation.css
│ │ │ ├── base.css
│ │ │ ├── box.css
│ │ │ ├── custom.css
│ │ │ └── progressbar.css
│ │ ├── iconfont
│ │ │ ├── demo.css
│ │ │ ├── demo.html
│ │ │ ├── iconfont.css
│ │ │ ├── iconfont.eot
│ │ │ ├── iconfont.svg
│ │ │ ├── iconfont.ttf
│ │ │ └── iconfont.woff
│ │ ├── ie
│ │ │ ├── demo.md
│ │ │ └── index.html
│ │ ├── img
│ │ │ ├── 139426.png
│ │ │ ├── YHTML5.png
│ │ │ ├── accountEmpty.png
│ │ │ ├── background
│ │ │ │ └── login-bg3.jpg
│ │ │ ├── beijing.png
│ │ │ ├── cat.jpeg
│ │ │ ├── dog.jpeg
│ │ │ ├── feature_notepad.png
│ │ │ ├── feature_performance.png
│ │ │ ├── girl.gif
│ │ │ ├── gongshang.png
│ │ │ ├── guangfa.png
│ │ │ ├── html5
│ │ │ │ ├── css3-html5-js-logo.png
│ │ │ │ ├── html5.png
│ │ │ │ ├── html5_abstract_by_kohakuyoshida-d7c40lz.jpg
│ │ │ │ └── ionic-package-diagram.jpg
│ │ │ ├── huaxia.png
│ │ │ ├── jianshe.png
│ │ │ ├── jiaotong.png
│ │ │ ├── listEmpty.png
│ │ │ ├── minsheng.png
│ │ │ ├── nongye.png
│ │ │ ├── pufa.png
│ │ │ ├── zhaoshang.png
│ │ │ ├── zhifubao.png
│ │ │ └── zhongguo.png
│ │ ├── js
│ │ │ ├── allInOne.js
│ │ │ ├── angular
│ │ │ │ ├── ng-ctrl.js
│ │ │ │ ├── ng-directive.js
│ │ │ │ ├── ng-filter.js
│ │ │ │ └── ng-router.js
│ │ │ ├── common.js
│ │ │ ├── jquery
│ │ │ │ ├── jq-do.js
│ │ │ │ └── jq-fn.js
│ │ │ ├── jsonp.js
│ │ │ ├── jweixin-1.0.0.js
│ │ │ ├── others
│ │ │ │ └── login_interaction.js
│ │ │ ├── string.js
│ │ │ ├── validator.js
│ │ │ └── vue
│ │ │ │ └── data.js
│ │ ├── other
│ │ │ └── shape-shifter
│ │ │ │ ├── shape-shifter.css
│ │ │ │ ├── shape-shifter.html
│ │ │ │ └── shape-shifter.js
│ │ └── svg
│ │ │ └── github.html
│ ├── demo
│ │ └── bootstrap4-for-designer
│ │ │ ├── components
│ │ │ ├── css
│ │ │ │ └── yhtml5.css
│ │ │ ├── img
│ │ │ │ ├── banner0.png
│ │ │ │ ├── banner1.png
│ │ │ │ ├── banner2.png
│ │ │ │ └── banner3.png
│ │ │ └── js
│ │ │ │ ├── do.js
│ │ │ │ ├── fn.js
│ │ │ │ ├── holder.min.js
│ │ │ │ ├── tether.min.js
│ │ │ │ └── yhtml5.js
│ │ │ └── page
│ │ │ ├── button
│ │ │ └── index.html
│ │ │ ├── card
│ │ │ └── index.html
│ │ │ ├── index.html
│ │ │ ├── nav
│ │ │ └── index.html
│ │ │ └── navbar
│ │ │ └── index.html
│ ├── pages
│ │ ├── banner
│ │ │ ├── index.css
│ │ │ ├── index.html
│ │ │ └── lk.design.jpg
│ │ ├── card
│ │ │ ├── addProperty.html
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── collapse
│ │ │ ├── index.css
│ │ │ └── infoCustom.html
│ │ ├── footer
│ │ │ ├── index.css
│ │ │ └── index.html
│ │ ├── formValidation
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── index
│ │ │ ├── allInOne.css
│ │ │ ├── allInOne.js
│ │ │ └── index.js
│ │ ├── list
│ │ │ ├── index.css
│ │ │ ├── index.js
│ │ │ ├── more.html
│ │ │ └── order.html
│ │ ├── login
│ │ │ └── index.css
│ │ ├── modal
│ │ │ ├── choice.html
│ │ │ ├── danger.html
│ │ │ ├── index.css
│ │ │ ├── index.js
│ │ │ ├── invalid.html
│ │ │ ├── modal.html
│ │ │ ├── notice.html
│ │ │ ├── noticeSimple1.design.png
│ │ │ └── simple.html
│ │ ├── nav
│ │ │ ├── dateSelect.html
│ │ │ ├── index.css
│ │ │ ├── index.js
│ │ │ ├── navSelect.html
│ │ │ ├── orderManager.html
│ │ │ └── simple.html
│ │ ├── notice
│ │ │ └── index.css
│ │ ├── pickadate
│ │ │ ├── date.html
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── progress
│ │ │ ├── index.css
│ │ │ └── orderCreateStep.html
│ │ ├── selects
│ │ │ ├── buildings.html
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── start
│ │ │ ├── 1.js
│ │ │ ├── 2.js
│ │ │ ├── index.css
│ │ │ ├── index.html
│ │ │ ├── index2.css
│ │ │ └── shape-shifter.js
│ │ ├── table
│ │ │ ├── index.css
│ │ │ └── index.html
│ │ └── test
│ │ │ ├── other.html
│ │ │ └── totalPut.html
│ ├── server
│ │ ├── author.css
│ │ ├── author.js
│ │ ├── console.js
│ │ └── mock.json
│ └── view-myBonus
│ │ ├── accountBind
│ │ ├── accountBind.html
│ │ ├── accountBind.js
│ │ ├── tab.html
│ │ └── tabTitle.html
│ │ ├── agreement
│ │ ├── agreement.html
│ │ ├── agreement.js
│ │ ├── content.html
│ │ ├── enterSignature.html
│ │ ├── nav.html
│ │ └── signature.html
│ │ ├── authentication
│ │ ├── IDcard.form.html
│ │ ├── IDcard.html
│ │ ├── actionsheet.html
│ │ ├── authentication.html
│ │ ├── authentication.js
│ │ ├── authentication.php.js
│ │ └── nav.html
│ │ ├── bankCardDetail
│ │ ├── bankCardDetail.html
│ │ └── bankCardDetail.js
│ │ ├── bankCardList
│ │ ├── bankCardList.html
│ │ ├── bankCardList.js
│ │ ├── bankList.html
│ │ └── nav.html
│ │ ├── components
│ │ ├── actionsheet
│ │ │ └── index.css
│ │ ├── banner
│ │ │ └── index.css
│ │ ├── card
│ │ │ └── index.css
│ │ ├── list
│ │ │ └── index.css
│ │ ├── nav
│ │ │ └── index.css
│ │ ├── notice
│ │ │ └── index.css
│ │ ├── signature
│ │ │ └── index.css
│ │ └── vue.css
│ │ ├── myBonus
│ │ ├── banner.html
│ │ ├── footer.html
│ │ ├── list.account.html
│ │ ├── list.waterDetails.html
│ │ ├── myBonus.html
│ │ ├── myBonus.js
│ │ └── nav.html
│ │ ├── other
│ │ ├── accountBind.html_aio.js
│ │ ├── agreement.html_aio.js
│ │ ├── authentication.html_aio-old.js
│ │ ├── authentication.html_aio.js
│ │ ├── bankCardDetail.html_aio.js
│ │ ├── bankCardList.html_aio.js
│ │ ├── myBonus.html_aio.js
│ │ ├── record.html_aio.js
│ │ └── withdrawals.html_aio.js
│ │ ├── question
│ │ └── question.html
│ │ ├── record
│ │ ├── record.html
│ │ ├── record.js
│ │ ├── recordList.html
│ │ └── recordType.html
│ │ ├── start
│ │ ├── 1.js
│ │ ├── 2.js
│ │ ├── index.css
│ │ ├── index.html
│ │ └── shape-shifter.js
│ │ ├── test
│ │ ├── img.base64.html
│ │ ├── other.html
│ │ └── totalPut.html
│ │ └── withdrawals
│ │ ├── accountList.html
│ │ ├── enterMoney.html
│ │ ├── footer.html
│ │ ├── selectAccount.html
│ │ ├── withdrawals.html
│ │ └── withdrawals.js
├── mpa
│ └── .yhtml5
├── react-dashboard
│ ├── .config.js
│ ├── .editorconfig
│ ├── .eslintignore
│ ├── .eslintrc.json
│ ├── .gitignore
│ ├── README.md
│ ├── document
│ │ └── document.md
│ ├── package-lock.json
│ ├── package.json
│ ├── production
│ │ └── .yhtml5
│ ├── public
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── logo.png
│ │ └── manifest.json
│ └── src
│ │ ├── Components
│ │ ├── Breadcrumb
│ │ │ └── index.jsx
│ │ ├── Form
│ │ │ ├── Select.jsx
│ │ │ └── Time.jsx
│ │ ├── HelloWorld.jsx
│ │ ├── LazilyLoad
│ │ │ ├── Bundle.jsx
│ │ │ └── index.jsx
│ │ ├── Search
│ │ │ └── .yhtml5
│ │ ├── Table
│ │ │ └── index.jsx
│ │ ├── Test
│ │ │ ├── a.js
│ │ │ ├── b.js
│ │ │ ├── c.js
│ │ │ ├── codeSplitting.js
│ │ │ ├── environment.js
│ │ │ ├── index.js
│ │ │ └── treeShaking.js
│ │ ├── Upload
│ │ │ ├── PicturesWall.jsx
│ │ │ └── PicturesWall.pcss
│ │ └── editor
│ │ │ ├── index.js
│ │ │ ├── index.pcss
│ │ │ └── wangeditor
│ │ │ ├── .gitattributes
│ │ │ ├── .jshintrc
│ │ │ ├── .npmignore
│ │ │ ├── .npminstall.done
│ │ │ ├── Gruntfile.js
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bower.json
│ │ │ └── package.json
│ │ ├── Containers
│ │ ├── App
│ │ │ ├── action.js
│ │ │ ├── ajax.js
│ │ │ ├── reduce.js
│ │ │ ├── route.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ ├── Demo
│ │ │ ├── Components
│ │ │ │ ├── Test.jsx
│ │ │ │ └── Test.pcss
│ │ │ ├── action.js
│ │ │ ├── ajax.js
│ │ │ ├── index.jsx
│ │ │ ├── reduce.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ ├── Document
│ │ │ ├── Components
│ │ │ │ ├── Document.jsx
│ │ │ │ ├── Document.pcss
│ │ │ │ └── document.md
│ │ │ ├── action.js
│ │ │ ├── ajax.js
│ │ │ ├── index.jsx
│ │ │ ├── reduce.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ ├── Form
│ │ │ ├── Components
│ │ │ │ ├── Form.jsx
│ │ │ │ ├── Form.pcss
│ │ │ │ ├── Header.jsx
│ │ │ │ ├── Test.jsx
│ │ │ │ └── Test.pcss
│ │ │ ├── action.js
│ │ │ ├── ajax.js
│ │ │ ├── index.jsx
│ │ │ ├── reduce.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ ├── Function
│ │ │ ├── Components
│ │ │ │ ├── Cards.jsx
│ │ │ │ └── Cards.pcss
│ │ │ ├── action.js
│ │ │ ├── ajax.js
│ │ │ ├── index.jsx
│ │ │ ├── reduce.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ ├── Layout
│ │ │ ├── Components
│ │ │ │ ├── Content.jsx
│ │ │ │ ├── Footer.jsx
│ │ │ │ ├── Header.jsx
│ │ │ │ ├── Header.pcss
│ │ │ │ ├── Sider.jsx
│ │ │ │ └── Sider.pcss
│ │ │ ├── action.js
│ │ │ ├── index.jsx
│ │ │ ├── reduce.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ ├── Live
│ │ │ ├── Components
│ │ │ │ ├── Form.jsx
│ │ │ │ ├── Form.pcss
│ │ │ │ ├── FormImage.jsx
│ │ │ │ ├── FormStep.jsx
│ │ │ │ ├── FormVideo.jsx
│ │ │ │ ├── Search.jsx
│ │ │ │ ├── Table.jsx
│ │ │ │ └── TableHeader.jsx
│ │ │ ├── action.js
│ │ │ ├── ajax.js
│ │ │ ├── index.jsx
│ │ │ ├── index.pcss
│ │ │ ├── indexAdd.jsx
│ │ │ ├── indexEdit.jsx
│ │ │ ├── reduce.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ ├── Login
│ │ │ ├── Components
│ │ │ │ ├── Background.jsx
│ │ │ │ ├── Background.pcss
│ │ │ │ ├── Form.jsx
│ │ │ │ └── Form.pcss
│ │ │ ├── action.js
│ │ │ ├── ajax.js
│ │ │ ├── index.jsx
│ │ │ ├── reduce.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ ├── Navigation
│ │ │ ├── Components
│ │ │ │ ├── Modal.jsx
│ │ │ │ ├── Search.jsx
│ │ │ │ ├── Table.jsx
│ │ │ │ └── TableHeader.jsx
│ │ │ ├── action.js
│ │ │ ├── ajax.js
│ │ │ ├── index.jsx
│ │ │ ├── index.pcss
│ │ │ ├── reduce.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ └── Packages
│ │ │ ├── Components
│ │ │ ├── Form.jsx
│ │ │ ├── Form.pcss
│ │ │ ├── FormStyle1.jsx
│ │ │ ├── FormStyle2.jsx
│ │ │ ├── FormStyle3.jsx
│ │ │ ├── FormStyle4.jsx
│ │ │ ├── FormStyle5.jsx
│ │ │ ├── FormStyle6.jsx
│ │ │ ├── FormStyle7.jsx
│ │ │ ├── FormStyle8.jsx
│ │ │ ├── FormStyles.jsx
│ │ │ ├── Header.jsx
│ │ │ ├── Header.pcss
│ │ │ ├── Modal.pcss
│ │ │ ├── ModalColumns.jsx
│ │ │ ├── ModalIntro.jsx
│ │ │ ├── Table.jsx
│ │ │ ├── TableHeader.jsx
│ │ │ ├── index.pcss
│ │ │ └── introduction.png
│ │ │ ├── action.js
│ │ │ ├── ajax.js
│ │ │ ├── index.jsx
│ │ │ ├── indexAddEdit.jsx
│ │ │ ├── reduce.js
│ │ │ ├── state.js
│ │ │ └── task.js
│ │ ├── Router.jsx
│ │ ├── __test__
│ │ ├── Components
│ │ │ └── HelloWorld.test.jsx
│ │ ├── Router.test.js
│ │ └── validator.test.js
│ │ ├── config.js
│ │ ├── global.css
│ │ ├── index.js
│ │ ├── redux
│ │ ├── actions.js
│ │ ├── reducers.js
│ │ └── store.js
│ │ ├── static
│ │ ├── favicon.ico
│ │ ├── img
│ │ │ └── .yhtml5
│ │ ├── yh.png
│ │ └── yhtml5.png
│ │ └── util
│ │ ├── ajax.js
│ │ ├── cookie.js
│ │ ├── index.js
│ │ ├── localStorage.js
│ │ ├── polyfill.js
│ │ ├── prototype.js
│ │ ├── security.js
│ │ ├── util.js
│ │ ├── validator.js
│ │ └── validator.test.js
└── vue
│ ├── build
│ ├── build.js
│ ├── check-versions.js
│ ├── dev-client.js
│ ├── dev-server.js
│ ├── utils.js
│ ├── webpack.base.conf.js
│ ├── webpack.dev.conf.js
│ └── webpack.prod.conf.js
│ ├── config
│ ├── dev.env.js
│ ├── index.js
│ ├── prod.env.js
│ └── test.env.js
│ ├── dist
│ └── v1.0.0-2016125204718
│ │ ├── index.html
│ │ └── static
│ │ ├── css
│ │ ├── app.df8dcf776905a9f955261c5def67c48d.css
│ │ └── app.df8dcf776905a9f955261c5def67c48d.css.map
│ │ ├── favicon.ico
│ │ ├── img
│ │ ├── icon
│ │ │ └── bootstrap.png
│ │ └── logo.82b9c7a.png
│ │ └── js
│ │ ├── app.dacf26fe700e7c0ace5e.js
│ │ ├── app.dacf26fe700e7c0ace5e.js.map
│ │ ├── manifest.4804dd64a6f48c93a79f.js
│ │ ├── manifest.4804dd64a6f48c93a79f.js.map
│ │ ├── vendor.9bfa2c2df1213448c889.js
│ │ └── vendor.9bfa2c2df1213448c889.js.map
│ ├── src
│ ├── assets
│ │ └── logo.png
│ ├── components
│ │ ├── Hello.vue
│ │ ├── header.vue
│ │ └── search.vue
│ ├── index.html
│ ├── index.js
│ ├── router
│ │ ├── home.vue
│ │ └── router.js
│ └── style
│ │ └── variable.less
│ ├── static
│ ├── .gitkeep
│ ├── favicon.ico
│ └── img
│ │ └── icon
│ │ └── bootstrap.png
│ └── test
│ ├── e2e
│ ├── custom-assertions
│ │ └── elementCount.js
│ ├── nightwatch.conf.js
│ ├── reports
│ │ └── CHROME_54.0.2840.98_MAC_test.xml
│ ├── runner.js
│ └── specs
│ │ └── test.js
│ └── unit
│ ├── .eslintrc
│ ├── coverage
│ ├── lcov-report
│ │ ├── base.css
│ │ ├── index.html
│ │ ├── prettify.css
│ │ ├── prettify.js
│ │ ├── sort-arrow-sprite.png
│ │ ├── sorter.js
│ │ └── src
│ │ │ ├── App.vue.html
│ │ │ ├── components
│ │ │ ├── Hello.vue.html
│ │ │ └── index.html
│ │ │ ├── index.html
│ │ │ └── router
│ │ │ ├── index.html
│ │ │ └── index.js.html
│ └── lcov.info
│ ├── index.js
│ ├── karma.conf.js
│ └── specs
│ └── Hello.spec.js
├── desigin
├── favicon.ico
├── yh.png
└── yhtml5.png
├── exmaple
└── .yhtml5
├── package-lock.json
├── package.json
├── problems.md
└── server
└── package.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [Makefile]
16 | indent_style = tab
17 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.html linguist-language=javascript
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # custom
2 | logs/*
3 | /**/node_modules/
4 | /**/bower_components/
5 | npm-debug.log
6 | coverage
7 |
8 | tmp
9 | .DS_Store
10 | .idea
11 | *.swp
12 | .test.html.swp
13 | .test.html.swo
14 | !.gitkeep
15 |
16 |
17 | # Windows image file caches
18 | Thumbs.db
19 | ehthumbs.db
20 |
21 | # Folder config file
22 | Desktop.ini
23 |
24 | # Recycle Bin used on file shares
25 | $RECYCLE.BIN/
26 |
27 | # Windows Installer files
28 | *.cab
29 | *.msi
30 | *.msm
31 | *.msp
32 |
33 | # Windows shortcuts
34 | *.lnk
35 |
36 | # =========================
37 | # Operating System Files
38 | # =========================
39 |
40 | # OSX
41 | # =========================
42 |
43 | .DS_Store
44 | .AppleDouble
45 | .LSOverride
46 |
47 | # Thumbnails
48 | ._*
49 |
50 | # Files that might appear in the root of a volume
51 | .DocumentRevisions-V100
52 | .fseventsd
53 | .Spotlight-V100
54 | .TemporaryItems
55 | .Trashes
56 | .VolumeIcon.icns
57 |
58 | # Directories potentially created on remote AFP share
59 | .AppleDB
60 | .AppleDesktop
61 | Network Trash Folder
62 | Temporary Items
63 | .apdisk
64 |
65 | /npm-debug.log
66 | /apps/estateManagement/
67 | /apps/react-dashboard/production/家装官网v1.0后台/
68 | /node_modules/
69 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | demo/
2 | node_modules/
3 | examples/
4 | test/
5 | /src/*.vue
6 | /src/*.js
7 | /src/*.html
8 | /src/assets/
9 | /src/demos/
10 | favicon.ico
11 | logo.png
12 | CNAME
13 | circle.yml
14 | bower.json
15 | /assets/
16 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ### changeLog
2 |
3 |
4 | #### v0.3.1 (2017.1.11)
5 | * **change** | use webpack build a front end project instead of fis3
6 | * **delete** | delete stacks which require fis3
7 | * **add** | add `.editorconfig, .eslint` for uniform code style
8 |
9 | #### v0.2.1 (2016.12.06)
10 |
11 | * **update** | add package.md to display modules that used or out time
12 | * **release** | git tag v0.2.1
13 | * **note** | we'll never use fis3 bower and no longer support v0.2.1 version
14 | * **add** | add editorconfig http://editorconfig.org/
15 |
16 | #### v0.2.0 (2016.08.11)
17 |
18 | * 优化 | 融合SPA单页应用模式, 以及普通开发模式 不再以按文件夹区分
19 | * 合并 | merging some files, /components/head.html, /bower.json
20 | * 更新 | update README.md, /components/ie
21 | * 新增 | add CHANGELOG.md, components.md,
22 | * 新增 | add yhtml5Validator, signature_pad canvas
23 | * 新增 | add vue workflow
24 |
25 |
26 | #### v0.1.0 (2015-11-11)
27 |
28 | * create project
29 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016-2018 张大漾
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/apps/fis3/components/browsehappy/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/browsehappy/bg.png
--------------------------------------------------------------------------------
/apps/fis3/components/browsehappy/bg2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/browsehappy/bg2.png
--------------------------------------------------------------------------------
/apps/fis3/components/browsehappy/firefox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/browsehappy/firefox.png
--------------------------------------------------------------------------------
/apps/fis3/components/browsehappy/google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/browsehappy/google.png
--------------------------------------------------------------------------------
/apps/fis3/components/browsehappy/hj5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/browsehappy/hj5.png
--------------------------------------------------------------------------------
/apps/fis3/components/browsehappy/ie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/browsehappy/ie.png
--------------------------------------------------------------------------------
/apps/fis3/components/browsehappy/me.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/browsehappy/me.png
--------------------------------------------------------------------------------
/apps/fis3/components/browsehappy/opera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/browsehappy/opera.png
--------------------------------------------------------------------------------
/apps/fis3/components/browsehappy/safari.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/browsehappy/safari.png
--------------------------------------------------------------------------------
/apps/fis3/components/css/allInOne.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/css/allInOne.css
--------------------------------------------------------------------------------
/apps/fis3/components/css/base.css:
--------------------------------------------------------------------------------
1 | /*
2 | * @require animation.css
3 | * @require box.css
4 | * @require custom.css
5 | */
6 |
7 | /*==================== base ====================*/
8 |
9 | .y-bgc-000 {
10 | background-color: #000;
11 | }
12 |
13 | .y-bgc-333 {
14 | background-color: #333;
15 | }
16 |
17 | .y-bgc-666 {
18 | background-color: #666;
19 | }
20 |
21 | .y-bgc-999 {
22 | background-color: #999;
23 | }
24 |
25 | .y-bgc-ccc {
26 | background-color: #ccc;
27 | }
28 |
29 | .y-bgc-fff {
30 | background-color: #fff;
31 | }
32 |
33 | .y-bgc-f5f5f5 {
34 | background-color: #f5f5f5;
35 | }
36 |
37 | .y-bgc-ff0000 {
38 | background-color: #ff0000;
39 | }
40 |
41 | .y-cl-000 {
42 | color: #000;
43 | }
44 |
45 | .y-cl-333 {
46 | color: #333;
47 | }
48 |
49 | .y-cl-666 {
50 | color: #666;
51 | }
52 |
53 | .y-cl-999 {
54 | color: #999;
55 | }
56 |
57 | .y-cl-ccc {
58 | color: #ccc;
59 | }
60 |
61 | .y-cl-ddd {
62 | color: #ddd;
63 | }
64 |
65 | .y-cl-eee {
66 | color: #eee;
67 | }
68 |
69 | .y-cl-fff {
70 | color: #fff;
71 | }
72 |
73 | .y-cl-f5f5f5 {
74 | color: #f5f5f5;
75 | }
76 |
77 | .y-cl-ff0000 {
78 | color: #ff0000;
79 | }
80 |
81 | .y-fs-14 {
82 | font-size: 14px;
83 | }
84 |
85 | .y-fs-16 {
86 | font-size: 16px;
87 | }
88 |
89 | .y-fs-18 {
90 | font-size: 18px;
91 | }
92 |
93 | .y-fs-24 {
94 | font-size: 24px;
95 | }
96 |
97 | .y-fs-28 {
98 | font-size: 28px;
99 | }
100 |
101 | .y-fs-36 {
102 | font-size: 36px;
103 | }
104 |
105 | .y-fs-48 {
106 | font-size: 50px;
107 | }
108 |
109 | .y-fs-90 {
110 | font-size: 90px;
111 | }
112 |
113 | .y-fs-120 {
114 | font-size: 120px;
115 | }
116 |
117 | .y-fw-b {
118 | font-weight: 700;
119 | }
120 |
121 | .y-fw-n {
122 | font-weight: 400;
123 | }
--------------------------------------------------------------------------------
/apps/fis3/components/css/custom.css:
--------------------------------------------------------------------------------
1 | .table .y-td-xs {
2 | max-width: 10px;
3 | }
4 |
5 | .table .y-td-sm {
6 | max-width: 50px;
7 | }
8 |
9 | .table .y-td-md {
10 | max-width: 100px;
11 | }
12 |
13 | .table .y-td-lg {
14 | max-width: 324px;
15 | min-width: 200px;
16 | }
17 |
18 | .text-left {
19 | text-align: left;
20 | }
21 |
22 | .text-center {
23 | text-align: center;
24 | }
25 |
26 | .text-indent-2 {
27 | text-indent: 2em;
28 | }
29 |
30 | .text-right {
31 | text-align: right;
32 | }
33 |
34 | .text-truncate {
35 | overflow: hidden;
36 | text-overflow: ellipsis;
37 | white-space: nowrap;
38 | }
--------------------------------------------------------------------------------
/apps/fis3/components/css/progressbar.css:
--------------------------------------------------------------------------------
1 | .y-progress-step {
2 | max-width: 1600px;
3 | margin-left: auto;
4 | margin-right: auto;
5 | margin-bottom: 30px;
6 | overflow: hidden;
7 | padding-left: 0;
8 | /*CSS counters to number the steps*/
9 | counter-reset: step;
10 | }
11 |
12 | .y-progress-step li {
13 | list-style-type: none;
14 | color: #a9a9a9;
15 | text-transform: uppercase;
16 | font-size: 18px;
17 | width: 33.33%;
18 | float: left;
19 | position: relative;
20 | text-align: center;
21 | }
22 |
23 | .y-progress-step li:before {
24 | content: counter(step);
25 | counter-increment: step;
26 | width: 30px;
27 | line-height: 30px;
28 | display: block;
29 | font-size: 16px;
30 | color: #fff;
31 | background: #a9a9a9;
32 | border-radius: 50%;
33 | margin: 0 auto 5px auto;
34 | }
35 |
36 | /*progressbar connectors*/
37 |
38 | .y-progress-step li:after {
39 | content: '';
40 | width: 100%;
41 | height: 2px;
42 | background: #a9a9a9;
43 | position: absolute;
44 | left: -50%;
45 | top: 14px;
46 | z-index: -1;
47 | /*put it behind the numbers*/
48 | }
49 |
50 | .y-progress-step li:first-child:after {
51 | content: none;
52 | /*connector not needed before the first step*/
53 | }
54 |
55 | /*marking active/completed steps green*/
56 |
57 | /*The number of the step and the connector before it = green*/
58 |
59 | .y-progress-step li.active:before,
60 | .y-progress-step li.active:after {
61 | background: #099fdd;
62 | color: white;
63 | }
64 |
65 | .y-progress-step li.active:before,
66 | .y-progress-step li.active:after {
67 | background: #099fdd;
68 | color: white;
69 | }
70 |
71 | .y-progress-step .active .y-turn-blue {
72 | color: #099fdd;
73 | }
--------------------------------------------------------------------------------
/apps/fis3/components/iconfont/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/iconfont/iconfont.eot
--------------------------------------------------------------------------------
/apps/fis3/components/iconfont/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/iconfont/iconfont.ttf
--------------------------------------------------------------------------------
/apps/fis3/components/iconfont/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/iconfont/iconfont.woff
--------------------------------------------------------------------------------
/apps/fis3/components/ie/demo.md:
--------------------------------------------------------------------------------
1 | ## 条件注释判断浏览器版本 [引用地址]
2 |
3 |
4 | ### operator
5 | * ! [if !IE] --NOT运算符
6 | * lt [if lt IE 5.5] --小于运算符
7 | * lte [if lte IE 6] --小于或等于运算
8 | * gt [if gt IE 5] --大于运算符
9 | * gte [if gte IE 7] --大于或等于运算
10 | * ( ) [if !(IE 7)] --子表达式。在与布尔运算符用于创建更复杂的表达式
11 | * & [if (gt IE 5)&(lt IE 7)] --AND运算符
12 | * | [if (IE 6)|(IE 7)] --OR运算符
13 |
14 | > less-than, equal, greater-than, operator
15 |
16 |
17 | ### demo
18 |
19 | ```
20 | 除IE外都可识别
21 |
22 |
23 |
24 |
25 |
26 |
27 | ```
28 |
29 | ### usage
30 |
31 | ```
32 | 加载CSS2
33 |
36 | ```
37 |
38 | [引用地址]:http://www.cnblogs.com/thinkingthigh/archive/2013/06/19/3144239.html
--------------------------------------------------------------------------------
/apps/fis3/components/ie/index.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/apps/fis3/components/img/139426.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/139426.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/YHTML5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/YHTML5.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/accountEmpty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/accountEmpty.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/background/login-bg3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/background/login-bg3.jpg
--------------------------------------------------------------------------------
/apps/fis3/components/img/beijing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/beijing.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/cat.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/cat.jpeg
--------------------------------------------------------------------------------
/apps/fis3/components/img/dog.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/dog.jpeg
--------------------------------------------------------------------------------
/apps/fis3/components/img/feature_notepad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/feature_notepad.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/feature_performance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/feature_performance.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/girl.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/girl.gif
--------------------------------------------------------------------------------
/apps/fis3/components/img/gongshang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/gongshang.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/guangfa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/guangfa.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/html5/css3-html5-js-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/html5/css3-html5-js-logo.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/html5/html5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/html5/html5.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/html5/html5_abstract_by_kohakuyoshida-d7c40lz.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/html5/html5_abstract_by_kohakuyoshida-d7c40lz.jpg
--------------------------------------------------------------------------------
/apps/fis3/components/img/html5/ionic-package-diagram.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/html5/ionic-package-diagram.jpg
--------------------------------------------------------------------------------
/apps/fis3/components/img/huaxia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/huaxia.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/jianshe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/jianshe.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/jiaotong.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/jiaotong.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/listEmpty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/listEmpty.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/minsheng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/minsheng.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/nongye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/nongye.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/pufa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/pufa.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/zhaoshang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/zhaoshang.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/zhifubao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/zhifubao.png
--------------------------------------------------------------------------------
/apps/fis3/components/img/zhongguo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/components/img/zhongguo.png
--------------------------------------------------------------------------------
/apps/fis3/components/js/allInOne.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
--------------------------------------------------------------------------------
/apps/fis3/components/js/angular/ng-ctrl.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require router.js
3 | * @require directive.js
4 | * @require filter.js
5 | */
6 | /************************* Ctrl *****************************/
7 | angular.module('controllers', [])
8 | .controller('controllers', function($scope) {
9 |
10 | })
11 | .controller('smsConfirmCtrl', function($scope) {
12 |
13 | })
--------------------------------------------------------------------------------
/apps/fis3/components/js/angular/ng-directive.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require router.js
3 | */
4 | /************************* Require *****************************/
5 | angular.module('directive', [])
6 | .directive("repeat", [function() {
7 | return {
8 | restrict: 'A',
9 | require: "ngModel",
10 | link: function(scope, element, attrs, ctrl) {
11 | if (ctrl) {
12 | var otherInput = element.inheritedData("$formController")[attrs.repeat];
13 | var repeatValidator = function(value) {
14 | var validity = value === otherInput.$viewValue;
15 | ctrl.$setValidity("repeat", validity);
16 | return validity ? value : undefined;
17 | };
18 | ctrl.$parsers.push(repeatValidator);
19 | ctrl.$formatters.push(repeatValidator);
20 | otherInput.$parsers.push(function(value) {
21 | ctrl.$setValidity("repeat", value === ctrl.$viewValue);
22 | return value;
23 | });
24 | }
25 | }
26 | };
27 | }]);
--------------------------------------------------------------------------------
/apps/fis3/components/js/angular/ng-filter.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require router.js
3 | */
4 | /************************* Filter *****************************/
5 |
--------------------------------------------------------------------------------
/apps/fis3/components/js/angular/ng-router.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require ../../../server/author.js
3 | */
4 | /************************* Router *****************************/
5 | angular.module('yhtml5', [
6 | 'ui.router',
7 | 'controllers',
8 | 'directive'
9 | ])
10 | .config(['$compileProvider', function ($compileProvider) {
11 | $compileProvider.aHrefSanitizationWhitelist(/^\s*(|blob|):/);
12 | }])
13 | .config(function ($stateProvider, $urlRouterProvider) {
14 | $urlRouterProvider
15 | //.when('/dashboard/*', '/dashboard')
16 | .otherwise("")
17 | $stateProvider
18 | .state('dashboard', {
19 | url: "/dashboard",
20 | views: {
21 | "nav": {
22 | templateUrl: ""
23 | },
24 | "content": {
25 | templateUrl: ""
26 | }
27 | }
28 | })
29 | })
--------------------------------------------------------------------------------
/apps/fis3/components/js/common.js:
--------------------------------------------------------------------------------
1 | /* 判断浏览器类型 */
2 | var browserKeywordsMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Opera Mobi|Windows CE|Symbian|Windows Phone|POLARIS|lgtelecom|nokia|SonyEricsson|LG|SAMSUNG|Samsung/i;
3 | var isBrowserMobile = browserKeywordsMobile.test(navigator.userAgent);
4 | if (isBrowserMobile) {
5 | console.log(isBrowserMobile);
6 | } else {
7 | // console.log(a);
8 | }
9 |
10 | function userBrowser(){
11 | var browserName=navigator.userAgent.toLowerCase();
12 | if(/msie/i.test(browserName) && !/opera/.test(browserName)){
13 | alert("IE");
14 | return ;
15 | }else if(/firefox/i.test(browserName)){
16 | alert("Firefox");
17 | return ;
18 | }else if(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName)){
19 | alert("Chrome");
20 | return ;
21 | }else if(/opera/i.test(browserName)){
22 | alert("Opera");
23 | return ;
24 | }else if(/webkit/i.test(browserName) &&!(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName))){
25 | alert("Safari");
26 | return ;
27 | }else{
28 | alert("unKnow");
29 | }
30 | }
--------------------------------------------------------------------------------
/apps/fis3/components/js/jquery/jq-do.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require fn.js
3 | * @require shape-shifter.js
4 | */
5 | /************ do ************/
6 | $(function () {
7 | getStart();
8 | doCarouselScanPayDemo(4000)
9 | initDatetimepicker("[y-data='record.timeStart'],[y-data='record.timeEnd']")
10 | toggleValue("[y-menu='record.status'] > li > a", "click", "[y-input='record.status']");
11 | yFadeToggle("[y-popoper='uploadQRcode'] a", "mouseenter", "mouseleave", "[y-popoper='payee.ewmsml'] img");
12 | yFadeToggle("[y-popoper='noopsycheMoney']", "mouseenter", "mouseleave", "[y-popoper='infoUl']");
13 | yFadeToggle("[y-popoper='payee.modified.show.QRcode']", "mouseenter", "mouseleave", "[y-popoper='payee.modified.QRcode'] img");
14 | $("[y-navbar='nav.user.img']").mouseover(function () {
15 | $("[y-navbar='nav.float.window']").fadeIn();
16 | });
17 | $("[y-close='nav.userPanel']").mouseleave(function () {
18 | $("[y-navbar='nav.float.window']").fadeOut();
19 | });
20 | toggleActive(".y-nav a", 'click')
21 | });
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/apps/fis3/components/js/jsonp.js:
--------------------------------------------------------------------------------
1 |
2 | var oScript = document.createElement('script');
3 | oScript.src = 'http://suggestion.baidu.com/su?wd='+oTxt.value+'&p=3&cb=baidu&from=superpage';
4 | document.body.appendChild(oScript);
5 |
6 | if(oScript){
7 | document.body.removeChild(oScript);
8 | }
--------------------------------------------------------------------------------
/apps/fis3/components/js/string.js:
--------------------------------------------------------------------------------
1 | // 有这样一个URL 输出函数QuerySearch(),其有一个参数name,输出其对应的value。解析:主要就是进行两次分割。
2 | 'use strict';
3 | function querySearch(url, name) {
4 | var arr = url.split('?')[1].split('&');
5 | console.log(arr)
6 | var str = name + '=', index, start;
7 | for (var i = 0; i < arr.length;) {
8 | index = arr[i].indexOf(str);
9 | if (index < 0) {
10 | i++;
11 | } else {
12 | start = index + str.length;
13 | return arr[i].slice(start);
14 | }
15 | }
16 | return "";
17 | }
18 |
19 | var result = querySearch("http://mail.163.com/?a=1&b=2&c=3&d=xxx&e")
20 | console.log(result)
--------------------------------------------------------------------------------
/apps/fis3/components/js/validator.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Enter JavaScript-style regular expression to display
3 | * https://regexper.com/
4 | * Write and test regular expression
5 | * http://www.regexr.com/
6 | */
7 |
8 | var yhtml5Validator = {
9 | isBankCardNum: function () {
10 | var result = /^(\d{14}|\d{16}|\d{19})$/.test(str);
11 | return result
12 | },
13 | isChinaName: function () {
14 | var result = /^[\u4e00-\u9fa5]{1,10}$/.test(str);
15 | return result
16 | },
17 | isChinaPhoneNum: function () {
18 | var result = /^(13[0-9]|14[5|7]|15[0-9]|18[0-9])\d{8}$/.test(str);
19 | return result
20 | },
21 | isEmail: function () {
22 | var result = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(str);
23 | return result
24 | },
25 | isIdCard: function (str) {
26 | var result = /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/.test(str);
27 | return result
28 | },
29 | isNum: function () {
30 | var result = /^[0-9]*$/.test(str);
31 | return result
32 | },
33 | isNumSix: function () {
34 | var result = /^[a-zA-Z0-9]\w{5}$/.test(str);
35 | return result
36 | },
37 | isNumSixToTwenty: function () {
38 | var result = /^[a-zA-Z0-9]\w{5,19}$/.test(str);
39 | return result
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/apps/fis3/components/js/vue/data.js:
--------------------------------------------------------------------------------
1 | var yhtml5Data = {
2 | notice: {
3 | isLoading: false,
4 | isSuccess: false,
5 | isValid: false,
6 | text: ''
7 | },
8 | confirm: {
9 | isShow:false,
10 | text:'',
11 | title:'',
12 | cancel:'',
13 | confirm:''
14 | },
15 | canvasSignature: {
16 | id: document.getElementById("canvasSignature"),
17 | option: {
18 | minWidth: 4,
19 | maxWidth: 6,
20 | penColor: "#333"
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/apps/fis3/demo/bootstrap4-for-designer/components/css/yhtml5.css:
--------------------------------------------------------------------------------
1 | /*=========================================================================================
2 | * Author:Kyle|张大漾
3 | * Author Website:http://yhtml5.com
4 | * Author Gihub:https://github.com/yhtml5
5 | * Description: A Website disgned by boostrap and Jquery.Do something awesome and have fun !
6 | *==========================================================================================*/
7 |
8 |
9 | /* base style
10 | * ========== */
11 | .css-boeder-radius0{
12 | border-radius: 0;
13 | }
14 | .css-height500 {
15 | height: 500px;
16 | }
17 | .css-mt54 {
18 | margin-top: 54px;
19 | }
20 | .css-width80 {
21 | width: 80%;
22 | }
23 |
24 | .css-width100 {
25 | width: 100%;
26 | }
27 |
28 |
29 | /* cover bootstrap
30 | * =============== */
31 |
32 |
33 | /* style customized
34 | * ================ */
35 | .css-banner {
36 | text-align: center;
37 | height: 400px;
38 | overflow: hidden;
39 | background: rgba(0, 0, 0, 0) linear-gradient(135deg, #271b38, #563d7c, #7952b3) repeat scroll 0 0;
40 | }
41 |
42 | .css-banner .lead {
43 | color: #fff;
44 | font-size: 2rem;
45 | line-height: 3rem;
46 | width: 70%;
47 | margin-left: auto;
48 | margin-right: auto;
49 | }
50 | .css-banner button{
51 | margin-top: 2rem;
52 | margin-bottom: 2rem;
53 | font-size: 4rem;
54 | border-radius: 10px;
55 | }
56 | .css-banner img {
57 | margin-left: auto;
58 | margin-right: auto;
59 | max-width: 500px;
60 | }
61 |
62 | .demo-button button {
63 | margin-bottom: 10px;
64 | }
65 |
66 | .btn-group-vertical button {
67 | margin-bottom: 0;
68 | }
--------------------------------------------------------------------------------
/apps/fis3/demo/bootstrap4-for-designer/components/img/banner0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/demo/bootstrap4-for-designer/components/img/banner0.png
--------------------------------------------------------------------------------
/apps/fis3/demo/bootstrap4-for-designer/components/img/banner1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/demo/bootstrap4-for-designer/components/img/banner1.png
--------------------------------------------------------------------------------
/apps/fis3/demo/bootstrap4-for-designer/components/img/banner2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/demo/bootstrap4-for-designer/components/img/banner2.png
--------------------------------------------------------------------------------
/apps/fis3/demo/bootstrap4-for-designer/components/img/banner3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/demo/bootstrap4-for-designer/components/img/banner3.png
--------------------------------------------------------------------------------
/apps/fis3/demo/bootstrap4-for-designer/components/js/do.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require fn.js
3 | * @require shape-shifter.js
4 | */
5 | /************ do ************/
6 | $(function () {
7 | getStart();
8 | doCarouselScanPayDemo(4000)
9 | initDatetimepicker("[y-data='record.timeStart'],[y-data='record.timeEnd']")
10 | toggleValue("[y-menu='record.status'] > li > a", "click", "[y-input='record.status']");
11 | yFadeToggle("[y-popoper='uploadQRcode'] a", "mouseenter", "mouseleave", "[y-popoper='payee.ewmsml'] img");
12 | yFadeToggle("[y-popoper='noopsycheMoney']", "mouseenter", "mouseleave", "[y-popoper='infoUl']");
13 | yFadeToggle("[y-popoper='payee.modified.show.QRcode']", "mouseenter", "mouseleave", "[y-popoper='payee.modified.QRcode'] img");
14 | $("[y-navbar='nav.user.img']").mouseover(function () {
15 | $("[y-navbar='nav.float.window']").fadeIn();
16 | });
17 | $("[y-close='nav.userPanel']").mouseleave(function () {
18 | $("[y-navbar='nav.float.window']").fadeOut();
19 | });
20 | });
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/apps/fis3/demo/bootstrap4-for-designer/page/nav/index.html:
--------------------------------------------------------------------------------
1 |
2 |
24 |
25 |
--------------------------------------------------------------------------------
/apps/fis3/pages/banner/index.css:
--------------------------------------------------------------------------------
1 | .v-banner {
2 | width: 100%;
3 | min-height: 240px;
4 | padding: 10px;
5 | }
6 | .v-banner.v-banner-black {
7 | background-color: #1d2027;
8 | }
9 |
10 | .v-banner .v-title {
11 | color: #fff;
12 | text-align: center;
13 | }
14 |
15 | .v-banner .v-h6 {
16 | color: #969cac;
17 | font-size: 12px;
18 | }
19 | .v-banner .iconfont {
20 | font-size: 24px;
21 | color: #fff;
22 | opacity: .5;
23 | }
24 | .v-circle {
25 | width: 110px;
26 | height: 110px;
27 | margin-left: auto;
28 | margin-right: auto;
29 | border-radius: 50%;
30 | text-align: center;
31 | background-color: #2a2e38;
32 | }
33 |
34 |
35 | .v-circle.v-circle-white {
36 | background-color: #f8f8f8;
37 | }
38 |
39 |
40 | .v-circle .v-num {
41 | color: #f13d1f;
42 | padding-top: 20px;
43 | font-size: 36px;
44 | }
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/apps/fis3/pages/banner/index.html:
--------------------------------------------------------------------------------
1 |
28 |
--------------------------------------------------------------------------------
/apps/fis3/pages/banner/lk.design.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/pages/banner/lk.design.jpg
--------------------------------------------------------------------------------
/apps/fis3/pages/card/addProperty.html:
--------------------------------------------------------------------------------
1 |
2 |
6 |
姓名:
7 |
身份证号码:
8 |
--------------------------------------------------------------------------------
/apps/fis3/pages/card/index.css:
--------------------------------------------------------------------------------
1 | .v-card-group{
2 |
3 | }
4 | .v-card{
5 | background-color:#fff;
6 | border-radius: 4px;
7 | margin-top:10px;
8 | display: none;
9 | padding: 20px 26px;
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/apps/fis3/pages/card/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require ../../server/author.js
3 | * @require ../../components/js/fn.js
4 | */
5 | $("#addPropertyBtn").on("click", function () {
6 | var $card = $('.v-card');
7 | if ($card.length < 5) {
8 | var date = $('');
9 | date.append($card.html());
10 | $(this).before(date);
11 | date.slideDown(300);
12 | }
13 | });
14 | $("#infoCustom").delegate("i", "click", function () {
15 | var property = $(this).parents(".v-card");
16 | property.slideUp(300);
17 | setTimeout(function () {
18 | property.remove();
19 | }, 300)
20 | })
--------------------------------------------------------------------------------
/apps/fis3/pages/footer/index.css:
--------------------------------------------------------------------------------
1 | .v-footer {
2 | position: fixed;
3 | bottom: 0;
4 | width: 100%;
5 | padding: 6px 18px;
6 | border-top: solid #ddd 1px;
7 | }
8 |
--------------------------------------------------------------------------------
/apps/fis3/pages/footer/index.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/apps/fis3/pages/formValidation/index.css:
--------------------------------------------------------------------------------
1 | .has-error,.help-block{
2 | color: #f13d1f !important;
3 | }
4 |
5 |
--------------------------------------------------------------------------------
/apps/fis3/pages/index/allInOne.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/pages/index/allInOne.css
--------------------------------------------------------------------------------
/apps/fis3/pages/index/allInOne.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/pages/index/allInOne.js
--------------------------------------------------------------------------------
/apps/fis3/pages/list/index.css:
--------------------------------------------------------------------------------
1 | .v-list-group {
2 | text-align: center;
3 | }
4 |
5 | .v-list-group .v-more {
6 | font-size: 18px;
7 | color: #999;
8 | padding: 16px;
9 | }
10 |
11 | .v-list {
12 | display: block;
13 | color: #333;
14 | padding-top: 16px;
15 | padding-bottom: 12px;
16 | }
17 |
18 | .v-list .v-text-note {
19 | margin-top: 4px;
20 | color: #f13d1f;
21 | }
22 |
23 | .v-list .v-num {
24 | font-size: 18px;
25 | color: #f13d1f;
26 | }
27 |
28 | .v-list-reportForm {
29 | text-align: center;
30 | padding-top: 18px;
31 | color: #666;
32 | }
33 |
34 | .v-list-group-simple {
35 | }
36 | .v-list-group-simple .v-box a{
37 | display: block;
38 | color:#666;
39 | }
40 | .v-list-group-simple .v-head {
41 | line-height: 30px;
42 | background-color: #f8f8f8;
43 | padding: 0 10px;
44 | font-size: 16px;
45 | border-bottom: 1px solid #ececec;
46 | }
47 |
48 | .v-list-group-simple .v-item {
49 | line-height: 2.5;
50 | padding: 0 10px;
51 | background-color: #fff;
52 | }
53 |
54 | .v-nav-letter {
55 | position: absolute;
56 | top: 50%;
57 | right: 20px;
58 | transform: translateY(-50%);
59 | padding-top: 18px;
60 | color: #666;
61 | }
62 |
63 | .v-empty {
64 | position: relative;
65 | left: 50%;
66 | margin: 40% 0 0 -98px;
67 | }
--------------------------------------------------------------------------------
/apps/fis3/pages/list/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require ../../server/author.js
3 | * @require ../../components/js/fn.js
4 | */
5 | $('[y-more="apps.start.html"]').on('click', function () {
6 | $(this).find('[y-text="more"]').hide().end().find('[y-loading="more"]').addClass('y-animation-loader-ballpulse');
7 | setTimeout(function () {
8 | $('[y-more="apps.start.html"]').find('[y-loading="more"]').removeClass('y-animation-loader-ballpulse').end().find('[y-text="more"]').fadeIn()
9 | }, 2000);
10 | })
--------------------------------------------------------------------------------
/apps/fis3/pages/list/more.html:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/apps/fis3/pages/list/order.html:
--------------------------------------------------------------------------------
1 |
2 |
2016.07.09
3 |
张三 (西溪北苑)
4 |
7 |
8 |
--------------------------------------------------------------------------------
/apps/fis3/pages/login/index.css:
--------------------------------------------------------------------------------
1 | .v-login {
2 |
3 | }
4 |
5 | .v-login .v-logo {
6 | width: 180px;
7 | height: 90px;
8 | background: url(../../components/public/csssprites/logo.csp.png) no-repeat;
9 | background-size: 100%;
10 | margin: 30px auto 0 auto;
11 | }
12 |
13 | .v-login .v-input-list {
14 | height: 60px;
15 | border-bottom: 1px solid #A5A7BD;
16 | }
17 |
18 | .v-login .v-input-list input {
19 | background: none;
20 | border: none;
21 | outline: none;
22 | width: 90%;
23 | }
24 |
25 | .v-login .v-input-list .v-input-c {
26 | clear: both;
27 | }
28 |
29 | .v-login .v-input-list .v-input-r {
30 | float: right;
31 | margin-top: -34px;
32 | }
33 |
34 | .v-login .v-input-list .v-input-s {
35 | width: 45%;
36 | }
37 | .v-login .v-input-list .v-img-code {
38 | display: block;
39 | width:96px;
40 | height:34px;
41 | }
42 |
43 | .v-login .v-login-link {
44 | display: block;
45 | text-align: right;
46 | color: #9c9db3;
47 | padding-top: 12px;
48 | }
49 |
50 | #loginForm .help-block {
51 | color: #f13d1f;
52 | }
53 |
54 | .form-group {
55 | margin-bottom: 0;
56 | }
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/choice.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/danger.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
8 |
9 |
如未正确填写备注内容,请在付款成功后,进行提货!
10 |
11 |
15 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/index.css:
--------------------------------------------------------------------------------
1 | .v-dialog {
2 | margin-top: 40px;
3 | }
4 |
5 | .v-dialog .modal-content {
6 | border-radius: 0;
7 | width: 90%;
8 | margin: 0 auto;
9 | }
10 |
11 | .v-dialog .modal-content img {
12 | width: 100%;
13 | height: 100%;
14 | }
15 |
16 | .v-dialog .modal-content .v-close {
17 | margin: -26px -24px 0 0;
18 | color: #fff;
19 | opacity: 1;
20 | font-size: 21px;
21 | }
22 |
23 | .v-modal-simple {
24 | position: fixed;
25 | top: 60%;
26 | left: 0;
27 | right: 0;
28 | z-index: 9999;
29 | margin-left: auto;
30 | margin-right: auto;
31 | padding-top: 10px;
32 | background-color: #333;
33 | width: 200px;
34 | opacity: 0.8;
35 | color: white;
36 | font-size: 18px;
37 | text-align: center;
38 | border-radius: 6px;
39 | }
40 | .v-invalid-txt{
41 | width:100%;
42 | resize:none;
43 | outline: none;
44 | }
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require ../../server/author.js
3 | * @require ../../components/js/fn.js
4 | */
5 | /************ modal ************/
6 |
7 | $('[y-modal="choice"] [y-btn="ok"]').on('click', function () {
8 | console.log(true)
9 | })
10 | $('[y-modal="choice"] [y-btn="cancel"]').on('click', function () {
11 | console.log(false)
12 | })
13 | $('[y-btn="orderCreateStep1"]').on('click', function () {
14 | $('[y-modal="choice"]').modal('show').end().find('[y-text="choice"]').text('您有未完成订单,继续或取消?');
15 | })
16 |
17 |
18 | $('[y-modal="invalid"] [y-btn="cancelInvalid"]').on('click', function () {
19 | console.log("取消作废")
20 | })
21 | $('[y-modal="invalid"] [y-btn="sureInvalid"]').on('click', function () {
22 | console.log("确定作废")
23 | })
24 |
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/invalid.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/modal.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/notice.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/noticeSimple1.design.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/pages/modal/noticeSimple1.design.png
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/simple.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
商家未开启收款,请联系商家开启!
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/apps/fis3/pages/nav/dateSelect.html:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/apps/fis3/pages/nav/index.css:
--------------------------------------------------------------------------------
1 | .v-nav-orderManager {
2 |
3 | }
4 |
5 | .v-nav-orderManager .active {
6 | border-bottom: #f13d1f solid 2px;
7 | }
8 |
9 | .v-nav-orderManager .col-xs-3:hover,
10 | .v-nav-orderManager .col-xs-3:focus {
11 | border-bottom: #f13d1f solid 2px;
12 | }
13 |
14 | .y-nav {
15 | text-align: center;
16 | padding: 16px 0;
17 | color: #999;
18 | }
19 |
20 | .y-nav a {
21 | text-decoration: none;
22 | }
23 |
24 | .y-nav .y-nav-red {
25 | color: #ff6161;
26 | background-color: #ffffff;
27 | border-color: #ff6161;
28 | width: 68px;
29 | }
30 |
31 | .y-nav .y-nav-red.active {
32 | color: #fff;
33 | background-color: #ff6161;
34 | border-color: #ff6161;
35 | box-shadow: none;
36 | }
37 |
38 | .v-nav {
39 | text-align: center;
40 | padding: 16px 0;
41 | color: #999;
42 | }
43 |
44 | .v-nav .active {
45 | color: #f13d1f;
46 | }
47 |
48 | .y-nav-bg {
49 | position: relative;
50 | background-color: #1d2027;
51 | line-height: 50px;
52 | height: 50px;
53 | color: #fff;
54 | }
55 |
56 | .y-nav-bg .daohangfanhui {
57 | position: absolute;
58 | color: #fff;
59 | }
60 |
61 |
62 |
63 | .y-nav-bg .select {
64 | position: absolute;
65 | right: 10px;
66 | top:0;
67 | color: #999;
68 | height: 50px;
69 | background-color: #1d2027;
70 | font-size: 13px;
71 | }
72 |
73 | .y-nav-bg .v-date {
74 | margin: 0 auto;
75 | width: 70px;
76 | color:#fff;
77 |
78 | }
79 |
80 | .y-nav-bg .v-date .picker__input {
81 | border: none;
82 | background-color: #1d2027;
83 | padding: 0;
84 | }
--------------------------------------------------------------------------------
/apps/fis3/pages/nav/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require ../../server/author.js
3 | * @require ../../components/js/fn.js
4 | */
5 | /************ nav ************/
6 |
7 | var picker = $('[y-pickadate="dateSelect"]').pickadate({
8 | format: 'yyyy年mm月',
9 | onStart: function () {
10 | console.log('start')
11 | },
12 | onRender: function () {
13 | console.log('render')
14 | },
15 | onOpen: function () {
16 | console.log('open')
17 | },
18 | onClose: function () {
19 | console.log('close')
20 | },
21 | onStop: function () {
22 | console.log('stop')
23 | },
24 | onSet: function (context) {
25 | console.log('set:', context)
26 | },
27 | });
--------------------------------------------------------------------------------
/apps/fis3/pages/nav/navSelect.html:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/apps/fis3/pages/nav/orderManager.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
待审核
4 | 17
5 |
6 |
7 |
待放款
8 | 16
9 |
10 |
11 |
已放款
12 | 6
13 |
14 |
15 |
作废单
16 | 0
17 |
18 |
--------------------------------------------------------------------------------
/apps/fis3/pages/nav/simple.html:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/apps/fis3/pages/notice/index.css:
--------------------------------------------------------------------------------
1 | .v-notice{
2 | background-color: #f8f8f8;
3 | padding: 10px;
4 | color: #c0c0c0;
5 | font-size: 14px;
6 | }
7 | .v-notice .v-num{
8 | margin: auto 4px;
9 | }
--------------------------------------------------------------------------------
/apps/fis3/pages/pickadate/date.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/apps/fis3/pages/pickadate/index.css:
--------------------------------------------------------------------------------
1 | .v-pickadate {
2 | margin-top: 4px;
3 | }
4 |
5 | .v-pickadate .picker th {
6 | text-align: center;
7 | }
8 |
9 | .v-pickadate input {
10 | width: 100%;
11 | color: #999;
12 | font-size: 18px;
13 | text-align: center;
14 | border: none;
15 | }
16 |
17 | @media (min-height: 33.875em) {
18 | .picker__box {
19 | border-radius: 0;
20 | border: none;
21 | border-top: 1px solid #777;
22 | }
23 | }
24 |
25 | @media (min-height: 40.125em) {
26 | .picker__frame {
27 | margin-bottom: 0;
28 | }
29 | }
30 |
31 | .picker__input.picker__input--active {
32 | border: none;
33 | }
34 | .picker__select--month, .picker__select--year{
35 | padding: 2px;
36 | text-align: center;
37 | }
--------------------------------------------------------------------------------
/apps/fis3/pages/pickadate/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require ../../server/author.js
3 | * @require ../../components/js/fn.js
4 | */
5 | $('[y-pickadate="order"]').pickadate({
6 | format: 'yyyy.mm.dd'
7 | });
8 | $('[y-pickadate="orderManager"]').pickadate({
9 | format: 'yyyy.mm'
10 | });
--------------------------------------------------------------------------------
/apps/fis3/pages/progress/orderCreateStep.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 客户信息
4 |
5 |
6 | 贷款信息
7 |
8 |
9 | 相关信息
10 |
11 |
12 |
--------------------------------------------------------------------------------
/apps/fis3/pages/selects/index.css:
--------------------------------------------------------------------------------
1 | .v-selects {
2 | position: absolute;
3 | z-index: 1050;
4 | width: 100%;
5 | background-color: #fff;
6 | border: none;
7 | border-radius: 0 !important;
8 | margin-top: 0 !important;
9 | border-top: solid 1px #eee;
10 | }
11 |
12 | .v-selects-heading {
13 | padding: 10px 15px;
14 | border-radius: 0;
15 | }
16 |
17 | .v-selects .v-title {
18 | font-size: 14px;
19 | color: #999;
20 | text-align: center;
21 | }
22 |
23 | .v-selects .v-icon-down {
24 | font-size: 16px;
25 | color: #b0b0b0;
26 | padding-left: 10px;
27 | }
28 |
29 | .v-selects .v-icon-down.active {
30 | font-size: 16px;
31 | color: #ff8a50;
32 | transform: rotate(180deg);
33 | display: inline-block;
34 | }
35 |
36 | .v-selects-body {
37 | background-color: #f8f8f8;
38 | padding: 0;
39 | border-top: 1px solid #e5e5e5 !important;
40 | }
41 |
42 | .v-selects-body .tab-content {
43 | padding-left: 0;
44 | background-color: #fff;
45 | min-height: 250px;
46 | }
47 |
48 | .v-selects-list {
49 | background-color: #f8f8f8;
50 | margin-left: 0;
51 | padding-left: 0;
52 | min-height: 240px;
53 | }
54 |
55 | .v-selects-list li {
56 | background-color: #f8f8f8;
57 | padding: 8px;
58 | padding-left: 40px;
59 | }
60 |
61 | .v-selects-list-simple {
62 | margin-left: 0;
63 | padding-left: 0;
64 | min-height: 240px;
65 | }
66 |
67 | .v-selects-list-simple li {
68 | padding: 8px;
69 | margin-left: 40px;
70 | margin-right: 20px;
71 | border-bottom: solid 1px #e5e5e5;
72 | }
73 |
74 | .v-selects-list li:hover,
75 | .v-selects-list li.active {
76 | background-color: #fff;
77 | }
78 |
79 | .v-selects > .panel-heading {
80 | color: #333;
81 | background-color: #fff;
82 | border: none;
83 | }
84 |
85 | .v-selects-body li {
86 | list-style-type: none;
87 | }
88 |
--------------------------------------------------------------------------------
/apps/fis3/pages/selects/index.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require ../../server/author.js
3 | * @require ../../components/js/fn.js
4 | */
5 | /************ selects ************/
6 | $('[y-selects="buildings"] .v-selects-heading').on('click', function () {
7 | setTimeout(function () {
8 | $true = $('[y-selects="buildings"] .v-selects-heading [data-toggle="collapse"]:eq(0)').is('[aria-expanded="true"]') || $('[y-selects="buildings"] .v-selects-heading [data-toggle="collapse"]:eq(1)').is('[aria-expanded="true"]')
9 | if ($true) {
10 | $('[y-selects="buildings"]').find('.v-modal-backdrop').addClass('modal-backdrop').addClass('fade').addClass('in')
11 | } else {
12 | $('[y-selects="buildings"]').find('.v-modal-backdrop').removeClass('modal-backdrop').removeClass('in').removeClass('fade')
13 | }
14 | }, 100)
15 | });
16 | $('[y-selects="buildings"] .v-modal-backdrop').on('click', function () {
17 | console.log("hello")
18 | $(this).removeClass('modal-backdrop').removeClass('in').removeClass('fade')
19 | $('[y-selects="buildings"] #selectsDate, [y-selects="buildings"] #selectsCity').collapse('hide')
20 | });
--------------------------------------------------------------------------------
/apps/fis3/pages/start/1.js:
--------------------------------------------------------------------------------
1 | console.log('1.js')
--------------------------------------------------------------------------------
/apps/fis3/pages/start/2.js:
--------------------------------------------------------------------------------
1 | console.log('2.js')
--------------------------------------------------------------------------------
/apps/fis3/pages/start/index.css:
--------------------------------------------------------------------------------
1 | .v-start {
2 | position: absolute;
3 | z-index: 1;
4 | top: 0;
5 | bottom: 0;
6 | left: 0;
7 | right: 0;
8 | margin: auto;
9 | width: 50%;
10 | min-width: 200px;
11 | max-width: 500px;
12 | height: 500px;
13 | overflow: hidden;
14 | text-align: center;
15 | }
--------------------------------------------------------------------------------
/apps/fis3/pages/start/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/apps/fis3/pages/start/index2.css:
--------------------------------------------------------------------------------
1 | .test{
2 |
3 | }
--------------------------------------------------------------------------------
/apps/fis3/pages/table/index.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/pages/table/index.css
--------------------------------------------------------------------------------
/apps/fis3/pages/table/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 日期
5 | 做单数
6 | 做单总额
7 | 放款时间
8 |
9 |
10 |
11 |
12 | 08.01
13 | 3
14 | 120万
15 | 1000万
16 |
17 |
18 | 08.01
19 | 3
20 | 120万
21 | 1000万
22 |
23 |
24 | 08.01
25 | 3
26 | 120万
27 | 1000万
28 |
29 |
30 | 08.01
31 | 3
32 | 120万
33 | 1000万
34 |
35 |
36 |
--------------------------------------------------------------------------------
/apps/fis3/pages/test/other.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/apps/fis3/pages/test/totalPut.html:
--------------------------------------------------------------------------------
1 |
2 | 测试
3 |
--------------------------------------------------------------------------------
/apps/fis3/server/author.css:
--------------------------------------------------------------------------------
1 | /*=====================================================================
2 | * Author: yhtml5
3 | * Website: http://yhtml5.com
4 | * Gihub: https://github.com/yhtml5
5 | * Description: We work hard to contribute our work back
6 | * to the web, mobile, server, & new technology.
7 | *====================================================================*/
8 |
--------------------------------------------------------------------------------
/apps/fis3/server/author.js:
--------------------------------------------------------------------------------
1 | /*=====================================================================
2 | * Author: yhtml5
3 | * Website: http://yhtml5.com
4 | * Gihub: https://github.com/yhtml5
5 | * Description: We work hard to contribute our work back
6 | * to the web, mobile, server, & new technology.
7 | *====================================================================*/
8 | 'use strict';
9 |
--------------------------------------------------------------------------------
/apps/fis3/server/console.js:
--------------------------------------------------------------------------------
1 | /*
2 | * @require author.js
3 | */
4 | console.log("%c YHTML5 %c Copyright \xa9 2015-%s", 'font-family: "microsoft yahei", Helvetica, Arial, sans-serif;font-size:64px;color:#00bbee;-webkit-text-fill-color:#00bbee;-webkit-text-stroke: 1px #00bbee;', "font-size:12px;color:#999999;", (new Date).getFullYear());
5 | console.log("%c " + "温馨提示:请不要调皮地在此粘贴执行任何内容,这可能会导致您的账户受到攻击,给您带来损失 !^_^", "color:#333;font-size:16px;margin:4px;");
6 | function yhtml5() {
7 | console.clear();
8 | console.log("%c YHTML5 %c https://github.com/yhtml5", 'font-family: "microsoft yahei", Helvetica, Arial, sans-serif;font-size:64px;color:#00bbee;-webkit-text-fill-color:#00bbee;-webkit-text-stroke: 1px #00bbee;', "font-size:12px;color:#999999;");
9 | console.log("%c " + "We work hard to contribute our work back to the web, mobile, big data, && new Front-End technology.", "color:#333;font-size:16px;margin:4px;");
10 | console.log("%c " + "Author: yhtml5", "color:#333;font-size:16px;margin:4px;");
11 | }
12 |
--------------------------------------------------------------------------------
/apps/fis3/server/mock.json:
--------------------------------------------------------------------------------
1 | {
2 | "resultCode": 0,
3 | "errMsg": "",
4 | "userId": "yhtml5",
5 | "accountDetail": [
6 | {
7 | "createTime": "2016-02-26 19:21:45",
8 | "completionTime": "2016-02-26 19:21:45",
9 | "num": "16022621421937332592",
10 | "orderNum": "7564563434267987",
11 | "class": "手续费",
12 | "expense": "+100",
13 | "income": "-200",
14 | "balance": "3,293.22",
15 | "note": "test",
16 | "money": "-0.22",
17 | "payType": "支付宝",
18 | "state": "支付成功"
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/accountBind/accountBind.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 提交成功
15 | {{notice.text}}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/accountBind/tabTitle.html:
--------------------------------------------------------------------------------
1 |
2 | 支付宝
3 | 银行卡
4 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/agreement/agreement.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | 提交成功
16 | {{notice.text}}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/agreement/content.html:
--------------------------------------------------------------------------------
1 | 按照法律法规规定您提现的金额需要进行缴纳个人所得税,该笔个人所得税将由经纪通平台代为缴纳,故请先签署代扣代缴委托书!
2 |
3 |
委托书
4 |
兹委托贵公司负责办理代开劳务费发票并依法缴纳税款相关事宜,一切产生的责任与后果由我本人承担!特此声明!
5 |
授权有效期限:2016.01.01至2016.12.31
6 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/agreement/enterSignature.html:
--------------------------------------------------------------------------------
1 |
2 |
委托人
3 |
4 |
点击此签名
5 |
6 |
7 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/agreement/nav.html:
--------------------------------------------------------------------------------
1 |
2 | 提交
3 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/agreement/signature.html:
--------------------------------------------------------------------------------
1 |
2 |
6 |
建议横向手绘,以保证签名完整清晰
7 |
8 |
9 |
10 |
11 |
清除
12 |
13 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/authentication/IDcard.form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
21 |
22 |
23 |
24 | 证件有效期
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/authentication/IDcard.html:
--------------------------------------------------------------------------------
1 |
2 |
{{IDcard.name}}
3 |
4 |
5 |
6 |
+
7 |
8 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/authentication/actionsheet.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/authentication/authentication.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
{{noteTopText}}
12 |
13 |
建议横向拍摄,以保障信息完整清晰
14 |
15 |
16 |
提交成功
17 |
{{notice.text}}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/authentication/nav.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/bankCardList/bankCardList.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/bankCardList/bankList.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
{{item.accountName}}
7 |
{{item.accountType}}
8 |
{{item.accountNum}}
9 |
10 |
11 |
12 |
13 |
14 |
请先绑定一个银行/支付宝账户
15 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/bankCardList/nav.html:
--------------------------------------------------------------------------------
1 |
2 | +
3 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/components/actionsheet/index.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/fis3/view-myBonus/components/actionsheet/index.css
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/components/banner/index.css:
--------------------------------------------------------------------------------
1 | .v-banner {
2 | background-color: #539fbf;
3 | padding: 20px;
4 | color: #ddd;
5 | }
6 |
7 | .v-banner h4 {
8 | font-size: 14px;
9 | }
10 |
11 | .v-banner .y-hr {
12 | margin-top: 10px;
13 | margin-bottom: 10px;
14 | border: 0;
15 | border-top: 1px solid #ddd;
16 | }
17 |
18 | .v-banner .v-num {
19 | margin-top: 10px;
20 | color: #fff;
21 | font-size: 30px;
22 | min-height: 48px;
23 | }
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/components/card/index.css:
--------------------------------------------------------------------------------
1 | .v-card-group {
2 |
3 | }
4 |
5 | .v-card {
6 | background-color: #fff;
7 | margin-bottom: 10px;
8 | min-height: 100px;
9 | text-align: center;
10 | height: 240px;
11 | position: relative;
12 | }
13 |
14 | .v-card-img {
15 | width: 100%;
16 | height: 100%;
17 | position: absolute;
18 | top: 0;
19 | bottom: 0;
20 | right: 0;
21 | left: 0;
22 | }
23 |
24 | .v-card-backdrop {
25 | position: absolute;
26 | top: 0;
27 | bottom: 0;
28 | left: 0;
29 | right: 0;
30 | background-color: rgba(0, 0, 0, 0);
31 | }
32 |
33 | .v-card-backdrop.v-active {
34 | background-color: rgba(0, 0, 0, .1);
35 | }
36 |
37 | .v-card-add {
38 | width: 180px;
39 | height: 120px;
40 | position: absolute;
41 | top: 60%;
42 | left: 50%;
43 | transform: translate(-50%, -60%);
44 | text-align: center;
45 | font-size: 60px;
46 | border-radius: 4px;
47 | }
48 |
49 | .v-card-backdrop ~ .v-card-add {
50 | color: #539fbf;
51 | border: 1px dashed #539fbf;
52 | }
53 |
54 | .v-card-backdrop.v-active ~ .v-card-add {
55 | color: #fff;
56 | border: 1px dashed #fff;
57 | }
58 |
59 | .ID-title {
60 | padding-top: 25px;
61 | }
62 |
63 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/components/list/index.css:
--------------------------------------------------------------------------------
1 | .v-list-group {
2 | background-color: #fff;
3 | margin-bottom: 20px;
4 | }
5 |
6 | .v-list-group .v-title {
7 | padding-top: 10px;
8 | padding-bottom: 10px;
9 | padding-left: 15px;
10 | border-bottom: solid 1px #ddd;
11 | }
12 |
13 | .v-list {
14 | padding: 15px;
15 | border-bottom: solid 1px #ddd;
16 | min-height: 50px;
17 | }
18 |
19 | .v-list .v-lable-warn {
20 | color: #e59313;
21 | font-size:12px;
22 | text-indent: 1em;
23 | line-height: 26px;
24 | }
25 |
26 | .v-list .v-lable-default {
27 | color: #aaa;
28 | font-size:14px;
29 | }
30 |
31 | .v-list-group .v-more {
32 | display: block;
33 | text-align: center;
34 | color: #e59313;
35 | font-size: 18px;
36 | padding: 10px;
37 | }
38 |
39 | .v-list-empty{
40 | text-align: center;
41 | padding:60px 0;
42 | }
43 |
44 | .v-list-empty img{
45 | width:60px;
46 | padding:0 0 10px 10px;
47 | }
48 |
49 | .v-accountList {
50 | position: absolute;
51 | z-index: 2;
52 | top: 0;
53 | left: 0;
54 | width: 100%;
55 | height: 100%;
56 | background-color: #fbfbfb;
57 | }
58 |
59 | .v-accountList-ul {
60 | list-style-type: none;
61 | background: #fff;
62 | padding-top: 0px;
63 | padding-left: 14px;
64 | }
65 |
66 | .v-accountList-ul li {
67 | min-height: 50px;
68 | padding-top: 10px;
69 | padding-bottom: 10px;
70 | border-bottom: 1px solid #e0e0e0;
71 | color: #333;
72 | }
73 |
74 | .v-accountList-ul .v-img {
75 | display: block;
76 | width: 36px;
77 | height: 36px;
78 | margin: 6px;
79 | }
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/components/nav/index.css:
--------------------------------------------------------------------------------
1 | .v-nav-orderManager {
2 |
3 | }
4 |
5 | .v-nav-orderManager .active {
6 | border-bottom: #f13d1f solid 2px;
7 | }
8 |
9 | .v-nav-orderManager .col-xs-3:hover,
10 | .v-nav-orderManager .col-xs-3:focus {
11 | border-bottom: #f13d1f solid 2px;
12 | }
13 |
14 | .y-nav {
15 | text-align: center;
16 | padding: 16px 0;
17 | color: #999;
18 | }
19 |
20 | .y-nav a {
21 | text-decoration: none;
22 | }
23 |
24 | .y-nav .y-nav-red {
25 | color: #ff6161;
26 | background-color: #ffffff;
27 | border-color: #ff6161;
28 | width: 68px;
29 | }
30 |
31 | .y-nav .y-nav-red.active {
32 | color: #fff;
33 | background-color: #ff6161;
34 | border-color: #ff6161;
35 | box-shadow: none;
36 | }
37 |
38 | .v-nav {
39 | text-align: center;
40 | padding: 16px 0;
41 | color: #999;
42 | }
43 |
44 | .v-nav .active {
45 | color: #f13d1f;
46 | }
47 |
48 | .y-nav-bg {
49 | position: relative;
50 | background-color: #1d2027;
51 | line-height: 50px;
52 | height: 50px;
53 | color: #fff;
54 | }
55 |
56 | .y-nav-bg .daohangfanhui {
57 | position: absolute;
58 | color: #fff;
59 | }
60 |
61 |
62 |
63 | .y-nav-bg .select {
64 | position: absolute;
65 | right: 10px;
66 | top:0;
67 | color: #999;
68 | height: 50px;
69 | background-color: #1d2027;
70 | font-size: 13px;
71 | }
72 |
73 | .y-nav-bg .v-date {
74 | margin: 0 auto;
75 | width: 70px;
76 | color:#fff;
77 |
78 | }
79 |
80 | .y-nav-bg .v-date .picker__input {
81 | border: none;
82 | background-color: #1d2027;
83 | padding: 0;
84 | }
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/components/notice/index.css:
--------------------------------------------------------------------------------
1 | .v-notice {
2 | background-color: #f8f8f8;
3 | padding: 10px;
4 | color: #c0c0c0;
5 | font-size: 14px;
6 | }
7 |
8 | .v-notice .v-num {
9 | margin: auto 4px;
10 | }
11 |
12 | .v-notice-black {
13 | background-color: #333;
14 | padding: 8px 20px;
15 | color: #999;
16 | font-size: 14px;
17 | }
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/components/signature/index.css:
--------------------------------------------------------------------------------
1 |
2 | .y-open-autograph{
3 | padding:10px;
4 | background:#fff;
5 | color:#666;
6 | margin-top:10px;
7 | }
8 |
9 | .y-open-autograph .y-autograph-img{
10 | width:40px;
11 | height:40px;
12 | }
13 |
14 | .v-autograph{
15 | position:absolute;
16 | top:0;
17 | left:0;
18 | right:0;
19 | bottom:0;
20 | background-color: #fbfbfb;
21 | }
22 |
23 | .v-autograph .vux-header{
24 | height:46px;
25 | }
26 |
27 | .y-autograph-box{
28 | width:100%;
29 | height:calc(100% - 86px);
30 | background:#fff;
31 | }
32 |
33 | .y-autograph-box .y-autograph-body{
34 | position: absolute;
35 | width:100%;
36 | height:calc(100% - 85px);
37 | }
38 |
39 | .y-autograph-clear{
40 | width:100%;
41 | line-height: 42px;
42 | background-color:#fff;
43 | text-align: center;
44 | color:#666;
45 | border-top:1px solid #e0e0e0;
46 | position: absolute;
47 | bottom: 0;
48 | left:0;
49 | }
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/myBonus/banner.html:
--------------------------------------------------------------------------------
1 |
2 |
我的奖金(元)
3 |
{{myBonusMoney}}
4 |
5 |
待审核: {{myBonusMoneyAudit}}
6 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/myBonus/footer.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/myBonus/list.account.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
我的账户
4 |
立即绑定
5 |
{{myAccountNum}}
6 |
7 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/myBonus/list.waterDetails.html:
--------------------------------------------------------------------------------
1 |
2 |
流水明细 (元)
3 |
4 |
5 |
{{item.title}}
6 |
7 |
8 | 待审核
9 | 审核成功
10 | 审核失败
11 |
12 |
13 | 待提取
14 | 提取成功
15 | 提取失败
16 |
17 |
18 |
{{item.money}}
19 |
20 |
21 |
22 |
{{item.cust_name}} {{item.house_name}} {{item.withdraw_account}} {{item.withdraw_fail_reason}}
23 | 支付宝
24 | 银行卡
25 |
26 |
27 |
{{item.created_at}}
28 |
29 |
30 |
查看更多
31 |
32 |
33 |
34 |
暂无流水明细
35 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/myBonus/myBonus.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
您还未实名认证, 无法提现.
12 | 立即认证 >
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 三个工作日内给你回复
21 |
22 |
23 |
24 | 您还没有认证
25 |
26 |
27 |
提交成功
28 |
{{notice.text}}
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/myBonus/nav.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/record/record.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | {{notice.text}}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/record/recordList.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
流水明细 (元)
4 |
5 |
6 |
{{item.title}}
7 |
8 |
9 | 待审核
10 | 审核成功
11 | 审核失败
12 |
13 |
14 | 待提取
15 | 提取成功
16 | 提取失败
17 |
18 |
19 |
{{item.money}}
20 |
21 |
22 |
23 |
{{item.cust_name}} {{item.house_name}} {{item.withdraw_account}} {{item.withdraw_fail_reason}}
24 | 支付宝
25 | 银行卡
26 |
27 |
28 |
{{item.created_at}}
29 |
30 |
31 |
查看更多
32 |
33 |
34 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/record/recordType.html:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 | 全部
8 | 收入
9 | 提现
10 |
11 |
12 |
13 | 全部
14 |
15 | 已审核
16 | 待审核
17 |
18 |
19 | 成功
20 | 失败
21 |
22 |
23 |
24 |
25 |
排序时间由远到近
26 |
排序时间由近到远
27 |
28 |
29 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/start/1.js:
--------------------------------------------------------------------------------
1 | console.log('1.js');
2 |
3 | function menu(arr){
4 | var odd = [],
5 | even = [];
6 | for(var i = 0; i < arr.length; i++){
7 | if(i % 2 == 0){
8 | odd.push(arr[i]);
9 | }else{
10 | even.push(arr[i]);
11 | }
12 | }
13 | for(var i = 0; i < odd.length; i++){
14 | odd[i].style.left = 70 + 'px';
15 | odd[i].style.top = (80 + 80 * i) + 'px';
16 | }
17 | for(var i = 0; i < even.length; i++){
18 | even[i].style.right = 70 + 'px';
19 | even[i].style.top = (120 + 80 * i) + 'px';
20 | }
21 | }
22 |
23 | window.onload = function(){
24 | var arr = document.getElementsByTagName('a');
25 | console.log(arr.length);
26 | menu(arr);
27 |
28 | };
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/start/2.js:
--------------------------------------------------------------------------------
1 | console.log('2.js')
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/start/index.css:
--------------------------------------------------------------------------------
1 | a:link{
2 | text-decoration: none;
3 | background:none;
4 | }
5 | a:active{
6 | text-decoration: none;
7 | background:none;
8 | }
9 | body{
10 | background-image: radial-gradient(#374566, #010203);
11 | background-image: -webkit-radial-gradient(#374566, #010203);
12 | }
13 | .v-start {
14 | position: absolute;
15 | z-index: 1;
16 | top: 0;
17 | bottom: 0;
18 | left: 0;
19 | right: 0;
20 | margin: auto;
21 | min-width: 200px;
22 | max-width: 500px;
23 | height: 500px;
24 | overflow: hidden;
25 | text-align: center;
26 | }
27 | .list-group a{
28 | text-decoration: none;
29 | display: inline-block;
30 | padding: 10px;
31 | background:#539fbf;
32 | color:#fff;
33 | border-radius: 20px;
34 | position:absolute;
35 | }
36 |
37 |
38 | .list-group a:nth-child(2n+1){
39 | animation: animateLeft 6s ease-in-out infinite;
40 | -webkit-animation: animateLeft 6s ease-in-out infinite;
41 | }
42 |
43 | .list-group a:nth-child(2n){
44 | animation: animateRight 6s ease-in-out infinite;
45 | -webkit-animation: animateRight 6s ease-in-out infinite;
46 | }
47 |
48 | @-webkit-keyframes animateLeft {
49 | 0%, 100% {
50 | -webkit-transform: translate(100px, 0) rotate(-6deg);
51 | }
52 | 50% {
53 | -webkit-transform: translate(-30px, 0) rotate(8deg);
54 | }
55 | }
56 |
57 | @-webkit-keyframes animateRight {
58 | 0%, 100% {
59 | -webkit-transform: translate(-100px, 0) rotate(8deg);
60 | }
61 | 50% {
62 | -webkit-transform: translate(30px, 0) rotate(-6deg);
63 | }
64 | }
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/start/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/test/other.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/test/totalPut.html:
--------------------------------------------------------------------------------
1 |
2 | 测试
3 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/withdrawals/accountList.html:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
{{account.accountName}}
13 |
{{account.accountNum}}
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/withdrawals/enterMoney.html:
--------------------------------------------------------------------------------
1 |
2 |
提现金额
3 |
7 |
可用金额:{{availableAmount}}元
8 |
9 |
10 | 注:单月提取超过800元,将需要扣个人所得税,具体见
11 |
12 |
13 | 常见问题
14 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/withdrawals/footer.html:
--------------------------------------------------------------------------------
1 | 保存
2 | 保存
3 | 2小时后到账
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/withdrawals/selectAccount.html:
--------------------------------------------------------------------------------
1 |
2 | |
3 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/withdrawals/withdrawals.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 提交成功
17 | {{notice.text}}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/apps/mpa/.yhtml5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/mpa/.yhtml5
--------------------------------------------------------------------------------
/apps/react-dashboard/.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Author: yhtml5
3 | * Description: The configuration file for the yhtml5-scripts should not be packaged into the app
4 | *
5 | */
6 | const packageJson = require('./package.json')
7 | const { getVersion } = require('yhtml5-dev-utils')
8 | const outputPath = `dist/${getVersion(packageJson.version)}`
9 |
10 | const config = {
11 | devHost: '0.0.0.0',
12 | devPort: 9991,
13 | isAnalyze: true,
14 | analyzerPort: 9992,
15 | outputPath: outputPath,
16 | // host: './',
17 |
18 | entry: 'src/index.js',
19 | distributePort: 9993,
20 | type: '',
21 | test: {
22 | testMatch: ['app/**/__tests__/**/*.js?(x)', 'app/**/?(*.)(spec|test).js?(x)'],
23 | transformIgnorePatterns: ["node_modules/(?!(yhtml5-test|react-redux|react-native-button)/)"],
24 | collectCoverageFrom: ['app/**/*.{js,jsx}'],
25 | // moduleNameMapper: webpackConfigAlias,
26 | }
27 | }
28 |
29 | module.exports = config
30 |
--------------------------------------------------------------------------------
/apps/react-dashboard/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 | [Makefile]
16 | indent_style = tab
17 |
--------------------------------------------------------------------------------
/apps/react-dashboard/.eslintignore:
--------------------------------------------------------------------------------
1 | build/*.js
2 | config/*.js
3 | /**/node_modules/
4 |
--------------------------------------------------------------------------------
/apps/react-dashboard/.gitignore:
--------------------------------------------------------------------------------
1 | # custom
2 | logs/*
3 | /**/node_modules/
4 | /**/bower_components/
5 | npm-debug.log
6 | dist
7 |
8 | tmp
9 | .DS_Store
10 | .idea
11 | .vscode
12 | *.swp
13 | .test.html.swp
14 | .test.html.swo
15 | !.gitkeep
16 |
17 | # Windows image file caches
18 | Thumbs.db
19 | ehthumbs.db
20 |
21 | # Folder config file
22 | Desktop.ini
23 |
24 | # Recycle Bin used on file shares
25 | $RECYCLE.BIN/
26 |
27 | # Windows Installer files
28 | *.cab
29 | *.msi
30 | *.msm
31 | *.msp
32 |
33 | # Windows shortcuts
34 | *.lnk
35 |
36 | # =========================
37 | # Operating System Files
38 | # =========================
39 |
40 | # OSX
41 | # =========================
42 |
43 | .DS_Store
44 | .AppleDouble
45 | .LSOverride
46 |
47 | # Thumbnails
48 | ._*
49 |
50 | # Files that might appear in the root of a volume
51 | .DocumentRevisions-V100
52 | .fseventsd
53 | .Spotlight-V100
54 | .TemporaryItems
55 | .Trashes
56 | .VolumeIcon.icns
57 |
58 | # Directories potentially created on remote AFP share
59 | .AppleDB
60 | .AppleDesktop
61 | Network Trash Folder
62 | Temporary Items
63 | .apdisk
64 |
--------------------------------------------------------------------------------
/apps/react-dashboard/production/.yhtml5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/production/.yhtml5
--------------------------------------------------------------------------------
/apps/react-dashboard/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/public/favicon.ico
--------------------------------------------------------------------------------
/apps/react-dashboard/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/public/logo.png
--------------------------------------------------------------------------------
/apps/react-dashboard/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | }
10 | ],
11 | "start_url": "./index.html",
12 | "display": "standalone",
13 | "theme_color": "#000000",
14 | "background_color": "#ffffff"
15 | }
16 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Breadcrumb/index.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Breadcrumb } from 'antd'
3 | import { Link } from 'react-router-dom';
4 | import { isStringNotEmpty } from '../../util/validator'
5 |
6 | function Component({ breadcrumbs }) {
7 |
8 | return (
9 |
13 | {breadcrumbs.map((value, index) => {
14 | return (
15 |
16 | {(isStringNotEmpty(value.href)) ? {value.name} : value.name}
17 |
18 | )
19 | })}
20 |
21 | )
22 | }
23 |
24 | export default Component
25 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Form/Select.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Select} from 'antd';
3 | const Option = Select.Option;
4 |
5 | const provinceData = ['Zhejiang', 'Jiangsu'];
6 | const cityData = {
7 | Zhejiang: ['Hangzhou', 'Ningbo', 'Wenzhou'],
8 | Jiangsu: ['Nanjing', 'Suzhou', 'Zhenjiang'],
9 | };
10 |
11 | class App extends React.Component {
12 | state = {
13 | cities: cityData[provinceData[0]],
14 | secondCity: cityData[provinceData[0]][0],
15 | }
16 | handleProvinceChange = (value) => {
17 | this.setState({
18 | cities: cityData[value],
19 | secondCity: cityData[value][0],
20 | });
21 | }
22 | onSecondCityChange = (value) => {
23 | this.setState({
24 | secondCity: value,
25 | });
26 | }
27 |
28 | render() {
29 | const provinceOptions = provinceData.map(province => {province} );
30 | const cityOptions = this.state.cities.map(city => {city} );
31 | return (
32 |
33 |
34 | {provinceOptions}
35 |
36 |
37 | {cityOptions}
38 |
39 |
40 | );
41 | }
42 | }
43 |
44 | ReactDOM.render( , mountNode);
45 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Form/Time.jsx:
--------------------------------------------------------------------------------
1 | import {Select} from 'antd'
2 | const Option = Select.Option
3 |
4 | const provinceData = ['Zhejiang', 'Jiangsu'];
5 | const cityData = {
6 | Zhejiang: ['Hangzhou', 'Ningbo', 'Wenzhou'],
7 | Jiangsu: ['Nanjing', 'Suzhou', 'Zhenjiang'],
8 | };
9 |
10 | class App extends React.Component {
11 | state = {
12 | cities: cityData[provinceData[0]],
13 | secondCity: cityData[provinceData[0]][0],
14 | }
15 | handleProvinceChange = (value) => {
16 | this.setState({
17 | cities: cityData[value],
18 | secondCity: cityData[value][0],
19 | })
20 | }
21 | onSecondCityChange = (value) => {
22 | this.setState({
23 | secondCity: value,
24 | });
25 | }
26 |
27 | render() {
28 | const provinceOptions = provinceData.map(province => {province} );
29 | const cityOptions = this.state.cities.map(city => {city} );
30 | return (
31 |
32 |
33 | {provinceOptions}
34 |
35 |
36 | {cityOptions}
37 |
38 |
39 | );
40 | }
41 | }
42 |
43 | ReactDOM.render( , mountNode);
44 |
45 |
46 | export {App}
47 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/HelloWorld.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 |
4 | function HelloWorld() {
5 | return hello world
6 | }
7 |
8 |
9 | export default HelloWorld
10 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/LazilyLoad/Bundle.jsx:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react'
2 |
3 | class Bundle extends Component {
4 | state = {
5 | // short for "module" but that's a keyword in js, so "mod"
6 | mod: null
7 | }
8 |
9 | componentWillMount() {
10 | this.load(this.props)
11 | }
12 |
13 | componentWillReceiveProps(nextProps) {
14 | if (nextProps.load !== this.props.load) {
15 | this.load(nextProps)
16 | }
17 | }
18 |
19 | load(props) {
20 | this.setState({
21 | mod: null
22 | })
23 | props.load((mod) => {
24 | this.setState({
25 | // handle both es imports and cjs
26 | mod: mod.default ? mod.default : mod
27 | })
28 | })
29 | }
30 |
31 | render() {
32 | return this.props.children(this.state.mod)
33 | }
34 | }
35 |
36 | export default Bundle
37 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Search/.yhtml5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/Components/Search/.yhtml5
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Table/index.jsx:
--------------------------------------------------------------------------------
1 | import { isStringEmpty, } from '../../util/validator'
2 |
3 | const renderColumns = (text) => (isStringEmpty(text)) ? '--' : text
4 | const renderStatus = (text, record) => (isStringEmpty(text)) ? '--' : (Number(record.status) === 1) ? '显示' : '隐藏'
5 | const renderNavType = (text, record) => (isStringEmpty(text)) ? '--' : (Number(record.type) === 1) ? '频道' : '链接'
6 | const renderLiveType = (text, record) => (isStringEmpty(text)) ? '--' : (Number(record.type) === 1) ? '视频' : '图文'
7 | const renderRecommendation = (text, record) => (isStringEmpty(text)) ? '--' : (Number(record.is_reco) === 1) ? '已推荐' : '未推荐'
8 |
9 | export { renderColumns, renderStatus, renderNavType, renderLiveType, renderRecommendation }
10 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Test/a.js:
--------------------------------------------------------------------------------
1 | console.log('I AM a')
2 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Test/b.js:
--------------------------------------------------------------------------------
1 | console.log('I AM b')
2 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Test/c.js:
--------------------------------------------------------------------------------
1 | console.log('I AM c')
2 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Test/codeSplitting.js:
--------------------------------------------------------------------------------
1 | function determineDate() {
2 | import('moment').then(function (moment) {
3 | console.log(moment().format())
4 | }).catch(function (err) {
5 | console.log('Failed to load moment', err)
6 | })
7 | }
8 |
9 | export {determineDate}
10 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Test/environment.js:
--------------------------------------------------------------------------------
1 | function outputEnvironment() {
2 | if (process.env.NODE_ENV !== 'production') {
3 | console.log('***** Development mode *****')
4 | }
5 |
6 | }
7 |
8 |
9 | export {outputEnvironment}
10 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Test/index.js:
--------------------------------------------------------------------------------
1 | require('./a')
2 |
3 | // setTimeout(() => require.ensure(['./b'], function (require) {
4 | // require('./b')
5 | // require('./c')
6 | // console.log('done!')
7 | // }), 2000)
8 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Test/treeShaking.js:
--------------------------------------------------------------------------------
1 | function treeShaking() {
2 | let a = 2
3 | }
4 | function treeShaking2() {
5 | console('treeShaking2')
6 | }
7 |
8 | export {treeShaking, treeShaking2}
9 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/Upload/PicturesWall.pcss:
--------------------------------------------------------------------------------
1 | /* you can make up upload button and sample style by using stylesheets */
2 | .ant-upload-select-picture-card i {
3 | font-size: 28px;
4 | color: #999;
5 | }
6 |
7 | .ant-upload-select-picture-card .ant-upload-text {
8 | margin-top: 8px;
9 | font-size: 12px;
10 | color: #666;
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/editor/index.pcss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/editor/wangeditor/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 | *.sln merge=union
7 | *.csproj merge=union
8 | *.vbproj merge=union
9 | *.fsproj merge=union
10 | *.dbproj merge=union
11 |
12 | # Standard to msysgit
13 | *.doc diff=astextplain
14 | *.DOC diff=astextplain
15 | *.docx diff=astextplain
16 | *.DOCX diff=astextplain
17 | *.dot diff=astextplain
18 | *.DOT diff=astextplain
19 | *.pdf diff=astextplain
20 | *.PDF diff=astextplain
21 | *.rtf diff=astextplain
22 | *.RTF diff=astextplain
23 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/editor/wangeditor/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "boss": false,
3 | "curly": true,
4 | "eqeqeq": true,
5 | "eqnull": true,
6 | "expr": true,
7 | "immed": true,
8 | "newcap": true,
9 | "noempty": true,
10 | "noarg": true,
11 | "undef": true,
12 | "regexp": true,
13 |
14 | "browser": true,
15 | "devel": true,
16 | "node": true
17 | }
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/editor/wangeditor/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules/*
2 | src/css/*
3 | src/js/*
4 | issue
5 | npm-debug.log
6 | static/*
7 | test/*
8 | uploadfiles/*
9 | server.js
10 | server-for-cros.js
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/editor/wangeditor/.npminstall.done:
--------------------------------------------------------------------------------
1 | Tue Mar 14 2017 10:44:00 GMT+0800 (中国标准时间)
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/editor/wangeditor/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 王福朋
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/editor/wangeditor/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wangEditor",
3 | "description": "wangEditor - 基于javascript和css开发的 Web富文本编辑器, 轻量、简洁、易用、开源免费",
4 | "main": "dist/js/wangEditor.js",
5 | "authors": [
6 | "wangfupeng "
7 | ],
8 | "license": "MIT",
9 | "keywords": [
10 | "wangEditor",
11 | "富文本编辑器"
12 | ],
13 | "homepage": "https://github.com/wangfupeng1988/wangEditor",
14 | "moduleType": [
15 | "amd",
16 | "cmd",
17 | "node"
18 | ],
19 | "private": true
20 | }
21 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Components/editor/wangeditor/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wangeditor",
3 | "title": "wangEditor",
4 | "version": "2.1.23",
5 | "description": "wangEditor - 基于javascript和css开发的 Web富文本编辑器, 轻量、简洁、易用、开源免费",
6 | "homepage": "http://wangeditor.github.io/",
7 | "author": {
8 | "name": "wangfupeng1988",
9 | "url": "https://github.com/wangfupeng1988"
10 | },
11 | "keywords": [
12 | "wangEditor",
13 | "富文本编辑器"
14 | ],
15 | "main": "dist/js/wangEditor.js",
16 | "maintainers": [
17 | {
18 | "name": "wangfupeng1988",
19 | "web": "http://www.cnblogs.com/wangfupeng1988/default.html?OnlyTitle=1",
20 | "mail": "wangfupeng1988@163.com"
21 | }
22 | ],
23 | "repositories": [
24 | {
25 | "type": "git",
26 | "url": "https://github.com/wangfupeng1988/wangEditor"
27 | }
28 | ],
29 | "devDependencies": {
30 | "grunt": "^0.4.5",
31 | "grunt-contrib-concat": "^0.5.1",
32 | "grunt-contrib-copy": "^0.8.1",
33 | "grunt-contrib-cssmin": "^0.12.3",
34 | "grunt-contrib-jshint": "^0.11.2",
35 | "grunt-contrib-less": "^1.0.1",
36 | "grunt-contrib-uglify": "^0.9.1",
37 | "grunt-contrib-watch": "^0.6.1"
38 | },
39 | "dependencies": {
40 | "jquery": "^2.2.3"
41 | },
42 | "_from": "wangeditor@2.1.23",
43 | "_resolved": "http://registry.npm.taobao.org/wangeditor/download/wangeditor-2.1.23.tgz"
44 | }
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/App/action.js:
--------------------------------------------------------------------------------
1 | import {namespace} from '../../redux/actions'
2 |
3 | const UpdateState = namespace('app', 'UpdateState')
4 |
5 | export {UpdateState}
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/App/reduce.js:
--------------------------------------------------------------------------------
1 | import {UpdateState} from './action'
2 | import initialState from './state'
3 |
4 | function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return {...state, ...action.payload}
8 | case 'UpdatePathname':
9 | return {
10 | ...state,
11 | pathnameCurrent: action.payload,
12 | pathnameChange: action.payload !== state.pathnameCurrent
13 | }
14 | default:
15 | return state;
16 | }
17 | }
18 | export default reduce
19 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/App/state.js:
--------------------------------------------------------------------------------
1 | import {config} from '../../config'
2 | const {title} = config()
3 |
4 | const state = {
5 | title: title,
6 | communityId: '',
7 | uploadToken: '',
8 | pathnameChange: true,
9 | pathnameCurrent: '',
10 | permissions: [],
11 | permissionsCurrent: 5,
12 | selectChannels: [],
13 | selectColumns: [],
14 | selectLabels: [],
15 | selectedChannel: undefined,
16 | selectedColumn: undefined,
17 | selectedLabels: undefined,
18 | }
19 |
20 | export default state
21 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Demo/Components/Test.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Button } from 'antd'
3 |
4 | function Component({ title }) {
5 | return (
6 | {title}
9 | )
10 | }
11 |
12 | export default Component
13 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Demo/Components/Test.pcss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/Containers/Demo/Components/Test.pcss
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Demo/action.js:
--------------------------------------------------------------------------------
1 | import { namespace } from '../../redux/actions';
2 |
3 | const UpdateState = namespace('Demo', 'UpdateState')
4 |
5 | export { UpdateState }
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Demo/index.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Card } from 'antd'
3 | import connect from 'react-redux/es/connect/connect'
4 | import { history } from '../../redux/store'
5 | import Breadcrumb from '../../Components/Breadcrumb/index.jsx'
6 | import Test from './Components/Test.jsx'
7 | import { notRepeating } from '../../util/util'
8 | import { toggleStatus } from './task'
9 |
10 | function Component({ dispatch, props, app }) {
11 | console.log('DemoProps: ', props, app)
12 |
13 | const breadcrumbProps = {
14 | breadcrumbs: [{
15 | name: '首页',
16 | }, {
17 | name: '列表',
18 | }, {
19 | name: '详情',
20 | }]
21 | }
22 | const testProps = {
23 | title: props.testTitle
24 | }
25 |
26 | return (
27 |
28 |
29 |
30 |
31 |
32 |
33 | )
34 | }
35 |
36 | export default connect(state => {
37 | return {
38 | app: state.app,
39 | props: state.demo,
40 | }
41 | })(Component)
42 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Demo/reduce.js:
--------------------------------------------------------------------------------
1 | import {UpdateState} from './action'
2 | import initialState from './state'
3 |
4 | export default function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return {...state, ...action.payload}
8 | default:
9 | return state
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Demo/state.js:
--------------------------------------------------------------------------------
1 | const state = {
2 | testTitle: 'Hello World',
3 | tableData: [],
4 | tableTotals: 0,
5 | tableCurrent: 1,
6 | tablePageSize: 10,
7 | tableLoading: false,
8 | modalVisible: false,
9 | formId: '',
10 | formType: 'add',
11 | formStatus: undefined,
12 | formName: '',
13 | formOkLoading: false,
14 | formOkDisabled: false,
15 | formCancelLoading: false,
16 | formCancelDisabled: false,
17 | }
18 |
19 | export default state
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Document/Components/Document.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Button } from 'antd'
3 | import markdown from './document.md'
4 | import 'github-markdown-css'
5 |
6 | import styles from './Document.pcss'
7 |
8 | class Component extends React.Component {
9 | constructor(props) {
10 | super(props)
11 | }
12 |
13 | componentDidMount() {
14 | const container = document.getElementById("markdown")
15 | container.innerHTML = markdown
16 | }
17 |
18 | render() {
19 | return (
20 |
21 | )
22 | }
23 | }
24 |
25 |
26 | export default Component
27 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Document/Components/Document.pcss:
--------------------------------------------------------------------------------
1 | :global {
2 | .markdown-body {
3 | box-sizing: border-box;
4 | width: 100%;
5 | min-width: 200px;
6 | margin: 0 auto;
7 | padding: 0 20px;
8 | }
9 | }
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Document/action.js:
--------------------------------------------------------------------------------
1 | import { namespace } from '../../redux/actions';
2 |
3 | const UpdateState = namespace('Document', 'UpdateState')
4 |
5 | export { UpdateState }
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Document/index.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Card } from 'antd'
3 | import connect from 'react-redux/es/connect/connect'
4 | import { history } from '../../redux/store'
5 | import Breadcrumb from '../../Components/Breadcrumb/index.jsx'
6 | import Document from './Components/Document.jsx'
7 | import { notRepeating } from '../../util/util'
8 | import { toggleStatus } from './task'
9 |
10 | function Component({ dispatch, props, app }) {
11 | //console.log('DocumentProps: ', props)
12 |
13 | const breadcrumbProps = {
14 | breadcrumbs: [{
15 | name: '首页',
16 | }, {
17 | name: '系统功能',
18 | }, {
19 | name: '开发文档',
20 | }]
21 | }
22 | const testProps = {
23 | title: props.testTitle
24 | }
25 |
26 | return (
27 |
28 |
29 |
30 |
31 |
32 |
33 | )
34 | }
35 |
36 | export default connect(state => {
37 | return {
38 | app: state.app,
39 | props: state.document,
40 | }
41 | })(Component)
42 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Document/reduce.js:
--------------------------------------------------------------------------------
1 | import {UpdateState} from './action'
2 | import initialState from './state'
3 |
4 | export default function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return {...state, ...action.payload}
8 | default:
9 | return state
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Document/state.js:
--------------------------------------------------------------------------------
1 | const state = {
2 | testTitle: 'Hello World',
3 | tableData: [],
4 | tableTotals: 0,
5 | tableCurrent: 1,
6 | tablePageSize: 10,
7 | tableLoading: false,
8 | modalVisible: false,
9 | formId: '',
10 | formType: 'add',
11 | formStatus: undefined,
12 | formName: '',
13 | formOkLoading: false,
14 | formOkDisabled: false,
15 | formCancelLoading: false,
16 | formCancelDisabled: false,
17 | }
18 |
19 | export default state
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Document/task.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/Containers/Document/task.js
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Form/Components/Form.pcss:
--------------------------------------------------------------------------------
1 | .form {}
2 |
3 | .form :global(.ant-form-item) {}
4 |
5 | .pattern{
6 | height: 32px;
7 | line-height: 32px;
8 | padding-left: 12px;
9 | padding-right: 12px;
10 | }
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Form/Components/Header.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Button } from 'antd'
3 |
4 | function Component({ title }) {
5 | return (
6 | {title}
9 | )
10 | }
11 |
12 | export default Component
13 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Form/Components/Test.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Button } from 'antd'
3 |
4 | function Component({ title }) {
5 | return (
6 | {title}
9 | )
10 | }
11 |
12 | export default Component
13 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Form/Components/Test.pcss:
--------------------------------------------------------------------------------
1 | .form {}
2 |
3 | .form :global(.ant-form-item) {
4 | width: 240px;
5 | margin-bottom: 20px;
6 | }
7 |
8 | .hr {
9 | margin-left: 0;
10 | margin-right: 0;
11 | margin-top: 30px;
12 | margin-bottom: 30px;
13 | border: solid 1px #ddd;
14 | // max-width: 480px;
15 | width: 100%;
16 | }
17 |
18 | .button {
19 | margin-left: 10px;
20 | margin-top: 40px;
21 | }
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Form/action.js:
--------------------------------------------------------------------------------
1 | import { namespace } from '../../redux/actions';
2 |
3 | const UpdateState = namespace('Demo', 'UpdateState')
4 |
5 | export { UpdateState }
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Form/index.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Card } from 'antd'
3 | import connect from 'react-redux/es/connect/connect'
4 | import { history } from '../../redux/store'
5 | import Breadcrumb from '../../Components/Breadcrumb/index.jsx'
6 | import Test from './Components/Test.jsx'
7 | import Form from './Components/Form.jsx'
8 | import { notRepeating } from '../../util/util'
9 | import { toggleStatus } from './task'
10 |
11 | function Component({ dispatch, props, app }) {
12 | console.log('PackageProps: ', props, app)
13 |
14 | const breadcrumbProps = {
15 | breadcrumbs: [{
16 | name: '首页',
17 | }, {
18 | name: '基础组件',
19 | }, {
20 | name: '表单正则',
21 | }]
22 | }
23 | const testProps = {
24 | title: props.testTitle
25 | }
26 | const formProps = {
27 | title: props.testTitle
28 | }
29 |
30 | return (
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | )
41 | }
42 |
43 | export default connect(state => {
44 | return {
45 | app: state.app,
46 | props: state.demo,
47 | }
48 | })(Component)
49 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Form/reduce.js:
--------------------------------------------------------------------------------
1 | import {UpdateState} from './action'
2 | import initialState from './state'
3 |
4 | export default function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return {...state, ...action.payload}
8 | default:
9 | return state
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Form/state.js:
--------------------------------------------------------------------------------
1 | const state = {
2 | testTitle: 'Hello World',
3 | tableData: [],
4 | tableTotals: 0,
5 | tableCurrent: 1,
6 | tablePageSize: 10,
7 | tableLoading: false,
8 | modalVisible: false,
9 | formId: '',
10 | formType: 'add',
11 | formStatus: undefined,
12 | formName: '',
13 | formOkLoading: false,
14 | formOkDisabled: false,
15 | formCancelLoading: false,
16 | formCancelDisabled: false,
17 | }
18 |
19 | export default state
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Function/Components/Cards.pcss:
--------------------------------------------------------------------------------
1 | .code{
2 | margin-top:40px;
3 | margin-bottom:10px;
4 | }
5 | .code h3{
6 | margin-bottom:10px;
7 | }
8 |
9 | .card {
10 | margin-right: 20px;
11 | margin-bottom:20px;
12 | height: 300px;
13 | }
14 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Function/action.js:
--------------------------------------------------------------------------------
1 | import { namespace } from '../../redux/actions';
2 |
3 | const UpdateState = namespace('Function', 'UpdateState')
4 |
5 | export { UpdateState }
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Function/index.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import connect from 'react-redux/es/connect/connect'
3 | import { history } from '../../redux/store'
4 | import Breadcrumb from '../../Components/Breadcrumb/index.jsx'
5 | import Cards from './Components/Cards.jsx'
6 | import { notRepeating } from '../../util/util'
7 | import { toggleStatus } from './task'
8 |
9 | function Component({ dispatch, props, app }) {
10 | console.log('DemoProps: ', props, app)
11 |
12 | const breadcrumbProps = {
13 | breadcrumbs: [{
14 | name: '首页',
15 | }, {
16 | name: '基础组件',
17 | }, {
18 | name: '功能函数',
19 | }]
20 | }
21 | const cardProps = {
22 | title: props.testTitle
23 | }
24 |
25 | return (
26 |
27 |
28 |
29 |
30 | )
31 | }
32 |
33 | export default connect(state => {
34 | return {
35 | app: state.app,
36 | props: state.demo,
37 | }
38 | })(Component)
39 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Function/reduce.js:
--------------------------------------------------------------------------------
1 | import {UpdateState} from './action'
2 | import initialState from './state'
3 |
4 | export default function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return {...state, ...action.payload}
8 | default:
9 | return state
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Function/state.js:
--------------------------------------------------------------------------------
1 | const state = {
2 | testTitle: 'Hello World',
3 | tableData: [],
4 | tableTotals: 0,
5 | tableCurrent: 1,
6 | tablePageSize: 10,
7 | tableLoading: false,
8 | modalVisible: false,
9 | formId: '',
10 | formType: 'add',
11 | formStatus: undefined,
12 | formName: '',
13 | formOkLoading: false,
14 | formOkDisabled: false,
15 | formCancelLoading: false,
16 | formCancelDisabled: false,
17 | }
18 |
19 | export default state
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Function/task.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/Containers/Function/task.js
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Layout/Components/Content.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Layout, Card} from 'antd'
3 | // import Breadcrumb from '../../../Components/Breadcrumb/index.jsx'
4 |
5 | function Content(props) {
6 | return (
7 |
8 | {props.children}
9 |
10 |
11 | )
12 | }
13 |
14 | export default Content
15 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Layout/Components/Footer.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Layout } from 'antd'
3 | import { config } from '../../../config'
4 | const { title, copyright, version } = config()
5 |
6 | const Footer = () =>
7 |
8 | Copyright © 2011-2018 {copyright} 当前呈现版本 {version}
9 |
10 |
11 | export default Footer
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Layout/Components/Header.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Layout, Icon, Menu, Dropdown } from 'antd'
3 | import { Modal } from 'antd'
4 | import styles from './Header.pcss'
5 | import { config } from '../../../config.js'
6 | import { getCookie } from '../../../util/cookie.js'
7 | let { cookie } = config()
8 |
9 | function Header({ collapsed, onToggleSide, onLogout }) {
10 |
11 | const handleOk = (e) => {
12 | const key = e.key
13 | if (key === 'logout') {
14 | showConfirm()
15 | } else if (key === 'reset') {
16 | console.log('reset')
17 | } else {
18 | console.error('Checkout Layout/Components/Header.jsx')
19 | }
20 | }
21 |
22 | const showConfirm = () => {
23 | Modal.confirm({
24 | title: '确认退出该账号?',
25 | content: '',
26 | onOk() {
27 | return new Promise((resolve, reject) => {
28 | onLogout(resolve, reject)
29 | }).catch(() => console.log('Oops errors!'))
30 | },
31 | onCancel() {
32 |
33 | },
34 | })
35 | }
36 |
37 | const menu = (
38 |
42 | 修改密码
43 | 退出登录
44 |
45 | )
46 |
47 | return (
48 |
49 |
54 |
55 |
60 |
61 |
62 | )
63 | }
64 |
65 |
66 | export default Header
67 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Layout/Components/Header.pcss:
--------------------------------------------------------------------------------
1 | .trigger {
2 | font-size: 18px;
3 | line-height: 64px;
4 | padding: 0 16px;
5 | cursor: pointer;
6 | transition: color .3s;
7 | }
8 |
9 | .trigger:hover {
10 | color: #108ee9;
11 | }
12 |
13 | .name {
14 | float: right;
15 | padding: 0 16px;
16 | font-size: 14px;
17 | line-height: 64px;
18 | cursor: pointer;
19 | }
20 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Layout/Components/Sider.pcss:
--------------------------------------------------------------------------------
1 | .sider {
2 | position: fixed !important;
3 | height: 100%;
4 | }
5 | .logo {
6 | height: 32px;
7 | background: #333;
8 | border-radius: 6px;
9 | margin: 16px;
10 | }
11 | .title {
12 | color: #ccc;
13 | font-size: 16px;
14 | padding-top: 4px;
15 | text-align: center;
16 | }
17 |
18 | .link,
19 | .link:hover,
20 | .link:focus {
21 | text-decoration: none;
22 | }
23 |
24 | :global {
25 |
26 | #layout .ant-layout-sider-collapsed .anticon {
27 | font-size: 16px;
28 | }
29 |
30 | #layout .ant-menu-submenu-inline > .ant-menu-submenu-title:after {
31 |
32 | }
33 |
34 | #layout .ant-layout-sider-collapsed .nav-text {
35 | display: none;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Layout/action.js:
--------------------------------------------------------------------------------
1 | import {namespace} from '../../redux/actions';
2 |
3 | const UpdateState = namespace('Layout', 'UpdateState')
4 |
5 | export {UpdateState}
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Layout/reduce.js:
--------------------------------------------------------------------------------
1 | import { UpdateState } from './action'
2 | import initialState from './state'
3 |
4 | export default function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return { ...state, ...action.payload }
8 | default:
9 | return state
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Layout/state.js:
--------------------------------------------------------------------------------
1 | import { config } from '../../config'
2 | const { title } = config()
3 |
4 | const state = {
5 | title: title,
6 | collapsed: false,
7 | menus: [],
8 | menusOpenKeys: ['1'],
9 | menusDefaultOpenKeys: ['1'],
10 | menusSelectedKeys: [],
11 | menusDefaultSelectedKeys: []
12 | }
13 |
14 | export default state
15 |
16 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Live/Components/Form.pcss:
--------------------------------------------------------------------------------
1 | .form {
2 | }
3 |
4 | .form :global(.ant-form-item) {
5 | }
6 |
7 | .slider {
8 | margin-bottom: 40px !important;
9 | margin-right: 10% !important;
10 | margin-left: 15% !important;
11 | }
12 |
13 | .hr {
14 | margin-left: 16%;
15 | margin-right: 8%;
16 | margin-bottom: 20px;
17 | border: solid 1px #ccc;
18 | }
19 |
20 | .delete {
21 | cursor: pointer;
22 | position: relative;
23 | top: 4px;
24 | font-size: 24px;
25 | color: #999;
26 | transition: all .3s;
27 | }
28 |
29 | .delete:hover {
30 | color: #777;
31 | }
32 |
33 | .delete[disabled] {
34 | cursor: not-allowed;
35 | opacity: 0.5;
36 | }
37 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Live/Components/FormVideo.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Radio, Form, Button, Input, Icon, Select, Row, Col, Slider, Upload, Checkbox, Modal} from 'antd'
3 | import PicturesWall from '../../../Components/Upload/PicturesWall.jsx'
4 | import styles from './Form.pcss'
5 | import FormStep from './FormStep.jsx'
6 |
7 |
8 | function FormVideo({form, formItemLayout, formIsDone, formVideoUrl, formVideoView, formVideoIntroduction}) {
9 |
10 | return (
11 |
12 |
13 | {form.getFieldDecorator('formIsDone', {
14 | initialValue: formIsDone,
15 | rules: [{required: true, message: '请选择是否完工!'}],
16 | })(
17 |
18 | 是
19 | 否
20 |
21 | )}
22 |
23 |
24 | {form.getFieldDecorator('formVideoUrl', {
25 | initialValue: formVideoUrl,
26 | rules: [{required: true, message: '请选择直播地址!'}],
27 | })(
28 |
29 | )}
30 |
31 |
32 | {form.getFieldDecorator('formVideoView', {
33 | initialValue: formVideoView,
34 | rules: [{required: true, message: '请输入浏览量!'}],
35 | })(
36 |
37 | )}
38 |
39 |
40 | {form.getFieldDecorator('formVideoIntroduction', {
41 | initialValue: formVideoIntroduction,
42 | })(
43 |
44 | )}
45 |
46 |
47 | )
48 | }
49 |
50 | export default FormVideo
51 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Live/Components/TableHeader.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Table, Button} from 'antd'
3 |
4 | function TableHeader({loading, onClick}) {
5 | return (
6 | 新增直播
11 | )
12 | }
13 |
14 | export default TableHeader
15 |
16 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Live/action.js:
--------------------------------------------------------------------------------
1 | import {namespace} from '../../redux/actions';
2 |
3 | const UpdateState = namespace('Live', 'UpdateState')
4 |
5 | export {UpdateState}
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Live/index.pcss:
--------------------------------------------------------------------------------
1 | .form {
2 | }
3 |
4 | .form :global(.ant-form-item) {
5 | width: 240px;
6 | margin-bottom: 20px;
7 | }
8 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Live/reduce.js:
--------------------------------------------------------------------------------
1 | import {UpdateState} from './action'
2 | import initialState from './state'
3 |
4 | export default function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return {...state, ...action.payload}
8 | default:
9 | return state
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Login/Components/Background.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Card} from 'antd'
3 | import Footer from '../../Layout/Components/Footer.jsx'
4 | import styles from './Background.pcss'
5 |
6 | function Background({children, title}) {
7 |
8 | return (
9 |
10 |
11 | {title}
12 | {children}
13 |
14 |
15 |
16 | )
17 | }
18 |
19 | export default Background
20 |
21 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Login/Components/Background.pcss:
--------------------------------------------------------------------------------
1 | .login {
2 | height: 100%;
3 | padding-top: 200px;
4 | background-color: #ececec;
5 | }
6 |
7 | .card {
8 | max-width: 300px;
9 | margin-left: auto;
10 | margin-right: auto;
11 | margin-bottom: 100px;
12 | }
13 |
14 | .title {
15 | text-align: center;
16 | margin-bottom: 20px;
17 | }
18 |
19 | .footer {
20 | margin-top: 40px;
21 | }
22 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Login/Components/Form.pcss:
--------------------------------------------------------------------------------
1 | .form {
2 |
3 | }
4 |
5 | .login-forgot {
6 | float: right;
7 | }
8 |
9 | .login-button {
10 | width: 100%;
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Login/action.js:
--------------------------------------------------------------------------------
1 | import {namespace} from '../../redux/actions';
2 |
3 | const UpdateState = namespace('Login', 'UpdateState')
4 |
5 | export {UpdateState}
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Login/ajax.js:
--------------------------------------------------------------------------------
1 | import ajax from '../../util/ajax'
2 | import { updateState } from './task'
3 |
4 | /**
5 | * Todo Mapping Parameters
6 | *
7 | * @param {object} params
8 | * @param {function} dispatch
9 | */
10 |
11 | const ajaxLogin = (params, dispatch) =>
12 | new Promise((resolve, reject) =>
13 | ajax(
14 | 'website/user/login',
15 | {
16 | username: params.LoginName,
17 | password: params.LoginPassword,
18 | },
19 | reject, reject,
20 | (response) => {
21 | resolve()
22 | return dispatch(updateState({
23 | userId: response.data.id,
24 | userName: response.data.username,
25 | token: response.data.token
26 | }))
27 | }
28 | )
29 | )
30 |
31 | const ajaxLogout = (params, dispatch) =>
32 | new Promise((resolve) =>
33 | ajax(
34 | 'website/user/logout',
35 | {
36 | name: params.LoginName,
37 | password: params.LoginPassword,
38 | },
39 | resolve,
40 | resolve,
41 | (response) => {
42 | return resolve()
43 | }
44 | )
45 | )
46 |
47 | export { ajaxLogin, ajaxLogout }
48 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Login/index.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import connect from 'react-redux/es/connect/connect'
3 | import Background from './Components/Background.jsx'
4 | import Form from './Components/Form.jsx'
5 | import { login } from './task'
6 |
7 | /**
8 | * Todo
9 | * https://www.zhihu.com/#signin
10 | *
11 | */
12 |
13 | function Component({ dispatch, props, app }) {
14 | process.env.NODE_ENV === 'production' || console.log('LoginProps: ', props)
15 | const BackgroundProps = {
16 | title: app.title
17 | }
18 | const FormProps = {
19 | loading: props.LoginLoading,
20 | hasRegister: props.hasRegister,
21 | onSubmit(values) {
22 | dispatch(login(values))
23 | }
24 | }
25 |
26 | return (
27 |
28 |
29 |
30 | )
31 | }
32 |
33 | export default connect(state => {
34 | return {
35 | app: state.app,
36 | props: state.login,
37 | }
38 | })(Component)
39 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Login/reduce.js:
--------------------------------------------------------------------------------
1 | import { UpdateState } from './action'
2 | import initialState from './state'
3 |
4 | export default function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return { ...state, ...action.payload }
8 | default:
9 | return state
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Login/state.js:
--------------------------------------------------------------------------------
1 | const state = {
2 | root: false,
3 | token: '',
4 | userName: '',
5 | userId: '',
6 | LoginName: '',
7 | LoginPassword: '',
8 | LoginRemember: false,
9 | LoginLoading: false,
10 | ResetPhone: '',
11 | ResetCode: '',
12 | ResetPassword: '',
13 | hasForgot: true,
14 | hasRegister: false
15 | }
16 |
17 | export default state
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Navigation/Components/TableHeader.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Table, Button} from 'antd'
3 |
4 | function TableHeader({loading, onClick}) {
5 | return (
6 | 新增导航
11 | )
12 | }
13 |
14 | export default TableHeader
15 |
16 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Navigation/action.js:
--------------------------------------------------------------------------------
1 | import {namespace} from '../../redux/actions';
2 |
3 | const UpdateState = namespace('Navigation', 'UpdateState')
4 |
5 | export {UpdateState}
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Navigation/index.pcss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/Containers/Navigation/index.pcss
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Navigation/reduce.js:
--------------------------------------------------------------------------------
1 | import {UpdateState, ToggleSider} from './action'
2 | import initialState from './state'
3 |
4 | export default function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return {...state, ...action.payload}
8 | default:
9 | return state
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Navigation/state.js:
--------------------------------------------------------------------------------
1 | const state = {
2 | searchName: '',
3 | navTypes: [],
4 | tableData: [],
5 | tableTotals: 0,
6 | tableCurrent: 1,
7 | tablePageSize: 10,
8 | tableLoading: false,
9 | modalLoading: false,
10 | modalAddVisible: false,
11 | modalAddConfirmLoading: false,
12 | modalEditVisible: false,
13 | modalEditConfirmLoading: false,
14 | modalId: '',
15 | modalChannel: undefined,
16 | modalLinkUrl: '',
17 | modalName: '11',
18 | modalSort: '',
19 | modalType: undefined,
20 | buttonAddLoading: false,
21 | buttonSearchLoading: false,
22 | buttonResetLoading: false,
23 | }
24 |
25 | export default state
26 |
27 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/Components/Form.pcss:
--------------------------------------------------------------------------------
1 | .form {}
2 |
3 | .form :global(.ant-form-item) {}
4 |
5 | .slider {
6 | margin-bottom: 40px !important;
7 | margin-right: 10% !important;
8 | margin-left: 15% !important;
9 | }
10 |
11 | .hr {
12 | margin-left: 16%;
13 | margin-right: 8%;
14 | margin-bottom: 20px;
15 | border: solid 1px #ccc;
16 | }
17 |
18 | .hr2 {
19 | margin-left: 8%;
20 | margin-right: 8%;
21 | margin-top: 20px;
22 | border: solid 1px #ccc;
23 | }
24 |
25 | .delete {
26 | cursor: pointer;
27 | position: relative;
28 | top: 4px;
29 | font-size: 24px;
30 | color: #999;
31 | transition: all .3s;
32 | }
33 |
34 | .delete:hover {
35 | color: #777;
36 | }
37 |
38 | .delete[disabled] {
39 | cursor: not-allowed;
40 | opacity: 0.5;
41 | }
42 |
43 | .title{
44 | margin-bottom: 14px;
45 | margin-top: 14px;
46 | }
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/Components/Header.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Row, Col, Button } from 'antd'
3 | import { Link } from 'react-router-dom';
4 | import styles from './Header.pcss'
5 |
6 | function Component({
7 | packageId, status, isReco, headerPreviewDisabled, headerOnlineDisabled, headerRecommendDisabled,
8 | onBack, openIntro, onPreview, toggleStatus, toggleRecommendation
9 | }) {
10 | return (
11 |
12 |
13 |
18 | 套餐效果图说明
19 |
20 |
21 | 预览
26 | toggleStatus(packageId, (Number(status) === 1) ? 2 : 1)}
30 | >{(Number(status) === 1) ? '下线' : '上线'}
31 | toggleRecommendation(packageId, (Number(isReco) === 1) ? 2 : 1)}
35 | >{(Number(isReco) === 1) ? '取消推荐' : '推荐首页'}
36 |
37 |
38 |
39 | )
40 | }
41 |
42 | export default Component
43 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/Components/Header.pcss:
--------------------------------------------------------------------------------
1 | .hr {
2 | margin-left: 0;
3 | margin-right: 0;
4 | margin-top: 50px;
5 | margin-bottom: 20px;
6 | border: solid 1px #ccc;
7 | }
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/Components/Modal.pcss:
--------------------------------------------------------------------------------
1 | .modal {
2 | width: 96% !important;
3 | max-width: 1280px;
4 | }
5 |
6 | .modal img {
7 | width: 100%
8 | }
9 |
10 | .card {
11 | width: 170px;
12 | height: 180px;
13 | }
14 |
15 | .card img {
16 | width: 100%;
17 | }
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/Components/ModalColumns.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Modal, Row, Col, Button, Radio } from 'antd'
3 | import { Link } from 'react-router-dom';
4 | import styles from './Modal.pcss'
5 |
6 | function Component({ id, visible, data, onOK, onCancel, onChange }) {
7 | const handleChange = (e) => {
8 | console.log(e)
9 | onChange(e.target.value)
10 | }
11 |
12 | return (
13 |
20 |
21 |
22 | {data.map((value, index) =>
23 |
24 |
25 | {value.value}
26 | )}
27 |
28 |
29 |
30 | )
31 | }
32 |
33 | export default Component
34 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/Components/ModalIntro.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Modal, Col, Button } from 'antd'
3 | import { Link } from 'react-router-dom';
4 | import styles from './Modal.pcss'
5 | import url from './introduction.png'
6 |
7 | function Component({ visible, onOK }) {
8 | return (
9 |
17 |
18 |
19 | )
20 | }
21 |
22 | export default Component
23 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/Components/TableHeader.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {Table, Button} from 'antd'
3 |
4 | function TableHeader({loading, onClick}) {
5 | return (
6 | 新增套餐
11 | )
12 | }
13 |
14 | export default TableHeader
15 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/Components/index.pcss:
--------------------------------------------------------------------------------
1 | .form {}
2 |
3 | .form :global(.ant-form-item) {
4 | width: 240px;
5 | margin-bottom: 20px;
6 | }
7 |
8 | .hr {
9 | margin-left: 0;
10 | margin-right: 0;
11 | margin-top: 30px;
12 | margin-bottom: 30px;
13 | border: solid 1px #ddd;
14 | // max-width: 480px;
15 | width: 100%;
16 | }
17 |
18 | .button {
19 | margin-left: 10px;
20 | margin-top: 40px;
21 | }
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/Components/introduction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/Containers/Packages/Components/introduction.png
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/action.js:
--------------------------------------------------------------------------------
1 | import { namespace } from '../../redux/actions';
2 |
3 | const UpdateState = namespace('Packages', 'UpdateState')
4 |
5 | export { UpdateState }
6 |
7 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/index.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { Card, Pagination } from 'antd'
3 | import connect from 'react-redux/es/connect/connect'
4 | import { history } from '../../redux/store'
5 | import Breadcrumb from '../../Components/Breadcrumb/index.jsx'
6 | import { notRepeating } from '../../util/util'
7 | import Table from './Components/Table.jsx'
8 | import TableHeader from './Components/TableHeader.jsx'
9 | import {
10 | preview, toggleRecommendation, toggleStatus,
11 | searchLiveList, changeSearchChannel, resetLiveList, changePage, toEdit
12 | } from './task'
13 |
14 | function Component({ dispatch, props, app }) {
15 | process.env.NODE_ENV === 'production' || console.log('PackageProps: ', props, app)
16 |
17 | const breadcrumbProps = {
18 | breadcrumbs: [{
19 | name: '内容管理',
20 | }, {
21 | name: '套餐管理',
22 | }]
23 | }
24 |
25 | const tableHeaderProps = {
26 | onClick() {
27 | history.push('/packages/add')
28 | }
29 | }
30 |
31 | const tableProps = {
32 | dataSource: props.tableData,
33 | loading: props.tableLoading,
34 | toggleStatus(id, status) {
35 | notRepeating(() => dispatch(toggleStatus(id, status)))
36 | },
37 | toggleRecommendation(id, status) {
38 | notRepeating(() => dispatch(toggleRecommendation(id, status)))
39 | },
40 | onEdit(id) {
41 | notRepeating(() => dispatch(toEdit(id)))
42 | },
43 | onPreview(id) {
44 | notRepeating(() => dispatch(preview(id)))
45 | }
46 | }
47 |
48 | return (
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | )
57 | }
58 |
59 | export default connect(state => {
60 | return {
61 | app: state.app,
62 | props: state.packages,
63 | }
64 | })(Component)
65 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/reduce.js:
--------------------------------------------------------------------------------
1 | import {UpdateState} from './action'
2 | import initialState from './state'
3 |
4 | export default function reduce(state = initialState, action = {}) {
5 | switch (action.type) {
6 | case UpdateState:
7 | return {...state, ...action.payload}
8 | default:
9 | return state
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/Containers/Packages/state.js:
--------------------------------------------------------------------------------
1 | const state = {
2 | packageId: '',
3 | columnId: '',
4 | columnsStyleKey: 0,
5 | previewUrl: '',
6 | tableData: [],
7 | tableTotals: 0,
8 | tableCurrent: 1,
9 | tablePageSize: 10,
10 | tableLoading: false,
11 | modalIntroVisible: false,
12 | modalColumsId: undefined,
13 | modalColumnsStyles: [],
14 | modalColumsVisible: false,
15 | headerPreviewDisabled: true,
16 | headerOnlineDisabled: true,
17 | headerRecommendDisabled: true,
18 | formId: false,
19 | formType: undefined,
20 | formStatus: undefined,
21 | formIsReco: undefined,
22 | formName: '',
23 | formSort: '',
24 | formImage: [],
25 | formPrice: '',
26 | formQuota: '',
27 | formSurplus: '',
28 | formSaveLoading: false,
29 | formSaveDisabled: false,
30 | formAddColumnLoading: false,
31 | columnsStyles: [],
32 | columnsStylesItem: {
33 | id: 'formId',
34 | type_id: 'formColumnTypeId',
35 | title: 'title',
36 | okLoading: false,
37 | cancelLoading: false,
38 | buttonOkDisabled: false,
39 | c_name: 'formName',
40 | n_name: 'formNav',
41 | content: 'formIntro',
42 | sort_order: 'formSort',
43 | sub_title: 'formSubTitle',
44 | image_url: 'formVideoImage[0]',
45 | video_url: 'formVideoUrl',
46 | items: [{
47 | menu_name: 'formMenuName',
48 | image_url: 'formImageUrl',
49 | external_link: 'formUrl',
50 | image_intro: 'formIntro',
51 | }]
52 | },
53 | }
54 |
55 | export default state
--------------------------------------------------------------------------------
/apps/react-dashboard/src/__test__/Components/HelloWorld.test.jsx:
--------------------------------------------------------------------------------
1 | import HelloWorld from '../../Components/HelloWorld';
2 | import { rendersWithoutCrashing } from 'yhtml5-test/case';
3 |
4 | // const rendersWithoutCrashing = (name = '', Component) => {
5 | // if (Object.prototype.toString.call(name) !== '[object String]' &&
6 | // Object.prototype.toString.call(name) !== '[object Function]') {
7 | // throw 'The function rendersWithoutCrashing receives [name:string, Component:function] as arguments'
8 | // }
9 | // it(`${name} renders without crashing`, () => {
10 | // const div = document.createElement('div')
11 | // ReactDOM.render( , div)
12 | // })
13 | // }
14 |
15 | rendersWithoutCrashing('Components.HelloWorld', HelloWorld)
16 |
17 |
18 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/__test__/Router.test.js:
--------------------------------------------------------------------------------
1 | import Router from '../Router.jsx';
2 | import { shallow } from 'enzyme';
3 |
4 | it('App Routers tests', () => {
5 | shallow( );
6 | });
--------------------------------------------------------------------------------
/apps/react-dashboard/src/__test__/validator.test.js:
--------------------------------------------------------------------------------
1 | import {
2 | isUndefined,
3 | isNumber,
4 | isFunction,
5 | isArray, isArrayEmpty,
6 | isString, isStringEmpty, isStringNotEmpty,
7 | isObject, isObjectEmpty, isArrayNotEmpty
8 | } from '../util/validator';
9 |
10 | it('util.validator.isUndefined', () => {
11 | const values = [null, NaN, 111, '111', {}, [], () => { },]
12 | values.forEach((value) => {
13 | expect(isUndefined(value)).toEqual(false);
14 | });
15 | expect(isUndefined(undefined)).toEqual(true);
16 | });
17 |
18 | it('util.validator.isNumber', () => {
19 | expect(isNumber(111)).toEqual(true);
20 | });
--------------------------------------------------------------------------------
/apps/react-dashboard/src/global.css:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | transition: all 0.3s;
5 | }
6 |
7 | #root {
8 | height: 100%;
9 | }
10 |
11 | .y-m-t-20 {
12 | margin-top: 20px;
13 | }
14 |
15 | .y-m-t-40 {
16 | margin-top: 40px;
17 | }
18 |
19 | .y-m-t-100 {
20 | margin-top: 100px;
21 | }
22 |
23 | .y-m-b-20 {
24 | margin-bottom: 20px;
25 | }
26 |
27 | .y-m-b-40 {
28 | margin-bottom: 40px;
29 | }
30 |
31 | .y-m-l-10 {
32 | margin-left: 10px;
33 | }
34 |
35 | .y-m-l-20 {
36 | margin-left: 20px;
37 | }
38 |
39 | .test {
40 | transition: all .3s;
41 | }
42 |
43 | .no-select {
44 | user-select: none;
45 | }
46 |
47 | .route-enter {
48 | opacity: 0.01;
49 | }
50 |
51 | .route-enter.route-enter-active {
52 | opacity: 1;
53 | transition: opacity 500ms ease-in;
54 | }
55 |
56 | .route-leave {
57 | opacity: 1;
58 | }
59 |
60 | .route-leave.route-leave-active {
61 | opacity: 0.01;
62 | transition: opacity 300ms ease-in;
63 | }
64 |
65 | .y-card-pagination {
66 | float: right;
67 | margin-bottom: 20px;
68 | margin-top: 10px;
69 | }
70 |
71 | .table-operating {
72 | padding: 4px;
73 | }
74 |
75 | .y-table .ant-table-thead>tr>th,
76 | .y-table .ant-table-tbody>tr>td {
77 | text-align: center !important;
78 | }
79 |
80 | .y-table {
81 | min-height: 200px;
82 | }
83 |
84 | .y-transition-all {
85 | transition: all 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
86 | }
87 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom'
3 | import Router from './Router.jsx'
4 | import './global.css'
5 |
6 | const render = (Components) => {
7 | ReactDOM.render(
8 | // module.hot
9 | // ? (function () {
10 | // const { AppContainer } = require('react-hot-loader')
11 | // return
12 | //
13 | //
14 | // })()
15 | // :
16 |
17 | , document.getElementById('root')
18 | )
19 | }
20 |
21 | render(Router)
22 |
23 | // Hot Module Replacement API
24 | // if (module.hot) {
25 | // module.hot.accept('./Router.jsx', () => {
26 | // render(Router)
27 | // console.clear()
28 | // })
29 | // }
30 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/redux/actions.js:
--------------------------------------------------------------------------------
1 | function namespace(namespace, name, v) {
2 | return (
3 | namespace + '-' + name
4 | )
5 | }
6 |
7 | export {namespace}
8 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/redux/reducers.js:
--------------------------------------------------------------------------------
1 | import app from '../Containers/App/reduce'
2 | import demo from '../Containers/Demo/reduce'
3 | import document from '../Containers/Document/reduce'
4 | import functions from '../Containers/Function/reduce'
5 | import navigation from '../Containers/Navigation/reduce'
6 | import live from '../Containers/Live/reduce'
7 | import login from '../Containers/Login/reduce'
8 | import layout from '../Containers/Layout/reduce'
9 | import packages from '../Containers/Packages/reduce'
10 |
11 | export default {
12 | app,
13 | demo,
14 | document,
15 | layout,
16 | login,
17 | functions,
18 | navigation,
19 | live,
20 | packages
21 | }
22 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/redux/store.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | import thunk from 'redux-thunk'
3 | import {createStore, combineReducers, applyMiddleware} from 'redux'
4 | import {routerReducer, routerMiddleware, push} from 'react-router-redux'
5 | import createHistory from 'history/createHashHistory'
6 | import reducers from './reducers'
7 |
8 | // Create a history of your choosing (we're using a browser history in this case)
9 | const history = createHistory()
10 |
11 | // Build the middleware for intercepting and dispatching navigation actions
12 | // const routerMiddleware = routerMiddleware(history)
13 |
14 | // Add the reducer to your store on the `router` key
15 | // Also apply our middleware for navigating
16 | const store = createStore(
17 | combineReducers({
18 | ...reducers,
19 | router: routerReducer
20 | }),
21 | applyMiddleware(thunk, routerMiddleware(history))
22 | )
23 |
24 | export {store, history}
25 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/static/favicon.ico
--------------------------------------------------------------------------------
/apps/react-dashboard/src/static/img/.yhtml5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/static/img/.yhtml5
--------------------------------------------------------------------------------
/apps/react-dashboard/src/static/yh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/static/yh.png
--------------------------------------------------------------------------------
/apps/react-dashboard/src/static/yhtml5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/react-dashboard/src/static/yhtml5.png
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/ajax.js:
--------------------------------------------------------------------------------
1 | import reqwest from 'reqwest'
2 | import { message } from 'antd'
3 | import { config, getApiUrl } from '../config.js'
4 | import { history } from '../redux/store'
5 | import { getCookie } from './cookie.js'
6 | import { isString, isObject, isFunction } from './validator'
7 | let { cookie, entryUrl } = config()
8 |
9 | function ajax(url, param, fail, error, success) {
10 | // console.clear()
11 | if (!isString(url)) {
12 | return console.warn('ajax url should be a non-empty string')
13 | } else if (!(isObject(param) || isString(param))) {
14 | return console.warn('ajax param should be the object')
15 | } else if (!(isFunction(fail) && isFunction(error) && isFunction(success))) {
16 | return console.warn('ajax callback should be a function')
17 | } else { }
18 | let newParam = {
19 | data: JSON.stringify(param),
20 | token: getCookie(cookie.token)
21 | }
22 | console.warn('ajaxParam-' + url + ': ', newParam)
23 | reqwest({
24 | url: getApiUrl() + '/' + url,
25 | type: 'json',
26 | method: 'get',
27 | data: newParam,
28 | contentType: 'application/json',
29 | error: function (error) {
30 | // setTimeout(() => message.destroy(), 200)
31 | message.error('网络异常, http状态码:' + 500, 3);
32 | console.error(error)
33 | fail()
34 | },
35 | success: function (response) {
36 | // setTimeout(() => message.destroy(), 200)
37 | if (Number(response.code) === 20000) {
38 | success(response)
39 | } else if (Number(response.code) === 50002) {
40 | message.info('当前登录状态已失效,2秒后自动将跳转到登录页...', 3)
41 | setTimeout(() => {
42 | history.push(entryUrl)
43 | }, 2000)
44 | } else {
45 | message.error((response.error.errorMsg) ? response.error.errorMsg : '网络异常')
46 | error()
47 | }
48 | console.warn('ajaxResponse-' + url + ': ', response)
49 | }
50 | })
51 | }
52 |
53 | export default ajax
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/cookie.js:
--------------------------------------------------------------------------------
1 | import {encrypt, decrypted} from './security'
2 |
3 | /**
4 | * set cookie.
5 | *
6 | * Todo: sha1
7 | *
8 | * @param {String} name
9 | * @param {String} value
10 | * @param {number} hour
11 | */
12 |
13 | function setCookie(name, value, hour) {
14 | let currentTime = new Date()
15 | currentTime.setTime(currentTime.getTime() + (hour * 60 * 60 * 1000))
16 | document.cookie = 'token=null'
17 | document.cookie = `${name}=${encrypt(value)};expires=${currentTime.toGMTString()}`
18 | }
19 |
20 | const getCookie = (name) => {
21 | return (new RegExp(name, 'g').test(document.cookie))
22 | ? decrypted(document.cookie.split(name)[1].split("=")[1].split(";")[0])
23 | : false
24 | }
25 | const clearCookie = (name) => {
26 | if (name) {
27 | setCookie(name, '', -1)
28 | } else {
29 | const keys = document.cookie.match(/[^ =;]+(?=\=)/g)
30 | if (keys) {
31 | keys.forEach((key) => setCookie(key, '', -1))
32 | }
33 | }
34 | }
35 |
36 | export {setCookie, getCookie, clearCookie}
37 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/index.js:
--------------------------------------------------------------------------------
1 | // import {notRepeating, downLoad} from './function'
2 |
3 | const ajax = (url, param, fail, error, success) => require.ensure([], require => {
4 | require('./ajax').default(url, param, fail, error, success)
5 | }, 'ajax')
6 |
7 | export {ajax}
8 |
9 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/localStorage.js:
--------------------------------------------------------------------------------
1 | function hasLocalStorage() {
2 | try {
3 | return 'localStorage' in window && window['localStorage'] !== null;
4 | } catch (e) {
5 | return false;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/polyfill.js:
--------------------------------------------------------------------------------
1 | // function isArray() {
2 | // if (!Array.isArray) {
3 | // Array.isArray = function (arg) {
4 | // return Object.prototype.toString.call(arg) === '[object Array]'
5 | // }
6 | // }
7 | // }
8 | //
9 | // export {isArray}
10 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/prototype.js:
--------------------------------------------------------------------------------
1 | // Array.prototype.clone = function () {
2 | // return this.slice(0)
3 | // }
4 | // Array.prototype.clone = function () {
5 | // return [].concat(this)
6 | // }
7 | //
8 | // var prototype = {
9 | // arrayClone: Array.prototype.clone = function () {
10 | // return this.concat()
11 | // }
12 | // }
13 | //
14 | // export {prototype}
15 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/security.js:
--------------------------------------------------------------------------------
1 | const createNonceStr = () => Math.random().toString(36).substr(2, 15)
2 | const createTimestamp = () => String(parseInt(new Date().getTime() / 1000))
3 | const salt = 'zXb1m'
4 |
5 | const encrypt = (value) => createNonceStr() + createTimestamp() + salt + value
6 | const decrypted = (value) => value.split(salt)[1]
7 |
8 | export {encrypt, decrypted, createTimestamp, createNonceStr}
9 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/util.js:
--------------------------------------------------------------------------------
1 | import { config } from '../config'
2 | import { history } from '../redux/store'
3 | import { getCookie } from './cookie'
4 | import { isStringNotEmpty } from './validator'
5 | const { cookie } = config()
6 |
7 | let awaitStatus = true
8 |
9 | const timer = () => new Promise((resolve) => setTimeout(resolve, 1000))
10 |
11 | async function notRepeating(fun) {
12 | if (awaitStatus) {
13 | awaitStatus = false
14 | fun()
15 | await timer()
16 | awaitStatus = true
17 | }
18 | }
19 |
20 | function downLoad(url) {
21 | if (isStringNotEmpty(url)) {
22 | let a = document.createElement('a')
23 | a.href = encodeURI(url)
24 | a.download = 'excel'
25 | a.id = 'downLoad'
26 | a.style.display = 'none'
27 | // a.click()
28 | document.body.appendChild(a)
29 | document.getElementById('downLoad').click()
30 | document.body.removeChild(document.getElementById('downLoad'))
31 | a = null
32 | } else {
33 | console.error('function downLoad url should be a not empty string')
34 | }
35 | }
36 |
37 | function checkToken() {
38 | if (!getCookie(cookie.token) && history.location.pathname !== '/login') {
39 | // 提示信息失效请登录
40 | history.push('/login')
41 | }
42 | }
43 |
44 | export { notRepeating, downLoad, checkToken }
45 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/validator.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Enter JavaScript-style regular expression to display
3 | * https://regexper.com/
4 | * Write and test regular expression
5 | * http://www.regexr.com/
6 | */
7 |
8 | // var is ={
9 | // types : ["Array", "Boolean", "Date", "Number", "Object", "RegExp", "String", "Window", "HTMLDocument"]
10 | // };
11 | // for(var i = 0, c; c = is.types[i ++ ]; ){
12 | // is[c] = (function(type){
13 | // return function(obj){
14 | // return Object.prototype.toString.call(obj) == "[object " + type + "]";
15 | // }
16 | // )(c);
17 | // }
18 |
19 | const isUndefined = (value) => typeof value === 'undefined'
20 | const isNull = (value) => Object.prototype.toString.call(value) === '[object Null]'
21 | const isNumber = (value) => Object.prototype.toString.call(value) === '[object Number]'
22 | const isString = (value) => Object.prototype.toString.call(value) === '[object String]'
23 | const isStringEmpty = (value) => Object.prototype.toString.call(value) === '[object String]' && value === ''
24 | const isStringNotEmpty = (value) => Object.prototype.toString.call(value) === '[object String]' && value !== ''
25 | const isFunction = (value) => Object.prototype.toString.call(value) === '[object Function]'
26 | const isArray = (value) => Object.prototype.toString.call(value) === '[object Array]'
27 | const isArrayEmpty = (value) => Array.isArray(value) && value.length === 0
28 | const isArrayNotEmpty = (value) => Array.isArray(value) && value.length > 0
29 | const isObject = (value) => Object.prototype.toString.call(value) === '[object Object]'
30 | const isObjectEmpty = (value) => Object.prototype.isPrototypeOf(value) === '[object Object]' && Object.keys(value).length === 0
31 |
32 | export {
33 | isNull,
34 | isUndefined,
35 | isNumber,
36 | isFunction,
37 | isArray, isArrayEmpty,
38 | isString, isStringEmpty, isStringNotEmpty,
39 | isObject, isObjectEmpty, isArrayNotEmpty
40 | }
41 |
--------------------------------------------------------------------------------
/apps/react-dashboard/src/util/validator.test.js:
--------------------------------------------------------------------------------
1 | import {
2 | isUndefined,
3 | isNumber,
4 | isFunction,
5 | isArray, isArrayEmpty,
6 | isString, isStringEmpty, isStringNotEmpty,
7 | isObject, isObjectEmpty, isArrayNotEmpty
8 | } from './validator';
9 |
10 | it('util.validator.isUndefined', () => {
11 | const values = [null, NaN, 111, '111', {}, [], () => { },]
12 | values.forEach((value) => {
13 | expect(isUndefined(value)).toEqual(false);
14 | });
15 | expect(isUndefined(undefined)).toEqual(true);
16 | });
17 |
18 | it('util.validator.isNumber', () => {
19 | expect(isNumber(111)).toEqual(true);
20 | });
--------------------------------------------------------------------------------
/apps/vue/build/build.js:
--------------------------------------------------------------------------------
1 | // https://github.com/shelljs/shelljs
2 | require('./check-versions')()
3 | require('shelljs/global')
4 | env.NODE_ENV = 'production'
5 |
6 | var path = require('path')
7 | var config = require('../config/index')
8 | var ora = require('ora')
9 | var webpack = require('webpack')
10 | var webpackConfig = require('./webpack.prod.conf.js')
11 |
12 | console.log(
13 | ' Tip:\n' +
14 | ' Built files are meant to be served over an HTTP server.\n' +
15 | ' Opening index.html over file:// won\'t work.\n'
16 | )
17 |
18 | var spinner = ora('building for production...')
19 | spinner.start()
20 |
21 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory)
22 | rm('-rf', assetsPath)
23 | mkdir('-p', assetsPath)
24 | cp('-R', 'apps/static/*', assetsPath)
25 |
26 | webpack(webpackConfig, function (err, stats) {
27 | spinner.stop()
28 | if (err) throw err
29 | process.stdout.write(stats.toString({
30 | colors: true,
31 | modules: false,
32 | children: false,
33 | chunks: false,
34 | chunkModules: false
35 | }) + '\n')
36 | })
37 |
--------------------------------------------------------------------------------
/apps/vue/build/check-versions.js:
--------------------------------------------------------------------------------
1 | var semver = require('semver')
2 | var chalk = require('chalk')
3 | var packageConfig = require('../../package.json')
4 | var exec = function (cmd) {
5 | return require('child_process')
6 | .execSync(cmd).toString().trim()
7 | }
8 |
9 | var versionRequirements = [
10 | {
11 | name: 'node',
12 | currentVersion: semver.clean(process.version),
13 | versionRequirement: packageConfig.engines.node
14 | },
15 | {
16 | name: 'npm',
17 | currentVersion: exec('npm --version'),
18 | versionRequirement: packageConfig.engines.npm
19 | }
20 | ]
21 |
22 | module.exports = function () {
23 | var warnings = []
24 | for (var i = 0; i < versionRequirements.length; i++) {
25 | var mod = versionRequirements[i]
26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
27 | warnings.push(mod.name + ': ' +
28 | chalk.red(mod.currentVersion) + ' should be ' +
29 | chalk.green(mod.versionRequirement)
30 | )
31 | }
32 | }
33 |
34 | if (warnings.length) {
35 | console.log('')
36 | console.log(chalk.yellow('To use this template, you must update following to modules:'))
37 | console.log()
38 | for (var i = 0; i < warnings.length; i++) {
39 | var warning = warnings[i]
40 | console.log(' ' + warning)
41 | }
42 | console.log()
43 | process.exit(1)
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/apps/vue/build/dev-client.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | require('eventsource-polyfill')
3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
4 |
5 | hotClient.subscribe(function (event) {
6 | if (event.action === 'reload') {
7 | window.location.reload()
8 | }
9 | })
10 |
--------------------------------------------------------------------------------
/apps/vue/build/webpack.dev.conf.js:
--------------------------------------------------------------------------------
1 | var config = require('../config/index')
2 | var webpack = require('webpack')
3 | var merge = require('webpack-merge')
4 | var utils = require('./utils')
5 | var baseWebpackConfig = require('./webpack.base.conf.js')
6 | var HtmlWebpackPlugin = require('html-webpack-plugin')
7 |
8 | // add hot-reload related code to entry chunks
9 | Object.keys(baseWebpackConfig.entry).forEach(function (name) {
10 | baseWebpackConfig.entry[name] = ['./apps/build/dev-client'].concat(baseWebpackConfig.entry[name])
11 | })
12 |
13 | module.exports = merge(baseWebpackConfig, {
14 | module: {
15 | loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
16 | },
17 | // eval-source-map is faster for development
18 | devtool: '#eval-source-map',
19 | plugins: [
20 | new webpack.DefinePlugin({
21 | 'process.env': config.dev.env
22 | }),
23 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
24 | new webpack.optimize.OccurenceOrderPlugin(),
25 | new webpack.HotModuleReplacementPlugin(),
26 | new webpack.NoErrorsPlugin(),
27 | // https://github.com/ampedandwired/html-webpack-plugin
28 | new HtmlWebpackPlugin({
29 | filename: 'index.html',
30 | template: 'apps/src/index.html',
31 | inject: true
32 | })
33 | ]
34 | })
35 |
--------------------------------------------------------------------------------
/apps/vue/config/dev.env.js:
--------------------------------------------------------------------------------
1 | var merge = require('webpack-merge')
2 | var prodEnv = require('./prod.env.js')
3 |
4 | module.exports = merge(prodEnv, {
5 | NODE_ENV: '"development"'
6 | })
7 |
--------------------------------------------------------------------------------
/apps/vue/config/index.js:
--------------------------------------------------------------------------------
1 | // see http://vuejs-templates.github.io/webpack for documentation.
2 | var path = require('path')
3 | var packageConfig = require('../../package.json')
4 |
5 | function getVersionDate() {
6 | var date = new Date();
7 | var year = date.getFullYear();
8 | var month = date.getMonth() + 1;
9 | var day = date.getDate();
10 | var hour = date.getHours();
11 | var minute = date.getMinutes();
12 | var second = date.getSeconds();
13 | return year + '' + month + '' + day + '' + hour + '' + minute + '' + second
14 | }
15 |
16 | const indexVersion = '../dist/v' + packageConfig.version + '-' + getVersionDate() + '/index.html'
17 | const assetsRootVersion = '../dist/v' + packageConfig.version + '-' + getVersionDate()
18 |
19 | module.exports = {
20 | build: {
21 | env: require('./prod.env.js'),
22 | index: path.resolve(__dirname, indexVersion),
23 | assetsRoot: path.resolve(__dirname, assetsRootVersion),
24 | assetsSubDirectory: 'static',
25 | assetsPublicPath: './',
26 | productionSourceMap: true,
27 | // Gzip off by default as many popular static hosts such as
28 | // Surge or Netlify already gzip all static assets for you.
29 | // Before setting to `true`, make sure to:
30 | // npm install --save-dev compression-webpack-plugin
31 | productionGzip: false,
32 | productionGzipExtensions: ['js', 'css']
33 | },
34 | dev: {
35 | env: require('./dev.env.js'),
36 | port: 8080,
37 | assetsSubDirectory: 'static',
38 | assetsPublicPath: '/',
39 | proxyTable: {},
40 | // CSS Sourcemaps off by default because relative paths are "buggy"
41 | // with this option, according to the CSS-Loader README
42 | // (https://github.com/webpack/css-loader#sourcemaps)
43 | // In our experience, they generally work as expected,
44 | // just be aware of this issue when enabling this option.
45 | cssSourceMap: false
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/apps/vue/config/prod.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"'
3 | }
4 |
--------------------------------------------------------------------------------
/apps/vue/config/test.env.js:
--------------------------------------------------------------------------------
1 | var merge = require('webpack-merge')
2 | var devEnv = require('./dev.env.js')
3 |
4 | module.exports = merge(devEnv, {
5 | NODE_ENV: '"testing"'
6 | })
7 |
--------------------------------------------------------------------------------
/apps/vue/dist/v1.0.0-2016125204718/index.html:
--------------------------------------------------------------------------------
1 | YHTML5
--------------------------------------------------------------------------------
/apps/vue/dist/v1.0.0-2016125204718/static/css/app.df8dcf776905a9f955261c5def67c48d.css:
--------------------------------------------------------------------------------
1 | #app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:60px}h1[data-v-c4b8dffe],h2[data-v-c4b8dffe]{font-weight:400}ul[data-v-c4b8dffe]{list-style-type:none;padding:0}li[data-v-c4b8dffe]{display:inline-block;margin:0 10px}a[data-v-c4b8dffe]{color:#42b983}
2 | /*# sourceMappingURL=apps.df8dcf776905a9f955261c5def67c48d.css.map*/
--------------------------------------------------------------------------------
/apps/vue/dist/v1.0.0-2016125204718/static/css/app.df8dcf776905a9f955261c5def67c48d.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///webpack:///app/src/App.vue","webpack:///webpack:///app/src/components/Hello.vue"],"names":[],"mappings":"AACA,KACE,8CACA,mCACA,kCACA,kBACA,cACA,eAAiB,CCNnB,wCACE,eAAoB,CAEtB,oBACE,qBACA,SAAW,CAEb,oBACE,qBACA,aAAe,CAEjB,mBACE,aAAe","file":"static/css/app.df8dcf776905a9f955261c5def67c48d.css","sourcesContent":["\n#app {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-align: center;\n color: #2c3e50;\n margin-top: 60px;\n}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///app/src/App.vue","\nh1[data-v-c4b8dffe], h2[data-v-c4b8dffe] {\n font-weight: normal;\n}\nul[data-v-c4b8dffe] {\n list-style-type: none;\n padding: 0;\n}\nli[data-v-c4b8dffe] {\n display: inline-block;\n margin: 0 10px;\n}\na[data-v-c4b8dffe] {\n color: #42b983;\n}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///app/src/components/Hello.vue"],"sourceRoot":""}
--------------------------------------------------------------------------------
/apps/vue/dist/v1.0.0-2016125204718/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/vue/dist/v1.0.0-2016125204718/static/favicon.ico
--------------------------------------------------------------------------------
/apps/vue/dist/v1.0.0-2016125204718/static/img/icon/bootstrap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/vue/dist/v1.0.0-2016125204718/static/img/icon/bootstrap.png
--------------------------------------------------------------------------------
/apps/vue/dist/v1.0.0-2016125204718/static/img/logo.82b9c7a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/vue/dist/v1.0.0-2016125204718/static/img/logo.82b9c7a.png
--------------------------------------------------------------------------------
/apps/vue/dist/v1.0.0-2016125204718/static/js/manifest.4804dd64a6f48c93a79f.js:
--------------------------------------------------------------------------------
1 | !function(e){function t(n){if(a[n])return a[n].exports;var r=a[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n=window.webpackJsonp;window.webpackJsonp=function(c,o){for(var p,s,l=0,i=[];l
2 |
3 |
{{ msg }}
4 |
Essential Links
5 |
13 |
Ecosystem
14 |
20 |
21 |
22 |
23 |
33 |
34 |
35 |
54 |
--------------------------------------------------------------------------------
/apps/vue/src/components/search.vue:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
42 |
43 |
48 |
--------------------------------------------------------------------------------
/apps/vue/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | YHTML5
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/apps/vue/src/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import router from './router/router'
3 | import Index from './router/home.vue'
4 |
5 | /* eslint-disable no-new */
6 | new Vue({
7 | el: '#apps',
8 | router,
9 | template: ' ',
10 | components: {Index}
11 | }).$mount('#apps')
12 |
--------------------------------------------------------------------------------
/apps/vue/src/router/home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Go to Foo
12 | Go to Bar
13 |
14 | user center
15 | /user/foo
16 | /user/foo/profile
17 | /user/foo/posts
18 | Details
19 | bare
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
44 |
55 |
--------------------------------------------------------------------------------
/apps/vue/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/vue/static/.gitkeep
--------------------------------------------------------------------------------
/apps/vue/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/vue/static/favicon.ico
--------------------------------------------------------------------------------
/apps/vue/static/img/icon/bootstrap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/vue/static/img/icon/bootstrap.png
--------------------------------------------------------------------------------
/apps/vue/test/e2e/custom-assertions/elementCount.js:
--------------------------------------------------------------------------------
1 | // A custom Nightwatch assertion.
2 | // the name of the method is the filename.
3 | // can be used in tests like this:
4 | //
5 | // browser.assert.elementCount(selector, count)
6 | //
7 | // for how to write custom assertions see
8 | // http://nightwatchjs.org/guide#writing-custom-assertions
9 | exports.assertion = function (selector, count) {
10 | this.message = 'Testing if element <' + selector + '> has count: ' + count
11 | this.expected = count
12 | this.pass = function (val) {
13 | return val === this.expected
14 | }
15 | this.value = function (res) {
16 | return res.value
17 | }
18 | this.command = function (cb) {
19 | var self = this
20 | return this.api.execute(function (selector) {
21 | return document.querySelectorAll(selector).length
22 | }, [selector], function (res) {
23 | cb.call(self, res)
24 | })
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/apps/vue/test/e2e/nightwatch.conf.js:
--------------------------------------------------------------------------------
1 | require('babel-register')
2 | var config = require('../../config/index')
3 |
4 | // http://nightwatchjs.org/guide#settings-file
5 | module.exports = {
6 | "src_folders": ["apps/test/e2e/specs"],
7 | "output_folder": "apps/test/e2e/reports",
8 | "custom_assertions_path": ["apps/test/e2e/custom-assertions"],
9 |
10 | "selenium": {
11 | "start_process": true,
12 | "server_path": "node_modules/selenium-server/lib/runner/selenium-server-standalone-2.53.1.jar",
13 | "host": "127.0.0.1",
14 | "port": 4444,
15 | "cli_args": {
16 | "webdriver.chrome.driver": require('chromedriver').path
17 | }
18 | },
19 |
20 | "test_settings": {
21 | "default": {
22 | "selenium_port": 4444,
23 | "selenium_host": "localhost",
24 | "silent": true,
25 | "globals": {
26 | "devServerURL": "http://localhost:" + (process.env.PORT || config.dev.port)
27 | }
28 | },
29 |
30 | "chrome": {
31 | "desiredCapabilities": {
32 | "browserName": "chrome",
33 | "javascriptEnabled": true,
34 | "acceptSslCerts": true
35 | }
36 | },
37 |
38 | "firefox": {
39 | "desiredCapabilities": {
40 | "browserName": "firefox",
41 | "javascriptEnabled": true,
42 | "acceptSslCerts": true
43 | }
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/apps/vue/test/e2e/reports/CHROME_54.0.2840.98_MAC_test.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/apps/vue/test/e2e/runner.js:
--------------------------------------------------------------------------------
1 | // 1. start the dev server using production config
2 | process.env.NODE_ENV = 'testing'
3 | var server = require('../../build/dev-server.js')
4 |
5 | // 2. run the nightwatch test suite against it
6 | // to run in additional browsers:
7 | // 1. add an entry in test/e2e/nightwatch.conf.json under "test_settings"
8 | // 2. add it to the --env flag below
9 | // or override the environment flag, for example: `npm run e2e -- --env chrome,firefox`
10 | // For more information on Nightwatch's config file, see
11 | // http://nightwatchjs.org/guide#settings-file
12 | var opts = process.argv.slice(2)
13 | if (opts.indexOf('--config') === -1) {
14 | opts = opts.concat(['--config', 'apps/test/e2e/nightwatch.conf.js'])
15 | }
16 | if (opts.indexOf('--env') === -1) {
17 | opts = opts.concat(['--env', 'chrome'])
18 | }
19 |
20 | var spawn = require('cross-spawn')
21 | var runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' })
22 |
23 | runner.on('exit', function (code) {
24 | server.close()
25 | process.exit(code)
26 | })
27 |
28 | runner.on('error', function (err) {
29 | server.close()
30 | throw err
31 | })
32 |
--------------------------------------------------------------------------------
/apps/vue/test/e2e/specs/test.js:
--------------------------------------------------------------------------------
1 | // For authoring Nightwatch tests, see
2 | // http://nightwatchjs.org/guide#usage
3 |
4 | module.exports = {
5 | 'default e2e tests': function (browser) {
6 | // automatically uses dev Server port from /config.index.js
7 | // default: http://localhost:8080
8 | // see nightwatch.conf.js
9 | const devServer = browser.globals.devServerURL
10 |
11 | browser
12 | .url(devServer)
13 | .waitForElementVisible('#apps', 5000)
14 | .assert.elementPresent('.hello')
15 | .assert.containsText('h1', 'Welcome to Your Vue.js App')
16 | .assert.elementCount('img', 1)
17 | .end()
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/apps/vue/test/unit/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "mocha": true
4 | },
5 | "globals": {
6 | "expect": true,
7 | "sinon": true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/apps/vue/test/unit/coverage/lcov-report/prettify.css:
--------------------------------------------------------------------------------
1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
2 |
--------------------------------------------------------------------------------
/apps/vue/test/unit/coverage/lcov-report/sort-arrow-sprite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/apps/vue/test/unit/coverage/lcov-report/sort-arrow-sprite.png
--------------------------------------------------------------------------------
/apps/vue/test/unit/coverage/lcov.info:
--------------------------------------------------------------------------------
1 | TN:
2 | SF:/Users/yhtml5/projects/github/YHTML5-Seed/app/src/components/Hello.vue
3 | FN:8,data
4 | FNF:1
5 | FNH:1
6 | FNDA:1,data
7 | DA:0,1
8 | DA:27,1
9 | LF:2
10 | LH:2
11 | BRF:0
12 | BRH:0
13 | end_of_record
14 | TN:
15 | SF:/Users/yhtml5/projects/github/YHTML5-Seed/app/src/App.vue
16 | FN:11,_interopRequireDefault
17 | FNF:1
18 | FNH:1
19 | FNDA:1,_interopRequireDefault
20 | DA:0,1
21 | DA:28,1
22 | LF:2
23 | LH:2
24 | BRDA:11,1,0,0
25 | BRDA:11,1,1,1
26 | BRDA:11,2,0,1
27 | BRDA:11,2,1,1
28 | BRF:4
29 | BRH:4
30 | end_of_record
31 | TN:
32 | SF:/Users/yhtml5/projects/github/YHTML5-Seed/app/src/router/router.js
33 | FN:15,_interopRequireDefault
34 | FNF:1
35 | FNH:1
36 | FNDA:2,_interopRequireDefault
37 | DA:0,2
38 | DA:1,1
39 | DA:2,1
40 | DA:5,1
41 | DA:8,1
42 | DA:11,1
43 | DA:14,1
44 | DA:17,1
45 | DA:20,1
46 | DA:23,1
47 | DA:31,1
48 | DA:34,1
49 | DA:35,1
50 | DA:36,1
51 | LF:14
52 | LH:14
53 | BRDA:15,1,0,0
54 | BRDA:15,1,1,2
55 | BRDA:15,2,0,2
56 | BRDA:15,2,1,2
57 | BRF:4
58 | BRH:4
59 | end_of_record
60 |
--------------------------------------------------------------------------------
/apps/vue/test/unit/index.js:
--------------------------------------------------------------------------------
1 | // Polyfill fn.bind() for PhantomJS
2 | /* eslint-disable no-extend-native */
3 | Function.prototype.bind = require('function-bind')
4 |
5 | // require all test files (files that ends with .spec.js)
6 | const testsContext = require.context('./specs', true, /\.spec$/)
7 | testsContext.keys().forEach(testsContext)
8 |
9 | // require all src files except main.js for coverage.
10 | // you can also change this to match only the subset of files that
11 | // you want coverage for.
12 | const srcContext = require.context('../../src', true, /^\.\/(?!main(\.js)?$)/)
13 | srcContext.keys().forEach(srcContext)
14 |
--------------------------------------------------------------------------------
/apps/vue/test/unit/specs/Hello.spec.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Hello from 'src/components/Hello'
3 |
4 | describe('Hello.vue', () => {
5 | it('should render correct contents', () => {
6 | const vm = new Vue({
7 | el: document.createElement('div'),
8 | render: (h) => h(Hello)
9 | })
10 | expect(vm.$el.querySelector('.hello h1').textContent)
11 | .to.equal('Welcome to Your Vue.js App')
12 | })
13 | })
14 |
--------------------------------------------------------------------------------
/desigin/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/desigin/favicon.ico
--------------------------------------------------------------------------------
/desigin/yh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/desigin/yh.png
--------------------------------------------------------------------------------
/desigin/yhtml5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/desigin/yhtml5.png
--------------------------------------------------------------------------------
/exmaple/.yhtml5:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/exmaple/.yhtml5
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "yhtml5-seed",
3 | "version": "1.1.4",
4 | "author": "yhtml5 <1417376255@qq.com>",
5 | "description": "The web's scaffolding tool for modern webapps",
6 | "main": "app/index.js",
7 | "license": "MIT",
8 | "repository": "git@github.com:yhtml5/YHTML5-Seed.git",
9 | "keywords": [
10 | "component",
11 | "framework",
12 | "frontend",
13 | "mobile",
14 | "react",
15 | "redux",
16 | "scaffold",
17 | "vue",
18 | "web",
19 | "webpack",
20 | "weui"
21 | ],
22 | "peerDependencies": {},
23 | "dependencies": {
24 | "antd-mobile": "^1.6.0",
25 | "lodash": "^4.17.4",
26 | "moment": "^2.17.1"
27 | },
28 | "devDependencies": {
29 | },
30 | "engines": {
31 | "node": ">= 6.0.0",
32 | "npm": ">= 3.0.0"
33 | },
34 | "scripts": {
35 | "git": "clear && git status && git add -A && git commit -m",
36 | "postgit": "git pull && git push && git push origin dev:master",
37 | "update": "rimraf site && cd site/static && mkdir vendors && cp CNAME site/"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/problems.md:
--------------------------------------------------------------------------------
1 | # Problems
2 |
3 | ### Production
4 | - [x] 服务管理表格,新增子服务,页面交互?
5 | - [x] 字段描述不清晰,demo:产品文档中字段为交易编号,接口返回没有这个字段,希望给个备注
6 |
7 | ### Ant design components
8 | - [ ] How to use breadcrumb with router
9 | - [ ] Menu only double click that can render active style
10 | - [ ] How to send and receive data and correctly render in the component
11 | - [ ] How to use DataPicker and moment.js
12 |
13 | ### Technology stack
14 | - [ ] How to learn react technology stack step by step
15 | - [ ] How to use qs send parameter and request data
16 | - [x] What's form data,request payload,query string parameters in HTTP [blog]
17 | * step1: HTTP params `query string parameters`
18 | * step2: parsed `data:{"bill_id":1002}`
19 | * step3: source `data=%7B%22bill_id%22%3A1002%7D`
20 | * step4: code `stringify({data: JSON.stringify({bill_id: payload.currentItem.number}),token: 111111})`
21 | - [ ] Send data twice when use reqwest
22 | - [ ] How to exchange format between url params, json string and json data
23 | - [ ] How to solve cross-domain problems
24 | * set cross-allow in the server
25 | * jsonp, how to use jsonp
26 | - [ ] The basis for handling the data flow is object manipulation
27 | * Number,String,Date,Array,Boolean,Math,RegExp
28 | * String, object, array, url parameter conversion between each other
29 | - [ ] 优化搜索时间判断
30 |
31 | ### New ideas
32 | - [ ] Create a Mortgage Calculator component
33 | - [ ] Change left nav width and hide text when screen width small then 960px
34 |
35 | ### Incomplete module
36 | - [ ] 导出报表 Payment.Search
37 | - [ ] 服务管理: 新增服务、新增子服务、编辑服务; ManageService
38 | - [ ] 上传模块
39 | - [ ] login system
40 |
41 | ### bugs
42 | - [ ] report export handle error result
43 | - [ ] 每次重新打开浏览器
44 | - [ ] style-loader, post-loader, 不要内嵌css
45 |
46 |
47 |
48 | [blog]:http://www.cnblogs.com/hsp-blog/p/5919877.html
49 |
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/yhtml5/yhtml5-seed/0dfb24d0a322ecdc6ee4d3f68d63b950269a453a/server/package.json
--------------------------------------------------------------------------------