');
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/view-myBonus/agreement/signature.html:
--------------------------------------------------------------------------------
1 |
2 |
6 |
建议横向手绘,以保证签名完整清晰
7 |
8 |
9 |
10 |
11 |
清除
12 |
13 |
--------------------------------------------------------------------------------
/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/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/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/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/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/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/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/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/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/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/modal/invalid.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/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/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/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/__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/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/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/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/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/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/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/withdrawals/accountList.html:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
{{account.accountName}}
13 |
{{account.accountNum}}
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/apps/fis3/pages/modal/simple.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
商家未开启收款,请联系商家开启!
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/apps/fis3/view-myBonus/authentication/actionsheet.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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/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
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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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/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/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/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/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/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/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/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/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/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/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/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/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/pages/banner/index.html:
--------------------------------------------------------------------------------
1 |
28 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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/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/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/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/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/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/fis3/pages/start/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/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/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/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/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/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/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/vue/dist/v1.0.0-2016125204718/index.html:
--------------------------------------------------------------------------------
1 | YHTML5
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/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/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/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/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/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/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/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/fis3/pages/modal/danger.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
8 |
9 |
如未正确填写备注内容,请在付款成功后,进行提货!
10 |
11 |
15 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/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/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/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/fis3/view-myBonus/record/recordType.html:
--------------------------------------------------------------------------------
1 |