Compare commits

..

174 Commits
main ... dev2

Author SHA1 Message Date
31e9e0dd35 fix:修复商品列表‘商品类别’显示错误 2025-12-31 11:46:00 +08:00
68cbfe3bc1 Merge branch 'dev2' of https://git.gpxscs.cn/front/java-mall-admin into dev2 2025-12-30 18:20:04 +08:00
d8fd1c728e update:平台新增'商品订单'打包费字段显示 2025-12-30 18:19:55 +08:00
lihaoyuan
cfb1eb33c0 build:打板 2025-12-30 12:02:54 +08:00
lihaoyuan
2b2f0c0ed5 update:新增商品导入管理 2025-12-30 11:58:09 +08:00
lihaoyuan
4e1c70862c update:新增店铺密钥管理 2025-12-30 11:50:28 +08:00
lihaoyuan
c708a86c1e build:打板 2025-12-25 15:07:22 +08:00
lihaoyuan
4320e5c9f9 update:补充骰子个数参数,以及一些规则检验 2025-12-24 16:16:59 +08:00
lihaoyuan
2978c6a201 build:打板 2025-12-24 11:49:05 +08:00
lihaoyuan
5419cba7e8 update:新增店铺内部运费,是否开启自配送开关 2025-12-24 11:46:54 +08:00
5e0239da35 update:店铺/店铺数据库配置列表客户端版本显示更新 2025-12-24 11:06:36 +08:00
lihaoyuan
dcf7a1b4d6 build:打板 2025-12-23 16:47:42 +08:00
3bb8fb198b fix:修复限时秒杀折扣价修改功能 2025-12-23 16:42:44 +08:00
c1220c0d27 Merge branch 'dev2' of https://git.gpxscs.cn/front/java-mall-admin into dev2 2025-12-23 16:23:56 +08:00
bc90a854c2 fix:表头商品编号修改为商品货号 2025-12-23 16:23:46 +08:00
lihaoyuan
4d1e96b054 build:打板 2025-12-23 16:01:08 +08:00
d683bfc186 fix:修复限时秒杀新增商品商品编码显示错误以及查询无效问题 2025-12-23 15:56:25 +08:00
lihaoyuan
3d7ac7603c build:打板 2025-12-23 09:09:45 +08:00
lihaoyuan
294aa013e4 update:修改副图新增和副图修改逻辑 2025-12-23 09:08:11 +08:00
lihaoyuan
2acb439c9d update:砍价活动新增摇骰子相关等字段 2025-12-22 17:29:33 +08:00
lihaoyuan
9111a150f6 update:新增平台删除多个区域的运费设置 2025-12-22 16:53:09 +08:00
lihaoyuan
cd3c048d7f update:停用在线订单"付款"操作 2025-12-22 16:45:24 +08:00
4da07ddfaa Merge branch 'dev2' of https://git.gpxscs.cn/front/java-mall-admin into dev2 2025-12-19 11:07:56 +08:00
cf53a3d4d5 fix: 修复报表订单统计订单销售趋势图因无数据一直加载问题 2025-12-19 11:07:37 +08:00
2801dff0c7 updae : 修复报表订单统计订单销售趋势图因无数据一直加载问题 2025-12-19 11:06:50 +08:00
lihaoyuan
2540abad3d build:重新打板 2025-12-18 14:07:03 +08:00
f5d270260e build 打板 2025-12-18 12:06:42 +08:00
9b9e8fc6d4 update 修改商品管理,商品编辑分类提示语 2025-12-18 12:00:33 +08:00
b186811571 Merge branch 'dev2' of https://git.gpxscs.cn/front/java-mall-admin into dev2 2025-12-17 16:59:49 +08:00
26bbc770cb update:修复订单状态order_state_id对应的消息 2025-12-17 16:59:10 +08:00
lihaoyuan
4b73774cbc update:签署e签宝合同未成功测试 2025-12-17 15:39:56 +08:00
lihaoyuan
62f680b5b0 update:在模板创建空白或者其他模板,成功后刷新可用模板列表 2025-12-15 15:13:09 +08:00
lihaoyuan
bb1c463b99 build:打板 2025-12-15 10:01:06 +08:00
lihaoyuan
2e368d932d update:模板市场新增删除模板 2025-12-15 09:59:14 +08:00
lihaoyuan
0352fb14c7 build:打板 新增空白模板 2025-12-13 18:12:10 +08:00
lihaoyuan
944b27e95a update:店铺装修新增空白模板 2025-12-13 18:10:21 +08:00
lihaoyuan
9ca20f7f24 build:打板 门店管理创建修复百度地图 2025-12-13 17:06:54 +08:00
lihaoyuan
cbad034315 fix:修复百度地图参数和自动补全组件数据传参过时了或者不匹配的问题 2025-12-13 17:04:57 +08:00
lihaoyuan
149ece04df build:打板 2025-12-13 15:42:25 +08:00
lihaoyuan
3216fe09c9 update:修改门店管理经纬度可读可写 2025-12-13 15:40:27 +08:00
lihaoyuan
25e049eb91 update:新增平台设置店铺运费 2025-12-13 11:11:46 +08:00
lihaoyuan
30fa538c93 update:新增订单打包费和合计显示修改 2025-12-11 10:46:04 +08:00
lihaoyuan
3180a7d199 build:打板 2025-12-10 18:06:09 +08:00
lihaoyuan
2dc10667e6 update:修改模板市场部分样式,布局,新增分页器 2025-12-10 17:03:31 +08:00
lihaoyuan
b86231dd77 build:重新打板模板市场 2025-12-10 11:53:45 +08:00
lihaoyuan
f929893ad1 build:打板模板市场 2025-12-10 11:43:34 +08:00
lihaoyuan
6331ab74da update:新增模板市场功能 2025-12-10 11:39:52 +08:00
lihaoyuan
33291bf573 update:重新打板 2025-12-02 09:10:25 +08:00
lihaoyuan
7be162de4f 打板:build 2025-12-01 14:19:30 +08:00
lihaoyuan
6d4c1a151d update:修改表单数字输入变成文本 2025-11-28 14:05:41 +08:00
lihaoyuan
33538a3aaa update:新增主图修改,副图显示 2025-11-28 10:26:20 +08:00
lihaoyuan
cedc139f62 build:打板 2025-11-26 11:30:58 +08:00
lihaoyuan
969c0b5157 update:新增查询数据库版本字段 2025-11-26 11:29:35 +08:00
lihaoyuan
22fddce9ad update:新增客户端字段 2025-11-26 11:19:53 +08:00
lihaoyuan
46910a42c7 build:打板 2025-11-24 11:22:24 +08:00
lihaoyuan
24f3786c1c update:修改结束时间默认显示 2025-11-24 11:20:53 +08:00
lihaoyuan
60426f4594 fix:修复状态显示 2025-11-24 11:20:31 +08:00
lihaoyuan
b497242585 build:打板 2025-11-21 18:09:21 +08:00
lihaoyuan
4fb7ff8159 update:限制更改店铺管理的店铺信息和管理员账号 2025-11-21 18:02:14 +08:00
lihaoyuan
c32aa6bddb build:打板 2025-11-21 17:39:48 +08:00
lihaoyuan
c0d02c2a9f update:新增app_id到模板接口 2025-11-21 17:36:26 +08:00
lihaoyuan
cb9593e1c2 build:打板 2025-11-20 16:37:26 +08:00
lihaoyuan
0ec30b080a update:修改合计计算,活动状态和确认状态码改成文字显示 2025-11-20 16:35:46 +08:00
lihaoyuan
e1987b4701 build:重新打板 2025-11-18 17:08:37 +08:00
lihaoyuan
fc823f27cf build:打板 2025-11-18 17:06:50 +08:00
lihaoyuan
e2b2ab6386 fix:修复砍价人数和砍价时间传参 2025-11-18 17:05:16 +08:00
lihaoyuan
74b84cdab1 build:打板 2025-11-10 17:49:20 +08:00
lihaoyuan
3d12b5e827 update:店铺数据库新增营业员,同步活动,同步会员字段 2025-11-10 17:13:06 +08:00
lihaoyuan
3cb142a0a3 update:商品映射新增商品溢价率字段 2025-11-10 17:12:05 +08:00
lihaoyuan
2c5dd992a8 build:打板 2025-11-08 18:17:42 +08:00
lihaoyuan
c46a2a0390 update:新增店铺开业状态-开业筹备中 2025-11-08 18:16:14 +08:00
lihaoyuan
feb7fb758e update:砍价新增砍价人数和有效时间 2025-11-08 16:43:52 +08:00
lihaoyuan
d0b115e0c0 build:打板 2025-10-30 11:12:42 +08:00
lihaoyuan
70688c8095 fix:修改运营设置运费的规则检验 2025-10-30 11:11:02 +08:00
lihaoyuan
ab7479a605 build:打板 2025-10-30 09:45:21 +08:00
lihaoyuan
641931835e update:修改商品映射配置的展示和修改字段必填 2025-10-30 09:41:55 +08:00
lihaoyuan
e45e05fe99 update:商品映射配置新增商品货号提交字段 并且提交后获取最新表单数据 2025-10-28 18:38:44 +08:00
lihaoyuan
2f34bf490b build:打板 2025-10-28 15:34:06 +08:00
lihaoyuan
f0b6e85620 update:修复类型管理某个类型编辑报错 2025-10-28 15:32:23 +08:00
lihaoyuan
7d1bd2dee8 update:新增导出未分配的商品数据 2025-10-27 15:14:15 +08:00
lihaoyuan
0211c1d57c update:全部订单部分新增状态代码匹配 2025-10-23 14:45:43 +08:00
lihaoyuan
963c7205ab update:修改商品列表默认图片优化 2025-10-20 11:37:40 +08:00
lihaoyuan
2233525a69 update:修改商品列表显示的默认图片去掉 2025-10-20 11:36:23 +08:00
lihaoyuan
3f9ac0d8bb build:打板 2025-10-18 17:21:15 +08:00
lihaoyuan
f3dc093edf update:修改店铺数据库配置编辑页面弹出显示逻辑,父组件控制子组件关 2025-10-18 17:19:39 +08:00
lihaoyuan
3588d62dd1 update:取消新增商品默认图片 2025-10-18 16:42:30 +08:00
lihaoyuan
65c9cd9c1a build:打版 2025-10-18 08:58:03 +08:00
lihaoyuan
7712e32b87 update:商品货架号字段新增 2025-10-17 17:03:00 +08:00
lihaoyuan
be481b47f6 update:新增商品接口新加两个字段
fix:修复保存商品上下架开关显示失败
2025-10-13 18:15:23 +08:00
lihaoyuan
bcf03fb591 build:打板 2025-10-05 11:59:05 +08:00
lihaoyuan
cfa91ae8e5 update:新增平台运费设置,同城配送开启 2025-10-05 11:50:20 +08:00
lihaoyuan
74478141ab build:打板 2025-09-29 17:48:40 +08:00
lihaoyuan
7777ef6439 Merge branch 'dev2' of http://git.gpxscs.cn/front/java-mall-admin into dev2 2025-09-29 17:47:01 +08:00
lihaoyuan
389e2ca762 update:修改经营品类为联级菜单 2025-09-29 17:46:56 +08:00
mixtan
09c139790c build: 版本更新 => 更新百度地图ak配置 2025-09-28 13:22:10 +08:00
mixtan
bfc2c37bd6 update: 更新百度地图ak配置 2025-09-28 12:14:22 +08:00
mixtan
14371cb08e Merge branch 'dev2' of http://git.gpxscs.cn/front/java-mall-admin into dev2 2025-09-28 11:32:15 +08:00
lihaoyuan
179ed1f0bd update+build:修改下架等待时间并打包 2025-09-27 18:26:57 +08:00
lihaoyuan
7c53cc40b3 build:重新打包 2025-09-27 09:48:30 +08:00
lihaoyuan
dfea8d66a5 update+build:修改计划任务输入框手动填值 2025-09-27 09:47:12 +08:00
lihaoyuan
d03c5710d3 update+build:注释编辑商品打包费显示,更新店铺管理编辑品类从输入框变成下拉框 2025-09-26 15:26:30 +08:00
lihaoyuan
fd6001d32d update+build:新增编辑保存流程,修改审核入驻判断条件,新增店铺管理分账比例,修改模板表格展示样式 2025-09-24 14:14:40 +08:00
lihaoyuan
2f159b4a68 build:重新打包 2025-09-22 11:02:52 +08:00
lihaoyuan
9758d21ea7 update:商品管理新增查询店铺下拉框并打板 2025-09-22 10:52:10 +08:00
lihaoyuan
8fa020fa49 build:打板微信消息模板 2025-09-19 15:46:38 +08:00
lihaoyuan
791d965b06 update:新增微信模板信息编辑传参,更新表格展示 2025-09-19 15:39:02 +08:00
lihaoyuan
d2d5bec659 update:新增语音播报开关,减少秒到选项 2025-09-15 18:21:10 +08:00
lihaoyuan
090dfaeb2d update:外层店铺创建状态位置调整,打包 2025-09-09 09:53:09 +08:00
lihaoyuan
898f17a4c4 build:打版 2025-09-09 09:31:01 +08:00
lihaoyuan
7480553bef update:修改条码文字,修改入驻流程,添加只读的入驻编号字段 2025-09-09 09:26:21 +08:00
qijq
48e5c51ffb 交接剩余代码 2025-09-08 08:55:48 +08:00
lihaoyuan
79e179366c update:修改单条操作逻辑,打包 2025-09-06 11:58:48 +08:00
lihaoyuan
d7ff82579b build:再次修改样式 2025-09-04 16:55:55 +08:00
lihaoyuan
202373bc0a build:样式异常更改重新打包 2025-09-04 16:49:42 +08:00
lihaoyuan
6a8d8b9456 build:打包部署 2025-09-04 16:27:56 +08:00
lihaoyuan
4b535ea385 update:新增简单举报详情,新增图库管理 2025-09-04 16:25:14 +08:00
qijq
b6d789a975 update 2025-08-23 08:41:10 +08:00
qijq
e989dac546 update 增加打包费 2025-08-18 10:20:28 +08:00
lihaoyuan
820675e513 update:打包提交举报中心 2025-08-15 14:12:48 +08:00
lihaoyuan
141a23fa9b update:新增举报中心 2025-08-14 18:38:04 +08:00
qijq
e3844d6d11 update 修复 2025-08-11 22:49:19 +08:00
255e0a1a0e 更新 Jenkinsfile 2025-08-11 21:10:13 +08:00
d0d3a5188e 更新 Jenkinsfile 2025-08-11 19:02:32 +08:00
2bb52aebb2 更新 Jenkinsfile 2025-08-11 19:02:13 +08:00
9d4a62062c 更新 JenkinsfileBuild 2025-08-11 18:59:32 +08:00
50422a27b5 添加 JenkinsfileBuild 2025-08-11 18:58:37 +08:00
cac4acbcbf 更新 Jenkinsfile 2025-08-11 18:05:07 +08:00
88563b9228 更新 Jenkinsfile 2025-08-11 17:08:21 +08:00
79989085d8 更新 Jenkinsfile
修正jenkins部署代码
2025-08-11 16:45:28 +08:00
d13e30369c 更新 Jenkinsfile 2025-08-11 16:22:50 +08:00
0efb648580 更新 Jenkinsfile 2025-08-11 16:20:32 +08:00
5f2de7fd74 添加 Jenkinsfile
提交 jenkins 部署脚本
2025-08-11 16:05:22 +08:00
mixtan
47598792d9 Merge branch 'dev2' of http://git.gpxscs.cn/front/java-mall-admin into dev2 2025-08-02 18:40:57 +08:00
lihaoyuan
2e4201efe2 update:增加了打印机测试,并打包 2025-08-02 15:55:17 +08:00
mixtan
4f28dab623 Merge branch 'dev2' of http://git.gpxscs.cn/front/java-mall-admin into dev2 2025-07-29 19:49:59 +08:00
lihaoyuan
76adfec61d update:打包后,admin文件夹忽略去掉 2025-07-29 18:38:02 +08:00
mixtan
16fcf86b0a Merge branch 'dev2' of http://git.gpxscs.cn/front/java-mall-admin into dev2 2025-07-29 18:23:03 +08:00
lihaoyuan
03335b2319 udate:新增店铺数据库配置字段,列表属性展示
fix:修复删除,新增商品规格提交后不刷新数据的bug
2025-07-29 18:14:14 +08:00
mixtan
cc29425f5d Merge branch 'dev2' of http://git.gpxscs.cn/front/java-mall-admin into dev2 2025-07-18 19:49:11 +08:00
lihaoyuan
b81ff8d290 update:更新获取密钥返回参数逻辑和判空处理,新增表单”优先更新方式“字段 2025-07-18 18:01:55 +08:00
mixtan
fd48c3fa41 Merge branch 'dev2' of http://git.gpxscs.cn/front/java-mall-admin into dev2 2025-07-18 15:20:14 +08:00
lihaoyuan
3754154e2f 修复:加载状态一直转圈圈,更新:下载模板和导出数据的放在同一个地方,把商品列表项的"下载模板"和“店铺商品映射”功能按钮移到了上方功能栏,并联调”同步数据“后端接口,修改了同步数据库的“新增”和“修改”表单字段规则 2025-07-18 15:12:20 +08:00
mixtan
4f9018f562 update: 修改router路由 2025-07-03 11:04:38 +08:00
mixtan
658c7689e0 fix: 路径修改 2025-07-03 10:30:14 +08:00
mixtan
72943a4cd1 feat: 店铺数据库初始化配置 2025-07-03 10:02:02 +08:00
322fd727e0 update 2025-06-30 14:26:52 +08:00
qijq
30b30c1cba 去掉 起送字眼,修复样式问题 2025-06-29 00:05:33 +08:00
qijq
51b1509aef 更新商品列表 2025-06-28 18:56:10 +08:00
mixtan
d7b40ebf3c Merge branch 'dev2' of http://git.gpxscs.cn/front/java-mall-admin into dev2 2025-06-27 23:14:16 +08:00
mixtan
427e64d621 style:商品实体映射布局间距调整 2025-06-27 23:12:31 +08:00
mixtan
8abba6f541 style:修复样式被全局污染 2025-06-27 23:08:09 +08:00
qijq
00f7d33b1a 合并 2025-06-27 20:54:29 +08:00
mixtan
2bd37864a4 fix: 请求方式修改 2025-06-27 20:43:21 +08:00
mixtan
a04db00c4f Merge branch 'dev2' of http://git.gpxscs.cn/front/java-mall-admin into dev2 2025-06-27 20:18:53 +08:00
mixtan
ebf8049e35 update:商品图片匹配 2025-06-27 20:17:43 +08:00
qijq
6339fa6d27 update 商品列表-增加未分配商品字段,和商家端增加商品分类options 2025-06-27 18:40:12 +08:00
mixtan
c641138f22 fix: 修复报错商品编辑 2025-06-27 09:35:50 +08:00
qijq
2885a7e634 更新样式 2025-06-27 06:10:33 +08:00
qijq
9408552f00 '修复词语' 2025-06-27 00:45:59 +08:00
qijq
4858482b5d 增加提示词语 2025-06-27 00:41:18 +08:00
qijq
4831c847f4 驳回按钮显示和影藏 2025-06-27 00:26:01 +08:00
qijq
66c20f2859 更改审核页面样式和修复已知BUG 2025-06-27 00:06:40 +08:00
mixtan
f81f7f5749 style: 样式背景 2025-06-26 20:48:18 +08:00
mixtan
794ca1cac0 style: 样式修改 2025-06-26 20:28:03 +08:00
qijq
bed3f521d0 update 修复已知BUG 2025-06-26 17:56:44 +08:00
mixtan
82722f61d2 fix: 修复问题商品映射 2025-06-26 17:15:17 +08:00
mixtan
0323cb0962 feat: 商品实体映射数据 2025-06-26 14:32:27 +08:00
seven
86e3825433 修改审核状态 2025-06-23 18:40:51 +08:00
seven
a0495711cb update 驳回状态 2025-06-23 18:35:41 +08:00
qijq
b6794db4ef update 2025-06-23 16:47:25 +08:00
qijq
c709db096c update 修复已知道BUG,审核BUG 2025-06-20 14:12:44 +08:00
qijq
dee55721bb 补充驳回字段 2025-06-09 09:40:35 +08:00
qijq
828b07fd88 update 修复驳回审核checkboxList 字段 2025-05-30 14:20:06 +08:00
qijq
8a358f4121 update 修改驳回审核和增加分账,创建店铺补偿机制 2025-05-29 21:53:13 +08:00
776 changed files with 82893 additions and 2099 deletions

