init
3
.browserslistrc
Normal file
@ -0,0 +1,3 @@
|
||||
> 1%
|
||||
last 2 versions
|
||||
not dead
|
||||
12
.editorconfig
Normal file
@ -0,0 +1,12 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
13
.env.dev
Normal file
@ -0,0 +1,13 @@
|
||||
NODE_ENV = 'development'
|
||||
|
||||
# VUE_APP_BASE_URL="https://mall.gpxscs.cn"
|
||||
# VUE_APP_ADMIN_URL="https://mall.gpxscs.cn/admin"
|
||||
# VUE_APP_API_URL="https://mall.gpxscs.cn/api"
|
||||
# VUE_APP_H5_URL="https://mall.gpxscs.cn/h5"
|
||||
|
||||
VUE_APP_BASE_URL="https://demo.lancerdt.com"
|
||||
VUE_APP_ADMIN_URL="http://localhost:9999"
|
||||
VUE_APP_API_URL="https://demo.lancerdt.com/api"
|
||||
VUE_APP_H5_URL="http://localhost:20000"
|
||||
|
||||
VUE_APP_VER="2.0.278"
|
||||
8
.env.prod
Normal file
@ -0,0 +1,8 @@
|
||||
NODE_ENV = 'production'
|
||||
|
||||
VUE_APP_BASE_URL="https://mall.gpxscs.cn"
|
||||
VUE_APP_ADMIN_URL="https://mall.gpxscs.cn/admin"
|
||||
VUE_APP_API_URL="https://mall.gpxscs.cn/api"
|
||||
VUE_APP_H5_URL="https://mall.gpxscs.cn/h5"
|
||||
|
||||
VUE_APP_VER="2.0.278"
|
||||
15
.env.serve
Normal file
@ -0,0 +1,15 @@
|
||||
NODE_ENV = 'development'
|
||||
|
||||
|
||||
VUE_APP_BASE_URL="https://mall.gpxscs.cn"
|
||||
VUE_APP_ADMIN_URL="http://localhost:9999"
|
||||
VUE_APP_API_URL="https://mall.gpxscs.cn/api"
|
||||
VUE_APP_H5_URL="http://localhost:20000"
|
||||
|
||||
|
||||
# VUE_APP_BASE_URL="https://demo.lancerdt.com"
|
||||
# VUE_APP_ADMIN_URL="http://localhost:9999"
|
||||
# VUE_APP_API_URL="https://demo.lancerdt.com/api"
|
||||
# VUE_APP_H5_URL="http://localhost:20000"
|
||||
|
||||
VUE_APP_VER="2.0.279"
|
||||
5
.eslintignore
Normal file
@ -0,0 +1,5 @@
|
||||
src/assets
|
||||
src/icons
|
||||
public
|
||||
dist
|
||||
node_modules
|
||||
108
.eslintrc.js
Normal file
@ -0,0 +1,108 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true,
|
||||
},
|
||||
extends: ['plugin:vue/recommended', 'eslint:recommended', '@vue/prettier'],
|
||||
parser: 'vue-eslint-parser',
|
||||
parserOptions: {
|
||||
sourceType: 'module',
|
||||
ecmaVersion: 2020,
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
//'no-undef': 2,
|
||||
'no-console': 'off',
|
||||
'no-debugger': 'off',
|
||||
'vue/no-v-html': 'off',
|
||||
'vue/html-self-closing': [
|
||||
'error',
|
||||
{
|
||||
html: {
|
||||
void: 'any',
|
||||
normal: 'any',
|
||||
component: 'always',
|
||||
},
|
||||
svg: 'always',
|
||||
math: 'always',
|
||||
},
|
||||
],
|
||||
// 多字组件名称
|
||||
'vue/multi-word-component-names': 'off',
|
||||
// Vue.js风格指南(https://cn.vuejs.org/v2/style-guide/)
|
||||
// Vue组件排序
|
||||
'vue/order-in-components': [
|
||||
'warn',
|
||||
{
|
||||
order: [
|
||||
'el',
|
||||
'name',
|
||||
'key',
|
||||
'parent',
|
||||
'functional',
|
||||
['delimiters', 'comments'],
|
||||
['components', 'directives', 'filters'],
|
||||
'extends',
|
||||
'mixins',
|
||||
['provide', 'inject'],
|
||||
'ROUTER_GUARDS',
|
||||
'layout',
|
||||
'middleware',
|
||||
'validate',
|
||||
'scrollToTop',
|
||||
'transition',
|
||||
'loading',
|
||||
'inheritAttrs',
|
||||
'model',
|
||||
['props', 'propsData'],
|
||||
'emits',
|
||||
'setup',
|
||||
'fetch',
|
||||
'asyncData',
|
||||
'data',
|
||||
'head',
|
||||
'computed',
|
||||
'watch',
|
||||
'watchQuery',
|
||||
'LIFECYCLE_HOOKS',
|
||||
'methods',
|
||||
['template', 'render'],
|
||||
'renderError',
|
||||
],
|
||||
},
|
||||
],
|
||||
// Vue属性排序
|
||||
'vue/attributes-order': [
|
||||
'warn',
|
||||
{
|
||||
order: [
|
||||
'DEFINITION',
|
||||
'LIST_RENDERING',
|
||||
'CONDITIONALS',
|
||||
'RENDER_MODIFIERS',
|
||||
'GLOBAL',
|
||||
'UNIQUE',
|
||||
'TWO_WAY_BINDING',
|
||||
'OTHER_DIRECTIVES',
|
||||
'OTHER_ATTR',
|
||||
'EVENTS',
|
||||
'CONTENT',
|
||||
],
|
||||
alphabetical: true, //字母顺序
|
||||
},
|
||||
],
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: [
|
||||
'**/__tests__/*.{j,t}s?(x)',
|
||||
'**/tests/unit/**/*.spec.{j,t}s?(x)',
|
||||
],
|
||||
env: {
|
||||
jest: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
16
.gitattributes
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
*.html text eol=lf
|
||||
*.css text eol=lf
|
||||
*.js text eol=lf
|
||||
*.scss text eol=lf
|
||||
*.vue text eol=lf
|
||||
*.hbs text eol=lf
|
||||
*.sh text eol=lf
|
||||
*.md text eol=lf
|
||||
*.json text eol=lf
|
||||
*.yml text eol=lf
|
||||
.browserslistrc text eol=lf
|
||||
.editorconfig text eol=lf
|
||||
.eslintignore text eol=lf
|
||||
.gitattributes text eol=lf
|
||||
LICENSE text eol=lf
|
||||
*.conf text eol=lf
|
||||
48
.gitignore
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
# Lock files
|
||||
yarn.lock
|
||||
pnpm-lock.yaml
|
||||
package-lock.json
|
||||
|
||||
# Yarn v2 not using using Zero-Installs
|
||||
.yarn/*
|
||||
#!.yarn/cache
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
||||
.pnp.*
|
||||
|
||||
# Vab
|
||||
public/video
|
||||
*.zip
|
||||
*.7z
|
||||
*.rar
|
||||
src/vab/styles/themes/red.scss
|
||||
/src/vab/styles/themes/red-black.scss
|
||||
/src/vab/styles/themes/red-white.scss
|
||||
/.history
|
||||
17
.stylelintrc.js
Normal file
@ -0,0 +1,17 @@
|
||||
module.exports = {
|
||||
extends: ['stylelint-config-recess-order', 'stylelint-config-prettier'],
|
||||
overrides: [
|
||||
{
|
||||
files: ['**/*.html', '**/*.vue'],
|
||||
customSyntax: 'postcss-html',
|
||||
},
|
||||
{
|
||||
files: ['**/*.js'],
|
||||
customSyntax: 'postcss-jsx',
|
||||
},
|
||||
{
|
||||
files: ['**/*.scss'],
|
||||
customSyntax: 'postcss-scss',
|
||||
},
|
||||
],
|
||||
}
|
||||
373
LICENSE
Normal file
@ -0,0 +1,373 @@
|
||||
Mozilla Public License Version 2.0
|
||||
==================================
|
||||
|
||||
1. Definitions
|
||||
--------------
|
||||
|
||||
1.1. "Contributor"
|
||||
means each individual or legal entity that creates, contributes to
|
||||
the creation of, or owns Covered Software.
|
||||
|
||||
1.2. "Contributor Version"
|
||||
means the combination of the Contributions of others (if any) used
|
||||
by a Contributor and that particular Contributor's Contribution.
|
||||
|
||||
1.3. "Contribution"
|
||||
means Covered Software of a particular Contributor.
|
||||
|
||||
1.4. "Covered Software"
|
||||
means Source Code Form to which the initial Contributor has attached
|
||||
the notice in Exhibit A, the Executable Form of such Source Code
|
||||
Form, and Modifications of such Source Code Form, in each case
|
||||
including portions thereof.
|
||||
|
||||
1.5. "Incompatible With Secondary Licenses"
|
||||
means
|
||||
|
||||
(a) that the initial Contributor has attached the notice described
|
||||
in Exhibit B to the Covered Software; or
|
||||
|
||||
(b) that the Covered Software was made available under the terms of
|
||||
version 1.1 or earlier of the License, but not also under the
|
||||
terms of a Secondary License.
|
||||
|
||||
1.6. "Executable Form"
|
||||
means any form of the work other than Source Code Form.
|
||||
|
||||
1.7. "Larger Work"
|
||||
means a work that combines Covered Software with other material, in
|
||||
a separate file or files, that is not Covered Software.
|
||||
|
||||
1.8. "License"
|
||||
means this document.
|
||||
|
||||
1.9. "Licensable"
|
||||
means having the right to grant, to the maximum extent possible,
|
||||
whether at the time of the initial grant or subsequently, any and
|
||||
all of the rights conveyed by this License.
|
||||
|
||||
1.10. "Modifications"
|
||||
means any of the following:
|
||||
|
||||
(a) any file in Source Code Form that results from an addition to,
|
||||
deletion from, or modification of the contents of Covered
|
||||
Software; or
|
||||
|
||||
(b) any new file in Source Code Form that contains any Covered
|
||||
Software.
|
||||
|
||||
1.11. "Patent Claims" of a Contributor
|
||||
means any patent claim(s), including without limitation, method,
|
||||
process, and apparatus claims, in any patent Licensable by such
|
||||
Contributor that would be infringed, but for the grant of the
|
||||
License, by the making, using, selling, offering for sale, having
|
||||
made, import, or transfer of either its Contributions or its
|
||||
Contributor Version.
|
||||
|
||||
1.12. "Secondary License"
|
||||
means either the GNU General Public License, Version 2.0, the GNU
|
||||
Lesser General Public License, Version 2.1, the GNU Affero General
|
||||
Public License, Version 3.0, or any later versions of those
|
||||
licenses.
|
||||
|
||||
1.13. "Source Code Form"
|
||||
means the form of the work preferred for making modifications.
|
||||
|
||||
1.14. "You" (or "Your")
|
||||
means an individual or a legal entity exercising rights under this
|
||||
License. For legal entities, "You" includes any entity that
|
||||
controls, is controlled by, or is under common control with You. For
|
||||
purposes of this definition, "control" means (a) the power, direct
|
||||
or indirect, to cause the direction or management of such entity,
|
||||
whether by contract or otherwise, or (b) ownership of more than
|
||||
fifty percent (50%) of the outstanding shares or beneficial
|
||||
ownership of such entity.
|
||||
|
||||
2. License Grants and Conditions
|
||||
--------------------------------
|
||||
|
||||
2.1. Grants
|
||||
|
||||
Each Contributor hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license:
|
||||
|
||||
(a) under intellectual property rights (other than patent or trademark)
|
||||
Licensable by such Contributor to use, reproduce, make available,
|
||||
modify, display, perform, distribute, and otherwise exploit its
|
||||
Contributions, either on an unmodified basis, with Modifications, or
|
||||
as part of a Larger Work; and
|
||||
|
||||
(b) under Patent Claims of such Contributor to make, use, sell, offer
|
||||
for sale, have made, import, and otherwise transfer either its
|
||||
Contributions or its Contributor Version.
|
||||
|
||||
2.2. Effective Date
|
||||
|
||||
The licenses granted in Section 2.1 with respect to any Contribution
|
||||
become effective for each Contribution on the date the Contributor first
|
||||
distributes such Contribution.
|
||||
|
||||
2.3. Limitations on Grant Scope
|
||||
|
||||
The licenses granted in this Section 2 are the only rights granted under
|
||||
this License. No additional rights or licenses will be implied from the
|
||||
distribution or licensing of Covered Software under this License.
|
||||
Notwithstanding Section 2.1(b) above, no patent license is granted by a
|
||||
Contributor:
|
||||
|
||||
(a) for any code that a Contributor has removed from Covered Software;
|
||||
or
|
||||
|
||||
(b) for infringements caused by: (i) Your and any other third party's
|
||||
modifications of Covered Software, or (ii) the combination of its
|
||||
Contributions with other software (except as part of its Contributor
|
||||
Version); or
|
||||
|
||||
(c) under Patent Claims infringed by Covered Software in the absence of
|
||||
its Contributions.
|
||||
|
||||
This License does not grant any rights in the trademarks, service marks,
|
||||
or logos of any Contributor (except as may be necessary to comply with
|
||||
the notice requirements in Section 3.4).
|
||||
|
||||
2.4. Subsequent Licenses
|
||||
|
||||
No Contributor makes additional grants as a result of Your choice to
|
||||
distribute the Covered Software under a subsequent version of this
|
||||
License (see Section 10.2) or under the terms of a Secondary License (if
|
||||
permitted under the terms of Section 3.3).
|
||||
|
||||
2.5. Representation
|
||||
|
||||
Each Contributor represents that the Contributor believes its
|
||||
Contributions are its original creation(s) or it has sufficient rights
|
||||
to grant the rights to its Contributions conveyed by this License.
|
||||
|
||||
2.6. Fair Use
|
||||
|
||||
This License is not intended to limit any rights You have under
|
||||
applicable copyright doctrines of fair use, fair dealing, or other
|
||||
equivalents.
|
||||
|
||||
2.7. Conditions
|
||||
|
||||
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
|
||||
in Section 2.1.
|
||||
|
||||
3. Responsibilities
|
||||
-------------------
|
||||
|
||||
3.1. Distribution of Source Form
|
||||
|
||||
All distribution of Covered Software in Source Code Form, including any
|
||||
Modifications that You create or to which You contribute, must be under
|
||||
the terms of this License. You must inform recipients that the Source
|
||||
Code Form of the Covered Software is governed by the terms of this
|
||||
License, and how they can obtain a copy of this License. You may not
|
||||
attempt to alter or restrict the recipients' rights in the Source Code
|
||||
Form.
|
||||
|
||||
3.2. Distribution of Executable Form
|
||||
|
||||
If You distribute Covered Software in Executable Form then:
|
||||
|
||||
(a) such Covered Software must also be made available in Source Code
|
||||
Form, as described in Section 3.1, and You must inform recipients of
|
||||
the Executable Form how they can obtain a copy of such Source Code
|
||||
Form by reasonable means in a timely manner, at a charge no more
|
||||
than the cost of distribution to the recipient; and
|
||||
|
||||
(b) You may distribute such Executable Form under the terms of this
|
||||
License, or sublicense it under different terms, provided that the
|
||||
license for the Executable Form does not attempt to limit or alter
|
||||
the recipients' rights in the Source Code Form under this License.
|
||||
|
||||
3.3. Distribution of a Larger Work
|
||||
|
||||
You may create and distribute a Larger Work under terms of Your choice,
|
||||
provided that You also comply with the requirements of this License for
|
||||
the Covered Software. If the Larger Work is a combination of Covered
|
||||
Software with a work governed by one or more Secondary Licenses, and the
|
||||
Covered Software is not Incompatible With Secondary Licenses, this
|
||||
License permits You to additionally distribute such Covered Software
|
||||
under the terms of such Secondary License(s), so that the recipient of
|
||||
the Larger Work may, at their option, further distribute the Covered
|
||||
Software under the terms of either this License or such Secondary
|
||||
License(s).
|
||||
|
||||
3.4. Notices
|
||||
|
||||
You may not remove or alter the substance of any license notices
|
||||
(including copyright notices, patent notices, disclaimers of warranty,
|
||||
or limitations of liability) contained within the Source Code Form of
|
||||
the Covered Software, except that You may alter any license notices to
|
||||
the extent required to remedy known factual inaccuracies.
|
||||
|
||||
3.5. Application of Additional Terms
|
||||
|
||||
You may choose to offer, and to charge a fee for, warranty, support,
|
||||
indemnity or liability obligations to one or more recipients of Covered
|
||||
Software. However, You may do so only on Your own behalf, and not on
|
||||
behalf of any Contributor. You must make it absolutely clear that any
|
||||
such warranty, support, indemnity, or liability obligation is offered by
|
||||
You alone, and You hereby agree to indemnify every Contributor for any
|
||||
liability incurred by such Contributor as a result of warranty, support,
|
||||
indemnity or liability terms You offer. You may include additional
|
||||
disclaimers of warranty and limitations of liability specific to any
|
||||
jurisdiction.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation
|
||||
---------------------------------------------------
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this
|
||||
License with respect to some or all of the Covered Software due to
|
||||
statute, judicial order, or regulation then You must: (a) comply with
|
||||
the terms of this License to the maximum extent possible; and (b)
|
||||
describe the limitations and the code they affect. Such description must
|
||||
be placed in a text file included with all distributions of the Covered
|
||||
Software under this License. Except to the extent prohibited by statute
|
||||
or regulation, such description must be sufficiently detailed for a
|
||||
recipient of ordinary skill to be able to understand it.
|
||||
|
||||
5. Termination
|
||||
--------------
|
||||
|
||||
5.1. The rights granted under this License will terminate automatically
|
||||
if You fail to comply with any of its terms. However, if You become
|
||||
compliant, then the rights granted under this License from a particular
|
||||
Contributor are reinstated (a) provisionally, unless and until such
|
||||
Contributor explicitly and finally terminates Your grants, and (b) on an
|
||||
ongoing basis, if such Contributor fails to notify You of the
|
||||
non-compliance by some reasonable means prior to 60 days after You have
|
||||
come back into compliance. Moreover, Your grants from a particular
|
||||
Contributor are reinstated on an ongoing basis if such Contributor
|
||||
notifies You of the non-compliance by some reasonable means, this is the
|
||||
first time You have received notice of non-compliance with this License
|
||||
from such Contributor, and You become compliant prior to 30 days after
|
||||
Your receipt of the notice.
|
||||
|
||||
5.2. If You initiate litigation against any entity by asserting a patent
|
||||
infringement claim (excluding declaratory judgment actions,
|
||||
counter-claims, and cross-claims) alleging that a Contributor Version
|
||||
directly or indirectly infringes any patent, then the rights granted to
|
||||
You by any and all Contributors for the Covered Software under Section
|
||||
2.1 of this License shall terminate.
|
||||
|
||||
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
|
||||
end user license agreements (excluding distributors and resellers) which
|
||||
have been validly granted by You or Your distributors under this License
|
||||
prior to termination shall survive termination.
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 6. Disclaimer of Warranty *
|
||||
* ------------------------- *
|
||||
* *
|
||||
* Covered Software is provided under this License on an "as is" *
|
||||
* basis, without warranty of any kind, either expressed, implied, or *
|
||||
* statutory, including, without limitation, warranties that the *
|
||||
* Covered Software is free of defects, merchantable, fit for a *
|
||||
* particular purpose or non-infringing. The entire risk as to the *
|
||||
* quality and performance of the Covered Software is with You. *
|
||||
* Should any Covered Software prove defective in any respect, You *
|
||||
* (not any Contributor) assume the cost of any necessary servicing, *
|
||||
* repair, or correction. This disclaimer of warranty constitutes an *
|
||||
* essential part of this License. No use of any Covered Software is *
|
||||
* authorized under this License except under this disclaimer. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
************************************************************************
|
||||
* *
|
||||
* 7. Limitation of Liability *
|
||||
* -------------------------- *
|
||||
* *
|
||||
* Under no circumstances and under no legal theory, whether tort *
|
||||
* (including negligence), contract, or otherwise, shall any *
|
||||
* Contributor, or anyone who distributes Covered Software as *
|
||||
* permitted above, be liable to You for any direct, indirect, *
|
||||
* special, incidental, or consequential damages of any character *
|
||||
* including, without limitation, damages for lost profits, loss of *
|
||||
* goodwill, work stoppage, computer failure or malfunction, or any *
|
||||
* and all other commercial damages or losses, even if such party *
|
||||
* shall have been informed of the possibility of such damages. This *
|
||||
* limitation of liability shall not apply to liability for death or *
|
||||
* personal injury resulting from such party's negligence to the *
|
||||
* extent applicable law prohibits such limitation. Some *
|
||||
* jurisdictions do not allow the exclusion or limitation of *
|
||||
* incidental or consequential damages, so this exclusion and *
|
||||
* limitation may not apply to You. *
|
||||
* *
|
||||
************************************************************************
|
||||
|
||||
8. Litigation
|
||||
-------------
|
||||
|
||||
Any litigation relating to this License may be brought only in the
|
||||
courts of a jurisdiction where the defendant maintains its principal
|
||||
place of business and such litigation shall be governed by laws of that
|
||||
jurisdiction, without reference to its conflict-of-law provisions.
|
||||
Nothing in this Section shall prevent a party's ability to bring
|
||||
cross-claims or counter-claims.
|
||||
|
||||
9. Miscellaneous
|
||||
----------------
|
||||
|
||||
This License represents the complete agreement concerning the subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. Any law or regulation which provides
|
||||
that the language of a contract shall be construed against the drafter
|
||||
shall not be used to construe this License against a Contributor.
|
||||
|
||||
10. Versions of the License
|
||||
---------------------------
|
||||
|
||||
10.1. New Versions
|
||||
|
||||
Mozilla Foundation is the license steward. Except as provided in Section
|
||||
10.3, no one other than the license steward has the right to modify or
|
||||
publish new versions of this License. Each version will be given a
|
||||
distinguishing version number.
|
||||
|
||||
10.2. Effect of New Versions
|
||||
|
||||
You may distribute the Covered Software under the terms of the version
|
||||
of the License under which You originally received the Covered Software,
|
||||
or under the terms of any subsequent version published by the license
|
||||
steward.
|
||||
|
||||
10.3. Modified Versions
|
||||
|
||||
If you create software not governed by this License, and you want to
|
||||
create a new license for such software, you may create and use a
|
||||
modified version of this License if you rename the license and remove
|
||||
any references to the name of the license steward (except to note that
|
||||
such modified license differs from this License).
|
||||
|
||||
10.4. Distributing Source Code Form that is Incompatible With Secondary
|
||||
Licenses
|
||||
|
||||
If You choose to distribute Source Code Form that is Incompatible With
|
||||
Secondary Licenses under the terms of this version of the License, the
|
||||
notice described in Exhibit B of this License must be attached.
|
||||
|
||||
Exhibit A - Source Code Form License Notice
|
||||
-------------------------------------------
|
||||
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
If it is not possible or desirable to put the notice in a particular
|
||||
file, then You may include the notice in a location (such as a LICENSE
|
||||
file in a relevant directory) where a recipient would be likely to look
|
||||
for such a notice.
|
||||
|
||||
You may add additional accurate notices of copyright ownership.
|
||||
|
||||
Exhibit B - "Incompatible With Secondary Licenses" Notice
|
||||
---------------------------------------------------------
|
||||
|
||||
This Source Code Form is "Incompatible With Secondary Licenses", as
|
||||
defined by the Mozilla Public License, v. 2.0.
|
||||
784
admin/config.js
Normal file
@ -0,0 +1,784 @@
|
||||
if ('undefined' == typeof window.SS)
|
||||
{
|
||||
window.SS = {};
|
||||
}
|
||||
|
||||
|
||||
function getUrlParam(name) {
|
||||
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
|
||||
var r = window.location.search.substr(1).match(reg);
|
||||
if (r != null) return unescape(r[2]); return null;
|
||||
}
|
||||
|
||||
window.admin_url = window.admin_url || getUrlParam('admin_url');
|
||||
window.base_url = window.admin_url;
|
||||
window.api_url = window.api_url || getUrlParam('api_url')
|
||||
|
||||
if ('undefined' == typeof window.SYS)
|
||||
{
|
||||
window.SYS = {CONFIG:{}, URL:{}};
|
||||
}
|
||||
|
||||
// 系统参数控制
|
||||
window.SYSTEM = {
|
||||
};
|
||||
// 区分服务支持
|
||||
window.SYSTEM.categoryInfo = {};
|
||||
window.SYSTEM.category = {};
|
||||
|
||||
SYS.VER = typeof ver != "undefined" ? ver : Math.random();
|
||||
SYS.DEBUG = 0;
|
||||
|
||||
SYS.CONFIG['index_url'] = base_url
|
||||
SYS.CONFIG['base_url'] = base_url
|
||||
SYS.CONFIG['edit_sign'] = api_url + '/mobile/account/user/editSign'
|
||||
SYS.CONFIG['im_config'] = api_url + '/mobile/sns/im/getImConfig'
|
||||
SYS.CONFIG['kefu_config'] = api_url + '/mobile/sns/im/getKefuConfig'
|
||||
SYS.CONFIG['friend_info_lists'] = api_url + '/mobile/sns/userFriend/getFriendsInfo'
|
||||
SYS.CONFIG['zonemsg_lists'] = api_url + '/mobile/sns/userZoneMessage/list'
|
||||
SYS.CONFIG['msg_chat_lists'] = api_url + '/mobile/sns/userMessage/listChatMsg'
|
||||
SYS.CONFIG['msg_chathistory_lists'] = api_url + '/mobile/sns/userMessage/listChatMsg'
|
||||
//SYS.CONFIG['msg_chathistory_lists'] = api_url + '/im/iim/chatHistory/list'
|
||||
SYS.CONFIG['msg_set_read'] = api_url + '/mobile/sns/userMessage/setRead'
|
||||
SYS.CONFIG['zonemsg_add_msg'] = api_url + '/mobile/sns/zoneMessage/add'
|
||||
SYS.CONFIG['msg_add'] = api_url + '/mobile/sns/userMessage/add'
|
||||
SYS.CONFIG['upload'] = api_url + '/mobile/admin/oss/upload'
|
||||
|
||||
if ('undefined' == typeof window.SYS.CONFIG.static_url)
|
||||
{
|
||||
SYS.CONFIG['static_url'] = '/static'
|
||||
}
|
||||
|
||||
if ('undefined' == typeof window.SYS.URL.upload)
|
||||
{
|
||||
SYS.URL['upload'] = api_url + '/mobile/admin/oss/upload'
|
||||
}
|
||||
|
||||
var authorization_token = '';
|
||||
|
||||
if (localStorage.getItem("ukey")) {
|
||||
authorization_token = localStorage.getItem("ukey");
|
||||
}
|
||||
|
||||
SYS.URL['upload'] = SYS.URL['upload'] + '?perm_key=' + encodeURIComponent(authorization_token);
|
||||
|
||||
SYS.LD = {lang:'zh_CN', currency_id:86, symbol:'¥', symbol_right:'RMB'};
|
||||
|
||||
|
||||
|
||||
//扩展函数,需要放入lib
|
||||
var __ = __ || function (str)
|
||||
{
|
||||
return str;
|
||||
};
|
||||
|
||||
|
||||
|
||||
function sprintf () {
|
||||
var regex = /%%|%(\d+$)?([\-+'#0 ]*)(\*\d+$|\*|\d+)?(?:\.(\*\d+$|\*|\d+))?([scboxXuideEfFgG])/g
|
||||
var a = arguments
|
||||
var i = 0
|
||||
var format = a[i++]
|
||||
|
||||
var _pad = function (str, len, chr, leftJustify) {
|
||||
if (!chr) {
|
||||
chr = ' '
|
||||
}
|
||||
var padding = (str.length >= len) ? '' : new Array(1 + len - str.length >>> 0).join(chr)
|
||||
return leftJustify ? str + padding : padding + str
|
||||
}
|
||||
|
||||
var justify = function (value, prefix, leftJustify, minWidth, zeroPad, customPadChar) {
|
||||
var diff = minWidth - value.length
|
||||
if (diff > 0) {
|
||||
if (leftJustify || !zeroPad) {
|
||||
value = _pad(value, minWidth, customPadChar, leftJustify)
|
||||
} else {
|
||||
value = [
|
||||
value.slice(0, prefix.length),
|
||||
_pad('', diff, '0', true),
|
||||
value.slice(prefix.length)
|
||||
].join('')
|
||||
}
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
var _formatBaseX = function (value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
|
||||
// Note: casts negative numbers to positive ones
|
||||
var number = value >>> 0
|
||||
prefix = (prefix && number && {
|
||||
'2': '0b',
|
||||
'8': '0',
|
||||
'16': '0x'
|
||||
}[base]) || ''
|
||||
value = prefix + _pad(number.toString(base), precision || 0, '0', false)
|
||||
return justify(value, prefix, leftJustify, minWidth, zeroPad)
|
||||
}
|
||||
|
||||
// _formatString()
|
||||
var _formatString = function (value, leftJustify, minWidth, precision, zeroPad, customPadChar) {
|
||||
if (precision !== null && precision !== undefined) {
|
||||
value = value.slice(0, precision)
|
||||
}
|
||||
return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar)
|
||||
}
|
||||
|
||||
// doFormat()
|
||||
var doFormat = function (substring, valueIndex, flags, minWidth, precision, type) {
|
||||
var number, prefix, method, textTransform, value
|
||||
|
||||
if (substring === '%%') {
|
||||
return '%'
|
||||
}
|
||||
|
||||
// parse flags
|
||||
var leftJustify = false
|
||||
var positivePrefix = ''
|
||||
var zeroPad = false
|
||||
var prefixBaseX = false
|
||||
var customPadChar = ' '
|
||||
var flagsl = flags.length
|
||||
var j
|
||||
for (j = 0; j < flagsl; j++) {
|
||||
switch (flags.charAt(j)) {
|
||||
case ' ':
|
||||
positivePrefix = ' '
|
||||
break
|
||||
case '+':
|
||||
positivePrefix = '+'
|
||||
break
|
||||
case '-':
|
||||
leftJustify = true
|
||||
break
|
||||
case "'":
|
||||
customPadChar = flags.charAt(j + 1)
|
||||
break
|
||||
case '0':
|
||||
zeroPad = true
|
||||
customPadChar = '0'
|
||||
break
|
||||
case '#':
|
||||
prefixBaseX = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// parameters may be null, undefined, empty-string or real valued
|
||||
// we want to ignore null, undefined and empty-string values
|
||||
if (!minWidth) {
|
||||
minWidth = 0
|
||||
} else if (minWidth === '*') {
|
||||
minWidth = +a[i++]
|
||||
} else if (minWidth.charAt(0) === '*') {
|
||||
minWidth = +a[minWidth.slice(1, -1)]
|
||||
} else {
|
||||
minWidth = +minWidth
|
||||
}
|
||||
|
||||
// Note: undocumented perl feature:
|
||||
if (minWidth < 0) {
|
||||
minWidth = -minWidth
|
||||
leftJustify = true
|
||||
}
|
||||
|
||||
if (!isFinite(minWidth)) {
|
||||
throw new Error('sprintf: (minimum-)width must be finite')
|
||||
}
|
||||
|
||||
if (!precision) {
|
||||
precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type === 'd') ? 0 : undefined
|
||||
} else if (precision === '*') {
|
||||
precision = +a[i++]
|
||||
} else if (precision.charAt(0) === '*') {
|
||||
precision = +a[precision.slice(1, -1)]
|
||||
} else {
|
||||
precision = +precision
|
||||
}
|
||||
|
||||
// grab value using valueIndex if required?
|
||||
value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++]
|
||||
|
||||
switch (type) {
|
||||
case 's':
|
||||
return _formatString(value + '', leftJustify, minWidth, precision, zeroPad, customPadChar)
|
||||
case 'c':
|
||||
return _formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad)
|
||||
case 'b':
|
||||
return _formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
|
||||
case 'o':
|
||||
return _formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
|
||||
case 'x':
|
||||
return _formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
|
||||
case 'X':
|
||||
return _formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
|
||||
.toUpperCase()
|
||||
case 'u':
|
||||
return _formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
|
||||
case 'i':
|
||||
case 'd':
|
||||
number = +value || 0
|
||||
// Plain Math.round doesn't just truncate
|
||||
number = Math.round(number - number % 1)
|
||||
prefix = number < 0 ? '-' : positivePrefix
|
||||
value = prefix + _pad(String(Math.abs(number)), precision, '0', false)
|
||||
return justify(value, prefix, leftJustify, minWidth, zeroPad)
|
||||
case 'e':
|
||||
case 'E':
|
||||
case 'f': // @todo: Should handle locales (as per setlocale)
|
||||
case 'F':
|
||||
case 'g':
|
||||
case 'G':
|
||||
number = +value
|
||||
prefix = number < 0 ? '-' : positivePrefix
|
||||
method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())]
|
||||
textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2]
|
||||
value = prefix + Math.abs(number)[method](precision)
|
||||
return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]()
|
||||
default:
|
||||
return substring
|
||||
}
|
||||
}
|
||||
|
||||
return format.replace(regex, doFormat)
|
||||
}
|
||||
|
||||
function buildUlr(url, param) {
|
||||
|
||||
var LG = (function(lg){
|
||||
var objURL=function(url){
|
||||
this.ourl=url||window.location.href;
|
||||
this.href="";//?前面部分
|
||||
this.params={};//url参数对象
|
||||
this.jing="";//#及后面部分
|
||||
this.init();
|
||||
}
|
||||
//分析url,得到?前面存入this.href,参数解析为this.params对象,#号及后面存入this.jing
|
||||
objURL.prototype.init=function(){
|
||||
var str=this.ourl;
|
||||
var index=str.indexOf("#");
|
||||
if(index>0){
|
||||
this.jing=str.substr(index);
|
||||
str=str.substring(0,index);
|
||||
}
|
||||
index=str.indexOf("?");
|
||||
if(index>0){
|
||||
this.href=str.substring(0,index);
|
||||
str=str.substr(index+1);
|
||||
var parts=str.split("&");
|
||||
for(var i=0;i<parts.length;i++){
|
||||
var kv=parts[i].split("=");
|
||||
this.params[kv[0]]=kv[1];
|
||||
}
|
||||
}
|
||||
else{
|
||||
this.href=this.ourl;
|
||||
this.params={};
|
||||
}
|
||||
}
|
||||
//只是修改this.params
|
||||
objURL.prototype.set=function(key,val){
|
||||
this.params[key]=val;
|
||||
}
|
||||
//只是设置this.params
|
||||
objURL.prototype.remove=function(key){
|
||||
this.params[key]=undefined;
|
||||
}
|
||||
//根据三部分组成操作后的url
|
||||
objURL.prototype.url=function(){
|
||||
var strurl=this.href;
|
||||
var objps=[];//这里用数组组织,再做join操作
|
||||
for(var k in this.params){
|
||||
if(this.params[k]){
|
||||
objps.push(k+"="+this.params[k]);
|
||||
}
|
||||
}
|
||||
if(objps.length>0){
|
||||
strurl+="?"+objps.join("&");
|
||||
}
|
||||
if(this.jing.length>0){
|
||||
strurl+=this.jing;
|
||||
}
|
||||
return strurl;
|
||||
}
|
||||
//得到参数值
|
||||
objURL.prototype.get=function(key){
|
||||
return this.params[key];
|
||||
}
|
||||
lg.URL=objURL;
|
||||
return lg;
|
||||
}(LG||{}));
|
||||
|
||||
var obj = new LG.URL(url);
|
||||
|
||||
for(var o in param){
|
||||
obj.set(o, param[o]);
|
||||
}
|
||||
|
||||
return obj.url();
|
||||
}
|
||||
|
||||
function get_ext(filename){
|
||||
var postf = '';
|
||||
if (filename)
|
||||
{
|
||||
var index1=filename.lastIndexOf(".");
|
||||
|
||||
var index2=filename.length;
|
||||
var postf=filename.substring(index1,index2);//后缀名
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return postf;
|
||||
}
|
||||
|
||||
function image_thumb(image_url, w, h) {
|
||||
if ('undefined' == typeof w) {
|
||||
w = 60;
|
||||
}
|
||||
|
||||
if ('undefined' == typeof h) {
|
||||
h = w;
|
||||
}
|
||||
|
||||
|
||||
var ext = get_ext(image_url);
|
||||
|
||||
|
||||
if (image_url.indexOf('image.php') !== -1)
|
||||
{
|
||||
image_url = sprintf('%s!%sx%s%s', image_url, w, h, ext);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (upload_type == 'default')
|
||||
{
|
||||
image_url = sprintf('%s!%sx%s%s', image_url, w, h, ext);
|
||||
}
|
||||
else if (upload_type == 'aliyun')
|
||||
{
|
||||
//将图自动裁剪成宽度为 100px,高度为 100px 的效果图。 ?x-oss-process=image/resize,m_fill,h_100,w_100
|
||||
|
||||
//http://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,m_mfit,h_100,w_100
|
||||
//将图缩略成宽度为 100px,高度为 100px,按长边优先 image/resize,m_lfit,h_100,w_100
|
||||
image_url = sprintf('%s?x-oss-process=image/resize,m_fill,h_%s,w_%s', image_url, w, h);
|
||||
}
|
||||
else if (upload_type == 'tengxun')
|
||||
{
|
||||
image_url = sprintf('%s?imageMogr2/crop/%sx%s/gravity/center', image_url, w, h);
|
||||
}
|
||||
else
|
||||
{
|
||||
image_url = sprintf('%s!%sx%s%s', image_url, w, h, ext);
|
||||
}
|
||||
}
|
||||
|
||||
return image_url;
|
||||
}
|
||||
|
||||
img = image_thumb;
|
||||
|
||||
|
||||
|
||||
function number_format(number, decimals, dec_point, thousands_sep) {
|
||||
// discuss at: http://phpjs.org/functions/number_format/
|
||||
// original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
|
||||
// improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// improved by: davook
|
||||
// improved by: Brett Zamir (http://brett-zamir.me)
|
||||
// improved by: Brett Zamir (http://brett-zamir.me)
|
||||
// improved by: Theriault
|
||||
// improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
||||
// bugfixed by: Michael White (http://getsprink.com)
|
||||
// bugfixed by: Benjamin Lupton
|
||||
// bugfixed by: Allan Jensen (http://www.winternet.no)
|
||||
// bugfixed by: Howard Yeend
|
||||
// bugfixed by: Diogo Resende
|
||||
// bugfixed by: Rival
|
||||
// bugfixed by: Brett Zamir (http://brett-zamir.me)
|
||||
// revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
|
||||
// revised by: Luke Smith (http://lucassmith.name)
|
||||
// input by: Kheang Hok Chin (http://www.distantia.ca/)
|
||||
// input by: Jay Klehr
|
||||
// input by: Amir Habibi (http://www.residence-mixte.com/)
|
||||
// input by: Amirouche
|
||||
// example 1: number_format(1234.56);
|
||||
// returns 1: '1,235'
|
||||
// example 2: number_format(1234.56, 2, ',', ' ');
|
||||
// returns 2: '1 234,56'
|
||||
// example 3: number_format(1234.5678, 2, '.', '');
|
||||
// returns 3: '1234.57'
|
||||
// example 4: number_format(67, 2, ',', '.');
|
||||
// returns 4: '67,00'
|
||||
// example 5: number_format(1000);
|
||||
// returns 5: '1,000'
|
||||
// example 6: number_format(67.311, 2);
|
||||
// returns 6: '67.31'
|
||||
// example 7: number_format(1000.55, 1);
|
||||
// returns 7: '1,000.6'
|
||||
// example 8: number_format(67000, 5, ',', '.');
|
||||
// returns 8: '67.000,00000'
|
||||
// example 9: number_format(0.9, 0);
|
||||
// returns 9: '1'
|
||||
// example 10: number_format('1.20', 2);
|
||||
// returns 10: '1.20'
|
||||
// example 11: number_format('1.20', 4);
|
||||
// returns 11: '1.2000'
|
||||
// example 12: number_format('1.2000', 3);
|
||||
// returns 12: '1.200'
|
||||
// example 13: number_format('1 000,50', 2, '.', ' ');
|
||||
// returns 13: '100 050.00'
|
||||
// example 14: number_format(1e-8, 8, '.', '');
|
||||
// returns 14: '0.00000001'
|
||||
|
||||
number = (number + '')
|
||||
.replace(/[^0-9+\-Ee.]/g, '');
|
||||
var n = !isFinite(+number) ? 0 : +number,
|
||||
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
|
||||
sep = (typeof thousands_sep === 'undefined') ? '' : thousands_sep,
|
||||
dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
|
||||
s = '',
|
||||
toFixedFix = function(n, prec) {
|
||||
var k = Math.pow(10, prec);
|
||||
return '' + (Math.round(n * k) / k)
|
||||
.toFixed(prec);
|
||||
};
|
||||
// Fix for IE parseFloat(0.55).toFixed(0) = 0;
|
||||
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n))
|
||||
.split('.');
|
||||
if (s[0].length > 3) {
|
||||
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
|
||||
}
|
||||
if ((s[1] || '')
|
||||
.length < prec) {
|
||||
s[1] = s[1] || '';
|
||||
s[1] += new Array(prec - s[1].length + 1)
|
||||
.join('0');
|
||||
}
|
||||
return s.join(dec);
|
||||
}
|
||||
|
||||
function mf(number, decimals, dec_point, thousands_sep) {
|
||||
//判断语言货币,修正 decimals
|
||||
return number_format(number, decimals, dec_point, thousands_sep);
|
||||
}
|
||||
|
||||
//商品状态
|
||||
var StateCode = {};
|
||||
var User_BindConnectModel = {};
|
||||
|
||||
;(function (factory) {
|
||||
if (typeof define === "function" && define.amd) {
|
||||
// AMD模式
|
||||
define(factory);
|
||||
} else {
|
||||
// 全局模式
|
||||
factory();
|
||||
}
|
||||
}(function () {
|
||||
if ('undefined' == typeof window.SYS)
|
||||
{
|
||||
window.SYS = {};
|
||||
}
|
||||
|
||||
|
||||
SYS.VER = 'undefined' != typeof SYS.VER ? SYS.VER : '1.0.28';
|
||||
SYS.DEBUG = 'undefined' != typeof SYS.DEBUG ? SYS.DEBUG : 0;
|
||||
|
||||
//尚未启用
|
||||
if (window.localStorage)
|
||||
{
|
||||
var cache = localStorage.getItem("cache");
|
||||
var cache_expire = localStorage.getItem("cache_expire");
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
|
||||
SYS.CACHE = !SYS.DEBUG && ('undefined' != typeof SYS.CACHE ? SYS.CACHE : 0);
|
||||
SYS.CACHE_EXPIRE = 3600 * 1;
|
||||
SYS.VER_SHOP = 'undefined' != typeof SYS.VER_SHOP ? SYS.VER : '1.0.28';
|
||||
SYS.VER_WAP = 'undefined' != typeof SYS.VER_WAP ? SYS.VER_WAP : '1.0.28';
|
||||
SYS.VER_ADMIN = 'undefined' != typeof SYS.VER_ADMIN ? SYS.VER_ADMIN : '1.0.28';
|
||||
SYS.SW_ENABLE = 'undefined' != typeof SYS.SW_ENABLE ? SYS.SW_ENABLE : 0;
|
||||
SYS.HTTPS = 'undefined' != typeof SYS.HTTPS ? SYS.HTTPS : 0;
|
||||
|
||||
|
||||
if (window.localStorage) {
|
||||
var version = localStorage.getItem("version");
|
||||
|
||||
if (version)
|
||||
{
|
||||
SYS.VER = version;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
|
||||
SYS.STATIC_IMAGE_PATH = 'https://static.lancerdt.cn/xcxfile/appicon/';
|
||||
SYS.AK_BROWSER = "Yi9XWlwa7sUGSuKGDiPBrS261bMeu6YF";
|
||||
SYS.AK_MINIAPP = "uWq8fmHbdvzOqLZlU8QZvbugoDyPFUg6";
|
||||
|
||||
return SYS.CONFIG;
|
||||
}));
|
||||
|
||||
|
||||
// utils.js
|
||||
if ('undefined' == typeof window.verifyUtils)
|
||||
{
|
||||
window.verifyUtils = {};
|
||||
}
|
||||
|
||||
window.verifyUtils = {
|
||||
smsTimer: function (that)
|
||||
{
|
||||
var self = this;
|
||||
|
||||
var wait = $(that).data('wait');
|
||||
|
||||
if (wait == 0)
|
||||
{
|
||||
$(that).removeAttr("disabled").val('重新获取验证码');
|
||||
$(that).removeClass("disabled");
|
||||
|
||||
$(that).data('status', true);
|
||||
$(that).data('wait', $(that).data('times'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$(that).attr("disabled", true).val(wait + '秒后点此重发');
|
||||
$(that).addClass("disabled");
|
||||
|
||||
$(that).data('wait', --wait);
|
||||
|
||||
setTimeout(function ()
|
||||
{
|
||||
self.smsTimer(that);
|
||||
}, 1000)
|
||||
}
|
||||
},
|
||||
|
||||
countDown:function (that, times)
|
||||
{
|
||||
var self = this;
|
||||
|
||||
$(that).data('times', times);
|
||||
$(that).data('wait', times);
|
||||
|
||||
if (typeof($(that).data('status')) === 'undefined' || $(that).data('status'))
|
||||
{
|
||||
$(that).data('status', false);
|
||||
self.smsTimer(that);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
imageVerifyCode : function (verify_code, key_obj)
|
||||
{
|
||||
$(verify_code).on('click', function()
|
||||
{
|
||||
var rand_key = Math.random();
|
||||
var url = itemUtil.getUrl(SYS.URL.verify.image, {rand_key: rand_key});
|
||||
|
||||
$(verify_code).css("backgroundImage","url(" + url + ")");
|
||||
$(key_obj).val(rand_key);
|
||||
});
|
||||
|
||||
//$(this).css("backgroundImage","url(" + url + ")");
|
||||
var rand_key = Math.random();
|
||||
var url = itemUtil.getUrl(SYS.URL.verify.image, {rand_key: rand_key});
|
||||
|
||||
$(verify_code).css("background","url(" + url + ") no-repeat center");
|
||||
$(verify_code).css("cursor", "pointer");
|
||||
$(verify_code).css("backgroundSize", "cover");
|
||||
$(key_obj).val(rand_key);
|
||||
},
|
||||
|
||||
|
||||
emailVerifyCode : function (email, that, captcha)
|
||||
{
|
||||
var self = this;
|
||||
$(that).on('click', function()
|
||||
{
|
||||
let mv = '';
|
||||
if (typeof(email) === 'object')
|
||||
{
|
||||
mv = $(email).val();
|
||||
}
|
||||
else
|
||||
{
|
||||
mv = email;
|
||||
}
|
||||
|
||||
var url = itemUtil.getUrl(SYS.URL.verify.email, {rand_key: mv})
|
||||
|
||||
if (typeof(captcha) !== 'undefined')
|
||||
{
|
||||
url = url + '&captcha=' + captcha;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: url,
|
||||
data: {},
|
||||
dataType: "jsonp",
|
||||
jsonp: "jsonp_callback",
|
||||
success: function(res){
|
||||
|
||||
if (200 == res.status)
|
||||
{
|
||||
//服务端返回times
|
||||
var times = 60;
|
||||
self.countDown(that, times);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (typeof $.fancybox != 'undefined')
|
||||
{
|
||||
Public.tipMsg(res.msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
alert(res.msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
smsVerifyCode : function (mobile, that, image_key, image_value)
|
||||
{
|
||||
var self = this;
|
||||
$(that).on('click', function()
|
||||
{
|
||||
let mv = '';
|
||||
if (typeof(mobile) === 'object')
|
||||
{
|
||||
mv = '' + $('#user_intl').val() + $(mobile).val();
|
||||
|
||||
if (!$(mobile).val())
|
||||
{
|
||||
alert(__('请输入手机号码'));
|
||||
return ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mv = mobile;
|
||||
|
||||
if (!mv)
|
||||
{
|
||||
alert(__('请输入手机号码'));
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
var url = itemUtil.getUrl(SYS.URL.verify.mobile, {mobile: encodeURIComponent(mv)});
|
||||
|
||||
if (typeof(image_value) !== 'undefined')
|
||||
{
|
||||
url = url + '&image_value=' + $(image_value).val();;
|
||||
}
|
||||
|
||||
if (typeof(image_key) !== 'undefined')
|
||||
{
|
||||
url = url + '&image_key=' + $(image_key).val();;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: url,
|
||||
data: {},
|
||||
dataType: "jsonp",
|
||||
jsonp: "jsonp_callback",
|
||||
success: function(res){
|
||||
|
||||
if (200 == res.status)
|
||||
{
|
||||
//服务端返回times
|
||||
var times = 60;
|
||||
self.countDown(that, times);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (typeof $.fancybox != 'undefined')
|
||||
{
|
||||
Public.tipMsg(res.msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
alert(res.msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function formatMoney(value, prefix, endfix) {
|
||||
var num = new Number(value);
|
||||
|
||||
if(typeof prefix != 'undefined')
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
prefix = __("¥")
|
||||
}
|
||||
|
||||
if(typeof endfix != 'undefined')
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
endfix = ""
|
||||
}
|
||||
|
||||
return prefix + num.toFixed(2) + endfix
|
||||
}
|
||||
|
||||
|
||||
function payment_met_id(val, opt, row) {
|
||||
var r = {
|
||||
"1": "余额支付",
|
||||
"2": "充值卡支付",
|
||||
"3": "积分支付",
|
||||
"4": "信用支付",
|
||||
"5": "红包支付"
|
||||
};
|
||||
return r[val];
|
||||
}
|
||||
|
||||
function trade_type_id(val, opt, row) {
|
||||
var r = {
|
||||
"1201": "购物",
|
||||
"1202": "转账",
|
||||
"1203": "充值",
|
||||
"1204": "提现",
|
||||
"1205": "销售",
|
||||
"1206": "佣金"
|
||||
};
|
||||
return r[val];
|
||||
}
|
||||
|
||||
|
||||
function payment_type_id(val, opt, row) {
|
||||
var r = {
|
||||
"1301": "货到付款",
|
||||
"1302": "在线支付",
|
||||
"1303": "白条支付",
|
||||
"1304": "现金支付",
|
||||
"1305": "线下支付",
|
||||
"": null
|
||||
};
|
||||
return r[val];
|
||||
}
|
||||
|
||||
3328
admin/diy-pc/index.html
Normal file
110
admin/diy-pc/items.html
Normal file
@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN" dropEffect="none" class="no-js">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="renderer" content="webkit" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
|
||||
<meta name="description" content="Qianyi Boostrap Admin Panel" />
|
||||
<meta name="author" content="" />
|
||||
|
||||
<title>平台 管理中心 - lancerdt澜驰商城系统</title>
|
||||
|
||||
<!--<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Arimo:400,700,400italic">-->
|
||||
|
||||
<link rel="stylesheet" href="../static/css/zerocons/css/zerocons.css">
|
||||
<link rel="stylesheet" href="../static/css/fontawesome/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="./static/admin/common/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="./static/admin/common/css/qianyi-core.min.css">
|
||||
<link rel="stylesheet" href="./static/admin/common/css/qianyi-forms.min.css">
|
||||
<link rel="stylesheet" href="./static/admin/common/css/qianyi-components.min.css">
|
||||
<link rel="stylesheet" href="./static/admin/common/css/qianyi-skins.min.css">
|
||||
|
||||
<link rel="stylesheet" href="./static/admin/common/css/default.min.css">
|
||||
|
||||
<!-- <link rel="shortcut icon" href="../static/1618295612543845.ico" type="image/x-icon" />-->
|
||||
|
||||
<script type="text/javascript">
|
||||
window.SYS = {CONFIG:{}, URL:{}};
|
||||
window.zIndex = 2976;
|
||||
|
||||
|
||||
SYS.CONFIG['static_url'] = '/diy-pc/static/admin'
|
||||
SYS.LD = {lang:'zh_CN', currency_id:86, symbol:'¥', symbol_right:'RMB'};
|
||||
|
||||
function getUrlParam(name) {
|
||||
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
|
||||
var r = window.location.search.substr(1).match(reg);
|
||||
if (r != null) return unescape(r[2]); return null;
|
||||
}
|
||||
|
||||
api_url = getUrlParam('api_url');
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/javascript" src="../config.js"></script>
|
||||
<script src="./static/admin/common/js/libs.min.js?self=false"></script>
|
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="./static/admin/common/js/html5shiv.js"></script>
|
||||
<script src="./static/admin/common/js/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body class="page-body skin-default user-info-navbar-skin-default"> <!-- navy watermelon facebook green-->
|
||||
|
||||
<link rel="stylesheet" href="./static/admin/common/ztree/css/zTreeStyle/zTreeStyle.css">
|
||||
<script src="./static/admin/common/ztree/js/jquery.ztree.all-3.5.js"></script>
|
||||
<div class="page-container"><!-- add class "sidebar-collapsed" to close sidebar by default, "chat-visible" to make chat appear always -->
|
||||
<div class="main-content">
|
||||
<div class="row" id="search_box">
|
||||
<div class="col-sm-12">
|
||||
<form id="grid-search-form">
|
||||
<span id="user"></span>
|
||||
<input type="text" id="product_name" name="product_name" class="ui-input form-control ui-input-ph" style="width: 180px;" placeholder="输入商品名称" autocomplete="off" >
|
||||
<input type="text" id="product_id" name="product_id" class="ui-input form-control ui-input-ph" style="width: 160px;" placeholder="商品编号" autocomplete="off" >
|
||||
<style>
|
||||
.select2-container--bootstrap{
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
<!--
|
||||
<select class="input_txt form-inline title-form form-control select2" style="width: 100px;display: inline-block;" id="brand_id" name="brand_id" placeholder="请输入品牌名称" >
|
||||
<option value="0" selected>全部品牌</option>
|
||||
</select>-->
|
||||
<span ><span id="category_id"></span></span>
|
||||
|
||||
|
||||
<a class="btn btn-default btn-single" data-color="blue" data-style="slide-left" id="search"><i class="fa fa-search" aria-hidden="true"></i> 查询</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wrapper">
|
||||
<div class="grid-wrap">
|
||||
<table id="grid"></table>
|
||||
<div id="grid-pager"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var header_auth_token = '';
|
||||
|
||||
if (localStorage.getItem("ukey")) {
|
||||
header_auth_token = "Bearer " + localStorage.getItem("ukey");
|
||||
}
|
||||
</script>
|
||||
<script src="./static/shop/default/js/product_item.js"></script>
|
||||
|
||||
<div class="page-loading-overlay">
|
||||
<div class="loader-2"></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1
admin/diy-pc/static/admin/common/css/bootstrap.min.css
vendored
Normal file
1
admin/diy-pc/static/admin/common/css/default.min.css
vendored
Normal file
113
admin/diy-pc/static/admin/common/css/dialog.css
Normal file
@ -0,0 +1,113 @@
|
||||
@charset "utf-8";
|
||||
/*==================制作新皮肤从这里开始复制==================*/
|
||||
/*基本重置*/
|
||||
body{ _margin:0; }/*IE6 BUG*/
|
||||
.ui_lock_scroll{ *overflow:hidden; }
|
||||
.ui_lock_scroll body{ overflow:hidden; }
|
||||
|
||||
/*结构层*/
|
||||
.ui_content,.ui_title,.ui_buttons input{ font:12px/1.333 tahoma,arial,\5b8b\4f53,sans-serif; }
|
||||
table.ui_border,table.ui_dialog{ width:auto;border-spacing:0;*border-collapse:collapse; }
|
||||
.ui_border td,.ui_dialog td{ padding:0; }
|
||||
.ui_dialog{ background:#FFF; }
|
||||
|
||||
/*标题部分开始*/
|
||||
.ui_title{ overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;cursor:move;background:#DDD;-moz-user-select:none;-webkit-user-select:none;padding:0 100px 0 0; }
|
||||
.ui_title_buttons{ position:absolute;cursor:pointer;font-size:0;letter-spacing:-.5em; }
|
||||
|
||||
/*对齐自适应*/
|
||||
.ui_main{ min-width:6em;min-width:0\9;text-align:center; }
|
||||
.ui_content{ display:inline-block;*display:inline;zoom:1;text-align:left; font-size:14px; line-height: 1.8; }
|
||||
.ui_content.ui_state_full{ display:block;width:100%;height:100%;margin:0;padding:0!important; }
|
||||
.ui_content.ui_state_full iframe{ border-radius:0 0 2px 2px; }
|
||||
.ui_loading{ width:96px;height:32px;text-align:left;text-indent:-9999em;overflow:hidden;background:url(../images/dialog/icons/loading.gif) no-repeat center center; }
|
||||
.ui_icon_bg{ margin:20px 5px 20px 15px; }
|
||||
.ui_icon{vertical-align: top;}
|
||||
.ui_icon img{ width:48px; height:48px; }
|
||||
|
||||
/*标题纯CSS按钮开始 min 最小化,max最大化,res还原,rese恢复,close关闭*/
|
||||
.ui_min,.ui_max,.ui_close,.ui_res{ position:relative;text-decoration:none;letter-spacing:normal;text-align:center;display:inline-block;*display:inline;zoom:1;vertical-align:top;font-family:tahoma,arial,\5b8b\4f53,sans-serif; }
|
||||
.ui_min b,.ui_max b,.ui_res_t,.ui_res_b{ display:block;position:absolute;overflow:hidden;cursor:pointer; }
|
||||
.ui_close{ font-weight:500;text-decoration:none;outline:0 none; }
|
||||
.ui_close:hover{ text-decoration:none; }
|
||||
|
||||
/*Tips部分*/
|
||||
.ui_state_tips .ui_main{ min-width:3em; }
|
||||
.ui_state_tips .ui_content{ margin-top:-2px;padding:8px 10px!important; }
|
||||
.ui_state_tips .ui_icon_bg{ margin:11px 0 6px 9px; width:28px; height:28px; }
|
||||
.ui_state_tips .ui_title,.ui_state_tips .ui_title_buttons,.ui_res{ display:none; } /* 还原按钮也在这里隐藏,这样可节省代码,注间这段一定要写在上面那段代码的下面*/
|
||||
|
||||
#ldg_lockmask{ background:#000;filter:alpha(opacity=30);opacity:.3; }
|
||||
/*==================制作新皮肤到这里结束复制==================*/
|
||||
|
||||
/*样式层开始*/
|
||||
.ui_dialog{ border:1px solid #AAA; border-radius:5px;box-shadow:0 1px 6px rgba(0,0,0,.3);}
|
||||
.ui_state_lock .ui_dialog{ box-shadow:0 3px 18px rgba(0,0,0,.3); }/*锁屏时遮罩*/
|
||||
.ui_state_drag .ui_dialog,.ui_state_lock.ui_state_drag .ui_dialog { box-shadow:none; }/*拖动时隐藏阴影,通过css3实现渐变动画*/
|
||||
.ui_state_focus .ui_title{ color:#505050; }
|
||||
|
||||
.ui_lb,.ui_rb,.ui_lt,.ui_rt{ width:0;height:0;*width:1px;*height:1px; }/*隐藏边框*/
|
||||
.ui_rb{ display:block;width:12px;height:12px;position:absolute;bottom:0;right:0;background:none; }/*重新显示右下角拖动,设为负值会造成浏览器显示滚动条*/
|
||||
|
||||
/*标题栏样式*/
|
||||
.ui_title_bar{ position:relative;height:100%;border-bottom:1px solid #DDD; }
|
||||
.ui_title{ font-size:14px;font-weight:bold;height:30px;line-height:30px;color:#666;
|
||||
background: #fafafa;
|
||||
background: -moz-linear-gradient(top, #fcfcfc, #f4f4f4);
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(#fcfcfc), to(#f4f4f4));
|
||||
background: -o-linear-gradient(top, #fcfcfc, #f4f4f4);
|
||||
background: -ms-linear-gradient(top, #fcfcfc 0%,#f4f4f4 100%);
|
||||
background: linear-gradient(top, #fcfcfc, #f4f4f4);
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fcfcfc', endColorstr='#f4f4f4');
|
||||
border-top:1px solid #f5f5f5;border-bottom:1px solid #f5f5f5;border-radius:2px 2px 0 0;padding-left:10px; }
|
||||
.ui_state_drag .ui_title {
|
||||
background: #fafafa;
|
||||
background: -moz-linear-gradient(top, #f4f4f4, #fcfcfc);
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#fcfcfc));
|
||||
background: -o-linear-gradient(top, #f4f4f4, #fcfcfc);
|
||||
background: -ms-linear-gradient(top, #f4f4f4 0%,#fcfcfc 100%);
|
||||
background: linear-gradient(top, #f4f4f4, #fcfcfc);
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#fcfcfc');}
|
||||
|
||||
/*标题纯CSS按钮定位部分*/
|
||||
.ui_title_buttons{ top:7px;right:5px; }
|
||||
.ui_min,.ui_max,.ui_close,.ui_res{ color:#aaa;font-size:18px;width:20px;height:20px;line-height:18px; }
|
||||
.ui_min_b{ top:10px;left:5px;width:10px;height:2px;border-bottom:2px solid #aaa; }
|
||||
.ui_max_b{ top:5px;left:5px;width:10px;height:7px; }
|
||||
.ui_res_t,.ui_res_b{ top:8px;left:3px;width:10px;height:5px; }
|
||||
.ui_res_b{ top:4px;left:6px; }
|
||||
.ui_res_t,.ui_res_b,.ui_max_b{ border:1px solid #aaa;border-top-width:3px; }
|
||||
.ui_res_t{ background:#fafafa; }/*还原按钮底部框背景与标题背景融合*/
|
||||
.ui_close{ vertical-align:baseline;_line-height:22px; }/*IE6关闭按钮垂直居中*/
|
||||
.ui_close:hover,.ui_close:focus{ color:#bf160b; }
|
||||
.ui_min:hover b,.ui_max:hover b,.ui_res:hover b{ border-color:#2492FF; }
|
||||
|
||||
/*按钮结构部分*/
|
||||
.ui_buttons{ padding:4px 8px;text-align:right;white-space:nowrap;
|
||||
border-top:1px solid #ececec;border-radius:0 0 2px 2px;
|
||||
background: #fcfcfc;
|
||||
background: -moz-linear-gradient(top, #fcfcfc, #f4f4f4);
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(#fcfcfc), to(#f4f4f4));
|
||||
background: -o-linear-gradient(top, #fcfcfc, #f4f4f4);
|
||||
background: -ms-linear-gradient(top, #fcfcfc 0%,#f4f4f4 100%);
|
||||
background: linear-gradient(top, #fcfcfc, #f4f4f4);
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fcfcfc', endColorstr='#f4f4f4');}
|
||||
.ui_buttons input::-moz-focus-inner{ border:0;padding:0;margin:0; }
|
||||
|
||||
.ui_buttons input{display:inline-block;*display:inline;zoom:1;margin-left:10px;padding:0 16px;height:24px;border:1px solid #c1c1c1;border-radius:2px;box-shadow:0 1px 1px rgba(0,0,0,0.15);background: #ffffff;background: -moz-linear-gradient(top, #ffffff, #f4f4f4); background: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f4f4f4)); background: -o-linear-gradient(top, #ffffff, #f4f4f4);background: -ms-linear-gradient(top, #ffffff 0%,#f4f4f4 100%); background: linear-gradient(top, #ffffff, #f4f4f4); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f4f4f4');font:12px \5b8b\4f53;color:#555;vertical-align:middle;cursor:pointer;}
|
||||
.ui_buttons input:hover{ filter:progid:DXImageTransform.Microsoft.Gradient(enabled=false);background:#f4f4f4;color:#555; }
|
||||
.ui_buttons input:active{ background: #fbfbfb;background: -moz-linear-gradient(top, #e8e8e8, #fbfbfb); background: -webkit-gradient(linear, 0 0, 0 100%, from(#e8e8e8), to(#fbfbfb)); background: -o-linear-gradient(top, #e8e8e8, #fbfbfb);background: -ms-linear-gradient(top, #e8e8e8 0%,#fbfbfb 100%); background: linear-gradient(top, #e8e8e8, #fbfbfb); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e8e8e8', endColorstr='#fbfbfb');}
|
||||
|
||||
input.ui_state_highlight{ border:1px solid #3279a0;box-shadow:0 1px 1px rgba(0,0,0,0.3);background: #337fa9;background: -moz-linear-gradient(top, #4994be, #337fa9); background: -webkit-gradient(linear, 0 0, 0 100%, from(#4994be), to(#337fa9)); background: -o-linear-gradient(top, #4994be, #337fa9);background: -ms-linear-gradient(top, #4994be 0%,#337fa9 100%); background: linear-gradient(top, #4994be, #337fa9); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4994be', endColorstr='#337fa9');font-weight:bold;color:#fff;text-shadow:0 2px 2px rgba(0,0,0,0.22); }
|
||||
input.ui_state_highlight:hover{ filter:progid:DXImageTransform.Microsoft.Gradient(enabled=false);background:#3286b4;color:#fff; }
|
||||
input.ui_state_highlight:active{ background: #2b6c90;background: -moz-linear-gradient(top, #2b6c90, #4994be); background: -webkit-gradient(linear, 0 0, 0 100%, from(#2b6c90), to(#4994be)); background: -o-linear-gradient(top, #2b6c90, #4994be);background: -ms-linear-gradient(top, #2b6c90 0%,#4994be 100%); background: linear-gradient(top, #2b6c90, #4994be); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b6c90', endColorstr='#4994be'); }
|
||||
|
||||
/*Tips 部分开始*/
|
||||
/*基本重置*/
|
||||
.ui_state_tips ,.ui_state_tips .ui_inner,.ui_state_tips .ui_dialog,.ui_state_tips .ui_title_bar{ border:0 none;background:none;box-shadow:none;border-radius:0;filter:none; }
|
||||
.ui_state_tips .ui_content{ font-weight:bold;font-size:14px;color:#323232;text-align:center; }
|
||||
/*Tips(图片背景,IE6也支持圆角) End*/
|
||||
.ui_state_tips .ui_dialog,.ui_state_tips .ui_l,.ui_state_tips .ui_r{ background-image:url(../images/dialog/icons/gb_tip_layer.png);_background-image:url(../images/dialog/icons/gb_tip_layer_ie6.png);background-repeat:no-repeat; }/*共用背景图片*/
|
||||
.ui_state_tips .ui_l{ background-position:-6px 0;width:5px; }/*左侧背景侧样式*/
|
||||
.ui_state_tips .ui_r{ background-position:0 0;width:5px; }/*右侧背景样式*/
|
||||
.ui_state_tips .ui_dialog{ background-position: 0 -54px;background-repeat:repeat-x;height:54px;overflow:hidden; }/*主体内容背景*/
|
||||
12
admin/diy-pc/static/admin/common/css/qianyi-components.min.css
vendored
Normal file
1
admin/diy-pc/static/admin/common/css/qianyi-core.min.css
vendored
Normal file
18
admin/diy-pc/static/admin/common/css/qianyi-forms.min.css
vendored
Normal file
1
admin/diy-pc/static/admin/common/css/qianyi-skins.min.css
vendored
Normal file
BIN
admin/diy-pc/static/admin/common/images/dialog/icons/alert.gif
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
admin/diy-pc/static/admin/common/images/dialog/icons/confirm.gif
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
BIN
admin/diy-pc/static/admin/common/images/dialog/icons/loading.gif
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
admin/diy-pc/static/admin/common/images/dialog/icons/prompt.gif
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
admin/diy-pc/static/admin/common/images/grid/icon-select.gif
Normal file
|
After Width: | Height: | Size: 48 B |
BIN
admin/diy-pc/static/admin/common/images/grid/indicator.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 178 B |
BIN
admin/diy-pc/static/admin/common/images/grid/ui-icons.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
BIN
admin/diy-pc/static/admin/common/images/grid/ui-th.png
Normal file
|
After Width: | Height: | Size: 1001 B |
BIN
admin/diy-pc/static/admin/common/images/image.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
8
admin/diy-pc/static/admin/common/js/bootstrap.min.js
vendored
Normal file
10
admin/diy-pc/static/admin/common/js/ckeditor/adapters/jquery.js
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
/*
|
||||
Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||
*/
|
||||
(function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},
|
||||
ckeditor:function(g,e){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g)){var m=e;e=g;g=m}var k=[];e=e||{};this.each(function(){var b=a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,l=new a.Deferred;k.push(l.promise());if(c&&!f)g&&g.apply(c,[this]),l.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function d(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),l.resolve()):setTimeout(d,100)},0)},null,null,9999);
|
||||
else{if(e.autoUpdateElement||"undefined"==typeof e.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)e.autoUpdateElementJquery=!0;e.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",!0);c=a(this).is("textarea")?CKEDITOR.replace(h,e):CKEDITOR.inline(h,e);b.data("ckeditorInstance",c);c.on("instanceReady",function(e){var d=e.editor;setTimeout(function n(){if(d.element){e.removeListener();d.on("dataReady",function(){b.trigger("dataReady.ckeditor",[d])});d.on("setData",function(a){b.trigger("setData.ckeditor",
|
||||
[d,a.data])});d.on("getData",function(a){b.trigger("getData.ckeditor",[d,a.data])},999);d.on("destroy",function(){b.trigger("destroy.ckeditor",[d])});d.on("save",function(){a(h.form).submit();return!1},null,null,20);if(d.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){d.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",
|
||||
c)})}d.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[d]);g&&g.apply(d,[h]);l.resolve()}else setTimeout(n,100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,k).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}});CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(e){if(arguments.length){var m=
|
||||
this,k=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(e,function(){f.resolve()});k.push(f.promise());return!0}return g.call(b,e)});if(k.length){var b=new a.Deferred;a.when.apply(this,k).done(function(){b.resolveWith(m)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}}))})(window.jQuery);
|
||||
192
admin/diy-pc/static/admin/common/js/ckeditor/build-config.js
Normal file
@ -0,0 +1,192 @@
|
||||
/**
|
||||
* @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
|
||||
* For licensing, see LICENSE.md or https://ckeditor.com/license
|
||||
*/
|
||||
|
||||
/**
|
||||
* This file was added automatically by CKEditor builder.
|
||||
* You may re-use it at any time to build CKEditor again.
|
||||
*
|
||||
* If you would like to build CKEditor online again
|
||||
* (for example to upgrade), visit one the following links:
|
||||
*
|
||||
* (1) https://ckeditor.com/cke4/builder
|
||||
* Visit online builder to build CKEditor from scratch.
|
||||
*
|
||||
* (2) https://ckeditor.com/cke4/builder/4e3a4ca28d8cb0c407b480601a63d4b6
|
||||
* Visit online builder to build CKEditor, starting with the same setup as before.
|
||||
*
|
||||
* (3) https://ckeditor.com/cke4/builder/download/4e3a4ca28d8cb0c407b480601a63d4b6
|
||||
* Straight download link to the latest version of CKEditor (Optimized) with the same setup as before.
|
||||
*
|
||||
* NOTE:
|
||||
* This file is not used by CKEditor, you may remove it.
|
||||
* Changing this file will not change your CKEditor configuration.
|
||||
*/
|
||||
|
||||
var CKBUILDER_CONFIG = {
|
||||
skin: 'moono-lisa',
|
||||
preset: 'full',
|
||||
ignore: [
|
||||
'.DS_Store',
|
||||
'.bender',
|
||||
'.editorconfig',
|
||||
'.gitattributes',
|
||||
'.gitignore',
|
||||
'.idea',
|
||||
'.jscsrc',
|
||||
'.jshintignore',
|
||||
'.jshintrc',
|
||||
'.mailmap',
|
||||
'.npm',
|
||||
'.travis.yml',
|
||||
'bender-err.log',
|
||||
'bender-out.log',
|
||||
'bender.ci.js',
|
||||
'bender.js',
|
||||
'dev',
|
||||
'gruntfile.js',
|
||||
'less',
|
||||
'node_modules',
|
||||
'package.json',
|
||||
'tests'
|
||||
],
|
||||
plugins : {
|
||||
'a11yhelp' : 1,
|
||||
'about' : 1,
|
||||
'basicstyles' : 1,
|
||||
'bidi' : 1,
|
||||
'blockquote' : 1,
|
||||
'clipboard' : 1,
|
||||
'colorbutton' : 1,
|
||||
'colordialog' : 1,
|
||||
'contextmenu' : 1,
|
||||
'copyformatting' : 1,
|
||||
'dialogadvtab' : 1,
|
||||
'div' : 1,
|
||||
'elementspath' : 1,
|
||||
'enterkey' : 1,
|
||||
'entities' : 1,
|
||||
'filebrowser' : 1,
|
||||
'find' : 1,
|
||||
'flash' : 1,
|
||||
'floatingspace' : 1,
|
||||
'font' : 1,
|
||||
'format' : 1,
|
||||
'forms' : 1,
|
||||
'horizontalrule' : 1,
|
||||
'htmlwriter' : 1,
|
||||
'iframe' : 1,
|
||||
'image' : 1,
|
||||
'indentblock' : 1,
|
||||
'indentlist' : 1,
|
||||
'justify' : 1,
|
||||
'language' : 1,
|
||||
'link' : 1,
|
||||
'list' : 1,
|
||||
'liststyle' : 1,
|
||||
'magicline' : 1,
|
||||
'maximize' : 1,
|
||||
'newpage' : 1,
|
||||
'pagebreak' : 1,
|
||||
'pastefromgdocs' : 1,
|
||||
'pastefromword' : 1,
|
||||
'pastetext' : 1,
|
||||
'pastetools' : 1,
|
||||
'preview' : 1,
|
||||
'print' : 1,
|
||||
'removeformat' : 1,
|
||||
'resize' : 1,
|
||||
'save' : 1,
|
||||
'scayt' : 1,
|
||||
'selectall' : 1,
|
||||
'showblocks' : 1,
|
||||
'showborders' : 1,
|
||||
'smiley' : 1,
|
||||
'sourcearea' : 1,
|
||||
'specialchar' : 1,
|
||||
'stylescombo' : 1,
|
||||
'tab' : 1,
|
||||
'table' : 1,
|
||||
'tableselection' : 1,
|
||||
'tabletools' : 1,
|
||||
'templates' : 1,
|
||||
'toolbar' : 1,
|
||||
'undo' : 1,
|
||||
'uploadimage' : 1,
|
||||
'wsc' : 1,
|
||||
'wysiwygarea' : 1
|
||||
},
|
||||
languages : {
|
||||
'af' : 1,
|
||||
'ar' : 1,
|
||||
'az' : 1,
|
||||
'bg' : 1,
|
||||
'bn' : 1,
|
||||
'bs' : 1,
|
||||
'ca' : 1,
|
||||
'cs' : 1,
|
||||
'cy' : 1,
|
||||
'da' : 1,
|
||||
'de' : 1,
|
||||
'de-ch' : 1,
|
||||
'el' : 1,
|
||||
'en' : 1,
|
||||
'en-au' : 1,
|
||||
'en-ca' : 1,
|
||||
'en-gb' : 1,
|
||||
'eo' : 1,
|
||||
'es' : 1,
|
||||
'es-mx' : 1,
|
||||
'et' : 1,
|
||||
'eu' : 1,
|
||||
'fa' : 1,
|
||||
'fi' : 1,
|
||||
'fo' : 1,
|
||||
'fr' : 1,
|
||||
'fr-ca' : 1,
|
||||
'gl' : 1,
|
||||
'gu' : 1,
|
||||
'he' : 1,
|
||||
'hi' : 1,
|
||||
'hr' : 1,
|
||||
'hu' : 1,
|
||||
'id' : 1,
|
||||
'is' : 1,
|
||||
'it' : 1,
|
||||
'ja' : 1,
|
||||
'ka' : 1,
|
||||
'km' : 1,
|
||||
'ko' : 1,
|
||||
'ku' : 1,
|
||||
'lt' : 1,
|
||||
'lv' : 1,
|
||||
'mk' : 1,
|
||||
'mn' : 1,
|
||||
'ms' : 1,
|
||||
'nb' : 1,
|
||||
'nl' : 1,
|
||||
'no' : 1,
|
||||
'oc' : 1,
|
||||
'pl' : 1,
|
||||
'pt' : 1,
|
||||
'pt-br' : 1,
|
||||
'ro' : 1,
|
||||
'ru' : 1,
|
||||
'si' : 1,
|
||||
'sk' : 1,
|
||||
'sl' : 1,
|
||||
'sq' : 1,
|
||||
'sr' : 1,
|
||||
'sr-latn' : 1,
|
||||
'sv' : 1,
|
||||
'th' : 1,
|
||||
'tr' : 1,
|
||||
'tt' : 1,
|
||||
'ug' : 1,
|
||||
'uk' : 1,
|
||||
'vi' : 1,
|
||||
'zh' : 1,
|
||||
'zh-cn' : 1
|
||||
}
|
||||
};
|
||||
1377
admin/diy-pc/static/admin/common/js/ckeditor/ckeditor.js
vendored
Normal file
91
admin/diy-pc/static/admin/common/js/ckeditor/config.js
Normal file
@ -0,0 +1,91 @@
|
||||
/**
|
||||
* @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
|
||||
* For licensing, see https://ckeditor.com/legal/ckeditor-oss-license
|
||||
*/
|
||||
|
||||
CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,colorbutton,preview,templates,widget,basicstyles,blockquote,clipboard,panel,floatpanel,menu,contextmenu,resize,button,toolbar,elementspath,enterkey,entities,popup,filebrowser,floatingspace,font,justify,listblock,richcombo,format,horizontalrule,htmlwriter,wysiwygarea,image,multiimg,indent,indentlist,fakeobjects,link,list,magicline,maximize,pastetext,pastefromword,removeformat,showborders,sourcearea,specialchar,menubutton,scayt,stylescombo,tab,table,tabletools,undo,wsc';
|
||||
|
||||
CKEDITOR.editorConfig = function( config ) {
|
||||
// Define changes to default configuration here. For example:
|
||||
// config.language = 'fr';
|
||||
// config.uiColor = '#AADC6E';
|
||||
// Define changes to default configuration here.
|
||||
// For complete reference see:
|
||||
// http://docs.ckeditor.com/#!/api/CKEDITOR.config
|
||||
|
||||
/* config.toolbar =
|
||||
[
|
||||
[ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink','-','multiimg' ]
|
||||
]
|
||||
*/
|
||||
// The toolbar groups arrangement, optimized for two toolbar rows.
|
||||
config.toolbarGroups = [
|
||||
{ name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
|
||||
{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] },
|
||||
{ name: 'links' },
|
||||
{ name: 'others' },
|
||||
{ name: 'insert' },
|
||||
{ name: 'forms' },
|
||||
{ name: 'tools' },
|
||||
{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
|
||||
{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
|
||||
{ name: 'styles' },
|
||||
{ name: 'colors' },
|
||||
{ name: 'templates' },
|
||||
{ name: 'widget' },
|
||||
{ name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
|
||||
{ name: 'preview' }
|
||||
];
|
||||
|
||||
// Remove some buttons provided by the standard plugins, which are
|
||||
// not needed in the Standard(s) toolbar.
|
||||
config.removeButtons = 'Underline,Subscript,Superscript';
|
||||
|
||||
// Set the most common block elements.
|
||||
//config.format_tags = 'p;h1;h2;h3;pre';
|
||||
|
||||
config.filebrowserImageBrowseUrl = 'admin.php?ctl=Store_Media&met=index&typ=e&mdu=seller';
|
||||
// config.filebrowserBrowseUrl = 'kcfinder/browse.php?type=files';
|
||||
// config.filebrowserImageBrowseUrl = 'kcfinder/browse.php?type=images';
|
||||
// config.filebrowserFlashBrowseUrl = 'kcfinder/browse.php?type=flash';
|
||||
// config.filebrowserUploadUrl = 'kcfinder/upload.php?type=files';
|
||||
// config.filebrowserImageUploadUrl = 'kcfinder/upload.php?type=images';
|
||||
// config.filebrowserFlashUploadUrl = 'kcfinder/upload.php?type=flash';
|
||||
|
||||
// Simplify the dialog windows.
|
||||
config.removeDialogTabs = 'image:advanced;link:advanced';
|
||||
|
||||
// BootstrapCK Skin Options
|
||||
config.skin = 'bootstrapck';
|
||||
config.height = '350px';
|
||||
};
|
||||
|
||||
|
||||
$(function () {
|
||||
|
||||
/*
|
||||
//需要手动更新CKEDITOR字段
|
||||
for ( instance in CKEDITOR.instances )
|
||||
{
|
||||
// When the CKEDITOR instance is created, fully initialized and ready for interaction.
|
||||
// 当id为content的那个ckeditor被创建,并初始化完成之后
|
||||
CKEDITOR.instances[instance].on("instanceReady", function() {
|
||||
// 保存按钮
|
||||
this.addCommand("image", {
|
||||
modes : {
|
||||
wysiwyg : 1,
|
||||
source : 1
|
||||
},
|
||||
exec : function(editor) {
|
||||
// 获取到editor中的内容
|
||||
var content = editor.document.getBody().getHtml();
|
||||
alert(content);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
*/
|
||||
|
||||
})
|
||||
|
||||
|
||||
208
admin/diy-pc/static/admin/common/js/ckeditor/contents.css
Normal file
@ -0,0 +1,208 @@
|
||||
/*
|
||||
Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||
*/
|
||||
|
||||
body
|
||||
{
|
||||
/* Font */
|
||||
/* Emoji fonts are added to visualise them nicely in Internet Explorer. */
|
||||
font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
font-size: 12px;
|
||||
|
||||
/* Text color */
|
||||
color: #333;
|
||||
|
||||
/* Remove the background color to make it transparent. */
|
||||
background-color: #fff;
|
||||
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
.cke_editable
|
||||
{
|
||||
font-size: 13px;
|
||||
line-height: 1.6;
|
||||
|
||||
/* Fix for missing scrollbars with RTL texts. (#10488) */
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
blockquote
|
||||
{
|
||||
font-style: italic;
|
||||
font-family: Georgia, Times, "Times New Roman", serif;
|
||||
padding: 2px 0;
|
||||
border-style: solid;
|
||||
border-color: #ccc;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
.cke_contents_ltr blockquote
|
||||
{
|
||||
padding-left: 20px;
|
||||
padding-right: 8px;
|
||||
border-left-width: 5px;
|
||||
}
|
||||
|
||||
.cke_contents_rtl blockquote
|
||||
{
|
||||
padding-left: 8px;
|
||||
padding-right: 20px;
|
||||
border-right-width: 5px;
|
||||
}
|
||||
|
||||
a
|
||||
{
|
||||
color: #0782C1;
|
||||
}
|
||||
|
||||
ol,ul,dl
|
||||
{
|
||||
/* IE7: reset rtl list margin. (#7334) */
|
||||
*margin-right: 0px;
|
||||
/* Preserved spaces for list items with text direction different than the list. (#6249,#8049)*/
|
||||
padding: 0 40px;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4,h5,h6
|
||||
{
|
||||
font-weight: normal;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
hr
|
||||
{
|
||||
border: 0px;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
|
||||
img.right
|
||||
{
|
||||
border: 1px solid #ccc;
|
||||
float: right;
|
||||
margin-left: 15px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
img.left
|
||||
{
|
||||
border: 1px solid #ccc;
|
||||
float: left;
|
||||
margin-right: 15px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
pre
|
||||
{
|
||||
white-space: pre-wrap; /* CSS 2.1 */
|
||||
word-wrap: break-word; /* IE7 */
|
||||
-moz-tab-size: 4;
|
||||
tab-size: 4;
|
||||
}
|
||||
|
||||
.marker
|
||||
{
|
||||
background-color: Yellow;
|
||||
}
|
||||
|
||||
span[lang]
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
figure
|
||||
{
|
||||
text-align: center;
|
||||
outline: solid 1px #ccc;
|
||||
background: rgba(0,0,0,0.05);
|
||||
padding: 10px;
|
||||
margin: 10px 20px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
figure > figcaption
|
||||
{
|
||||
text-align: center;
|
||||
display: block; /* For IE8 */
|
||||
}
|
||||
|
||||
a > img {
|
||||
padding: 1px;
|
||||
margin: 1px;
|
||||
border: none;
|
||||
outline: 1px solid #0782C1;
|
||||
}
|
||||
|
||||
/* Widget Styles */
|
||||
.code-featured
|
||||
{
|
||||
border: 5px solid red;
|
||||
}
|
||||
|
||||
.math-featured
|
||||
{
|
||||
padding: 20px;
|
||||
box-shadow: 0 0 2px rgba(200, 0, 0, 1);
|
||||
background-color: rgba(255, 0, 0, 0.05);
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.image-clean
|
||||
{
|
||||
border: 0;
|
||||
background: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.image-clean > figcaption
|
||||
{
|
||||
font-size: .9em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.image-grayscale
|
||||
{
|
||||
background-color: white;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.image-grayscale img, img.image-grayscale
|
||||
{
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
|
||||
.embed-240p
|
||||
{
|
||||
max-width: 426px;
|
||||
max-height: 240px;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
.embed-360p
|
||||
{
|
||||
max-width: 640px;
|
||||
max-height: 360px;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
.embed-480p
|
||||
{
|
||||
max-width: 854px;
|
||||
max-height: 480px;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
.embed-720p
|
||||
{
|
||||
max-width: 1280px;
|
||||
max-height: 720px;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
.embed-1080p
|
||||
{
|
||||
max-width: 1920px;
|
||||
max-height: 1080px;
|
||||
margin:0 auto;
|
||||
}
|
||||