dev2 #1
1
.gitignore
vendored
@ -1,7 +1,6 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
/admin/
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
783
admin/config.js
Normal file
@ -0,0 +1,783 @@
|
||||
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;
|
||||
}
|
||||