62
JenkinsfileBuild Normal file
View File

@ -0,0 +1,62 @@
pipeline {
agent any
tools {
nodejs 'NodeJS16'
}
environment {
// 抽取部署目标路径为公共变量
DEPLOY_DIR = '/data/nginx/www/fafamall/admin'
}
stages {
stage('拉取代码') {
steps {
checkout scm
}
}
stage('安装依赖') {
steps {
sh '''
echo "清理旧依赖..."
rm -rf node_modules package-lock.json
npm cache clean --force
echo "设置国内腾讯云镜像源加速..."
npm config set registry https://mirrors.cloud.tencent.com/npm/
# 安装其他依赖
npm install
'''
}
}
stage('构建项目') {
steps {
sh 'npm run build'
}
}
stage('部署项目') {
steps {
sh '''
# 公共部署逻辑(创建目录、清理、复制)
mkdir -p ${DEPLOY_DIR}
rm -rf ${DEPLOY_DIR}/*
cp -r admin/* ${DEPLOY_DIR}/
'''
}
}
}
post {
success {
echo '项目部署成功.'
}
failure {
echo '项目部署失败.'
}
}
}

2
.gitignore vendored
View File

@ -1,7 +1,6 @@
.DS_Store
node_modules
/dist
/admin/
# local env files
.env.local
.env.*.local
@ -46,3 +45,4 @@ src/vab/styles/themes/red.scss
/src/vab/styles/themes/red-black.scss
/src/vab/styles/themes/red-white.scss
/.history
node_modules*

