This commit is contained in:
qijq 2024-11-01 16:24:11 +08:00
parent 513acca3da
commit d5ba177d14
2399 changed files with 362538 additions and 3 deletions

3
.browserslistrc Normal file
View File

@ -0,0 +1,3 @@
> 1%
last 2 versions
not dead

12
.editorconfig Normal file
View 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

1
.env Normal file
View File

@ -0,0 +1 @@
VUE_GITHUB_USER_NAME=Xinze

13
.env.dev Normal file
View 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
View 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
View 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
View File

@ -0,0 +1,5 @@
src/assets
src/icons
public
dist
node_modules

108
.eslintrc.js Normal file
View 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
View 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
View 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
View 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
View 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.

View File

@ -1,3 +0,0 @@
# java-mall-admin
商城后台管理系统(前端)

784
admin/config.js Normal file
View 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

File diff suppressed because it is too large Load Diff

110
admin/diy-pc/items.html Normal file
View 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>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View 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; }/*主体内容背景*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

View 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);

View 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
}
};

File diff suppressed because one or more lines are too long

View 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);
}
});
});
}
*/
})

View 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;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More