├── src ├── icons │ ├── iconfont.js │ ├── index.js │ └── svg │ │ ├── icon-quanxian.svg │ │ ├── icon-shangcheng.svg │ │ ├── icon-caidan.svg │ │ ├── icon-zhibo.svg │ │ ├── icon-kecheng.svg │ │ ├── icon-jiaowu.svg │ │ ├── icon-shouye.svg │ │ └── icon-zhanghu.svg ├── router │ ├── import-production.js │ └── import-development.js ├── assets │ ├── img │ │ ├── car.png │ │ ├── deal.png │ │ ├── line.png │ │ ├── time.png │ │ ├── address.png │ │ ├── alpay.png │ │ ├── avatar.png │ │ ├── buyer.png │ │ ├── icons.png │ │ ├── invoice.png │ │ ├── message.png │ │ ├── remarks.png │ │ ├── revise.png │ │ ├── userImg.jpg │ │ ├── visit.png │ │ ├── bitmap@2x.png │ │ ├── buyer-img.png │ │ ├── icon_pdf.png │ │ ├── login-bg.png │ │ ├── unionpay.png │ │ ├── weixinpay.png │ │ ├── base_z36574a.png │ │ ├── emptyPic │ │ │ ├── 404.png │ │ │ ├── cart-empty.png │ │ │ ├── not-found.png │ │ │ ├── address-empty.png │ │ │ ├── collect-empty.png │ │ │ ├── coupon-empty.png │ │ │ ├── loading-fail.png │ │ │ ├── order-empty.png │ │ │ └── search-empty.png │ │ ├── icon-pay-wx.png │ │ ├── login-logo.png │ │ ├── notebook@3x.png │ │ ├── pay-success.png │ │ ├── pom-pom@3x.png │ │ ├── icon_customer.png │ │ ├── index_z354723.png │ │ ├── protractor@3x.png │ │ ├── icon-pay-school.png │ │ ├── icon_service@2x.png │ │ ├── login_illustration.png │ │ ├── bg_mobile_foot_default2968da.png │ │ ├── bg_mobile_head_default2968da.png │ │ └── message.svg │ └── scss │ │ ├── wechat │ │ └── index.scss │ │ ├── index.scss │ │ └── _variables.scss ├── components │ ├── v-calendar │ │ ├── utils │ │ │ ├── defaults │ │ │ │ ├── screens.json │ │ │ │ ├── touch.json │ │ │ │ ├── masks.json │ │ │ │ └── index.js │ │ │ ├── mixins │ │ │ │ ├── index.js │ │ │ │ ├── safeScopedSlot.js │ │ │ │ └── child.js │ │ │ ├── index.js │ │ │ ├── setup.js │ │ │ ├── buildMediaQuery.js │ │ │ ├── _.js │ │ │ ├── attributeStore.js │ │ │ ├── screens.js │ │ │ └── popovers.js │ │ ├── components │ │ │ ├── index.js │ │ │ ├── SvgIcon.vue │ │ │ ├── TimeSelect.vue │ │ │ └── CustomTransition.vue │ │ └── lib.js │ ├── icon-svg │ │ └── index.vue │ ├── pic-upload │ │ └── index.vue │ ├── pagination.vue │ └── img-upload │ │ └── index.vue ├── element-ui-theme │ └── fonts │ │ ├── element-icons.ttf │ │ └── element-icons.woff ├── views │ ├── common │ │ ├── home.vue │ │ ├── home copy.vue │ │ └── 404.vue │ ├── store │ │ ├── about.vue │ │ └── css │ │ │ └── uc-order.css │ ├── modules │ │ ├── corp │ │ │ ├── pset │ │ │ │ ├── base-config.vue │ │ │ │ ├── quick-config.vue │ │ │ │ ├── wx-config.vue │ │ │ │ └── oss-config.vue │ │ │ └── log.vue │ │ ├── user │ │ │ └── meal.vue │ │ ├── teacher │ │ │ └── live.vue │ │ └── edu │ │ │ ├── distr-add-or-update.vue │ │ │ └── distr.vue │ ├── college │ │ └── pay-success.vue │ ├── headmaster │ │ ├── article-detail.vue │ │ └── notice-detail.vue │ └── main-sidebar-sub-menu.vue ├── store │ ├── modules │ │ ├── cartNumber.js │ │ ├── user.js │ │ ├── prod.js │ │ └── common.js │ └── index.js ├── utils │ ├── constant.js │ ├── validate.js │ ├── addr.js │ └── pageUtil.js ├── App.vue ├── crud │ ├── corp │ │ ├── area.js │ │ ├── shortmsg.js │ │ ├── role.js │ │ ├── config.js │ │ ├── log.js │ │ └── user.js │ ├── basis │ │ ├── job.js │ │ ├── school.js │ │ └── staff.js │ ├── prod │ │ ├── spec.js │ │ ├── transport.js │ │ ├── prodTag.js │ │ ├── prodComm.js │ │ ├── course-select.js │ │ ├── prodList.js │ │ └── indexImg.js │ ├── edu │ │ ├── distr.js │ │ ├── distr-detail.js │ │ └── course.js │ ├── tenant │ │ └── corp.js │ └── user │ │ └── balance.js ├── i18n │ └── i18n.js └── main.js ├── test ├── unit │ ├── setup.js │ ├── .eslintrc │ ├── specs │ │ └── HelloWorld.spec.js │ └── jest.conf.js └── e2e │ ├── specs │ └── test.js │ ├── custom-assertions │ └── elementCount.js │ ├── nightwatch.conf.js │ └── runner.js ├── .eslintignore ├── config ├── prod.env.js ├── test.env.js └── dev.env.js ├── screenshots ├── IMG_1.png ├── IMG_2.png ├── IMG_3.png ├── IMG_4.png ├── IMG_5.png ├── IMG_6.png ├── IMG_7.png ├── IMG_8.png ├── IMG_9.png └── IMG_10.png ├── static ├── doctype │ └── pdf.png ├── plugins │ └── tinymce.4.9.4 │ │ ├── plugins │ │ ├── help │ │ │ ├── img │ │ │ │ └── logo.png │ │ │ └── index.js │ │ ├── emoticons │ │ │ ├── img │ │ │ │ ├── smiley-cool.gif │ │ │ │ ├── smiley-cry.gif │ │ │ │ ├── smiley-kiss.gif │ │ │ │ ├── smiley-wink.gif │ │ │ │ ├── smiley-yell.gif │ │ │ │ ├── smiley-frown.gif │ │ │ │ ├── smiley-sealed.gif │ │ │ │ ├── smiley-smile.gif │ │ │ │ ├── smiley-innocent.gif │ │ │ │ ├── smiley-laughing.gif │ │ │ │ ├── smiley-surprised.gif │ │ │ │ ├── smiley-undecided.gif │ │ │ │ ├── smiley-embarassed.gif │ │ │ │ ├── smiley-money-mouth.gif │ │ │ │ ├── smiley-tongue-out.gif │ │ │ │ └── smiley-foot-in-mouth.gif │ │ │ ├── index.js │ │ │ ├── plugin.min.js │ │ │ └── plugin.js │ │ ├── hr │ │ │ ├── index.js │ │ │ ├── plugin.min.js │ │ │ └── plugin.js │ │ ├── toc │ │ │ └── index.js │ │ ├── code │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── link │ │ │ └── index.js │ │ ├── save │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── anchor │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── bbcode │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── image │ │ │ └── index.js │ │ ├── lists │ │ │ └── index.js │ │ ├── media │ │ │ └── index.js │ │ ├── paste │ │ │ └── index.js │ │ ├── print │ │ │ ├── index.js │ │ │ ├── plugin.min.js │ │ │ └── plugin.js │ │ ├── table │ │ │ └── index.js │ │ ├── advlist │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── charmap │ │ │ └── index.js │ │ ├── preview │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── autolink │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── autosave │ │ │ └── index.js │ │ ├── fullpage │ │ │ └── index.js │ │ ├── tabfocus │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── template │ │ │ └── index.js │ │ ├── importcss │ │ │ └── index.js │ │ ├── pagebreak │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── textcolor │ │ │ └── index.js │ │ ├── wordcount │ │ │ └── index.js │ │ ├── autoresize │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── codesample │ │ │ └── index.js │ │ ├── colorpicker │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── contextmenu │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── fullscreen │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── imagetools │ │ │ └── index.js │ │ ├── nonbreaking │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── noneditable │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── textpattern │ │ │ └── index.js │ │ ├── visualchars │ │ │ └── index.js │ │ ├── legacyoutput │ │ │ └── index.js │ │ ├── spellchecker │ │ │ └── index.js │ │ ├── visualblocks │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── searchreplace │ │ │ └── index.js │ │ ├── directionality │ │ │ ├── index.js │ │ │ ├── plugin.min.js │ │ │ └── plugin.js │ │ └── insertdatetime │ │ │ ├── index.js │ │ │ └── plugin.min.js │ │ ├── skins │ │ └── lightgray │ │ │ ├── img │ │ │ ├── trans.gif │ │ │ ├── anchor.gif │ │ │ ├── loader.gif │ │ │ └── object.gif │ │ │ ├── fonts │ │ │ ├── tinymce.eot │ │ │ ├── tinymce.ttf │ │ │ ├── tinymce.woff │ │ │ ├── tinymce-small.eot │ │ │ ├── tinymce-small.ttf │ │ │ ├── tinymce-mobile.woff │ │ │ └── tinymce-small.woff │ │ │ └── content.mobile.min.css │ │ └── themes │ │ ├── inlite │ │ └── index.js │ │ ├── mobile │ │ └── index.js │ │ └── modern │ │ └── index.js └── config │ ├── index.js │ ├── index-dev.js │ └── index-prod.js ├── .editorconfig ├── .postcssrc.js ├── .gitignore ├── .babelrc ├── .prettierrc ├── .eslintrc.js ├── LICENSE ├── README.md └── index.html /src/icons/iconfont.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/unit/setup.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | 3 | Vue.config.productionTip = false 4 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /config/ 3 | /dist/ 4 | /*.js 5 | /test/unit/coverage/ 6 | /src/ 7 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /src/router/import-production.js: -------------------------------------------------------------------------------- 1 | module.exports = file => () => import('@/views/' + file + '.vue') 2 | -------------------------------------------------------------------------------- /screenshots/IMG_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_1.png -------------------------------------------------------------------------------- /screenshots/IMG_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_2.png -------------------------------------------------------------------------------- /screenshots/IMG_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_3.png -------------------------------------------------------------------------------- /screenshots/IMG_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_4.png -------------------------------------------------------------------------------- /screenshots/IMG_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_5.png -------------------------------------------------------------------------------- /screenshots/IMG_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_6.png -------------------------------------------------------------------------------- /screenshots/IMG_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_7.png -------------------------------------------------------------------------------- /screenshots/IMG_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_8.png -------------------------------------------------------------------------------- /screenshots/IMG_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_9.png -------------------------------------------------------------------------------- /src/router/import-development.js: -------------------------------------------------------------------------------- 1 | module.exports = file => require('@/views/' + file + '.vue').default 2 | -------------------------------------------------------------------------------- /test/unit/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "jest": true 4 | }, 5 | "globals": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /screenshots/IMG_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/screenshots/IMG_10.png -------------------------------------------------------------------------------- /src/assets/img/car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/car.png -------------------------------------------------------------------------------- /src/assets/img/deal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/deal.png -------------------------------------------------------------------------------- /src/assets/img/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/line.png -------------------------------------------------------------------------------- /src/assets/img/time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/time.png -------------------------------------------------------------------------------- /static/doctype/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/doctype/pdf.png -------------------------------------------------------------------------------- /src/assets/img/address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/address.png -------------------------------------------------------------------------------- /src/assets/img/alpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/alpay.png -------------------------------------------------------------------------------- /src/assets/img/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/avatar.png -------------------------------------------------------------------------------- /src/assets/img/buyer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/buyer.png -------------------------------------------------------------------------------- /src/assets/img/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/icons.png -------------------------------------------------------------------------------- /src/assets/img/invoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/invoice.png -------------------------------------------------------------------------------- /src/assets/img/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/message.png -------------------------------------------------------------------------------- /src/assets/img/remarks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/remarks.png -------------------------------------------------------------------------------- /src/assets/img/revise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/revise.png -------------------------------------------------------------------------------- /src/assets/img/userImg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/userImg.jpg -------------------------------------------------------------------------------- /src/assets/img/visit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/visit.png -------------------------------------------------------------------------------- /src/assets/img/bitmap@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/bitmap@2x.png -------------------------------------------------------------------------------- /src/assets/img/buyer-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/buyer-img.png -------------------------------------------------------------------------------- /src/assets/img/icon_pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/icon_pdf.png -------------------------------------------------------------------------------- /src/assets/img/login-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/login-bg.png -------------------------------------------------------------------------------- /src/assets/img/unionpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/unionpay.png -------------------------------------------------------------------------------- /src/assets/img/weixinpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/weixinpay.png -------------------------------------------------------------------------------- /src/assets/img/base_z36574a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/base_z36574a.png -------------------------------------------------------------------------------- /src/assets/img/emptyPic/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/emptyPic/404.png -------------------------------------------------------------------------------- /src/assets/img/icon-pay-wx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/icon-pay-wx.png -------------------------------------------------------------------------------- /src/assets/img/login-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/login-logo.png -------------------------------------------------------------------------------- /src/assets/img/notebook@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/notebook@3x.png -------------------------------------------------------------------------------- /src/assets/img/pay-success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/pay-success.png -------------------------------------------------------------------------------- /src/assets/img/pom-pom@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/pom-pom@3x.png -------------------------------------------------------------------------------- /src/assets/img/icon_customer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/icon_customer.png -------------------------------------------------------------------------------- /src/assets/img/index_z354723.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/index_z354723.png -------------------------------------------------------------------------------- /src/assets/img/protractor@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/protractor@3x.png -------------------------------------------------------------------------------- /src/assets/img/icon-pay-school.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/icon-pay-school.png -------------------------------------------------------------------------------- /src/assets/img/icon_service@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/icon_service@2x.png -------------------------------------------------------------------------------- /src/assets/img/emptyPic/cart-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/emptyPic/cart-empty.png -------------------------------------------------------------------------------- /src/assets/img/emptyPic/not-found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/emptyPic/not-found.png -------------------------------------------------------------------------------- /src/assets/img/login_illustration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/login_illustration.png -------------------------------------------------------------------------------- /src/assets/img/emptyPic/address-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/emptyPic/address-empty.png -------------------------------------------------------------------------------- /src/assets/img/emptyPic/collect-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/emptyPic/collect-empty.png -------------------------------------------------------------------------------- /src/assets/img/emptyPic/coupon-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/emptyPic/coupon-empty.png -------------------------------------------------------------------------------- /src/assets/img/emptyPic/loading-fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/emptyPic/loading-fail.png -------------------------------------------------------------------------------- /src/assets/img/emptyPic/order-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/emptyPic/order-empty.png -------------------------------------------------------------------------------- /src/assets/img/emptyPic/search-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/emptyPic/search-empty.png -------------------------------------------------------------------------------- /src/components/v-calendar/utils/defaults/screens.json: -------------------------------------------------------------------------------- 1 | { 2 | "sm": "640px", 3 | "md": "768px", 4 | "lg": "1024px", 5 | "xl": "1280px" 6 | } -------------------------------------------------------------------------------- /src/element-ui-theme/fonts/element-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/element-ui-theme/fonts/element-icons.ttf -------------------------------------------------------------------------------- /src/element-ui-theme/fonts/element-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/element-ui-theme/fonts/element-icons.woff -------------------------------------------------------------------------------- /src/assets/img/bg_mobile_foot_default2968da.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/bg_mobile_foot_default2968da.png -------------------------------------------------------------------------------- /src/assets/img/bg_mobile_head_default2968da.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/src/assets/img/bg_mobile_head_default2968da.png -------------------------------------------------------------------------------- /src/components/v-calendar/utils/defaults/touch.json: -------------------------------------------------------------------------------- 1 | { 2 | "maxSwipeTime": 300, 3 | "minHorizontalSwipeDistance": 60, 4 | "maxVerticalSwipeDistance": 80 5 | } -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/help/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/help/img/logo.png -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/img/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/img/trans.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/img/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/img/anchor.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/img/loader.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/img/object.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/img/object.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce.eot -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce.ttf -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce.woff -------------------------------------------------------------------------------- /config/test.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const devEnv = require('./dev.env') 4 | 5 | module.exports = merge(devEnv, { 6 | NODE_ENV: '"testing"' 7 | }) 8 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-cool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-cool.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-cry.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-cry.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-kiss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-kiss.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-wink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-wink.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-yell.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-yell.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-frown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-frown.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-sealed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-sealed.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-smile.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce-small.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce-small.eot -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce-small.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce-small.ttf -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /src/assets/scss/wechat/index.scss: -------------------------------------------------------------------------------- 1 | 2 | @import "./wechat/css/base.css"; 3 | @import "./wechat/css/index.css"; 4 | @import "./wechat/css/media_dialog&emotion_editor&msg_tab&emoji&msg_sender&tooltip.css"; 5 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-innocent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-innocent.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-laughing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-laughing.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-surprised.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-surprised.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-undecided.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-undecided.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce-small.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/skins/lightgray/fonts/tinymce-small.woff -------------------------------------------------------------------------------- /src/assets/scss/index.scss: -------------------------------------------------------------------------------- 1 | @import "normalize"; // api: https://github.com/necolas/normalize.css/ 2 | @import "variables"; // 站点变量 3 | @import "base"; 4 | //微信 5 | @import './wechat/index.scss'; 6 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-embarassed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-embarassed.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-money-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-money-mouth.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-tongue-out.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-tongue-out.gif -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-foot-in-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sixnine-edu/sixnine-edu-school/HEAD/static/plugins/tinymce.4.9.4/plugins/emoticons/img/smiley-foot-in-mouth.gif -------------------------------------------------------------------------------- /src/views/common/home.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /src/views/common/home copy.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"', 7 | OPEN_PROXY: true // 是否开启代理, 重置后需重启vue-cli 8 | }) 9 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/hr/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "hr" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/hr') 5 | // ES2015: 6 | // import 'tinymce/plugins/hr' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/toc/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "toc" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/toc') 5 | // ES2015: 6 | // import 'tinymce/plugins/toc' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /src/components/v-calendar/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as Calendar } from './Calendar'; 2 | export { default as CalendarNav } from './CalendarNav'; 3 | export { default as DatePicker } from './DatePicker'; 4 | export { default as Popover } from './Popover'; 5 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/code/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "code" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/code') 5 | // ES2015: 6 | // import 'tinymce/plugins/code' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/help/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "help" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/help') 5 | // ES2015: 6 | // import 'tinymce/plugins/help' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/link/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "link" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/link') 5 | // ES2015: 6 | // import 'tinymce/plugins/link' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/save/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "save" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/save') 5 | // ES2015: 6 | // import 'tinymce/plugins/save' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/themes/inlite/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "inlite" theme for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/themes/inlite') 5 | // ES2015: 6 | // import 'tinymce/themes/inlite' 7 | require('./theme.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/themes/mobile/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "mobile" theme for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/themes/mobile') 5 | // ES2015: 6 | // import 'tinymce/themes/mobile' 7 | require('./theme.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/themes/modern/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "modern" theme for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/themes/modern') 5 | // ES2015: 6 | // import 'tinymce/themes/modern' 7 | require('./theme.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/anchor/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "anchor" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/anchor') 5 | // ES2015: 6 | // import 'tinymce/plugins/anchor' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/bbcode/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "bbcode" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/bbcode') 5 | // ES2015: 6 | // import 'tinymce/plugins/bbcode' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/image/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "image" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/image') 5 | // ES2015: 6 | // import 'tinymce/plugins/image' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/lists/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "lists" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/lists') 5 | // ES2015: 6 | // import 'tinymce/plugins/lists' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/media/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "media" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/media') 5 | // ES2015: 6 | // import 'tinymce/plugins/media' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/paste/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "paste" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/paste') 5 | // ES2015: 6 | // import 'tinymce/plugins/paste' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/print/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "print" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/print') 5 | // ES2015: 6 | // import 'tinymce/plugins/print' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/table/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "table" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/table') 5 | // ES2015: 6 | // import 'tinymce/plugins/table' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserslist" field in package.json 6 | "postcss-import": {}, 7 | "autoprefixer": {} 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/advlist/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "advlist" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/advlist') 5 | // ES2015: 6 | // import 'tinymce/plugins/advlist' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/charmap/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "charmap" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/charmap') 5 | // ES2015: 6 | // import 'tinymce/plugins/charmap' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/preview/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "preview" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/preview') 5 | // ES2015: 6 | // import 'tinymce/plugins/preview' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/autolink/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "autolink" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/autolink') 5 | // ES2015: 6 | // import 'tinymce/plugins/autolink' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/autosave/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "autosave" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/autosave') 5 | // ES2015: 6 | // import 'tinymce/plugins/autosave' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/fullpage/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "fullpage" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/fullpage') 5 | // ES2015: 6 | // import 'tinymce/plugins/fullpage' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/tabfocus/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "tabfocus" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/tabfocus') 5 | // ES2015: 6 | // import 'tinymce/plugins/tabfocus' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/template/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "template" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/template') 5 | // ES2015: 6 | // import 'tinymce/plugins/template' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "emoticons" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/emoticons') 5 | // ES2015: 6 | // import 'tinymce/plugins/emoticons' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/importcss/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "importcss" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/importcss') 5 | // ES2015: 6 | // import 'tinymce/plugins/importcss' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/pagebreak/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "pagebreak" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/pagebreak') 5 | // ES2015: 6 | // import 'tinymce/plugins/pagebreak' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/textcolor/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "textcolor" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/textcolor') 5 | // ES2015: 6 | // import 'tinymce/plugins/textcolor' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/wordcount/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "wordcount" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/wordcount') 5 | // ES2015: 6 | // import 'tinymce/plugins/wordcount' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/autoresize/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "autoresize" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/autoresize') 5 | // ES2015: 6 | // import 'tinymce/plugins/autoresize' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/codesample/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "codesample" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/codesample') 5 | // ES2015: 6 | // import 'tinymce/plugins/codesample' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/colorpicker/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "colorpicker" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/colorpicker') 5 | // ES2015: 6 | // import 'tinymce/plugins/colorpicker' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/contextmenu/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "contextmenu" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/contextmenu') 5 | // ES2015: 6 | // import 'tinymce/plugins/contextmenu' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/fullscreen/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "fullscreen" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/fullscreen') 5 | // ES2015: 6 | // import 'tinymce/plugins/fullscreen' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/imagetools/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "imagetools" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/imagetools') 5 | // ES2015: 6 | // import 'tinymce/plugins/imagetools' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/nonbreaking/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "nonbreaking" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/nonbreaking') 5 | // ES2015: 6 | // import 'tinymce/plugins/nonbreaking' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/noneditable/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "noneditable" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/noneditable') 5 | // ES2015: 6 | // import 'tinymce/plugins/noneditable' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/textpattern/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "textpattern" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/textpattern') 5 | // ES2015: 6 | // import 'tinymce/plugins/textpattern' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/visualchars/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "visualchars" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/visualchars') 5 | // ES2015: 6 | // import 'tinymce/plugins/visualchars' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/legacyoutput/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "legacyoutput" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/legacyoutput') 5 | // ES2015: 6 | // import 'tinymce/plugins/legacyoutput' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/spellchecker/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "spellchecker" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/spellchecker') 5 | // ES2015: 6 | // import 'tinymce/plugins/spellchecker' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/visualblocks/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "visualblocks" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/visualblocks') 5 | // ES2015: 6 | // import 'tinymce/plugins/visualblocks' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/skins/lightgray/content.mobile.min.css: -------------------------------------------------------------------------------- 1 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{position:absolute;display:inline-block;background-color:green;opacity:.5}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%} -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/searchreplace/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "searchreplace" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/searchreplace') 5 | // ES2015: 6 | // import 'tinymce/plugins/searchreplace' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/directionality/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "directionality" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/directionality') 5 | // ES2015: 6 | // import 'tinymce/plugins/directionality' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/insertdatetime/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "insertdatetime" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/insertdatetime') 5 | // ES2015: 6 | // import 'tinymce/plugins/insertdatetime' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | /test/unit/coverage/ 8 | /test/e2e/reports/ 9 | selenium-debug.log 10 | package-lock.json 11 | 12 | # Editor directories and files 13 | .idea 14 | .vscode 15 | *.suo 16 | *.ntvs* 17 | *.njsproj 18 | *.sln 19 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/mixins/index.js: -------------------------------------------------------------------------------- 1 | import { childMixin as child } from './child'; 2 | import { rootMixin as root } from './root'; 3 | import { safeScopedSlotMixin as safeScopedSlot } from './safeScopedSlot'; 4 | 5 | export const childMixin = child; 6 | export const rootMixin = root; 7 | export const safeScopedSlotMixin = safeScopedSlot; 8 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/mixins/safeScopedSlot.js: -------------------------------------------------------------------------------- 1 | import { isFunction } from '../_'; 2 | 3 | export const safeScopedSlotMixin = { 4 | methods: { 5 | safeScopedSlot(name, args, def = null) { 6 | return isFunction(this.$scopedSlots[name]) 7 | ? this.$scopedSlots[name](args) 8 | : def; 9 | }, 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/index.js: -------------------------------------------------------------------------------- 1 | export { default as Locale } from './locale'; 2 | export { default as DateInfo } from './dateInfo'; 3 | export { default as Attribute } from './attribute'; 4 | export { default as AttributeStore } from './attributeStore'; 5 | export { default as setupCalendar } from './setup'; 6 | export * from './helpers'; 7 | export * from './touch'; 8 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/setup.js: -------------------------------------------------------------------------------- 1 | import { setupDefaults } from './defaults'; 2 | import { setupScreens } from './screens'; 3 | 4 | export default opts => { 5 | // Register plugin defaults 6 | const defaults = setupDefaults(opts); 7 | // Install support for responsive screens 8 | setupScreens(defaults.screens, true); 9 | return defaults; 10 | }; 11 | -------------------------------------------------------------------------------- /src/views/store/about.vue: -------------------------------------------------------------------------------- 1 | 9 | 14 | 15 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/print/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t){t.addCommand("mcePrint",function(){t.getWin().print()})},i=function(t){t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print"})};t.add("print",function(t){n(t),i(t),t.addShortcut("Meta+P","","mcePrint")})}(); -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false 5 | }], 6 | "stage-2" 7 | ], 8 | "plugins": ["transform-runtime", ["component", [ 9 | { 10 | "libraryName": "element-ui" 11 | } 12 | ]]], 13 | "env": { 14 | "test": { 15 | "presets": ["env", "stage-2"], 16 | "plugins": ["transform-es2015-modules-commonjs", "dynamic-import-node"] 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /test/unit/specs/HelloWorld.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import HelloWorld from '@/components/HelloWorld' 3 | 4 | describe('HelloWorld.vue', () => { 5 | it('should render correct contents', () => { 6 | const Constructor = Vue.extend(HelloWorld) 7 | const vm = new Constructor().$mount() 8 | expect(vm.$el.querySelector('.hello h1').textContent) 9 | .toEqual('Welcome to Your Vue.js App') 10 | }) 11 | }) 12 | -------------------------------------------------------------------------------- /src/assets/scss/_variables.scss: -------------------------------------------------------------------------------- 1 | // 站点主色 2 | // tips: 要达到整站主题修改效果, 请确保[$--color-primary]站点主色与[/src/element-ui-theme/index.js]文件中[import './element-[#17B3A3]/index.css']当前主题色一致 3 | $--color-primary: #002951; 4 | 5 | // Navbar 6 | $navbar--background-color: $--color-primary; 7 | 8 | // Sidebar 9 | $sidebar--background-color-dark: #2A3A42; 10 | $sidebar--color-text-dark: #8a979e; 11 | 12 | // Content 13 | $content--background-color: #f1f4f5; 14 | -------------------------------------------------------------------------------- /src/store/modules/cartNumber.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-02-20 15:43:34 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-02-20 15:44:15 8 | */ 9 | export default { 10 | namespaced: true, 11 | state: { 12 | cartNumbers: 0 13 | }, 14 | mutations: { 15 | changeCartNumber (state, cartNumbers) { 16 | state.cartNumbers = cartNumbers 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/utils/constant.js: -------------------------------------------------------------------------------- 1 | const PayType = { 2 | SCHOOLPAY:0,//学校支付 3 | WECHATPAY:1, // 小程序支付 4 | ALIPAY: 2,// 支付宝支付 5 | WECHATPAY_SWEEP_CODE:3,//微信扫码支付 6 | WECHATPAY_H5: 4, //微信H5支付 7 | WECHATPAY_MP: 5, //微信公众号支付 8 | SCOREPAY: 6, // 纯积分支付 9 | } 10 | 11 | const AppType = { 12 | MINI:1, // 小程序 13 | MP: 2,// 微信公众号 14 | PC:3,//pc 15 | H5: 4, //h5 16 | ANDROID: 5, //安卓 17 | IOS: 6, //苹果 18 | } 19 | 20 | module.exports = { 21 | PayType, 22 | AppType 23 | }; 24 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/hr/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"
")})},o=function(n){n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})};n.add("hr",function(n){t(n),o(n)})}(); -------------------------------------------------------------------------------- /src/views/modules/corp/pset/base-config.vue: -------------------------------------------------------------------------------- 1 | 7 | 24 | 26 | 27 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "avoid", 3 | "bracketSpacing": true, 4 | "endOfLine": "auto", 5 | "htmlWhitespaceSensitivity": "css", 6 | "insertPragma": false, 7 | "jsxBracketSameLine": false, 8 | "jsxSingleQuote": false, 9 | "printWidth": 180, 10 | "proseWrap": "preserve", 11 | "quoteProps": "as-needed", 12 | "requirePragma": false, 13 | "semi": false, 14 | "singleQuote": false, 15 | "tabWidth": 4, 16 | "trailingComma": "none", 17 | "useTabs": false, 18 | "vueIndentScriptAndStyle": false 19 | } 20 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/defaults/masks.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "MMMM YYYY", 3 | "weekdays": "W", 4 | "navMonths": "MMM", 5 | "input": ["L", "YYYY-MM-DD", "YYYY/MM/DD"], 6 | "inputDateTime": ["L h:mm A", "YYYY-MM-DD h:mm A", "YYYY/MM/DD h:mm A"], 7 | "inputDateTime24hr": ["L HH:mm", "YYYY-MM-DD HH:mm", "YYYY/MM/DD HH:mm"], 8 | "inputTime": ["h:mm A"], 9 | "inputTime24hr": ["HH:mm"], 10 | "dayPopover": "WWW, MMM D, YYYY", 11 | "data": ["L", "YYYY-MM-DD", "YYYY/MM/DD"], 12 | "iso": "YYYY-MM-DDTHH:mm:ss.SSSZ" 13 | } -------------------------------------------------------------------------------- /src/views/modules/corp/pset/quick-config.vue: -------------------------------------------------------------------------------- 1 | 7 | 21 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /static/config/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-12-07 09:40:11 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-12-07 23:21:50 8 | */ 9 | /** 10 | * 开发环境 11 | */ 12 | ; (function () { 13 | window.SITE_CONFIG = {} 14 | // 静态资源文件url 15 | window.SITE_CONFIG['resourcesUrl'] = '' 16 | // cdn地址 = 域名 + 版本号 17 | window.SITE_CONFIG['domain'] = './' // 域名 18 | window.SITE_CONFIG['version'] = '' // 版本号(年月日时分) 19 | window.SITE_CONFIG['cdnUrl'] = window.SITE_CONFIG.domain + window.SITE_CONFIG.version 20 | })() 21 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 25 | -------------------------------------------------------------------------------- /src/crud/corp/area.js: -------------------------------------------------------------------------------- 1 | import i18n from '../../i18n/i18n' 2 | export const tableOption = { 3 | border: true, 4 | index: true, 5 | indexLabel: i18n.t('sysManagement.serialNumber'), 6 | stripe: true, 7 | menuAlign: 'center', 8 | align: 'center', 9 | addBtn: false, 10 | editBtn: false, 11 | column: [ 12 | { 13 | label: '', 14 | prop: 'areaId' 15 | }, 16 | { 17 | label: '', 18 | prop: 'areaName' 19 | }, 20 | { 21 | label: '', 22 | prop: 'parentId' 23 | }, 24 | { 25 | label: '', 26 | prop: 'level' 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /src/utils/validate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 邮箱 3 | * @param {*} s 4 | */ 5 | export function isEmail (s) { 6 | return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s) 7 | } 8 | 9 | /** 10 | * 手机号码 11 | * @param {*} s 12 | */ 13 | export function isMobile (s) { 14 | return /^1[0-9]{10}$/.test(s) 15 | } 16 | 17 | /** 18 | * 电话号码 19 | * @param {*} s 20 | */ 21 | export function isPhone (s) { 22 | return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s) 23 | } 24 | 25 | /** 26 | * URL地址 27 | * @param {*} s 28 | */ 29 | export function isURL (s) { 30 | return /^http[s]?:\/\/.*/.test(s) 31 | } 32 | -------------------------------------------------------------------------------- /src/crud/corp/shortmsg.js: -------------------------------------------------------------------------------- 1 | import i18n from '../../i18n/i18n' 2 | export const tableOption = { 3 | border: true, 4 | index: true, 5 | indexLabel: i18n.t('sysManagement.serialNumber'), 6 | stripe: true, 7 | menuAlign: 'center', 8 | align: 'center', 9 | addBtn: false, 10 | editBtn: false, 11 | delBtn: false, 12 | column: [ 13 | { 14 | label: i18n.t('sysManagement.sysManagement'), 15 | prop: 'shortmsgName' 16 | } 17 | // , 18 | // { 19 | // label: '平台图片', 20 | // prop: 'pic', 21 | // type: 'upload', 22 | // imgWidth: 150 23 | // } 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /src/crud/basis/job.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-01-14 10:45:04 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-01-23 23:01:44 8 | */ 9 | export const tableOption = { 10 | border: true, 11 | index: true, 12 | indexLabel: "序号", 13 | stripe: true, 14 | menuAlign: "center", 15 | align: "center", 16 | addBtn: false, 17 | editBtn: false, 18 | delBtn: false, 19 | column: [ 20 | { 21 | label: "职位名称", 22 | prop: "postName", 23 | search: true 24 | }, 25 | 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /src/crud/basis/school.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-01-14 10:45:04 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-01-21 11:26:27 8 | */ 9 | export const tableOption = { 10 | border: true, 11 | index: true, 12 | indexLabel: "序号", 13 | stripe: true, 14 | menuAlign: "center", 15 | align: "center", 16 | addBtn: false, 17 | editBtn: false, 18 | delBtn: false, 19 | column: [ 20 | { 21 | label: "校区名称", 22 | prop: "schoolName", 23 | search: true 24 | }, 25 | 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /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://192.168.0.143:8080 8 | // see nightwatch.conf.js 9 | const devServer = browser.globals.devServerURL 10 | 11 | browser 12 | .url(devServer) 13 | .waitForElementVisible('#app', 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 | -------------------------------------------------------------------------------- /src/store/modules/user.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-12-07 09:40:11 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-03-11 11:15:27 8 | */ 9 | export default { 10 | namespaced: true, 11 | state: { 12 | id: 0, 13 | userName: "", 14 | empName: "" 15 | }, 16 | mutations: { 17 | updateId(state, id) { 18 | state.id = id 19 | }, 20 | updateUserName(state, name) { 21 | state.userName = name 22 | }, 23 | updateEmpName(state, name) { 24 | state.empName = name 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/crud/prod/spec.js: -------------------------------------------------------------------------------- 1 | export const tableOption = { 2 | border: true, 3 | index: true, 4 | indexLabel: '序号', 5 | stripe: true, 6 | menuAlign: 'center', 7 | menuWidth: 350, 8 | align: 'center', 9 | refreshBtn: true, 10 | searchSize: 'mini', 11 | addBtn: false, 12 | editBtn: false, 13 | viewBtn: false, 14 | delBtn: false, 15 | props: { 16 | label: 'label', 17 | value: 'value' 18 | }, 19 | column: [{ 20 | label: '属性ID', 21 | prop: 'propId' 22 | }, { 23 | label: '属性名称', 24 | prop: 'propName', 25 | search: true 26 | }, { 27 | label: '属性值', 28 | prop: 'prodPropValues', 29 | slot: true 30 | }] 31 | } 32 | -------------------------------------------------------------------------------- /static/config/index-dev.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-12-07 09:40:11 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-12-16 21:42:24 8 | */ 9 | /** 10 | * 开发环境 11 | */ 12 | ; (function () { 13 | window.SITE_CONFIG = {} 14 | 15 | // api接口请求地址 16 | window.SITE_CONFIG['baseUrl'] = 'http://106.14.157.243:8113' 17 | // 静态资源文件url 18 | window.SITE_CONFIG['resourcesUrl'] = '' 19 | // cdn地址 = 域名 + 版本号 20 | window.SITE_CONFIG['domain'] = './' // 域名T 21 | window.SITE_CONFIG['version'] = '' // 版本号(年月日时分) 22 | window.SITE_CONFIG['cdnUrl'] = window.SITE_CONFIG.domain + window.SITE_CONFIG.version 23 | })() 24 | -------------------------------------------------------------------------------- /static/config/index-prod.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-12-07 09:40:11 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-12-16 21:42:24 8 | */ 9 | /** 10 | * 生产环境 11 | */ 12 | ; (function () { 13 | window.SITE_CONFIG = {} 14 | 15 | // api接口请求地址 16 | window.SITE_CONFIG['baseUrl'] = 'http://106.14.157.243:8113' 17 | // 静态资源文件url 18 | window.SITE_CONFIG['resourcesUrl'] = '' 19 | // cdn地址 = 域名 + 版本号 20 | window.SITE_CONFIG['domain'] = './' // 域名T 21 | window.SITE_CONFIG['version'] = '' // 版本号(年月日时分) 22 | window.SITE_CONFIG['cdnUrl'] = window.SITE_CONFIG.domain + window.SITE_CONFIG.version 23 | })() 24 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // https://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parser: 'babel-eslint', 6 | parserOptions: { 7 | sourceType: 'module' 8 | }, 9 | env: { 10 | browser: true, 11 | }, 12 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md 13 | extends: 'standard', 14 | // required to lint *.vue files 15 | plugins: [ 16 | 'html' 17 | ], 18 | // add your custom rules here 19 | rules: { 20 | // allow async-await 21 | 'generator-star-spacing': 'off', 22 | // allow debugger during development 23 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/crud/prod/transport.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-07-18 22:34:25 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-01-09 22:12:28 8 | */ 9 | export const tableOption = { 10 | border: false, 11 | index: false, 12 | indexLabel: '序号', 13 | stripe: true, 14 | menuAlign: 'center', 15 | menuWidth: 350, 16 | align: 'center', 17 | refreshBtn: true, 18 | searchSize: 'mini', 19 | addBtn: false, 20 | editBtn: false, 21 | delBtn: false, 22 | viewBtn: false, 23 | props: { 24 | label: 'label', 25 | value: 'value' 26 | }, 27 | column: [{ 28 | label: '模板名称', 29 | prop: 'transName', 30 | search: true 31 | }] 32 | } 33 | -------------------------------------------------------------------------------- /src/i18n/i18n.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueI18n from 'vue-i18n' 3 | import enLocale from './langs/en' 4 | import zhCnLocale from './langs/zh_CN' 5 | import enElementLocale from 'element-ui/lib/locale/lang/en' 6 | import zhCnElementLocale from 'element-ui/lib/locale/lang/zh-CN' 7 | import Avue from '@smallwei/avue' 8 | 9 | Vue.use(VueI18n) 10 | const i18n = new VueI18n({ 11 | locale: localStorage.getItem('lang') || 'zh_CN', 12 | messages: { 13 | en: { 14 | ...enLocale, 15 | ...enElementLocale, 16 | ...Avue.locale.en 17 | }, 18 | zh_CN: { 19 | ...zhCnLocale, 20 | ...zhCnElementLocale, 21 | ...Avue.locale.zh 22 | } 23 | } 24 | }) 25 | 26 | export default i18n 27 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/mixins/child.js: -------------------------------------------------------------------------------- 1 | import { defaultsMixin } from '../defaults'; 2 | 3 | export const childMixin = { 4 | inject: ['sharedState'], 5 | mixins: [defaultsMixin], 6 | computed: { 7 | masks() { 8 | return this.sharedState.masks; 9 | }, 10 | theme() { 11 | return this.sharedState.theme; 12 | }, 13 | locale() { 14 | return this.sharedState.locale; 15 | }, 16 | dayPopoverId() { 17 | return this.sharedState.dayPopoverId; 18 | }, 19 | }, 20 | methods: { 21 | format(date, mask) { 22 | return this.locale.format(date, mask); 23 | }, 24 | pageForDate(date) { 25 | return this.locale.getDateParts(this.locale.normalizeDate(date)); 26 | }, 27 | }, 28 | }; 29 | -------------------------------------------------------------------------------- /src/crud/corp/role.js: -------------------------------------------------------------------------------- 1 | import i18n from '../../i18n/i18n' 2 | export const tableOption = { 3 | border: true, 4 | selection: true, 5 | index: false, 6 | indexLabel: i18n.t('sysManagement.serialNumber'), 7 | stripe: true, 8 | menuAlign: 'center', 9 | menuWidth: 350, 10 | align: 'center', 11 | refreshBtn: true, 12 | searchSize: 'mini', 13 | addBtn: false, 14 | editBtn: false, 15 | delBtn: false, 16 | viewBtn: false, 17 | props: { 18 | label: 'label', 19 | value: 'value' 20 | }, 21 | column: [{ 22 | label: i18n.t('corp.roleName'), 23 | prop: 'roleName', 24 | search: true 25 | }, { 26 | label: i18n.t('publics.remark'), 27 | prop: 'remark' 28 | }, { 29 | label: i18n.t('corp.creationTime'), 30 | prop: 'createTime' 31 | }] 32 | } 33 | -------------------------------------------------------------------------------- /src/crud/corp/config.js: -------------------------------------------------------------------------------- 1 | import i18n from '../../i18n/i18n' 2 | export const tableOption = { 3 | border: true, 4 | selection: true, 5 | index: false, 6 | indexLabel: i18n.t('sysManagement.serialNumber'), 7 | stripe: true, 8 | menuAlign: 'center', 9 | menuWidth: 350, 10 | align: 'center', 11 | refreshBtn: true, 12 | searchSize: 'mini', 13 | addBtn: false, 14 | editBtn: false, 15 | delBtn: false, 16 | viewBtn: false, 17 | props: { 18 | label: 'label', 19 | value: 'value' 20 | }, 21 | column: [{ 22 | label: i18n.t('corp.parameteName'), 23 | prop: 'paramKey', 24 | search: true 25 | }, { 26 | label: i18n.t('corp.parameterValue'), 27 | prop: 'paramValue' 28 | }, { 29 | label: i18n.t('publics.remark'), 30 | prop: 'remark' 31 | }] 32 | } 33 | -------------------------------------------------------------------------------- /src/crud/edu/distr.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-01-14 10:45:04 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-01-23 23:01:44 8 | */ 9 | 10 | export const tableOption = { 11 | border: true, 12 | index: true, 13 | indexLabel: "序号", 14 | stripe: true, 15 | menuAlign: "center", 16 | align: "center", 17 | addBtn: false, 18 | editBtn: false, 19 | delBtn: false, 20 | filterBtn: false, 21 | columnBtn: false, 22 | refreshBtn: false, 23 | column: [{ 24 | label: "教师姓名", 25 | prop: "empName" 26 | }, 27 | { 28 | label: "电话", 29 | prop: "phone" 30 | }, 31 | { 32 | label: "已分配课程数量", 33 | prop: "distrSum", 34 | }, 35 | 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /test/unit/jest.conf.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | module.exports = { 4 | rootDir: path.resolve(__dirname, '../../'), 5 | moduleFileExtensions: [ 6 | 'js', 7 | 'json', 8 | 'vue' 9 | ], 10 | moduleNameMapper: { 11 | '^@/(.*)$': '/src/$1' 12 | }, 13 | transform: { 14 | '^.+\\.js$': '/node_modules/babel-jest', 15 | '.*\\.(vue)$': '/node_modules/vue-jest' 16 | }, 17 | testPathIgnorePatterns: [ 18 | '/test/e2e' 19 | ], 20 | snapshotSerializers: ['/node_modules/jest-serializer-vue'], 21 | setupFiles: ['/test/unit/setup'], 22 | mapCoverage: true, 23 | coverageDirectory: '/test/unit/coverage', 24 | collectCoverageFrom: [ 25 | 'src/**/*.{js,vue}', 26 | '!src/main.js', 27 | '!src/router/index.js', 28 | '!**/node_modules/**' 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /src/crud/prod/prodTag.js: -------------------------------------------------------------------------------- 1 | export const tableOption = { 2 | border: true, 3 | index: true, 4 | indexLabel: '序号', 5 | stripe: true, 6 | menuAlign: 'center', 7 | align: 'center', 8 | addBtn: false, 9 | editBtn: false, 10 | delBtn: false, 11 | column: [ 12 | { 13 | label: '标签名称', 14 | prop: 'title', 15 | search: true 16 | }, 17 | { 18 | label: '状态', 19 | prop: 'status', 20 | type: 'select', 21 | slot: true, 22 | search: true, 23 | dicData: [ 24 | { 25 | label: '禁用', 26 | value: 0 27 | }, { 28 | label: '正常', 29 | value: 1 30 | } 31 | ] 32 | }, 33 | { 34 | label: '默认类型', 35 | prop: 'isDfault', 36 | slot: true 37 | }, 38 | { 39 | label: '排序', 40 | prop: 'seq' 41 | } 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /src/views/store/css/uc-order.css: -------------------------------------------------------------------------------- 1 | /* 个人中心-我的订单 */ 2 | .user-center .uc-order { 3 | font-size: 12px; 4 | } 5 | .user-center .uc-order .uc-nav .recycle-bin { 6 | position: relative; 7 | display: block; 8 | line-height: 16px; 9 | font-size: 12px; 10 | color: #999; 11 | cursor: pointer; 12 | padding-left: 20px; 13 | } 14 | 15 | .user-center .uc-order .uc-nav .recycle-bin::before { 16 | position: absolute; 17 | left: 0; 18 | top: 1px; 19 | content: " "; 20 | display: block; 21 | width: 14px; 22 | height: 14px; 23 | background: url(../../../assets/img/icons.png) no-repeat 0 -633px; 24 | } 25 | 26 | .user-center .uc-order .uc-nav .recycle-bin:hover { 27 | color: #e1251b; 28 | } 29 | 30 | .user-center .uc-order .uc-nav .recycle-bin:hover::before { 31 | background-position: -19px -633px; 32 | } 33 | 34 | /* 个人中心-我的订单 end */ 35 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/directionality/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(t,e){var i,n=t.dom,o=t.selection.getSelectedBlocks();o.length&&(i=n.getAttrib(o[0],"dir"),c.each(o,function(t){n.getParent(t.parentNode,'*[dir="'+e+'"]',n.getRoot())||n.setAttrib(t,"dir",i!==e?e:null)}),t.nodeChanged())},i=function(t){t.addCommand("mceDirectionLTR",function(){e(t,"ltr")}),t.addCommand("mceDirectionRTL",function(){e(t,"rtl")})},n=function(e){var i=[];return c.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(t){i.push(t+"[dir="+e+"]")}),i.join(",")},o=function(t){t.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:n("ltr")}),t.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:n("rtl")})};t.add("directionality",function(t){i(t),o(t)})}(); -------------------------------------------------------------------------------- /src/icons/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 字体图标, 统一使用SVG Sprite矢量图标(http://www.iconfont.cn/) 3 | * 8a8a8a 32 4 | * 使用: 5 | * 1. 在阿里矢量图标站创建一个项目, 并添加图标(这一步非必须, 创建方便项目图标管理) 6 | * 2-1. 添加icon, 选中新增的icon图标, 复制代码 -> 下载 -> SVG下载 -> 粘贴代码(重命名) 7 | * 2-2. 添加icons, 下载图标库对应[iconfont.js]文件, 替换项目[./iconfont.js]文件 8 | * 3. 组件模版中使用 [] 9 | * 10 | * 注意: 11 | * 1. 通过2-2 添加icons, getNameList方法无法返回对应数据 12 | */ 13 | import Vue from 'vue' 14 | import IconSvg from '@/components/icon-svg' 15 | import './iconfont.js' 16 | 17 | Vue.component('IconSvg', IconSvg) 18 | 19 | const svgFiles = require.context('./svg', true, /\.svg$/) 20 | const iconList = svgFiles.keys().map(item => svgFiles(item)) 21 | 22 | export default { 23 | // 获取图标icon-(*).svg名称列表, 例如[shouye, xitong, zhedie, ...] 24 | getNameList () { 25 | return iconList.map(item => item.default.id.split('-')[1]) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/icons/svg/icon-quanxian.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/e2e/custom-assertions/elementCount.js: -------------------------------------------------------------------------------- 1 | // A custom Nightwatch assertion. 2 | // The assertion name is the filename. 3 | // Example usage: 4 | // 5 | // browser.assert.elementCount(selector, count) 6 | // 7 | // For more information on custom assertions see: 8 | // http://nightwatchjs.org/guide#writing-custom-assertions 9 | 10 | exports.assertion = function (selector, count) { 11 | this.message = 'Testing if element <' + selector + '> has count: ' + count 12 | this.expected = count 13 | this.pass = function (val) { 14 | return val === this.expected 15 | } 16 | this.value = function (res) { 17 | return res.value 18 | } 19 | this.command = function (cb) { 20 | var self = this 21 | return this.api.execute(function (selectorToCount) { 22 | return document.querySelectorAll(selectorToCount).length 23 | }, [selector], function (res) { 24 | cb.call(self, res) 25 | }) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/buildMediaQuery.js: -------------------------------------------------------------------------------- 1 | import { isString, isArray, map, has, get } from './_'; 2 | 3 | // This function gratuitously borrowed from TailwindCSS 4 | // https://github.com/tailwindcss/tailwindcss/blob/master/src/util/buildMediaQuery.js 5 | export default function buildMediaQuery(screens) { 6 | // Default min width 7 | if (isString(screens)) { 8 | screens = { min: screens }; 9 | } 10 | // Wrap in array 11 | if (!isArray(screens)) { 12 | screens = [screens]; 13 | } 14 | return screens 15 | .map(screen => { 16 | if (has(screen, 'raw')) { 17 | return screen.raw; 18 | } 19 | return map(screen, (value, feature) => { 20 | feature = get( 21 | { 22 | min: 'min-width', 23 | max: 'max-width', 24 | }, 25 | feature, 26 | feature, 27 | ); 28 | return `(${feature}: ${value})`; 29 | }).join(' and '); 30 | }) 31 | .join(', '); 32 | } 33 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-12-07 09:40:11 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-02-20 15:44:36 8 | */ 9 | import Vue from "vue" 10 | import Vuex from "vuex" 11 | import cloneDeep from "lodash/cloneDeep" 12 | import common from "./modules/common" 13 | import user from "./modules/user" 14 | import prod from "./modules/prod" 15 | import material from "./modules/material" 16 | import cartNumber from "./modules/cartNumber" 17 | Vue.use(Vuex) 18 | 19 | export default new Vuex.Store({ 20 | modules: { 21 | common, 22 | user, 23 | prod, 24 | material, 25 | cartNumber 26 | }, 27 | mutations: { 28 | // 重置vuex本地储存状态 29 | resetStore(state) { 30 | Object.keys(state).forEach(key => { 31 | state[key] = cloneDeep(window.SITE_CONFIG["storeState"][key]) 32 | }) 33 | } 34 | }, 35 | strict: process.env.NODE_ENV !== "production" 36 | }) 37 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/nonbreaking/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n,e){var t,i=(t=n).plugins.visualchars&&t.plugins.visualchars.isEnabled()?' ':" ";n.insertContent(function(n,e){for(var t="",i=0;i'}),o+=""}),o+=""},o=function(a,t){var e=i(t);a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:e,onclick:function(t){var e,i,o,n=a.dom.getParent(t.target,"a");n&&(e=a,i=n.getAttribute("data-mce-url"),o=n.getAttribute("data-mce-alt"),e.insertContent(e.dom.createHTML("img",{src:i,alt:o})),this.hide())}},tooltip:"Emoticons"})};t.add("emoticons",function(t,e){o(t,e)})}(); -------------------------------------------------------------------------------- /src/components/icon-svg/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 43 | 44 | 52 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/hr/plugin.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var hr = (function () { 3 | 'use strict'; 4 | 5 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 6 | 7 | var register = function (editor) { 8 | editor.addCommand('InsertHorizontalRule', function () { 9 | editor.execCommand('mceInsertContent', false, '
'); 10 | }); 11 | }; 12 | var $_9fxf06cnjnlpb193 = { register: register }; 13 | 14 | var register$1 = function (editor) { 15 | editor.addButton('hr', { 16 | icon: 'hr', 17 | tooltip: 'Horizontal line', 18 | cmd: 'InsertHorizontalRule' 19 | }); 20 | editor.addMenuItem('hr', { 21 | icon: 'hr', 22 | text: 'Horizontal line', 23 | cmd: 'InsertHorizontalRule', 24 | context: 'insert' 25 | }); 26 | }; 27 | var $_bcc2aocojnlpb194 = { register: register$1 }; 28 | 29 | global.add('hr', function (editor) { 30 | $_9fxf06cnjnlpb193.register(editor); 31 | $_bcc2aocojnlpb194.register(editor); 32 | }); 33 | function Plugin () { 34 | } 35 | 36 | return Plugin; 37 | 38 | }()); 39 | })(); 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 sixnine-edu 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 | -------------------------------------------------------------------------------- /src/views/modules/user/meal.vue: -------------------------------------------------------------------------------- 1 | 9 | 20 | 21 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /src/views/college/pay-success.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 26 | 27 | 48 | -------------------------------------------------------------------------------- /src/crud/corp/log.js: -------------------------------------------------------------------------------- 1 | import i18n from '../../i18n/i18n' 2 | export const tableOption = { 3 | border: true, 4 | menu: false, // 移除操作栏 5 | selection: true, 6 | index: false, 7 | indexLabel: i18n.t('sysManagement.serialNumber'), 8 | stripe: true, 9 | menuAlign: 'center', 10 | menuWidth: 350, 11 | align: 'center', 12 | refreshBtn: true, 13 | searchSize: 'mini', 14 | addBtn: false, 15 | editBtn: false, 16 | delBtn: false, 17 | viewBtn: false, 18 | props: { 19 | label: 'label', 20 | value: 'value' 21 | }, 22 | column: [{ 23 | label: i18n.t('corp.userName'), 24 | prop: 'username', 25 | search: true 26 | }, { 27 | label: i18n.t('corp.userAction'), 28 | prop: 'operation', 29 | search: true 30 | }, { 31 | label: i18n.t('corp.requestMerthod'), 32 | prop: 'method' 33 | }, { 34 | label: i18n.t('corp.requestParameter'), 35 | prop: 'params' 36 | }, { 37 | label: i18n.t('corp.executionTime'), 38 | prop: 'time' 39 | }, { 40 | label: i18n.t('corp.ipAddress'), 41 | prop: 'ip' 42 | }, { 43 | label: i18n.t('corp.creationTime'), 44 | prop: 'createDate' 45 | }] 46 | } 47 | -------------------------------------------------------------------------------- /src/views/headmaster/article-detail.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 37 | 38 | 47 | -------------------------------------------------------------------------------- /src/crud/corp/user.js: -------------------------------------------------------------------------------- 1 | import i18n from '../../i18n/i18n' 2 | export const tableOption = { 3 | border: true, 4 | selection: true, 5 | index: false, 6 | indexLabel: i18n.t('sysManagement.serialNumber'), 7 | stripe: true, 8 | menuAlign: 'center', 9 | menuWidth: 350, 10 | align: 'center', 11 | refreshBtn: true, 12 | searchSize: 'mini', 13 | addBtn: false, 14 | editBtn: false, 15 | delBtn: false, 16 | viewBtn: false, 17 | props: { 18 | label: 'label', 19 | value: 'value' 20 | }, 21 | column: [{ 22 | label: i18n.t('corp.userName'), 23 | prop: 'username', 24 | search: true 25 | }, { 26 | label: i18n.t('corp.email'), 27 | prop: 'email' 28 | }, { 29 | label: i18n.t('publics.mobilePhone'), 30 | prop: 'mobile' 31 | }, { 32 | label: i18n.t('corp.creationTime'), 33 | prop: 'createTime' 34 | }, { 35 | label: i18n.t('product.status'), 36 | prop: 'status', 37 | type: 'select', 38 | dicData: [ 39 | { 40 | label: i18n.t('publics.disable'), 41 | value: 0 42 | }, { 43 | label: i18n.t('publics.normal'), 44 | value: 1 45 | } 46 | ] 47 | 48 | }] 49 | } 50 | -------------------------------------------------------------------------------- /src/store/modules/prod.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-12-07 09:40:11 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-01-10 23:35:11 8 | */ 9 | export default { 10 | namespaced: true, 11 | state: { 12 | id: 0, 13 | skuTags: [], 14 | defalutSku: { 15 | price: 0.01, // 销售价 16 | oriPrice: 0.01, // 市场价 17 | skuScore: 0, // 积分价 18 | stocks: 0, // 库存 19 | properties: '', // 销售属性组合字符串 20 | skuName: '', // sku名称 21 | prodName: '', // 商品名称 22 | // partyCode: '', // 商品编码 23 | state: 1 // 0 禁用 1 启用 24 | } 25 | }, 26 | mutations: { 27 | updateSkuTags (state, skuTags) { 28 | state.skuTags = skuTags 29 | }, 30 | addSkuTag (state, skuTag) { 31 | state.skuTags.push(skuTag) 32 | }, 33 | removeSkuTag (state, tagIndex) { 34 | state.skuTags.splice(tagIndex, 1) 35 | }, 36 | removeSkuTagItem (state, { tagIndex, tagItemIndex }) { 37 | state.skuTags[tagIndex].tagItems.splice(tagItemIndex, 1) 38 | }, 39 | addSkuTagItem (state, { tagIndex, tagItem }) { 40 | state.skuTags[tagIndex].tagItems.push(tagItem) 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/views/headmaster/notice-detail.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 37 | 38 | 47 | -------------------------------------------------------------------------------- /src/icons/svg/icon-shangcheng.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/crud/edu/distr-detail.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-02-21 15:03:52 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-02-27 11:33:47 8 | */ 9 | /* 10 | * @Description: 11 | * @Version: 1.0 12 | * @Autor: yongqing 13 | * @Date: 2021-01-14 10:45:04 14 | * @LastEditors: yongqing 15 | * @LastEditTime: 2021-01-23 23:01:44 16 | */ 17 | 18 | export const tableOption = { 19 | border: true, 20 | index: true, 21 | indexLabel: "序号", 22 | stripe: true, 23 | menuAlign: "center", 24 | align: "center", 25 | addBtn: false, 26 | editBtn: false, 27 | delBtn: false, 28 | filterBtn: false, 29 | columnBtn: false, 30 | refreshBtn: false, 31 | menu: false, 32 | column: [{ 33 | width: 150, 34 | label: "封面", 35 | prop: "coverImg", 36 | slot: true 37 | }, 38 | { 39 | label: "课程名称", 40 | prop: "title" 41 | }, 42 | { 43 | label: "课程简介", 44 | prop: "info", 45 | slot: true 46 | }, 47 | { 48 | label: "购买时间", 49 | prop: "createTime" 50 | }, 51 | { 52 | label: "过期时间", 53 | prop: "expireTime" 54 | } 55 | ] 56 | } 57 | -------------------------------------------------------------------------------- /test/e2e/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | require('babel-register') 2 | var config = require('../../config') 3 | 4 | // http://nightwatchjs.org/gettingstarted#settings-file 5 | module.exports = { 6 | src_folders: ['test/e2e/specs'], 7 | output_folder: 'test/e2e/reports', 8 | custom_assertions_path: ['test/e2e/custom-assertions'], 9 | 10 | selenium: { 11 | start_process: true, 12 | server_path: require('selenium-server').path, 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: '192.168.0.143', 24 | silent: true, 25 | globals: { 26 | devServerURL: 'http://192.168.0.143:' + (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 | -------------------------------------------------------------------------------- /src/crud/tenant/corp.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-01-14 10:45:04 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-01-14 11:33:03 8 | */ 9 | export const tableOption = { 10 | border: true, 11 | index: true, 12 | indexLabel: "序号", 13 | stripe: true, 14 | menuAlign: "center", 15 | align: "center", 16 | addBtn: false, 17 | editBtn: false, 18 | delBtn: false, 19 | column: [ 20 | { 21 | label: "机构名称", 22 | prop: "corpName", 23 | search: true 24 | }, 25 | { 26 | label: "联系人", 27 | prop: "linkMan", 28 | search: true 29 | }, 30 | { 31 | label: "手机号", 32 | prop: "mobile", 33 | search: true 34 | }, 35 | { 36 | label: "状态", 37 | prop: "state", 38 | search: true, 39 | slot: true, 40 | type: "select", 41 | dicData: [ 42 | { 43 | label: "禁用", 44 | value: 0 45 | }, 46 | { 47 | label: "启用", 48 | value: 1 49 | } 50 | ] 51 | } 52 | ] 53 | } 54 | -------------------------------------------------------------------------------- /src/components/v-calendar/lib.js: -------------------------------------------------------------------------------- 1 | import * as components from './components'; 2 | import * as utils from './utils'; 3 | 4 | // Declare install function executed by Vue.use() 5 | function install(Vue, opts) { 6 | // Don't install more than once 7 | if (install.installed) return; 8 | install.installed = true; 9 | // Manually setup calendar with options 10 | const defaults = utils.setupCalendar(opts); 11 | // Register components 12 | Object.entries(components).forEach(([componentName, component]) => { 13 | Vue.component(`${defaults.componentPrefix}${componentName}`, component); 14 | }); 15 | } 16 | 17 | // Create module definition for Vue.use() 18 | const plugin = { 19 | install, 20 | ...components, 21 | ...utils, 22 | }; 23 | 24 | // Use automatically when global Vue instance detected 25 | let GlobalVue = null; 26 | if (typeof window !== 'undefined') { 27 | GlobalVue = window.Vue; 28 | } else if (typeof global !== 'undefined') { 29 | GlobalVue = global.Vue; 30 | } 31 | if (GlobalVue) { 32 | GlobalVue.use(plugin); 33 | } 34 | 35 | // Default export is library as a whole, registered via Vue.use() 36 | export default plugin; 37 | 38 | // Allow component use individually 39 | export * from './components'; 40 | 41 | // Allow util use individually 42 | export * from './utils'; 43 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/colorpicker/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Color"),a=function(e,n){e.find("#preview")[0].getEl().style.background=n},o=function(e,n){var i=l(n),t=i.toRgb();e.fromJSON({r:t.r,g:t.g,b:t.b,hex:i.toHex().substr(1)}),a(e,i.toHex())},t=function(e,n,i){var t=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:i,onchange:function(){var e=this.rgb();t&&(t.find("#r").value(e.r),t.find("#g").value(e.g),t.find("#b").value(e.b),t.find("#hex").value(this.value().substr(1)),a(t,this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,n,i=t.find("colorpicker")[0];if(e=this.name(),n=this.value(),"hex"===e)return o(t,n="#"+n),void i.value(n);n={r:t.find("#r").value(),g:t.find("#g").value(),b:t.find("#b").value()},i.value(n),o(t,n)}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){n("#"+t.toJSON().hex)}});o(t,i)};e.add("colorpicker",function(i){i.settings.color_picker_callback||(i.settings.color_picker_callback=function(e,n){t(i,e,n)})})}(); -------------------------------------------------------------------------------- /src/crud/edu/course.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-02-21 15:03:52 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-02-27 11:33:47 8 | */ 9 | /* 10 | * @Description: 11 | * @Version: 1.0 12 | * @Autor: yongqing 13 | * @Date: 2021-01-14 10:45:04 14 | * @LastEditors: yongqing 15 | * @LastEditTime: 2021-01-23 23:01:44 16 | */ 17 | 18 | export const tableOption = { 19 | border: true, 20 | index: true, 21 | indexLabel: "序号", 22 | stripe: true, 23 | menuAlign: "center", 24 | align: "center", 25 | addBtn: false, 26 | editBtn: false, 27 | delBtn: false, 28 | column: [ 29 | { 30 | width: 150, 31 | label: "封面", 32 | prop: "coverImg", 33 | slot: true 34 | }, 35 | { 36 | label: "课程名称", 37 | prop: "title" 38 | }, 39 | { 40 | label: "课程简介", 41 | prop: "info", 42 | slot: true 43 | }, 44 | { 45 | label: "购买时间", 46 | prop: "createTime" 47 | }, 48 | { 49 | label: "过期时间", 50 | prop: "expireTime" 51 | }, 52 | { 53 | label: "购买数量", 54 | prop: "courseCount" 55 | }, 56 | { 57 | label: "剩余可分配数量", 58 | prop: "leftCount" 59 | } 60 | ] 61 | } 62 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/save/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=function(n){return n.getParam("save_enablewhendirty",!0)},c=function(n){return!!n.getParam("save_onsavecallback")},i=function(n){return!!n.getParam("save_oncancelcallback")},r=function(n,e){n.notificationManager.open({text:n.translate(e),type:"error"})},e=function(n){var e;if(e=t.DOM.getParent(n.id,"form"),!o(n)||n.isDirty()){if(n.save(),c(n))return n.execCallback("save_onsavecallback",n),void n.nodeChanged();e?(n.setDirty(!1),e.onsubmit&&!e.onsubmit()||("function"==typeof e.submit?e.submit():r(n,"Error: Form submit field collision.")),n.nodeChanged()):r(n,"Error: No form element found.")}},l=function(n){var e=a.trim(n.startContent);i(n)?n.execCallback("save_oncancelcallback",n):(n.setContent(e),n.undoManager.clear(),n.nodeChanged())},d=function(n){n.addCommand("mceSave",function(){e(n)}),n.addCommand("mceCancel",function(){l(n)})},s=function(t){return function(n){var e=n.control;t.on("nodeChange dirty",function(){e.disabled(o(t)&&!t.isDirty())})}},u=function(n){n.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:s(n)}),n.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:s(n)}),n.addShortcut("Meta+S","","mceSave")};n.add("save",function(n){u(n),d(n)})}(); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/pagebreak/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),n=function(e){return e.getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e")},i=function(e){return e.getParam("pagebreak_split_block",!1)},t=function(){return"mce-pagebreak"},r=function(){return''},c=function(c){var o=n(c),a=new RegExp(o.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi");c.on("BeforeSetContent",function(e){e.content=e.content.replace(a,r())}),c.on("PreInit",function(){c.serializer.addNodeFilter("img",function(e){for(var a,n,t=e.length;t--;)if((n=(a=e[t]).attr("class"))&&-1!==n.indexOf("mce-pagebreak")){var r=a.parent;if(c.schema.getBlockElements()[r.name]&&i(c)){r.type=3,r.value=o,r.raw=!0,a.remove();continue}a.type=3,a.value=o,a.raw=!0}})})},o=r,g=t,u=function(e){e.addCommand("mcePageBreak",function(){e.settings.pagebreak_split_block?e.insertContent("

"+o()+"

"):e.insertContent(o())})},m=function(a){a.on("ResolveName",function(e){"IMG"===e.target.nodeName&&a.dom.hasClass(e.target,g())&&(e.name="pagebreak")})},s=function(e){e.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"})};e.add("pagebreak",function(e){u(e),s(e),c(e),m(e)})}(); -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/anchor/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},e=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.id||e.name:""},i=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e,t.undoManager.add()):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},n=function(r){var t=e(r);r.windowManager.open({title:"Anchor",body:{type:"textbox",name:"id",size:40,label:"Id",value:t},onsubmit:function(t){var e,n,o=t.data.id;e=r,(a(n=o)?(i(e,n),0):(e.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),1))&&t.preventDefault()}})},o=function(t){t.addCommand("mceAnchor",function(){n(t)})},r=function(o){return function(t){for(var e=0;e -------------------------------------------------------------------------------- /src/icons/svg/icon-caidan.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/crud/prod/prodComm.js: -------------------------------------------------------------------------------- 1 | export const tableOption = { 2 | border: true, 3 | index: true, 4 | indexLabel: '序号', 5 | stripe: true, 6 | menuAlign: 'center', 7 | menuWidth: 300, 8 | align: 'center', 9 | addBtn: false, 10 | editBtn: false, 11 | delBtn: false, 12 | column: [ 13 | { 14 | label: '商品名', 15 | prop: 'prodName', 16 | search: true 17 | }, 18 | { 19 | label: '用户昵称', 20 | prop: 'nickName' 21 | }, 22 | { 23 | label: '记录时间', 24 | prop: 'recTime', 25 | width: '200' 26 | }, 27 | { 28 | label: '回复时间', 29 | prop: 'replyTime', 30 | width: '200', 31 | dicData: [ 32 | { 33 | label: '无', 34 | value: '' 35 | } 36 | ] 37 | }, 38 | { 39 | label: '评价得分', 40 | prop: 'score' 41 | }, 42 | { 43 | label: '是否匿名', 44 | prop: 'isAnonymous', 45 | dicData: [ 46 | { 47 | label: '否', 48 | value: 0 49 | }, { 50 | label: '是', 51 | value: 1 52 | } 53 | ] 54 | }, 55 | { 56 | prop: 'status', 57 | label: '审核状态', 58 | search: true, 59 | type: 'select', 60 | dicData: [ 61 | { 62 | label: '待审核', 63 | value: 0 64 | }, { 65 | label: '审核通过', 66 | value: 1 67 | }, { 68 | label: '审核未通过', 69 | value: -1 70 | } 71 | ] 72 | } 73 | ] 74 | } 75 | -------------------------------------------------------------------------------- /src/crud/prod/course-select.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-12-21 17:04:52 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-01-10 23:18:34 8 | */ 9 | export const tableOption = { 10 | selection: true, 11 | reserveSelection: false, 12 | rowKey: "courseId", 13 | addBtn: false, 14 | filterBtn: false, 15 | columnBtn: false, 16 | refreshBtn: false, 17 | editBtn: false, 18 | delBtn: false, 19 | menu: false, 20 | menuAlign: "center", 21 | column: [ 22 | { 23 | width: 120, 24 | label: "封面", 25 | prop: "coverImg", 26 | slot: true 27 | }, 28 | { 29 | label: "课程名称", 30 | prop: "title" 31 | }, 32 | { 33 | label: "课程简介", 34 | prop: "info" 35 | }, 36 | { 37 | label: "分类", 38 | prop: "categoryName", 39 | slot: true 40 | }, 41 | { 42 | label: "状态", 43 | prop: "state", 44 | select: true, 45 | dicData: [ 46 | { 47 | label: "已下架", 48 | value: 0 49 | }, 50 | { 51 | label: "已上架", 52 | value: 1 53 | } 54 | ] 55 | }, 56 | { 57 | label: "创建时间", 58 | prop: "createTime" 59 | } 60 | ] 61 | } 62 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/noneditable/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(t){return t.getParam("noneditable_noneditable_class","mceNonEditable")},u=function(t){return t.getParam("noneditable_editable_class","mceEditable")},f=function(t){var n=t.getParam("noneditable_regexp",[]);return n&&n.constructor===RegExp?[n]:n},s=function(n){return function(t){return-1!==(" "+t.attr("class")+" ").indexOf(n)}},d=function(i,o,c){return function(t){var n=arguments,e=n[n.length-2],r=0"===r){var a=o.lastIndexOf("<",e);if(-1!==a&&-1!==o.substring(a,e).indexOf('contenteditable="false"'))return t}return''+i.dom.encode("string"==typeof n[1]?n[1]:n[0])+""}},n=function(n){var t,e,r="contenteditable";t=" "+c.trim(u(n))+" ",e=" "+c.trim(l(n))+" ";var a=s(t),i=s(e),o=f(n);n.on("PreInit",function(){0 -------------------------------------------------------------------------------- /src/views/common/404.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 19 | 20 | 63 | -------------------------------------------------------------------------------- /src/icons/svg/icon-kecheng.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/visualblocks/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var o=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return o(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e,t){e.fire("VisualBlocks",{state:t})},s=function(e){return e.getParam("visualblocks_default_state",!1)},c=function(e){return e.settings.visualblocks_content_css},l=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=l.DOM.uniqueId(),r=function(e,t){var n=u.toArray(e.getElementsByTagName("link"));if(0===u.grep(n,function(e){return e.id===a}).length){var o=l.DOM.create("link",{id:a,rel:"stylesheet",href:t});e.getElementsByTagName("head")[0].appendChild(o)}},m=function(e,t,n){var o=e.dom,s=c(e);r(e.getDoc(),s||t+"/css/visualblocks.css"),o.toggleClass(e.getBody(),"mce-visualblocks"),n.set(!n.get()),i(e,n.get())},f=function(e,t,n){e.addCommand("mceVisualBlocks",function(){m(e,t,n)})},d=function(t,e,n){t.on("PreviewFormats AfterPreviewFormats",function(e){n.get()&&t.dom.toggleClass(t.getBody(),"mce-visualblocks","afterpreviewformats"===e.type)}),t.on("init",function(){s(t)&&m(t,e,n)}),t.on("remove",function(){t.dom.removeClass(t.getBody(),"mce-visualblocks")})},n=function(n,o){return function(e){var t=e.control;t.active(o.get()),n.on("VisualBlocks",function(e){t.active(e.state)})}},v=function(e,t){e.addButton("visualblocks",{active:!1,title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:n(e,t)}),e.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:n(e,t),selectable:!0,context:"view",prependToContext:!0})};e.add("visualblocks",function(e,t){var n=o(!1);f(e,t,n),v(e,n),d(e,t,n)})}(); -------------------------------------------------------------------------------- /src/components/v-calendar/utils/_.js: -------------------------------------------------------------------------------- 1 | // Type utils 2 | export { default as isBoolean } from 'lodash/isBoolean'; 3 | export { default as isNumber } from 'lodash/isNumber'; 4 | export { default as isString } from 'lodash/isString'; 5 | export { default as isArray } from 'lodash/isArrayLikeObject'; 6 | export { default as isFunction } from 'lodash/isFunction'; 7 | export { default as isUndefined } from 'lodash/isUndefined'; 8 | import _isDate from 'lodash/isDate'; 9 | 10 | // Number utils 11 | export { default as clamp } from 'lodash/clamp'; 12 | 13 | // Object utils 14 | export { default as get } from 'lodash/get'; 15 | export { default as set } from 'lodash/set'; 16 | export { default as mapValues } from 'lodash/mapValues'; 17 | export { default as toPairs } from 'lodash/toPairs'; 18 | export { default as defaults } from 'lodash/defaults'; 19 | export { default as defaultsDeep } from 'lodash/defaultsDeep'; 20 | export { default as pick } from 'lodash/pick'; 21 | export { default as omit } from 'lodash/omit'; 22 | import _has from 'lodash/has'; 23 | 24 | // Collection utils 25 | export { default as map } from 'lodash/map'; 26 | export { default as head } from 'lodash/head'; 27 | export { default as last } from 'lodash/last'; 28 | import _some from 'lodash/some'; 29 | 30 | // Type checkers 31 | export const getType = value => 32 | Object.prototype.toString.call(value).slice(8, -1); 33 | export const isDate = value => _isDate(value) && !isNaN(value.getTime()); 34 | export const isObject = value => getType(value) === 'Object'; 35 | // Object utils 36 | export const has = _has; 37 | export const hasAny = (obj, props) => _some(props, p => _has(obj, p)); 38 | // Collection utils 39 | export const some = _some; 40 | -------------------------------------------------------------------------------- /test/e2e/runner.js: -------------------------------------------------------------------------------- 1 | // 1. start the dev server using production config 2 | process.env.NODE_ENV = 'testing' 3 | 4 | const webpack = require('webpack') 5 | const DevServer = require('webpack-dev-server') 6 | 7 | const webpackConfig = require('../../build/webpack.prod.conf') 8 | const devConfigPromise = require('../../build/webpack.dev.conf') 9 | 10 | let server 11 | 12 | devConfigPromise.then(devConfig => { 13 | const devServerOptions = devConfig.devServer 14 | const compiler = webpack(webpackConfig) 15 | server = new DevServer(compiler, devServerOptions) 16 | const port = devServerOptions.port 17 | const host = devServerOptions.host 18 | return server.listen(port, host) 19 | }) 20 | .then(() => { 21 | // 2. run the nightwatch test suite against it 22 | // to run in additional browsers: 23 | // 1. add an entry in test/e2e/nightwatch.conf.json under "test_settings" 24 | // 2. add it to the --env flag below 25 | // or override the environment flag, for example: `npm run e2e -- --env chrome,firefox` 26 | // For more information on Nightwatch's config file, see 27 | // http://nightwatchjs.org/guide#settings-file 28 | let opts = process.argv.slice(2) 29 | if (opts.indexOf('--config') === -1) { 30 | opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js']) 31 | } 32 | if (opts.indexOf('--env') === -1) { 33 | opts = opts.concat(['--env', 'chrome']) 34 | } 35 | 36 | const spawn = require('cross-spawn') 37 | const runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' }) 38 | 39 | runner.on('exit', function (code) { 40 | server.close() 41 | process.exit(code) 42 | }) 43 | 44 | runner.on('error', function (err) { 45 | server.close() 46 | throw err 47 | }) 48 | }) 49 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/contextmenu/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var o=function(t){var n=t,e=function(){return n};return{get:e,set:function(t){n=t},clone:function(){return o(e())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(t){return{isContextMenuVisible:function(){return t.get()}}},r=function(t){return t.settings.contextmenu_never_use_native},u=function(t){return t.getParam("contextmenu","link openlink image inserttable | cell row column deletetable")},l=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=function(t){return l.DOM.select(t.settings.ui_container)[0]},a=function(t,n){return{x:t,y:n}},f=function(t,n,e){return a(t.x+n,t.y+e)},m=function(t,n){if(t&&"static"!==l.DOM.getStyle(t,"position",!0)){var e=l.DOM.getPos(t),o=e.x-t.scrollLeft,i=e.y-t.scrollTop;return f(n,-o,-i)}return f(n,0,0)},c=function(t,n){if(t.inline)return m(s(t),a((u=n).pageX,u.pageY));var e,o,i,r,u,c=(e=t.getContentAreaContainer(),o=a((r=n).clientX,r.clientY),i=l.DOM.getPos(e),f(o,i.x,i.y));return m(s(t),c)},g=tinymce.util.Tools.resolve("tinymce.ui.Factory"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),y=function(t,n,e,o){null===o.get()?o.set(function(e,n){var t,o,i=[];o=u(e),v.each(o.split(/[ ,]/),function(t){var n=e.menuItems[t];"|"===t&&(n={text:t}),n&&(n.shortcut="",i.push(n))});for(var r=0;r 21 | 22 | #### 校长首页 23 | 24 | 25 | #### 成长学院--首页 26 | 27 | 28 | #### 成长学院---所有课程 29 | 30 | 31 | #### 审批、申请 32 | 33 | 34 | #### 成长学院---校长栏 35 | 36 | 37 | #### 课程详情 38 | 39 | 40 | #### 支付 41 | 42 | 43 | #### 课程视频播放 44 | 45 | 46 | #### 在线商城 47 | 48 | 49 | 50 | 51 | ### 如需体验demo请加微信好友获取账号密码 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/store/modules/common.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-12-07 09:40:11 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-03-10 17:29:27 8 | */ 9 | import router from '@/router' 10 | 11 | export default { 12 | namespaced: true, 13 | state: { 14 | // 页面文档可视高度(随窗口改变大小) 15 | documentClientHeight: 0, 16 | // 导航条, 布局风格, defalut(默认) / inverse(反向) 17 | navbarLayoutType: 'default', 18 | // 侧边栏, 布局皮肤, light(浅色) / dark(黑色) 19 | sidebarLayoutSkin: 'dark', 20 | // 侧边栏, 折叠状态 21 | sidebarFold: false, 22 | // 侧边栏, 菜单 23 | menuList: [], 24 | menuActiveName: '', 25 | // 主入口标签页 26 | mainTabs: [], 27 | mainTabsActiveName: '' 28 | }, 29 | mutations: { 30 | updateDocumentClientHeight (state, height) { 31 | state.documentClientHeight = height 32 | }, 33 | updateSidebarFold (state, fold) { 34 | state.sidebarFold = fold 35 | }, 36 | updateMenuList (state, list) { 37 | state.menuList = list 38 | }, 39 | updateMenuActiveName (state, name) { 40 | state.menuActiveName = name 41 | }, 42 | updateMainTabs (state, tabs) { 43 | state.mainTabs = tabs 44 | }, 45 | updateMainTabsActiveName (state, name) { 46 | state.mainTabsActiveName = name 47 | }, 48 | removeMainActiveTab (state) { 49 | state.mainTabs = state.mainTabs.filter(item => item.name !== state.mainTabsActiveName) 50 | if (state.mainTabs.length >= 1) { 51 | // 当前选中tab被删除 52 | router.push({ name: state.mainTabs[state.mainTabs.length - 1].name }, () => { 53 | state.mainTabsActiveName = state.mainTabs[state.mainTabs.length - 1].name 54 | }) 55 | } else { 56 | state.menuActiveName = '' 57 | router.push({ name: 'home' }) 58 | } 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/views/main-sidebar-sub-menu.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 56 | -------------------------------------------------------------------------------- /src/views/modules/teacher/live.vue: -------------------------------------------------------------------------------- 1 | 9 | 31 | 32 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/views/modules/corp/log.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 69 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 六九教育平台(学校端) 17 | <% if (process.env.NODE_ENV === 'production') { %> 18 | 19 | 22 | <% }else { %> 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | <% } %> 40 | 41 | 42 | 43 |
44 | 45 | 46 | -------------------------------------------------------------------------------- /src/icons/svg/icon-jiaowu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/crud/basis/staff.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Description: 3 | * @Version: 1.0 4 | * @Autor: yongqing 5 | * @Date: 2021-01-14 10:45:04 6 | * @LastEditors: yongqing 7 | * @LastEditTime: 2021-01-23 23:52:42 8 | */ 9 | export const tableOption = { 10 | border: true, 11 | index: true, 12 | indexLabel: "序号", 13 | stripe: true, 14 | menuAlign: "center", 15 | align: "center", 16 | addBtn: false, 17 | editBtn: false, 18 | delBtn: false, 19 | column: [ 20 | { 21 | label: "手机号", 22 | prop: "userName", 23 | search: true 24 | }, 25 | { 26 | label: "姓名", 27 | prop: "empName", 28 | search: true 29 | }, 30 | { 31 | label: "头像", 32 | prop: "headImg", 33 | slot: true 34 | }, 35 | { 36 | label: "性别", 37 | prop: "sex", 38 | type: "select", 39 | dicData: [ 40 | { 41 | label: "女", 42 | value: 0 43 | }, 44 | { 45 | label: "男", 46 | value: 1 47 | } 48 | ] 49 | }, 50 | { 51 | label: "职位", 52 | prop: "postInfo" 53 | }, 54 | { 55 | label: "校区", 56 | prop: "schoolInfo" 57 | }, 58 | { 59 | label: "过期时间", 60 | prop: "expireTime" 61 | }, 62 | { 63 | label: "状态", 64 | prop: "state", 65 | search: true, 66 | slot: true, 67 | type: "select", 68 | dicData: [ 69 | { 70 | label: "禁用", 71 | value: 0 72 | }, 73 | { 74 | label: "启用", 75 | value: 1 76 | } 77 | ] 78 | } 79 | ] 80 | } 81 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/preview/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.Env"),c=function(e){return parseInt(e.getParam("plugin_preview_width","650"),10)},a=function(e){return parseInt(e.getParam("plugin_preview_height","500"),10)},s=function(e){return e.getParam("content_style","")},d=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(t){var n="",i=t.dom.encode,e=s(t);n+='',e&&(n+='"),d.each(t.contentCSS,function(e){n+=''});var o=t.settings.body_id||"tinymce";-1!==o.indexOf("=")&&(o=(o=t.getParam("body_id","","hash"))[t.id]||o);var r=t.settings.body_class||"";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_class","","hash"))[t.id]||"");var c=t.settings.directionality?' dir="'+t.settings.directionality+'"':"";return""+n+'"+t.getContent()+' 60 | 61 | 86 | -------------------------------------------------------------------------------- /src/icons/svg/icon-shouye.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/v-calendar/components/SvgIcon.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 62 | 63 | 73 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/defaults/index.js: -------------------------------------------------------------------------------- 1 | // Vue won't get included in bundle as it is externalized 2 | // https://cli.vuejs.org/guide/build-targets.html#library 3 | import Vue from 'vue'; 4 | import { isObject, defaultsDeep, mapValues, get, has } from '../_'; 5 | import touch from './touch.json'; 6 | import masks from './masks.json'; 7 | import screens from './screens.json'; 8 | import locales from './locales'; 9 | 10 | const pluginDefaults = { 11 | componentPrefix: 'v', 12 | navVisibility: 'click', 13 | titlePosition: 'center', 14 | transition: 'slide-h', 15 | touch, 16 | masks, 17 | screens, 18 | locales, 19 | datePicker: { 20 | updateOnInput: true, 21 | inputDebounce: 1000, 22 | popover: { 23 | visibility: 'hover-focus', 24 | placement: 'bottom-start', 25 | keepVisibleOnInput: false, 26 | isInteractive: true, 27 | }, 28 | }, 29 | }; 30 | 31 | let defaults_ = null; 32 | 33 | export const setupDefaults = opts => { 34 | if (!defaults_) { 35 | defaults_ = new Vue({ 36 | data() { 37 | return { 38 | defaults: defaultsDeep(opts, pluginDefaults), 39 | }; 40 | }, 41 | computed: { 42 | locales() { 43 | return mapValues(this.defaults.locales, v => { 44 | v.masks = defaultsDeep(v.masks, this.defaults.masks); 45 | return v; 46 | }); 47 | }, 48 | }, 49 | }); 50 | } 51 | return defaults_.defaults; 52 | }; 53 | 54 | export const defaultsMixin = { 55 | beforeCreate() { 56 | setupDefaults(); 57 | }, 58 | computed: { 59 | $defaults() { 60 | return defaults_.defaults; 61 | }, 62 | $locales() { 63 | return defaults_.locales; 64 | }, 65 | }, 66 | methods: { 67 | propOrDefault(prop, defaultPath, strategy) { 68 | return this.passedProp(prop, get(this.$defaults, defaultPath), strategy); 69 | }, 70 | passedProp(prop, fallback, strategy) { 71 | if (has(this.$options.propsData, prop)) { 72 | const propValue = this[prop]; 73 | if (isObject(propValue) && strategy === 'merge') { 74 | return defaultsDeep(propValue, fallback); 75 | } 76 | return propValue; 77 | } 78 | return fallback; 79 | }, 80 | }, 81 | }; 82 | -------------------------------------------------------------------------------- /src/components/pagination.vue: -------------------------------------------------------------------------------- 1 | 9 | 46 | 47 | 93 | 94 | 96 | -------------------------------------------------------------------------------- /src/components/img-upload/index.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 67 | 68 | 93 | -------------------------------------------------------------------------------- /src/components/v-calendar/components/TimeSelect.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 30 | 31 | 94 | -------------------------------------------------------------------------------- /src/views/modules/corp/pset/wx-config.vue: -------------------------------------------------------------------------------- 1 | 9 | 30 | 116 | 117 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/screens.js: -------------------------------------------------------------------------------- 1 | // Vue won't get included in bundle as it is externalized 2 | // https://cli.vuejs.org/guide/build-targets.html#library 3 | import Vue from 'vue'; 4 | import buildMediaQuery from './buildMediaQuery'; 5 | import defaultScreens from './defaults/screens.json'; 6 | import { isUndefined, mapValues, toPairs, isFunction, has } from './_'; 7 | 8 | let isSettingUp = false; 9 | let shouldRefreshQueries = false; 10 | let screensComp = null; 11 | 12 | export function setupScreens(screens = defaultScreens, forceSetup) { 13 | if ((screensComp && !forceSetup) || isSettingUp) { 14 | return; 15 | } 16 | isSettingUp = true; 17 | shouldRefreshQueries = true; 18 | // Use a private Vue component to store reactive screen matches 19 | screensComp = new Vue({ 20 | data() { 21 | return { 22 | matches: [], 23 | queries: [], 24 | }; 25 | }, 26 | methods: { 27 | refreshQueries() { 28 | if (!window || !window.matchMedia) return; 29 | this.queries = mapValues(screens, v => { 30 | const query = window.matchMedia(buildMediaQuery(v)); 31 | if (isFunction(query.addEventListener)) { 32 | query.addEventListener('change', this.refreshMatches); 33 | } else { 34 | // Deprecated 'MediaQueryList' API, p[1].matches) 44 | .map(p => p[0]); 45 | }, 46 | }, 47 | }); 48 | isSettingUp = false; 49 | } 50 | 51 | // Global mixin that provides responsive '$screens' utility method 52 | // that refreshes any time the screen matches update 53 | Vue.mixin({ 54 | beforeCreate() { 55 | if (!isSettingUp) { 56 | setupScreens(); 57 | } 58 | }, 59 | mounted() { 60 | if (shouldRefreshQueries && screensComp) { 61 | screensComp.refreshQueries(); 62 | shouldRefreshQueries = false; 63 | } 64 | }, 65 | computed: { 66 | $screens() { 67 | return (config, def) => { 68 | debugger 69 | return screensComp.matches.reduce( 70 | (prev, curr) => (has(config, curr) ? config[curr] : prev), 71 | isUndefined(def) ? config.default : def, 72 | ); 73 | } 74 | 75 | 76 | }, 77 | }, 78 | }); 79 | -------------------------------------------------------------------------------- /src/utils/pageUtil.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * 分页彩虹算法
4 | * 通过传入的信息,生成一个分页列表显示 5 | * [4,5,6,7,8] 6 | * @param currentPage 当前页 7 | * @param pageCount 总页数 8 | * @param displayCount 每屏展示的页数 9 | * @return 分页条 10 | */ 11 | const rainbow = (currentPage, pageCount, displayCount = 5) => { 12 | var isEven = true; 13 | isEven = displayCount % 2 == 0; 14 | var left = displayCount / 2; 15 | var right = displayCount / 2; 16 | 17 | var length = displayCount; 18 | if (isEven) { 19 | right++; 20 | } 21 | if (pageCount < displayCount) { 22 | length = pageCount; 23 | } 24 | var result = new Array(length); 25 | if (pageCount >= displayCount) { 26 | if (currentPage <= left) { 27 | for (var i = 0; i < result.length; i++) { 28 | result[i] = i + 1; 29 | } 30 | } else if (currentPage > pageCount - right) { 31 | for (var i = 0; i < result.length; i++) { 32 | result[i] = i + pageCount - displayCount + 1; 33 | } 34 | } else { 35 | for (var i = 0; i < result.length; i++) { 36 | result[i] = i + currentPage - left + (isEven ? 1 : 0); 37 | } 38 | } 39 | } else { 40 | for (var i = 0; i < result.length; i++) { 41 | result[i] = i + 1; 42 | } 43 | } 44 | var ceilResult = [] 45 | result.forEach(resultItem => { 46 | ceilResult.push(Math.ceil(resultItem)) 47 | }) 48 | return ceilResult; 49 | } 50 | 51 | 52 | /** 53 | * 基于分页彩虹算法之上生成分页带 '...' 的分页算法
54 | * 通过传入的信息,生成一个分页列表显示 55 | * 56 | * [1, '...',4,5,6,7,8, '...', 10] 57 | * @param currentPage 当前页 58 | * @param pageCount 总页数 59 | * @param displayCount 每屏展示的页数 60 | * @return 分页条 61 | */ 62 | const rainbowWithDot = (currentPage, pageCount, displayCount = 5) => { 63 | var rainbowResult = rainbow(currentPage, pageCount, displayCount) 64 | var rainbowResultLength = rainbowResult.length 65 | // 如果页数足够小,直接返回展示的页数 66 | if (rainbowResultLength < displayCount) { 67 | return rainbowResult 68 | } 69 | 70 | var result = [] 71 | if (rainbowResult[0] === 2) { 72 | result.push(1) 73 | } 74 | if (rainbowResult[0] > 2) { 75 | result.push(1) 76 | result.push('...') 77 | } 78 | result = result.concat(rainbowResult) 79 | if (rainbowResult[rainbowResultLength - 1] === pageCount - 1) { 80 | result.push(pageCount) 81 | } 82 | 83 | if (rainbowResult[rainbowResultLength - 1] < pageCount - 1) { 84 | result.push('...') 85 | result.push(pageCount) 86 | } 87 | return result 88 | } 89 | 90 | 91 | module.exports = { 92 | rainbow: rainbow, 93 | rainbowWithDot: rainbowWithDot 94 | } 95 | -------------------------------------------------------------------------------- /src/components/v-calendar/utils/popovers.js: -------------------------------------------------------------------------------- 1 | import { elementContains } from './helpers'; 2 | 3 | export function showPopover(opts) { 4 | if (document) { 5 | document.dispatchEvent( 6 | new CustomEvent('show-popover', { 7 | detail: opts, 8 | }), 9 | ); 10 | } 11 | } 12 | 13 | export function hidePopover(opts) { 14 | if (document) { 15 | document.dispatchEvent( 16 | new CustomEvent('hide-popover', { 17 | detail: opts, 18 | }), 19 | ); 20 | } 21 | } 22 | 23 | export function togglePopover(opts) { 24 | if (document) { 25 | document.dispatchEvent( 26 | new CustomEvent('toggle-popover', { 27 | detail: opts, 28 | }), 29 | ); 30 | } 31 | } 32 | 33 | export function updatePopover(opts) { 34 | if (document) { 35 | document.dispatchEvent( 36 | new CustomEvent('update-popover', { 37 | detail: opts, 38 | }), 39 | ); 40 | } 41 | } 42 | 43 | export function getPopoverTriggerEvents(opts) { 44 | const { visibility } = opts; 45 | const click = visibility === 'click'; 46 | const hover = visibility === 'hover'; 47 | const hoverFocus = visibility === 'hover-focus'; 48 | const focus = visibility === 'focus'; 49 | opts.autoHide = !click; 50 | let hovered = false; 51 | let focused = false; 52 | return { 53 | click(e) { 54 | if (click) { 55 | opts.ref = e.target; 56 | togglePopover(opts); 57 | e.stopPropagation(); 58 | } 59 | }, 60 | mousemove(e) { 61 | opts.ref = e.currentTarget; 62 | if (!hovered) { 63 | hovered = true; 64 | if (hover || hoverFocus) { 65 | showPopover(opts); 66 | } 67 | } 68 | }, 69 | mouseleave(e) { 70 | opts.ref = e.target; 71 | if (hovered) { 72 | hovered = false; 73 | if (hover || (hoverFocus && !focused)) { 74 | hidePopover(opts); 75 | } 76 | } 77 | }, 78 | focusin(e) { 79 | opts.ref = e.currentTarget; 80 | if (!focused) { 81 | focused = true; 82 | if (focus || hoverFocus) { 83 | showPopover(opts); 84 | } 85 | } 86 | }, 87 | focusout(e) { 88 | opts.ref = e.currentTarget; 89 | if (focused && !elementContains(opts.ref, e.relatedTarget)) { 90 | focused = false; 91 | if (focus || (hoverFocus && !hovered)) { 92 | hidePopover(opts); 93 | } 94 | } 95 | }, 96 | }; 97 | } 98 | -------------------------------------------------------------------------------- /src/views/modules/corp/pset/oss-config.vue: -------------------------------------------------------------------------------- 1 | 9 | 28 | 114 | 115 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/insertdatetime/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var r=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return r(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))},a=function(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])},t=function(e){return e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d"))},i=n,o=a,u=function(e){var t=a(e);return 0'+n+"")}else e.insertContent(f(e,t));var i,o,u,c,l},y=f,M=function(e){e.addCommand("mceInsertDate",function(){g(e,t(e))}),e.addCommand("mceInsertTime",function(){g(e,i(e))})},v=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=function(t,n){var r,a,e,i=(a=n,e=o(r=t),v.map(e,function(e){return{text:y(r,e),onclick:function(){a.set(e),g(r,e)}}}));t.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",menu:i,onclick:function(){var e=n.get();g(t,e||u(t))}}),t.addMenuItem("insertdatetime",{icon:"date",text:"Date/time",menu:i,context:"insert"})};e.add("insertdatetime",function(e){var t=r(null);M(e),S(e,t)})}(); -------------------------------------------------------------------------------- /src/views/modules/edu/distr-add-or-update.vue: -------------------------------------------------------------------------------- 1 | 9 | 26 | 77 | 78 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/emoticons/plugin.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var emoticons = (function () { 3 | 'use strict'; 4 | 5 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 6 | 7 | var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); 8 | 9 | var emoticons = [ 10 | [ 11 | 'cool', 12 | 'cry', 13 | 'embarassed', 14 | 'foot-in-mouth' 15 | ], 16 | [ 17 | 'frown', 18 | 'innocent', 19 | 'kiss', 20 | 'laughing' 21 | ], 22 | [ 23 | 'money-mouth', 24 | 'sealed', 25 | 'smile', 26 | 'surprised' 27 | ], 28 | [ 29 | 'tongue-out', 30 | 'undecided', 31 | 'wink', 32 | 'yell' 33 | ] 34 | ]; 35 | var getHtml = function (pluginUrl) { 36 | var emoticonsHtml; 37 | emoticonsHtml = ''; 38 | global$1.each(emoticons, function (row) { 39 | emoticonsHtml += ''; 40 | global$1.each(row, function (icon) { 41 | var emoticonUrl = pluginUrl + '/img/smiley-' + icon + '.gif'; 42 | emoticonsHtml += ''; 43 | }); 44 | emoticonsHtml += ''; 45 | }); 46 | emoticonsHtml += '
'; 47 | return emoticonsHtml; 48 | }; 49 | var $_1c1n9qbajnlpb11e = { getHtml: getHtml }; 50 | 51 | var insertEmoticon = function (editor, src, alt) { 52 | editor.insertContent(editor.dom.createHTML('img', { 53 | src: src, 54 | alt: alt 55 | })); 56 | }; 57 | var register = function (editor, pluginUrl) { 58 | var panelHtml = $_1c1n9qbajnlpb11e.getHtml(pluginUrl); 59 | editor.addButton('emoticons', { 60 | type: 'panelbutton', 61 | panel: { 62 | role: 'application', 63 | autohide: true, 64 | html: panelHtml, 65 | onclick: function (e) { 66 | var linkElm = editor.dom.getParent(e.target, 'a'); 67 | if (linkElm) { 68 | insertEmoticon(editor, linkElm.getAttribute('data-mce-url'), linkElm.getAttribute('data-mce-alt')); 69 | this.hide(); 70 | } 71 | } 72 | }, 73 | tooltip: 'Emoticons' 74 | }); 75 | }; 76 | var $_9zn7l8b9jnlpb11b = { register: register }; 77 | 78 | global.add('emoticons', function (editor, pluginUrl) { 79 | $_9zn7l8b9jnlpb11b.register(editor, pluginUrl); 80 | }); 81 | function Plugin () { 82 | } 83 | 84 | return Plugin; 85 | 86 | }()); 87 | })(); 88 | -------------------------------------------------------------------------------- /src/icons/svg/icon-zhanghu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/v-calendar/components/CustomTransition.vue: -------------------------------------------------------------------------------- 1 | 41 | 42 | 108 | -------------------------------------------------------------------------------- /src/views/modules/edu/distr.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /static/plugins/tinymce.4.9.4/plugins/bbcode/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(e){e=t.trim(e);var o=function(o,t){e=e.replace(o,t)};return o(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/(.*?)<\/font>/gi,"$1"),o(//gi,"[img]$1[/img]"),o(/(.*?)<\/span>/gi,"[code]$1[/code]"),o(/(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/(.*?)<\/span>/gi,"[u]$1[/u]"),o(//gi,"[u]"),o(/]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/
/gi,"\n"),o(//gi,"\n"),o(/
/gi,"\n"),o(/

/gi,""),o(/<\/p>/gi,"\n"),o(/ |\u00a0/gi," "),o(/"/gi,'"'),o(/</gi,"<"),o(/>/gi,">"),o(/&/gi,"&"),e},i=function(e){e=t.trim(e);var o=function(o,t){e=e.replace(o,t)};return o(/\n/gi,"
"),o(/\[b\]/gi,""),o(/\[\/b\]/gi,""),o(/\[i\]/gi,""),o(/\[\/i\]/gi,""),o(/\[u\]/gi,""),o(/\[\/u\]/gi,""),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2'),o(/\[url\](.*?)\[\/url\]/gi,'$1'),o(/\[img\](.*?)\[\/img\]/gi,''),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),o(/\[code\](.*?)\[\/code\]/gi,'$1 '),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),e};o.add("bbcode",function(){return{init:function(o){o.on("beforeSetContent",function(o){o.content=i(o.content)}),o.on("postProcess",function(o){o.set&&(o.content=i(o.content)),o.get&&(o.content=e(o.content))})}}})}(); --------------------------------------------------------------------------------