60
Jenkinsfile vendored
View File

@ -1,74 +1,36 @@
pipeline {
agent any
tools {
nodejs 'NodeJS16'
}
environment {
DEPLOY_DIR = '/data/nginx/www/fafamall/demo' // 主节点部署目录
SLAVE_IP = '172.16.0.10' // 从节点 IP
SLAVE_DEPLOY_DIR = '/data/nginx/www/fafamall/demo' // 从节点目标目录(与主节点一致)
SSH_PORT = '2203' // 从节点 SSH 端口
SSH_KEY = '/root/.ssh/id_rsa' // Jenkins 服务器(主节点)免密私钥路径
DIST_PATH = 'dist' // 编译产物目录(与 npm run build 输出目录一致)
DEPLOY_DIR = '/data/nginx/www/fafamall/admin'
DIST_PATH = 'admin'
}
stages {
stage('拉取代码') {
stage('拉取代码并验证') {
steps {
checkout scm
}
}
stage('安装依赖') {
steps {
sh '''
echo "清理旧依赖..."
rm -rf node_modules package-lock.json
npm cache clean --force
echo "设置国内镜像源加速..."
npm config set registry https://registry.npmmirror.com
# 安装其他依赖
npm install
'''
}
}
stage('构建项目') {
steps {
sh 'npm run build'
// 验证构建产物是否存在(避免空同步)
sh """
[ -d "${DIST_PATH}" ] || { echo "错误:构建失败,未找到 ${DIST_PATH} 目录"; exit 1; }
echo "构建成功:${DIST_PATH} 目录存在"
[ -d "${DIST_PATH}" ] || { echo "错误:未找到 ${DIST_PATH} 文件夹"; exit 1; }
echo "${DIST_PATH} 验证通过"
"""
}
}
stage('主节点部署') {
stage('部署') {
steps {
sh '''
# 公共部署逻辑(创建目录、清理、复制)
sh """
mkdir -p ${DEPLOY_DIR}
rm -rf ${DEPLOY_DIR}/*
cp -r ${DIST_PATH}/* ${DEPLOY_DIR}/
echo "主节点部署完成:${DIST_PATH} → ${DEPLOY_DIR}"
'''
echo "部署完成:${DIST_PATH} → ${DEPLOY_DIR}"
"""
}
}
}
post {
success {
echo '🎉 项目部署+从节点同步全部成功!'
}
failure {
echo '❌ 项目部署/同步失败,请排查问题后重试!'
}
success { echo "✅ 部署成功" }
failure { echo "❌ 部署失败" }
}
}

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

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

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