mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-05-01 06:18:16 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d03c91e148 | ||
|
|
7a3c651a42 | ||
|
|
ba213df41b | ||
|
|
03bd58ce2e | ||
|
|
a773b25e26 | ||
|
|
8d7dc6e436 | ||
|
|
6542db3d23 | ||
|
|
ad767e6635 | ||
|
|
3d8d4c20d0 |
177
.dockerignore
Normal file
177
.dockerignore
Normal file
@ -0,0 +1,177 @@
|
||||
# ===========================================
|
||||
# Docker 构建镜像过滤配置文件
|
||||
# 作用:在 docker build 时排除不需要的文件,减小构建上下文
|
||||
# ===========================================
|
||||
|
||||
# ===========================================
|
||||
# 1. 版本控制与 Git 相关
|
||||
# ===========================================
|
||||
.git
|
||||
.gitignore
|
||||
.gitattributes
|
||||
.gitmodules
|
||||
|
||||
# ===========================================
|
||||
# 2. Docker 相关文件(构建时使用,不需要进入镜像)
|
||||
# ===========================================
|
||||
Dockerfile
|
||||
.dockerignore
|
||||
docker-compose*.yml
|
||||
docker-compose*.yaml
|
||||
.docker
|
||||
Dockerfile.*
|
||||
*.mdc
|
||||
|
||||
# ===========================================
|
||||
# 3. IDE 和编辑器配置
|
||||
# ===========================================
|
||||
.idea/
|
||||
.vscode/
|
||||
.vs/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
Desktop.ini
|
||||
|
||||
# ===========================================
|
||||
# 4. 项目辅助目录
|
||||
# ===========================================
|
||||
help/
|
||||
template/
|
||||
docs/
|
||||
doc/
|
||||
*.md
|
||||
LICENSE
|
||||
README*
|
||||
CHANGELOG*
|
||||
CHANGE*
|
||||
HISTORY*
|
||||
CONTRIBUTING*
|
||||
|
||||
# ===========================================
|
||||
# 5. 缓存和临时文件
|
||||
# ===========================================
|
||||
.runtime/
|
||||
runtime/
|
||||
*.log
|
||||
*.tmp
|
||||
*.temp
|
||||
*.cache
|
||||
*.bak
|
||||
*.backup
|
||||
*_backup
|
||||
*.old
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.DS_Store
|
||||
|
||||
# ===========================================
|
||||
# 6. Node.js 相关(前端依赖,构建后不需要)
|
||||
# ===========================================
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
.npm
|
||||
.yarn/
|
||||
.browserslistrc
|
||||
.eslintcache
|
||||
.node_repl_history
|
||||
|
||||
# ===========================================
|
||||
# 7. PHP Composer 依赖(不使用时的清理)
|
||||
# ===========================================
|
||||
# 注意:如果 vendor 目录需要,进入镜像时不要排除
|
||||
# 如果使用 composer install 构建,则可以排除
|
||||
# vendor/test/
|
||||
# vendor/tests/
|
||||
# vendor/docs/
|
||||
# vendor/*.txt
|
||||
# vendor/*.md
|
||||
|
||||
# ===========================================
|
||||
# 8. 大型字体文件(不必要的资源)
|
||||
# ===========================================
|
||||
# simsun.ttc
|
||||
# WenQuanZhengHei.ttf
|
||||
crmeb/vendor/dh2y/think-qrcode/src/simsun.ttc
|
||||
crmeb/vendor/fastknife/ajcaptcha/resources/fonts/WenQuanZhengHei.ttf
|
||||
|
||||
# ===========================================
|
||||
# 9. 数据库和安装文件(运行镜像时重新生成)
|
||||
# ===========================================
|
||||
*.sql
|
||||
*.sql.gz
|
||||
*.sql.bak
|
||||
|
||||
# ===========================================
|
||||
# 10. 测试和开发文件
|
||||
# ===========================================
|
||||
phpunit.xml
|
||||
phpunit.xml.dist
|
||||
tests/
|
||||
test/
|
||||
Benchmark/
|
||||
coverage/
|
||||
.phpunit.result.cache
|
||||
.php_cs
|
||||
.php-cs-fixer.cache
|
||||
.styleci.yml
|
||||
codesniffer.ruleset.xml
|
||||
|
||||
# ===========================================
|
||||
# 11. 环境配置文件(敏感信息,运行时挂载)
|
||||
# ===========================================
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
.secret
|
||||
.secrets
|
||||
*.key
|
||||
*.pem
|
||||
*.crt
|
||||
*.csr
|
||||
|
||||
# ===========================================
|
||||
# 12. 备份和历史文件
|
||||
# ===========================================
|
||||
*backup*
|
||||
*_backup*
|
||||
*_bak*
|
||||
*.backup
|
||||
*.bak
|
||||
*~
|
||||
*.orig
|
||||
*.rej
|
||||
*_COPYING_*
|
||||
*_TRASH_*
|
||||
|
||||
# ===========================================
|
||||
# 13. 开发辅助文件
|
||||
# ===========================================
|
||||
.trae/
|
||||
.codebuddy/
|
||||
.scribe/
|
||||
.phpunit.result.cache
|
||||
php_errors.log
|
||||
*.log
|
||||
|
||||
# ===========================================
|
||||
# 14. 其他大型或不必要的文件
|
||||
# ===========================================
|
||||
*.zip
|
||||
*.tar
|
||||
*.tar.gz
|
||||
*.tgz
|
||||
*.rar
|
||||
*.7z
|
||||
*.iso
|
||||
*.img
|
||||
*.dmg
|
||||
*.pdf
|
||||
*.exe
|
||||
*.msi
|
||||
76
.gitignore
vendored
76
.gitignore
vendored
@ -1,26 +1,78 @@
|
||||
/.git
|
||||
/.idea
|
||||
.vscode/
|
||||
*.log
|
||||
*.DS_Store
|
||||
/crmeb/runtime/cache
|
||||
/crmeb/runtime/log
|
||||
/crmeb/runtime/session
|
||||
/crmeb/runtime/temp
|
||||
*.iml
|
||||
|
||||
# CRMEB运行时
|
||||
/crmeb/runtime/*
|
||||
/crmeb/backup/*
|
||||
/crmeb/public/install.lock
|
||||
/crmeb/public/uploads
|
||||
/crmeb/runtime/timer.pid
|
||||
/crmeb/runtime/workerman.pid
|
||||
crmeb/public/uploads/*
|
||||
|
||||
|
||||
# Docker数据
|
||||
/docker-compose/mysql/data/
|
||||
/docker-compose/mysql/log/
|
||||
/docker-compose/nginx/log/
|
||||
/docker-compose-universal/*/mysql/
|
||||
/docker-compose-universal/*/data/
|
||||
|
||||
# 构建产物
|
||||
/template/admin/dist/
|
||||
/template/admin/.idea/
|
||||
/template/admin/node_modules/
|
||||
/template/uni-app/node_modules/
|
||||
/template/uni-app/unpackage/
|
||||
/template/uni-app/.hbuilderx/
|
||||
/crmeb/.idea/
|
||||
/docker-compose/MacArm/mysql/data/
|
||||
/docker-compose/MacArm/mysql/log/
|
||||
/docker-compose/linux/mysql/data/
|
||||
/docker-compose/linux/mysql/log/
|
||||
|
||||
# 备份文件
|
||||
*_backup/
|
||||
|
||||
# Docker Compose
|
||||
/docker-compose-dev/
|
||||
/help/docker/mysql/data/
|
||||
|
||||
# 配置文件(敏感信息)
|
||||
crmeb/.env
|
||||
crmeb/.constant
|
||||
crmeb/supervisord.log
|
||||
crmeb/supervisord.pid
|
||||
|
||||
crmeb/start.sh
|
||||
crmeb/supervisord.conf
|
||||
crmeb/my.cnf
|
||||
crmeb/redis.conf
|
||||
crmeb/vhost.conf
|
||||
crmeb/php-ini-overrides.ini
|
||||
crmeb/php-fpm.conf
|
||||
|
||||
# 代码助手规则文件
|
||||
.codebuddy/rules/dockerfile-buid.mdc
|
||||
.codebuddy/rules/docker-compose-buid.mdc
|
||||
|
||||
.trae/rules/docker.md
|
||||
.trae/rules/dockerinone.md
|
||||
|
||||
|
||||
.trae/skills/dockercompose/ALLINONE_SKILL.md
|
||||
.gitignore
|
||||
crmeb/Dockerfile
|
||||
crmeb/nginx.conf
|
||||
crmeb/.env.example
|
||||
crmeb/.dockerignore
|
||||
|
||||
crmeb/backup/readme.md
|
||||
crmeb/runtime/readme.md
|
||||
crmeb/runtime/cache/readme.md
|
||||
crmeb/runtime/log/readme.md
|
||||
crmeb/runtime/session/readme.md
|
||||
crmeb/runtime/temp/readme.md
|
||||
|
||||
|
||||
.codebuddy/rules/git-commit-standard.mdc
|
||||
.codebuddy/rules/readme.mdc
|
||||
Dockerfile
|
||||
.codebuddy/models.json
|
||||
.codebuddy/rules/project-intro.mdc
|
||||
|
||||
76
README.md
76
README.md
@ -5,25 +5,10 @@
|
||||
|
||||
<div align="center" style="font-size: 15px;">
|
||||
|
||||
CRMEB高品质开源商城系统(PHP版)
|
||||
CRMEB高品质开源商城系统(PHP版)
|
||||
|
||||
</div>
|
||||
|
||||
<div align="center" >
|
||||
<a href='https://gitee.com/ZhongBangKeJi/CRMEB/stargazers'>
|
||||
<img src='https://gitee.com/ZhongBangKeJi/CRMEB/badge/star.svg?theme=gvp' alt='star'></img>
|
||||
</a>
|
||||
<a href="http://www.crmeb.com/?from=giteephp">
|
||||
<img src="https://img.shields.io/badge/Licence-apache2.0-green.svg?style=flat" />
|
||||
</a>
|
||||
<a href="http://www.crmeb.com">
|
||||
<img src="https://img.shields.io/badge/Edition-5.6.4-blue.svg" />
|
||||
</a>
|
||||
<a href="https://gitee.com/ZhongBangKeJi/CRMEB/repository/archive/master.zip">
|
||||
<img src="https://img.shields.io/badge/Download-240m-red.svg" />
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div align="center" style="font-size: 15px;">
|
||||
用心做开源,我们也很需要你的鼓励!右上角Star🌟,等你点亮
|
||||
@ -40,12 +25,13 @@ CRMEB高品质开源商城系统(PHP版)
|
||||
|
||||
<div align="center">
|
||||
|
||||
[官网](https://www.crmeb.com/?from=giteephp) |
|
||||
[在线体验](http://v5.crmeb.net/admin/) |
|
||||
[官网](https://www.crmeb.com/?from=githubphp) |
|
||||
[在线体验](http://v6.crmeb.net/admin/) |
|
||||
[帮助文档](https://doc.crmeb.com/single_open) |
|
||||
[应用市场](https://www.crmeb.com/market?from=giteephp) |
|
||||
[应用市场](https://www.crmeb.com/market?from=githubphp) |
|
||||
[技术社区](https://www.crmeb.com/ask/thread/list/147) |
|
||||
[宽屏预览](https://gitee.com/ZhongBangKeJi/CRMEB/blob/master/README.md)
|
||||
[主题广场](https://www.crmeb.com/theme)
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
@ -76,10 +62,18 @@ CRMEB开源商城系统代码100%开源,基于 **Apache-2.0协议** 免费商
|
||||
|
||||
**社区共建计划**
|
||||
|
||||
我们致力于打造开发者友好生态,开放源码、持续更新功能模块,并欢迎开发者提交优化建议或贡献代码。通过共享技术成果,降低行业重复造轮子成本,推动开源电商系统的可持续发展。
|
||||
我们致力于打造开发者友好生态,开放源码、持续更新功能模块,并新增主题市场,支持商家一键套用精美商城主题快速装修,开发者与设计师可上架原创主题供用户下载使用,实现创意共享与价值变现。同时欢迎开发者提交优化建议或贡献代码,通过共享技术成果,降低行业重复造轮子成本,推动开源电商系统的可持续发展。
|
||||
|
||||
**主题市场**
|
||||
|
||||
主题市场拥有丰富精美的商城模板,全面深度适配 CRMEB 开源商城系统,支持一键下载导入快速启用;多样化主题风格与配色方案可精准匹配不同行业、不同领域的应用需求,同时主题市场完全向CRMEB用户开放,鼓励开发者自主设计、导出并上架分享,与平台共建丰富多元、持续繁荣的 CRMEB 主题生态。立即前往:<a href="https://www.crmeb.com/theme" target="_blank">主题广场</a>
|
||||
|
||||
<img width="1476" height="1880" alt="主题广场" src="https://github.com/user-attachments/assets/7d273820-41d9-45a8-a85c-af9cb9a50148" />
|
||||
|
||||
|
||||
🔗 <a href="https://doc.crmeb.com/single_open/open_v54/19855" target="_blank">功能列表</a> | 📩 <a href="https://gitee.com/ZhongBangKeJi/CRMEB/issues" target="_blank">提交反馈</a> | 📩 <a href="https://gitee.com/ZhongBangKeJi/CRMEB/pulls" target="_blank">提交代码</a>
|
||||
|
||||
|
||||
🔗 <a href="https://doc.crmeb.com/single_open/open_v60/39233" target="_blank">功能列表</a> | 🔗 <a href="https://www.crmeb.com/theme" target="_blank">主题广场</a>
|
||||
|
||||
|
||||
|
||||
@ -128,13 +122,14 @@ docker run -d --name crmeb -p 8080:80 ccr.ccs.tencentyun.com/crmebky_php/crmebky
|
||||
|
||||
### 📖 系统功能
|
||||
|
||||

|
||||
<img width="1920" height="2500" alt="核心功能" src="https://github.com/user-attachments/assets/944897ae-67f0-438d-9ca5-455d5956eddb" />
|
||||
|
||||
---
|
||||
|
||||
### 📖 UI界面展示
|
||||
|
||||

|
||||
<img width="1200" height="1950" alt="PHP_06" src="https://github.com/user-attachments/assets/85e40dfd-222c-4b53-ad34-eb746f7f8eec" />
|
||||
|
||||
|
||||
|
||||
|
||||
@ -142,7 +137,8 @@ docker run -d --name crmeb -p 8080:80 ccr.ccs.tencentyun.com/crmebky_php/crmebky
|
||||
|
||||
### 📖 后台界面展示
|
||||
|
||||

|
||||
<img width="1200" height="2100" alt="PHP_05" src="https://github.com/user-attachments/assets/866e3b17-9845-4e19-b3f0-2dee653766c1" />
|
||||
|
||||
|
||||
|
||||
---
|
||||
@ -150,19 +146,22 @@ docker run -d --name crmeb -p 8080:80 ccr.ccs.tencentyun.com/crmebky_php/crmebky
|
||||
|
||||
### 📱 系统演示
|
||||
|
||||

|
||||
<img width="1400" height="597" alt="contact2" src="https://github.com/user-attachments/assets/4165e6fd-307d-47aa-9c3c-49590d49134b" />
|
||||
|
||||
管理后台: http://v5.crmeb.net/admin
|
||||
|
||||
管理后台: http://v6.crmeb.net/admin
|
||||
|
||||
账号:demo 密码:crmeb.com
|
||||
|
||||
H5端:http://v5.crmeb.net/ (移动端打开)
|
||||
H5端:http://v6.crmeb.net/ (移动端打开)
|
||||
|
||||
PC端:http://v5.crmeb.net/ (电脑端打开)
|
||||
PC端:http://v6.crmeb.net/ (电脑端打开)
|
||||
|
||||
APP下载:http://app.crmeb.cn/bzv (苹果手机直接在APP Store里搜索CRMEB下载)
|
||||
|
||||
> 听说,大神你想看看CRMEB开源项目的完整框架?<a href="https://doc.crmeb.com/single/v5/7712" target="_blank">戳这儿,轻松获取!</a>
|
||||
主题:https://www.crmeb.com/theme (电脑端打开)
|
||||
|
||||
> 听说,大神你想看看CRMEB开源项目的完整框架?<a href="https://doc.crmeb.com/single_open/open_v60/39235" target="_blank">戳这儿,轻松获取!</a>
|
||||
|
||||
|
||||
|
||||
@ -288,25 +287,16 @@ docker-compose一键部署:https://doc.crmeb.com/single_open/open_v54/20145
|
||||
|
||||
### 📞 CRMEB互动
|
||||
#### CRMEB开源技术交流群(扫码进群可领取开源版接口文档、产品功能清单、思维脑图!)
|
||||

|
||||
#### 技术社区!找方法、提bug、看官方消息、拿活跃大奖!都在 <a href="https://www.crmeb.com/ask/?from=giteephp" target="_blank">CRMEB 技术社区</a> 应有尽有
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 📕 CRMEB PRO版
|
||||
|
||||
[](https://www.crmeb.com/index/pro?from=giteephp)
|
||||
<img width="1150" height="360" alt="开源群php" src="https://github.com/user-attachments/assets/cca751c6-c9fd-48e7-b61f-65323e54d877" />
|
||||
|
||||
#### 技术社区!找方法、提bug、看官方消息、拿活跃大奖!都在 <a href="https://www.crmeb.com/ask/?from=githubphp" target="_blank">CRMEB 技术社区</a> 应有尽有
|
||||
|
||||
|
||||
### 📕 CRMEB 多商户版
|
||||
<a href="https://www.crmeb.com/index/merchant?from=giteephp"><img width="3840" height="1600" alt="duoshanghu2" src="https://github.com/user-attachments/assets/041dbbf2-faa2-40bc-be58-b9cd8a00efd4" /></a>
|
||||
|
||||
|
||||
[](https://www.crmeb.com/index/merchant?from=giteephp)
|
||||
|
||||
---
|
||||
|
||||
[返回顶部 :fa-arrow-circle-up: ](https://gitee.com/ZhongBangKeJi/CRMEB#%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D)
|
||||
|
||||
|
||||
0
crmeb/.version
Normal file → Executable file
0
crmeb/.version
Normal file → Executable file
@ -25,7 +25,7 @@ docker run -d --name crmeb \
|
||||
> 详细说明请到 [帮助文档](https://gitee.com/ZhongBangKeJi/CRMEB/blob/master/help/docker/README.md) 查看。
|
||||
|
||||
|
||||
> 运行环境要求PHP7.1-7.4。
|
||||
> 运行环境要求PHP7.1-7.4。
|
||||
|
||||
## 安装
|
||||
|
||||
|
||||
@ -33,8 +33,20 @@ class Request extends \think\Request
|
||||
* 不过滤变量名
|
||||
* @var array
|
||||
*/
|
||||
protected $except = ['menu_path', 'api_url', 'unique_auth',
|
||||
'description', 'custom_form', 'params_list', 'content', 'tableField', 'url', 'customCode', 'value', 'refund_reason_wap_img'];
|
||||
protected $except = [
|
||||
'menu_path',
|
||||
'api_url',
|
||||
'unique_auth',
|
||||
'description',
|
||||
'custom_form',
|
||||
'params_list',
|
||||
'content',
|
||||
'tableField',
|
||||
'url',
|
||||
'customCode',
|
||||
'value',
|
||||
'refund_reason_wap_img'
|
||||
];
|
||||
|
||||
/**
|
||||
* 获取请求的数据
|
||||
@ -47,6 +59,7 @@ class Request extends \think\Request
|
||||
{
|
||||
$p = [];
|
||||
$i = 0;
|
||||
$this->filterArrayValues($this->param);
|
||||
foreach ($params as $param) {
|
||||
if (!is_array($param)) {
|
||||
$p[$suffix == true ? $i++ : $param] = $this->param($param);
|
||||
@ -92,7 +105,6 @@ class Request extends \think\Request
|
||||
// 如果值是字符串,过滤特殊字符
|
||||
$result[$key] = filter_str($value);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
|
||||
@ -110,14 +110,15 @@ class DiyPro extends AuthController
|
||||
public function getProduct()
|
||||
{
|
||||
$where = $this->request->getMore([
|
||||
['cate_id', []],//搜索分类
|
||||
['salesOrder', ''],//销量排序
|
||||
['priceOrder', ''],//价格排序
|
||||
['store_label_id', []],//标签ID
|
||||
['ids', []],//商品ID
|
||||
['cate_id', []], //搜索分类
|
||||
['salesOrder', ''], //销量排序
|
||||
['priceOrder', ''], //价格排序
|
||||
['store_label_id', []], //标签ID
|
||||
['ids', ''], //商品ID
|
||||
]);
|
||||
$where['is_show'] = 1;
|
||||
$where['is_del'] = 0;
|
||||
if (is_string($where['ids']) && $where['ids'] != '') $where['ids'] = explode(',', $where['ids']);
|
||||
[$page, $limit] = $this->services->getPageValue();
|
||||
$list = app()->make(StoreProductServices::class)->getSearchList($where, $page, $limit, ['id,store_name,cate_id,image,IFNULL(sales, 0) + IFNULL(ficti, 0) as sales,price,stock,activity,ot_price,spec_type,recommend_image,unit_name,is_vip,vip_price']);
|
||||
return app('json')->success($list);
|
||||
|
||||
@ -856,7 +856,7 @@ class PublicController
|
||||
], true);
|
||||
$themeInfo = app()->make(ThemeServices::class)->getThemeInfo($theme_id, $type);
|
||||
|
||||
if ($themeInfo) {
|
||||
if (in_array($type, ['home', 'detail', 'user']) && $themeInfo) {
|
||||
foreach ($themeInfo['value'] as &$userDataItem) {
|
||||
if ($userDataItem['name'] == 'customerService') {
|
||||
$userDataItem['routine_contact_type'] = (int)sys_config('routine_contact_type');
|
||||
@ -955,6 +955,12 @@ class PublicController
|
||||
$menuDataItem['routine_contact_type'] = (int)sys_config('routine_contact_type', 0);
|
||||
}
|
||||
}
|
||||
|
||||
if ($menuDataItem['info'][1]['value'] == '/pages/users/user_spread_user/index' && $brokerageOpen && sys_config('store_brokerage_statu') == 1 && !$userIsPromoter) {
|
||||
$menuDataItem['info'][0]['value'] = '分销申请';
|
||||
$menuDataItem['info'][1]['value'] = '/pages/annex/settled/index';
|
||||
$menuDataItem['show'] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,6 +77,17 @@ class OrderShippingListener implements ListenerInterface
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} else if ($order_type == 'offline_scan') { // 会员订单
|
||||
if ($order['pay_type'] == 'weixin') {
|
||||
$delivery_type = 3;
|
||||
$item_desc = '用户线下扫码支付';
|
||||
$out_trade_no = $order['order_id'];
|
||||
$pay_uid = $order['uid'];
|
||||
$secs = 10;
|
||||
$path = '/pages/user/index';
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
482
crmeb/app/outapi/mcp.md
Normal file
482
crmeb/app/outapi/mcp.md
Normal file
@ -0,0 +1,482 @@
|
||||
# CRMEB MCP Server
|
||||
|
||||
基于 Model Context Protocol (MCP) 的 CRMEB API 工具服务器,已集成到 CRMEB outapi 模块中,允许 AI 助手通过标准协议调用 CRMEB 对外开放接口。
|
||||
|
||||
## 功能特性
|
||||
|
||||
- 🔗 集成到 CRMEB outapi 模块,无需额外部署
|
||||
- 📦 商品管理(列表、详情、创建)
|
||||
- 📂 分类管理(列表、详情、创建)
|
||||
- 🛒 订单管理(列表、详情、发货)
|
||||
- 💰 售后管理(列表、详情、同意/拒绝退款)
|
||||
- 🎫 优惠券管理
|
||||
- 👥 用户管理(列表、详情、赠送余额/积分)
|
||||
|
||||
## 环境要求
|
||||
|
||||
- CRMEB 系统
|
||||
- PHP >= 7.4
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 创建开放接口账号
|
||||
|
||||
1. 登录 CRMEB 管理后台
|
||||
2. 进入 **设置** -> **系统设置** -> **开放接口**
|
||||
3. 创建应用获取账号和密码
|
||||
|
||||
### 2. 配置到 Claude Desktop
|
||||
|
||||
编辑配置文件:
|
||||
|
||||
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
||||
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"crmeb": {
|
||||
"url": "http://your-domain/outapi/mcp",
|
||||
"headers": {
|
||||
"account": "your_account",
|
||||
"password": "your_password",
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
"disabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**配置示例(演示环境):**
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"crmebdemo": {
|
||||
"url": "https://v5.crmeb.net/outapi/mcp",
|
||||
"headers": {
|
||||
"account": "ceshi",
|
||||
"password": "ceshiceshi",
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
"disabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 配置到 Cursor
|
||||
|
||||
在 Cursor 设置中添加:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcp.servers": {
|
||||
"crmeb": {
|
||||
"url": "http://your-domain/outapi/mcp",
|
||||
"headers": {
|
||||
"account": "your_account",
|
||||
"password": "your_password",
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
"disabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**参数说明:**
|
||||
|
||||
| 参数 | 说明 | 获取方式 |
|
||||
|------|------|---------|
|
||||
| `url` | CRMEB MCP 接口地址 | 固定值:`http://域名/outapi/mcp` |
|
||||
| `account` | 开放接口账号 | CRMEB 后台 -> 设置 -> 开放接口 |
|
||||
| `password` | 开放接口密码 | CRMEB 后台 -> 设置 -> 开放接口 |
|
||||
| `disabled` | 是否禁用该服务 | 可选,默认为 false |
|
||||
|
||||
> 注意:直接配置 account 和 password 即可,系统会自动完成认证
|
||||
|
||||
## 支持的 MCP 客户端应用
|
||||
|
||||
以下是目前主流的支持 MCP 协议的应用程序,您可以在这些应用中配置和使用 CRMEB MCP 服务。
|
||||
|
||||
### 1. Claude Desktop
|
||||
|
||||
Anthropic 官方桌面应用,首个原生支持 MCP 的客户端。
|
||||
|
||||
**配置步骤:**
|
||||
1. 下载并安装 [Claude Desktop](https://claude.ai/download)
|
||||
2. 找到配置文件:
|
||||
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
||||
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
||||
3. 添加 CRMEB MCP 配置:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"crmeb": {
|
||||
"url": "http://your-domain/outapi/mcp",
|
||||
"headers": {
|
||||
"account": "your_account",
|
||||
"password": "your_password",
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
"disabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
4. 重启 Claude Desktop
|
||||
|
||||
**使用方法:**
|
||||
在对话中直接询问,例如:
|
||||
```
|
||||
帮我查询 CRMEB 中的商品分类列表
|
||||
```
|
||||
|
||||
### 2. Cursor
|
||||
|
||||
AI 驱动的代码编辑器,内置 MCP 支持。
|
||||
|
||||
**配置步骤:**
|
||||
1. 下载并安装 [Cursor](https://cursor.sh/)
|
||||
2. 打开设置(Settings -> Features -> Model Context Protocol)
|
||||
3. 添加 MCP 服务器配置:
|
||||
```json
|
||||
{
|
||||
"mcp.servers": {
|
||||
"crmeb": {
|
||||
"url": "http://your-domain/outapi/mcp",
|
||||
"headers": {
|
||||
"account": "your_account",
|
||||
"password": "your_password",
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
"disabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
4. 或者直接编辑配置文件:
|
||||
- **macOS/Linux**: `~/.cursor/mcp.json`
|
||||
- **Windows**: `%APPDATA%\Cursor\mcp.json`
|
||||
|
||||
**使用方法:**
|
||||
在 Cursor 的 AI 聊天窗口中直接使用:
|
||||
```
|
||||
查询 CRMEB 中的订单列表
|
||||
```
|
||||
|
||||
### 3. Cline (VS Code 扩展)
|
||||
|
||||
VS Code 中的自主 AI 编程助手扩展。
|
||||
|
||||
**配置步骤:**
|
||||
1. 在 VS Code 中安装 [Cline 扩展](https://marketplace.visualstudio.com/items?itemName=saoudrizwan.claude-dev)
|
||||
2. 打开 VS Code 设置
|
||||
3. 搜索 "Cline MCP" 或在 Cline 面板中找到 MCP 配置
|
||||
4. 添加 MCP 服务器:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"crmeb": {
|
||||
"url": "http://your-domain/outapi/mcp",
|
||||
"headers": {
|
||||
"account": "your_account",
|
||||
"password": "your_password",
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
"disabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**使用方法:**
|
||||
在 Cline 面板中输入指令:
|
||||
```
|
||||
获取 CRMEB 商品 ID 为 1 的详情
|
||||
```
|
||||
|
||||
### 4. Windsurf
|
||||
|
||||
Codeium 推出的 AI 原生 IDE。
|
||||
|
||||
**配置步骤:**
|
||||
1. 下载并安装 [Windsurf](https://codeium.com/windsurf)
|
||||
2. 打开设置 -> Developer Settings -> MCP Servers
|
||||
3. 添加配置:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"crmeb": {
|
||||
"url": "http://your-domain/outapi/mcp",
|
||||
"headers": {
|
||||
"account": "your_account",
|
||||
"password": "your_password",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 5. Continue (VS Code/JetBrains 扩展)
|
||||
|
||||
开源的 AI 代码助手扩展。
|
||||
|
||||
**配置步骤:**
|
||||
1. 安装 Continue 扩展
|
||||
- [VS Code](https://marketplace.visualstudio.com/items?itemName=Continue.continue)
|
||||
- [JetBrains](https://plugins.jetbrains.com/plugin/22707-continue)
|
||||
2. 打开 Continue 配置文件(`~/.continue/config.json`)
|
||||
3. 添加 MCP 配置:
|
||||
```json
|
||||
{
|
||||
"models": [...],
|
||||
"mcpServers": {
|
||||
"crmeb": {
|
||||
"url": "http://your-domain/outapi/mcp",
|
||||
"headers": {
|
||||
"account": "your_account",
|
||||
"password": "your_password",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 6. Zed
|
||||
|
||||
高性能代码编辑器,支持 MCP 协议。
|
||||
|
||||
**配置步骤:**
|
||||
1. 下载并安装 [Zed](https://zed.dev/)
|
||||
2. 打开配置文件(`~/.zed/settings.json`)
|
||||
3. 添加 MCP 服务器配置:
|
||||
```json
|
||||
{
|
||||
"mcp_servers": {
|
||||
"crmeb": {
|
||||
"url": "http://your-domain/outapi/mcp",
|
||||
"headers": {
|
||||
"account": "your_account",
|
||||
"password": "your_password",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 7. 其他支持 MCP 的应用
|
||||
|
||||
以下应用也在逐步支持 MCP 协议:
|
||||
|
||||
- **Codeium**:AI 代码补全工具
|
||||
- **Tabnine**:AI 代码助手
|
||||
- **Sourcegraph Cody**:代码智能助手
|
||||
|
||||
> 💡 **提示**:MCP 是一个开放协议,越来越多的 AI 应用正在支持。如果您的应用支持 MCP,通常可以在设置中找到 MCP 或 Model Context Protocol 相关配置项。
|
||||
|
||||
## 可用工具
|
||||
|
||||
### 分类管理
|
||||
|
||||
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|
||||
|---------|------|---------|---------|
|
||||
| `crmeb_category_list` | 获取分类列表 | - | page, limit |
|
||||
| `crmeb_category_detail` | 获取分类详情 | id | - |
|
||||
| `crmeb_category_create` | 创建分类 | name | pid, sort |
|
||||
|
||||
### 商品管理
|
||||
|
||||
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|
||||
|---------|------|---------|---------|
|
||||
| `crmeb_product_list` | 获取商品列表 | - | page, limit, cate_id, keyword, stock_min, stock_max |
|
||||
| `crmeb_product_detail` | 获取商品详情 | id | - |
|
||||
| `crmeb_product_create` | 创建商品 | name, cate_id, price, stock | image, unit |
|
||||
|
||||
### 订单管理
|
||||
|
||||
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|
||||
|---------|------|---------|---------|
|
||||
| `crmeb_order_list` | 获取订单列表 | - | page, limit, status, keyword |
|
||||
| `crmeb_order_detail` | 获取订单详情 | order_id | - |
|
||||
| `crmeb_order_delivery` | 订单发货 | order_id, delivery_type | delivery_name, delivery_id |
|
||||
| `crmeb_order_express_list` | 获取物流公司列表 | - | - |
|
||||
|
||||
### 售后管理
|
||||
|
||||
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|
||||
|---------|------|---------|---------|
|
||||
| `crmeb_refund_list` | 获取售后列表 | - | page, limit |
|
||||
| `crmeb_refund_detail` | 获取售后详情 | order_id | - |
|
||||
| `crmeb_refund_agree` | 同意退款 | order_id | - |
|
||||
| `crmeb_refund_refuse` | 拒绝退款 | order_id, refuse_reason | - |
|
||||
|
||||
### 优惠券管理
|
||||
|
||||
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|
||||
|---------|------|---------|---------|
|
||||
| `crmeb_coupon_list` | 获取优惠券列表 | - | page, limit |
|
||||
|
||||
### 用户管理
|
||||
|
||||
| 工具名称 | 描述 | 必需参数 | 可选参数 |
|
||||
|---------|------|---------|---------|
|
||||
| `crmeb_user_list` | 获取用户列表 | - | page, limit, keyword |
|
||||
| `crmeb_user_detail` | 获取用户详情 | uid | - |
|
||||
| `crmeb_user_give_balance` | 赠送余额 | uid, balance | title |
|
||||
| `crmeb_user_give_point` | 赠送积分 | uid, point | title |
|
||||
|
||||
## 使用示例
|
||||
|
||||
在 Claude 或 Cursor 中,您可以这样使用:
|
||||
|
||||
```
|
||||
帮我查询 CRMEB 中的商品列表
|
||||
```
|
||||
|
||||
```
|
||||
创建一个新商品:名称"测试商品",分类ID 1,价格 99.00,库存 100
|
||||
```
|
||||
|
||||
```
|
||||
查询订单号 202403130001 的详情
|
||||
```
|
||||
|
||||
```
|
||||
给用户 ID 为 1 的用户赠送 100 积分
|
||||
```
|
||||
|
||||
## 接口测试
|
||||
|
||||
```bash
|
||||
# 测试 MCP 初始化
|
||||
curl -X POST "http://localhost:8011/outapi/mcp" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "account: your_account" \
|
||||
-H "password: your_password" \
|
||||
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
|
||||
|
||||
# 获取工具列表
|
||||
curl -X POST "http://localhost:8011/outapi/mcp" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "account: your_account" \
|
||||
-H "password: your_password" \
|
||||
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
|
||||
|
||||
# 调用工具 - 获取商品列表
|
||||
curl -X POST "http://localhost:8011/outapi/mcp" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "account: your_account" \
|
||||
-H "password: your_password" \
|
||||
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"crmeb_product_list","arguments":{"page":1,"limit":10}}}'
|
||||
|
||||
# 调用工具 - 创建分类
|
||||
curl -X POST "http://localhost:8011/outapi/mcp" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "account: your_account" \
|
||||
-H "password: your_password" \
|
||||
-d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"crmeb_category_create","arguments":{"name":"新分类","sort":100}}}'
|
||||
|
||||
# 调用工具 - 查询库存大于500的商品
|
||||
curl -X POST "http://localhost:8011/outapi/mcp" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "account: your_account" \
|
||||
-H "password: your_password" \
|
||||
-d '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"crmeb_product_list","arguments":{"stock_min":500}}}'
|
||||
|
||||
# 使用演示环境测试
|
||||
curl -X POST "https://v5.crmeb.net/outapi/mcp" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "account: ceshi" \
|
||||
-H "password: ceshiceshi" \
|
||||
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"crmeb_category_list","arguments":{}}}'
|
||||
```
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
crmeb/app/outapi/
|
||||
├── controller/
|
||||
│ ├── Mcp.php # MCP 控制器
|
||||
│ ├── Login.php # 认证控制器
|
||||
│ ├── StoreProduct.php # 商品控制器
|
||||
│ ├── StoreCategory.php # 分类控制器
|
||||
│ ├── StoreOrder.php # 订单控制器
|
||||
│ ├── RefundOrder.php # 售后控制器
|
||||
│ ├── StoreCoupon.php # 优惠券控制器
|
||||
│ ├── User.php # 用户控制器
|
||||
│ └── ...
|
||||
├── route/
|
||||
│ └── route.php # 路由配置
|
||||
├── middleware/
|
||||
│ └── AuthTokenMiddleware.php
|
||||
├── mcp.md # 本文档
|
||||
└── README.md # outapi 模块说明
|
||||
```
|
||||
|
||||
## 协议说明
|
||||
|
||||
### MCP 协议版本
|
||||
|
||||
- 支持版本:`2024-11-05`
|
||||
|
||||
### JSON-RPC 2.0 格式
|
||||
|
||||
**请求格式:**
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "tools/call",
|
||||
"params": {
|
||||
"name": "工具名称",
|
||||
"arguments": { "参数": "值" }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**成功响应:**
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"result": {
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "{...结果数据...}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**错误响应:**
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"error": {
|
||||
"code": -32603,
|
||||
"message": "错误信息"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 错误码说明
|
||||
|
||||
| 错误码 | 说明 |
|
||||
|-------|------|
|
||||
| -32700 | JSON 解析错误 |
|
||||
| -32600 | 请求无效(认证失败等) |
|
||||
| -32601 | 方法不存在 |
|
||||
| -32603 | 内部错误 |
|
||||
|
||||
## 相关链接
|
||||
|
||||
- [Model Context Protocol 文档](https://modelcontextprotocol.io/)
|
||||
- [CRMEB 开放接口](./README.md)
|
||||
@ -96,6 +96,7 @@ class StoreManageServices extends BaseServices
|
||||
public function product($where)
|
||||
{
|
||||
$storeProductServices = app()->make(StoreProductServices::class);
|
||||
$where['is_del'] = 0;
|
||||
return $storeProductServices->getList($where);
|
||||
}
|
||||
|
||||
@ -493,7 +494,7 @@ class StoreManageServices extends BaseServices
|
||||
case 0: // 余额
|
||||
/** @var UserMoneyServices $userMoneyServices */
|
||||
$userMoneyServices = app()->make(UserMoneyServices::class);
|
||||
if ($data['status'] == 1) {//增加
|
||||
if ($data['status'] == 1) { //增加
|
||||
$edit['now_money'] = bcadd($userInfo['now_money'], $data['number'], 2);
|
||||
$userMoneyServices->income('system_add', $uid, $data['number'], $edit['now_money'], 0, '移动端商家管理增加余额');
|
||||
//增加充值记录
|
||||
@ -509,7 +510,7 @@ class StoreManageServices extends BaseServices
|
||||
'pay_time' => time(),
|
||||
];
|
||||
app()->make(UserRechargeServices::class)->save($recharge_data);
|
||||
} else {//减少
|
||||
} else { //减少
|
||||
if ($userInfo['now_money'] > $data['number']) {
|
||||
$edit['now_money'] = bcsub($userInfo['now_money'], $data['number'], 2);
|
||||
} else {
|
||||
@ -524,13 +525,13 @@ class StoreManageServices extends BaseServices
|
||||
/** @var UserBillServices $userBill */
|
||||
$userBill = app()->make(UserBillServices::class);
|
||||
$integral_data = ['link_id' => 0, 'number' => $data['number']];
|
||||
if ($data['status'] == 1) {//增加
|
||||
if ($data['status'] == 1) { //增加
|
||||
$edit['integral'] = bcadd($userInfo['integral'], $data['number'], 2);
|
||||
$integral_data['balance'] = $edit['integral'];
|
||||
$integral_data['title'] = '系统增加积分';
|
||||
$integral_data['mark'] = '系统增加了' . floatval($data['number']) . '积分';
|
||||
$userBill->incomeIntegral($uid, 'system_add', $integral_data);
|
||||
} else {//减少
|
||||
} else { //减少
|
||||
$edit['integral'] = bcsub($userInfo['integral'], $data['number'], 2);
|
||||
$integral_data['balance'] = $edit['integral'];
|
||||
$integral_data['title'] = '系统减少积分';
|
||||
|
||||
@ -109,7 +109,6 @@ class OtherOrderServices extends BaseServices
|
||||
$record = $this->dao->getOneByWhere(['uid' => $uid, 'is_free' => 1]);
|
||||
if ($record) {
|
||||
$freeConfig['is_record'] = 1;
|
||||
|
||||
}
|
||||
}
|
||||
$registerTime = $this->TimeConvert(['start_time' => date('Y-m-d H:i:s', $userInfo['add_time']), 'end_time' => date('Y-m-d H:i:s', time())]);
|
||||
@ -128,39 +127,39 @@ class OtherOrderServices extends BaseServices
|
||||
public function TimeConvert($timeKey, $isNum = false)
|
||||
{
|
||||
switch ($timeKey) {
|
||||
case "today" :
|
||||
case "today":
|
||||
$data['start_time'] = date('Y-m-d 00:00:00', time());
|
||||
$data['end_time'] = date('Y-m-d 23:59:59', time());
|
||||
$data['days'] = 1;
|
||||
break;
|
||||
case "yestoday" :
|
||||
case "yestoday":
|
||||
$data['start_time'] = date('Y-m-d 00:00:00', strtotime('-1 day'));
|
||||
$data['end_time'] = date('Y-m-d 23:59:59', strtotime('-1 day'));
|
||||
$data['days'] = 1;
|
||||
break;
|
||||
case "last_month" :
|
||||
case "last_month":
|
||||
$data['start_time'] = date('Y-m-01 00:00:00', strtotime('-1 month'));
|
||||
$data['end_time'] = date('Y-m-t 23:59:59', strtotime('-1 month'));
|
||||
$data['days'] = 30;
|
||||
break;
|
||||
case "month" :
|
||||
case "month":
|
||||
$data['start_time'] = $month_start_time = date('Y-m-01 00:00:00', strtotime(date("Y-m-d")));
|
||||
$data['end_time'] = date('Y-m-d 23:59:59', strtotime("$month_start_time +1 month -1 day"));
|
||||
$data['days'] = 30;
|
||||
break;
|
||||
case "year" :
|
||||
case "year":
|
||||
$data['start_time'] = date('Y-01-01 00:00:00', time());
|
||||
$data['end_time'] = date('Y-12-t 23:59:59', time());
|
||||
$data['days'] = 365;
|
||||
break;
|
||||
case "last_year" :
|
||||
case "last_year":
|
||||
$data['start_time'] = date('Y-01-01 00:00:00', strtotime('-1 year'));
|
||||
$data['end_time'] = date('Y-12-t 23:59:59', strtotime('-1 year'));
|
||||
$data['days'] = 365;
|
||||
break;
|
||||
case 30 :
|
||||
case 15 :
|
||||
case 7 :
|
||||
case 30:
|
||||
case 15:
|
||||
case 7:
|
||||
if (!$isNum) {
|
||||
$data['start_time'] = date("Y-m-d 00:00:00", strtotime("-$timeKey day"));
|
||||
$data['end_time'] = date('Y-m-d 23:59:59', time());
|
||||
@ -186,7 +185,6 @@ class OtherOrderServices extends BaseServices
|
||||
$data['end_time'] = $timeKey['start_time'];
|
||||
$data['days'] = $days;
|
||||
}
|
||||
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
@ -275,9 +273,8 @@ class OtherOrderServices extends BaseServices
|
||||
if ($orderInfo['member_type'] != 'free') {
|
||||
throw new ApiException('支付失败');
|
||||
}
|
||||
$res = $this->paySuccess($orderInfo, 'yue');//余额支付成功
|
||||
$res = $this->paySuccess($orderInfo, 'yue'); //余额支付成功
|
||||
return $res;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -297,9 +294,9 @@ class OtherOrderServices extends BaseServices
|
||||
$type = 'pay_member';
|
||||
$res1 = true;
|
||||
switch ($orderInfo['type']) {
|
||||
case 0 :
|
||||
case 1 :
|
||||
case 2 :
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
$type = "pay_member";
|
||||
$res1 = $userServices->setMemberOverdueTime($orderInfo['vip_day'], $orderInfo['uid'], 1, $orderInfo['member_type']);
|
||||
break;
|
||||
@ -352,7 +349,7 @@ class OtherOrderServices extends BaseServices
|
||||
|
||||
$orderInfo['pay_type'] = $paytype;
|
||||
// 小程序订单服务
|
||||
event('OrderShippingListener', ['member', $orderInfo, 3, '', '']);
|
||||
event('OrderShippingListener', [$type == 'pay_member' ? 'member' : 'offline_scan', $orderInfo, 3, '', '']);
|
||||
return false !== $res;
|
||||
}
|
||||
|
||||
@ -425,12 +422,12 @@ class OtherOrderServices extends BaseServices
|
||||
if ($payPrice != $price || ($memberType != 'free' && $payPrice <= 0)) throw new ApiException('参数错误');
|
||||
if ($memberType == 'free' && $newMemberRight[$mcId]['vip_day'] <= 0) throw new ApiException('参数错误');
|
||||
switch ($memberType) {
|
||||
case "free"://免费会员
|
||||
case "free": //免费会员
|
||||
$isCanGetFree = $this->isCanGetFree($uid);
|
||||
if ($isCanGetFree['is_record'] == 1) throw new ApiException('您已经领取过免费会员');
|
||||
$memberPrice = 0.00; //会员卡价格
|
||||
$isFree = 1;//代表免费
|
||||
$isPermanent = 0;//代表非永久
|
||||
$isFree = 1; //代表免费
|
||||
$isPermanent = 0; //代表非永久
|
||||
$overdueTime = bcadd(bcmul(abs($newMemberRight[$mcId]['vip_day']), "86400", 0), time(), 0);
|
||||
break;
|
||||
case "month":
|
||||
@ -463,9 +460,9 @@ class OtherOrderServices extends BaseServices
|
||||
public function getMemberMoneyByWhere(array $where, string $sumField, string $selectType, string $group = "")
|
||||
{
|
||||
switch ($selectType) {
|
||||
case "sum" :
|
||||
case "sum":
|
||||
return $this->dao->getWhereSumField($where, $sumField);
|
||||
case "group" :
|
||||
case "group":
|
||||
return $this->dao->getGroupField($where, $sumField, $group);
|
||||
}
|
||||
}
|
||||
@ -508,13 +505,13 @@ class OtherOrderServices extends BaseServices
|
||||
$v['phone'] = $userInfo[$v['uid']]['phone'] ?? '';
|
||||
$v['nickname'] = $userInfo[$v['uid']]['nickname'] ?? '';
|
||||
switch ($v['pay_type']) {
|
||||
case "yue" :
|
||||
case "yue":
|
||||
$v['pay_type'] = "余额";
|
||||
break;
|
||||
case "weixin" :
|
||||
case "weixin":
|
||||
$v['pay_type'] = "微信";
|
||||
break;
|
||||
case "alipay" :
|
||||
case "alipay":
|
||||
$v['pay_type'] = "支付宝";
|
||||
break;
|
||||
}
|
||||
@ -560,19 +557,19 @@ class OtherOrderServices extends BaseServices
|
||||
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
|
||||
$v['overdue_time'] = date('Y-m-d H:i:s', $v['overdue_time']);
|
||||
switch ($v['pay_type']) {
|
||||
case "yue" :
|
||||
case "yue":
|
||||
$v['pay_type'] = "余额";
|
||||
break;
|
||||
case "weixin" :
|
||||
case "weixin":
|
||||
$v['pay_type'] = "微信";
|
||||
break;
|
||||
case "alipay" :
|
||||
case "alipay":
|
||||
$v['pay_type'] = "支付宝";
|
||||
break;
|
||||
case 'allinpay':
|
||||
$v['pay_type'] = "通联支付";
|
||||
break;
|
||||
case "admin" :
|
||||
case "admin":
|
||||
$v['pay_type'] = "后台赠送";
|
||||
break;
|
||||
}
|
||||
@ -588,5 +585,4 @@ class OtherOrderServices extends BaseServices
|
||||
$count = $this->dao->count($where);
|
||||
return compact('list', 'count');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -59,7 +59,7 @@ class StoreOrderWriteOffServices extends BaseServices
|
||||
if (!$orderInfo) {
|
||||
throw new ApiException('订单不存在');
|
||||
}
|
||||
if ($orderInfo['status'] > 0) {
|
||||
if (($orderInfo['status'] > 0 && $orderInfo->shipping_type == 2) || ($orderInfo['status'] > 1 && $orderInfo->delivery_type == 'send')) {
|
||||
throw new ApiException('该订单已被核销');
|
||||
}
|
||||
if (!$orderInfo['verify_code'] || ($orderInfo->shipping_type != 2 && $orderInfo->delivery_type != 'send')) {
|
||||
|
||||
@ -118,10 +118,8 @@ class CopyTaobaoServices extends BaseServices
|
||||
$productInfo['is_postage'] = 0;
|
||||
$productInfo['is_seckill'] = 0;
|
||||
$productInfo['is_show'] = 0;
|
||||
$productInfo['is_show'] = 0;
|
||||
$productInfo['is_sub'] = [];
|
||||
$productInfo['is_vip'] = 0;
|
||||
$productInfo['is_vip'] = 0;
|
||||
$productInfo['label_id'] = [];
|
||||
$productInfo['mer_id'] = 0;
|
||||
$productInfo['mer_use'] = 0;
|
||||
@ -137,9 +135,9 @@ class CopyTaobaoServices extends BaseServices
|
||||
$productInfo['freight'] = 3;
|
||||
$productInfo['recommend'] = [];
|
||||
$productInfo['logistics'] = ['1', '2'];
|
||||
$productInfo['params_list'] = [];
|
||||
$productInfo['label_list'] = [];
|
||||
$productInfo['protection_list'] = [];
|
||||
$productInfo['params_list'] = [];
|
||||
$productInfo['label_list'] = [];
|
||||
$productInfo['protection_list'] = [];
|
||||
foreach ($productInfo['items'] as &$items) {
|
||||
$details = [];
|
||||
foreach ($items['detail'] as $detail) {
|
||||
@ -294,11 +292,23 @@ $productInfo['protection_list'] = [];
|
||||
* @param int $timeout
|
||||
* @param int $w
|
||||
* @param int $h
|
||||
* @return string
|
||||
* @return array|string
|
||||
*/
|
||||
public function downloadImage($url = '', $name = '', $type = 0, $timeout = 30, $w = 0, $h = 0)
|
||||
{
|
||||
if (!strlen(trim($url))) return '';
|
||||
|
||||
// 自动判断当前图片链接是否为需要使用curl下载的平台(淘宝、京东、天猫、1688)
|
||||
if ($type == 0 && strlen(trim($url))) {
|
||||
$antiHotlinkingPlatforms = ['alicdn.com', 'taobao.com', 'tmall.com', 'jd.com', 'jdstatic.com', '1688.com'];
|
||||
foreach ($antiHotlinkingPlatforms as $platform) {
|
||||
if (stripos($url, $platform) !== false) {
|
||||
$type = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!strlen(trim($name))) {
|
||||
//TODO 获取要下载的文件名称
|
||||
$downloadImageInfo = $this->getImageExtname($url);
|
||||
@ -319,7 +329,9 @@ $productInfo['protection_list'] = [];
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //TODO 跳过证书检查
|
||||
if (stripos($url, "https://") !== FALSE) curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //TODO 从证书中检查SSL加密算法是否存在
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array('user-agent:' . $_SERVER['HTTP_USER_AGENT']));
|
||||
// 根据URL识别平台并获取对应的防盗链headers
|
||||
$headers = $this->getAntiHotlinkingHeaders($url);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
if (ini_get('open_basedir') == '' && ini_get('safe_mode') == 'Off') curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);//TODO 是否采集301、302之后的页面
|
||||
$content = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
@ -437,4 +449,57 @@ $productInfo['protection_list'] = [];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据URL识别平台并获取对应的防盗链headers
|
||||
* @param string $url 图片URL
|
||||
* @return array 返回对应的HTTP headers
|
||||
*/
|
||||
public function getAntiHotlinkingHeaders(string $url): array
|
||||
{
|
||||
// 基础headers
|
||||
$baseHeaders = [
|
||||
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
||||
'Accept: image/webp,image/apng,image/*,*/*;q=0.8',
|
||||
'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8',
|
||||
'Accept-Encoding: gzip, deflate, br',
|
||||
'Connection: keep-alive',
|
||||
];
|
||||
|
||||
// 根据URL识别平台
|
||||
if (stripos($url, 'alicdn.com') !== false || stripos($url, 'taobao.com') !== false) {
|
||||
// 淘宝/天猫/1688的图片 (通常在alicdn.com域名下)
|
||||
return array_merge($baseHeaders, [
|
||||
'Referer: https://buyer.taobao.com/', // 淘宝买家中心
|
||||
]);
|
||||
} elseif (stripos($url, 'tmall.com') !== false) {
|
||||
// 天猫的图片
|
||||
return array_merge($baseHeaders, [
|
||||
'Referer: https://www.tmall.com/', // 天猫首页
|
||||
]);
|
||||
} elseif (stripos($url, 'jd.com') !== false || stripos($url, 'jdstatic.com') !== false) {
|
||||
// 京东的图片
|
||||
return array_merge($baseHeaders, [
|
||||
'Referer: https://www.jd.com/', // 京东首页
|
||||
]);
|
||||
} elseif (stripos($url, '1688.com') !== false) {
|
||||
// 1688的图片
|
||||
return array_merge($baseHeaders, [
|
||||
'Referer: https://www.1688.com/', // 1688首页
|
||||
]);
|
||||
} elseif (stripos($url, 'baidu.com') !== false) {
|
||||
// 百度图片
|
||||
return array_merge($baseHeaders, [
|
||||
'Referer: https://image.baidu.com/', // 百度图片
|
||||
]);
|
||||
} elseif (stripos($url, 'sinaimg.cn') !== false) {
|
||||
// 新浪图片
|
||||
return array_merge($baseHeaders, [
|
||||
'Referer: https://weibo.com/', // 新浪微博
|
||||
]);
|
||||
} else {
|
||||
// 默认headers,不设置Referer
|
||||
return $baseHeaders;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1063,7 +1063,7 @@ class StoreProductServices extends BaseServices
|
||||
$field = ['*'];
|
||||
}
|
||||
[$page, $limit] = $this->getPageValue($is_page);
|
||||
$list = $this->dao->getSearchList($where, $page, $limit, $field);
|
||||
$list = $this->dao->getSearchList($where, $page, $limit, $field, ['description']);
|
||||
foreach ($list as &$product) {
|
||||
$product['product_price'] = $product['price'];
|
||||
$attrValue = $product['attrs'] ?? [];
|
||||
|
||||
@ -331,7 +331,7 @@ class UserMoneyServices extends BaseServices
|
||||
public function getType($where)
|
||||
{
|
||||
$bing_xdata = ['系统减少', '充值退款', '购买商品', '购买会员'];
|
||||
$color = ['#64a1f4', '#3edeb5', '#70869f'];
|
||||
$color = ['#64a1f4', '#3edeb5', '#70869f', '#ffc653'];
|
||||
$data = ['system_sub', 'recharge_refund', 'pay_product', 'pay_member'];
|
||||
$bing_data = [];
|
||||
foreach ($data as $key => $item) {
|
||||
|
||||
@ -639,6 +639,7 @@ class UserServices extends BaseServices
|
||||
$item['labels'] = $userlabel[$item['uid']] ?? '';
|
||||
$item['isMember'] = $item['is_money_level'] > 0 ? 1 : 0;
|
||||
$item['svip_over_day'] = $item['overdue_time'] ? ceil(($item['overdue_time'] - time()) / 86400) : '';
|
||||
$item['svip_overdue_time'] = date('Y-m-d', $item['overdue_time']);
|
||||
if (strpos($item['avatar'], '/statics/system_images/') !== false) {
|
||||
$item['avatar'] = set_file_url($item['avatar']);
|
||||
}
|
||||
|
||||
@ -98,6 +98,7 @@ class Util extends Command
|
||||
"UPDATE `{$prefix}delivery_service` SET `avatar` = replace(`avatar` ,'{$siteUrl}','{$url}')",
|
||||
"UPDATE `{$prefix}division_agent_apply` SET `images` = replace(images ,'{$siteUrlJson}','{$urlJson}')",
|
||||
"UPDATE `{$prefix}diy` SET `value` = replace(value ,'{$siteUrlJson}','{$urlJson}'),`default_value` = replace(default_value ,'{$siteUrlJson}','{$urlJson}')",
|
||||
"UPDATE `{$prefix}diy` SET `value` = replace(value ,'{$siteUrl}','{$url}'),`default_value` = replace(default_value ,'{$siteUrl}','{$url}')",
|
||||
"UPDATE `{$prefix}live_anchor` SET `cover_img` = replace(`cover_img` ,'{$siteUrl}','{$url}')",
|
||||
"UPDATE `{$prefix}live_goods` SET `cover_img` = replace(`cover_img` ,'{$siteUrl}','{$url}')",
|
||||
"UPDATE `{$prefix}live_room` SET `cover_img` = replace(`cover_img` ,'{$siteUrl}','{$url}'),`share_img` = replace(`share_img` ,'{$siteUrl}','{$url}')",
|
||||
@ -136,10 +137,15 @@ class Util extends Command
|
||||
"UPDATE `{$prefix}user_extract` SET `qrcode_url` = replace(qrcode_url ,'{$siteUrl}','{$url}')",
|
||||
"UPDATE `{$prefix}wechat_qrcode` SET `image` = replace(image ,'{$siteUrl}','{$url}')",
|
||||
"UPDATE `{$prefix}wechat_user` SET `headimgurl` = replace(headimgurl ,'{$siteUrl}','{$url}')",
|
||||
"UPDATE `{$prefix}theme` SET `home_data` = replace(home_data ,'{$siteUrlJson}','{$urlJson}'),`detail_data` = replace(detail_data ,'{$siteUrlJson}','{$urlJson}'),`user_data` = replace(user_data ,'{$siteUrlJson}','{$urlJson}')",
|
||||
"UPDATE `{$prefix}theme` SET `home_default_data` = replace(home_default_data ,'{$siteUrlJson}','{$urlJson}'),`detail_default_data` = replace(detail_default_data ,'{$siteUrlJson}','{$urlJson}'),`user_default_data` = replace(user_default_data ,'{$siteUrlJson}','{$urlJson}')",
|
||||
"UPDATE `{$prefix}theme` SET `home_data` = replace(home_data ,'{$siteUrl}','{$url}'),`detail_data` = replace(detail_data ,'{$siteUrl}','{$url}'),`user_data` = replace(user_data ,'{$siteUrl}','{$url}')",
|
||||
"UPDATE `{$prefix}theme` SET `home_default_data` = replace(home_default_data ,'{$siteUrl}','{$url}'),`detail_default_data` = replace(detail_default_data ,'{$siteUrl}','{$url}'),`user_default_data` = replace(user_default_data ,'{$siteUrl}','{$url}')",
|
||||
"UPDATE `{$prefix}theme` SET `home_image` = replace(home_image ,'{$siteUrl}','{$url}'),`category_image` = replace(category_image ,'{$siteUrl}','{$url}'),`detail_image` = replace(detail_image ,'{$siteUrl}','{$url}'),`user_image` = replace(user_image ,'{$siteUrl}','{$url}'),`home_default_image` = replace(home_default_image ,'{$siteUrl}','{$url}'),`category_default_image` = replace(category_default_image ,'{$siteUrl}','{$url}'),`detail_default_image` = replace(detail_default_image ,'{$siteUrl}','{$url}'),`user_default_image` = replace(user_default_image ,'{$siteUrl}','{$url}')",
|
||||
];
|
||||
|
||||
// 执行 SQL 语句
|
||||
return $this->transaction(function () use ($sql) {
|
||||
return Db::transaction(function () use ($sql) {
|
||||
try {
|
||||
foreach ($sql as $item) {
|
||||
Db::execute($item);
|
||||
|
||||
@ -1 +1 @@
|
||||
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no"><link rel=icon href=/admin/favicon.ico><link rel=manifest href=./manifest.json><title></title><link href=/admin/system_static/css/app.31d19466.css rel=preload as=style><link href=/admin/system_static/css/chunk-vendors.0a536a1c.css rel=preload as=style><link href=/admin/system_static/js/app.dcf6b2c2.js rel=preload as=script><link href=/admin/system_static/js/chunk-vendors.c8295643.js rel=preload as=script><link href=/admin/system_static/css/chunk-vendors.0a536a1c.css rel=stylesheet><link href=/admin/system_static/css/app.31d19466.css rel=stylesheet></head><body><noscript><strong>We're sorry but admin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/admin/system_static/js/chunk-vendors.c8295643.js></script><script src=/admin/system_static/js/app.dcf6b2c2.js></script></body></html>
|
||||
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no"><link rel=icon href=/admin/favicon.ico><link rel=manifest href=./manifest.json><title></title><link href=/admin/system_static/css/app.86b55c86.css rel=preload as=style><link href=/admin/system_static/css/chunk-vendors.0a536a1c.css rel=preload as=style><link href=/admin/system_static/js/app.dc1bf06a.js rel=preload as=script><link href=/admin/system_static/js/chunk-vendors.63e502a6.js rel=preload as=script><link href=/admin/system_static/css/chunk-vendors.0a536a1c.css rel=stylesheet><link href=/admin/system_static/css/app.86b55c86.css rel=stylesheet></head><body><noscript><strong>We're sorry but admin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=/admin/system_static/js/chunk-vendors.63e502a6.js></script><script src=/admin/system_static/js/app.dc1bf06a.js></script></body></html>
|
||||
File diff suppressed because one or more lines are too long
1
crmeb/public/admin/system_static/css/app.86b55c86.css
Normal file
1
crmeb/public/admin/system_static/css/app.86b55c86.css
Normal file
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
.expand-row[data-v-47861808]{margin-bottom:16px}.labelInput[data-v-374108b8]{border:1px solid #dcdee2;width:400px;padding:0 15px;border-radius:5px;min-height:30px;cursor:pointer;font-size:12px}.labelInput .span[data-v-374108b8]{color:#c5c8ce}.labelInput .iconxiayi[data-v-374108b8]{font-size:12px}.ivu-form-item[data-v-374108b8]{margin-bottom:10px}.form-sty[data-v-374108b8]{width:400px!important}.addfont[data-v-374108b8]{display:inline-block;font-size:12px;font-weight:400;color:var(--prev-color-primary);margin-left:14px;cursor:pointer;margin-left:10px}.ivu-icon-ios-arrow-down[data-v-374108b8]{font-size:14px}.tip[data-v-374108b8]{color:#bbb;font-size:12px;line-height:12px}.pb-50[data-v-374108b8]{padding-bottom:50px}.sp[data-v-0400eefa]{font-size:12px;color:#606266;line-height:32px}.customer[data-v-559966ff]{height:100%;background-color:#fff}.tabBox_img[data-v-559966ff]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-559966ff]{width:100%;height:100%}.modelBox .ivu-table-header[data-v-559966ff],.modelBox[data-v-559966ff]{width:100%!important}.trees-coadd[data-v-559966ff]{width:100%;height:385px}.trees-coadd .scollhide[data-v-559966ff]{width:100%;height:100%;overflow-x:hidden;overflow-y:scroll}.scollhide[data-v-559966ff]::-webkit-scrollbar{display:none}.footer[data-v-559966ff]{margin:15px 0;padding-right:20px}[data-v-559966ff] .el-form--inline .el-form-item{margin-bottom:0}[data-v-31c058a6] .el-tabs__item{height:54px!important;line-height:54px!important}.picBox[data-v-31c058a6]{display:inline-block;cursor:pointer}.picBox .upLoad[data-v-31c058a6]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);font-size:24px;font-weight:500}.picBox .pictrue[data-v-31c058a6]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:10px}.picBox .pictrue img[data-v-31c058a6]{width:100%;height:100%}.fix_footer[data-v-31c058a6]{position:fixed;bottom:0;width:-webkit-fill-available;background:#fff;padding:20px 0;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:100}.userFrom[data-v-31c058a6] .ivu-form-item-content{margin-left:0!important}.userAlert[data-v-31c058a6]{margin-top:20px}.userI[data-v-31c058a6]{color:var(--prev-color-primary);font-style:normal}img[data-v-31c058a6]{height:36px;display:block}.tabBox_img[data-v-31c058a6]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-31c058a6]{width:100%;height:100%}.tabBox_tit[data-v-31c058a6]{width:60%;font-size:12px!important;margin:0 2px 0 10px;letter-spacing:1px;padding:5px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.modelBox[data-v-31c058a6] .ivu-modal-body{padding:0 16px 16px 16px!important}.vipName[data-v-31c058a6]{color:#dab176}.listbox[data-v-31c058a6] .ivu-divider-horizontal{margin:0!important}.labelInput[data-v-31c058a6]{width:250px;border:1px solid #dcdee2;padding:0 15px;border-radius:5px;min-height:30px;cursor:pointer;font-size:12px}.labelInput .span[data-v-31c058a6]{color:#c5c8ce}.labelInput .ivu-icon-ios-arrow-down[data-v-31c058a6]{font-size:14px;color:#808695}.demo-drawer-footer[data-v-31c058a6]{width:100%;position:absolute;bottom:0;left:0;border-top:1px solid #e8e8e8;padding:10px 16px;text-align:right;background:#fff}.search-form[data-v-31c058a6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.search-form .search-form-box[data-v-31c058a6]{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex:1;flex:1}.search-form-sub[data-v-31c058a6],.search-form .search-form-box[data-v-31c058a6]{display:-webkit-box;display:-ms-flexbox;display:flex}
|
||||
.expand-row[data-v-47861808]{margin-bottom:16px}.labelInput[data-v-374108b8]{border:1px solid #dcdee2;width:400px;padding:0 15px;border-radius:5px;min-height:30px;cursor:pointer;font-size:12px}.labelInput .span[data-v-374108b8]{color:#c5c8ce}.labelInput .iconxiayi[data-v-374108b8]{font-size:12px}.ivu-form-item[data-v-374108b8]{margin-bottom:10px}.form-sty[data-v-374108b8]{width:400px!important}.addfont[data-v-374108b8]{display:inline-block;font-size:12px;font-weight:400;color:var(--prev-color-primary);margin-left:14px;cursor:pointer;margin-left:10px}.ivu-icon-ios-arrow-down[data-v-374108b8]{font-size:14px}.tip[data-v-374108b8]{color:#bbb;font-size:12px;line-height:12px}.pb-50[data-v-374108b8]{padding-bottom:50px}.sp[data-v-0400eefa]{font-size:12px;color:#606266;line-height:32px}.customer[data-v-559966ff]{height:100%;background-color:#fff}.tabBox_img[data-v-559966ff]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-559966ff]{width:100%;height:100%}.modelBox .ivu-table-header[data-v-559966ff],.modelBox[data-v-559966ff]{width:100%!important}.trees-coadd[data-v-559966ff]{width:100%;height:385px}.trees-coadd .scollhide[data-v-559966ff]{width:100%;height:100%;overflow-x:hidden;overflow-y:scroll}.scollhide[data-v-559966ff]::-webkit-scrollbar{display:none}.footer[data-v-559966ff]{margin:15px 0;padding-right:20px}[data-v-559966ff] .el-form--inline .el-form-item{margin-bottom:0}[data-v-664917f3] .el-tabs__item{height:54px!important;line-height:54px!important}.picBox[data-v-664917f3]{display:inline-block;cursor:pointer}.picBox .upLoad[data-v-664917f3]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);font-size:24px;font-weight:500}.picBox .pictrue[data-v-664917f3]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:10px}.picBox .pictrue img[data-v-664917f3]{width:100%;height:100%}.fix_footer[data-v-664917f3]{position:fixed;bottom:0;width:-webkit-fill-available;background:#fff;padding:20px 0;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:100}.userFrom[data-v-664917f3] .ivu-form-item-content{margin-left:0!important}.userAlert[data-v-664917f3]{margin-top:20px}.userI[data-v-664917f3]{color:var(--prev-color-primary);font-style:normal}img[data-v-664917f3]{height:36px;display:block}.tabBox_img[data-v-664917f3]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-664917f3]{width:100%;height:100%}.tabBox_tit[data-v-664917f3]{width:60%;font-size:12px!important;margin:0 2px 0 10px;letter-spacing:1px;padding:5px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.modelBox[data-v-664917f3] .ivu-modal-body{padding:0 16px 16px 16px!important}.vipName[data-v-664917f3]{color:#dab176}.listbox[data-v-664917f3] .ivu-divider-horizontal{margin:0!important}.labelInput[data-v-664917f3]{width:250px;border:1px solid #dcdee2;padding:0 15px;border-radius:5px;min-height:30px;cursor:pointer;font-size:12px}.labelInput .span[data-v-664917f3]{color:#c5c8ce}.labelInput .ivu-icon-ios-arrow-down[data-v-664917f3]{font-size:14px;color:#808695}.demo-drawer-footer[data-v-664917f3]{width:100%;position:absolute;bottom:0;left:0;border-top:1px solid #e8e8e8;padding:10px 16px;text-align:right;background:#fff}.search-form[data-v-664917f3]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.search-form .search-form-box[data-v-664917f3]{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex:1;flex:1}.search-form-sub[data-v-664917f3],.search-form .search-form-box[data-v-664917f3]{display:-webkit-box;display:-ms-flexbox;display:flex}
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
.one[data-v-29baa1f3]{background:var(--prev-color-primary)}.two[data-v-29baa1f3]{background:#00c050}.three[data-v-29baa1f3]{background:#ffab2b}.four[data-v-29baa1f3]{background:#b37feb}.el-icon-caret-top[data-v-29baa1f3],.up[data-v-29baa1f3]{color:#f5222d;font-size:12px;opacity:1!important}.iconfont[data-v-29baa1f3]{font-size:16px;color:#fff}.down[data-v-29baa1f3],.el-icon-caret-bottom[data-v-29baa1f3]{color:#39c15b;font-size:12px}.curP[data-v-29baa1f3]{cursor:pointer}.header-title[data-v-29baa1f3]{font-size:16px;color:rgba(0,0,0,.85)}.header-time[data-v-29baa1f3]{font-size:12px;color:#000;opacity:.45}.iconCrl[data-v-29baa1f3]{width:32px;height:32px;border-radius:50%;text-align:center;line-height:32px;opacity:.7}.lan[data-v-29baa1f3]{background:var(--prev-color-primary)}.iconshangpinliulanliang[data-v-29baa1f3]{color:#fff}.infoBox[data-v-29baa1f3]{width:20%}.info .sp1[data-v-29baa1f3]{color:#666;font-size:14px;display:block}.info .sp2[data-v-29baa1f3]{font-weight:400;font-size:30px;color:rgba(0,0,0,.85);display:block}.info .sp3[data-v-29baa1f3]{font-size:12px;font-weight:400;color:rgba(0,0,0,.45);display:block}.fwn[data-v-29baa1f3]{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.one[data-v-39efc17c]{background:var(--prev-color-primary)}.two[data-v-39efc17c]{background:#00c050}.three[data-v-39efc17c]{background:#ffab2b}.four[data-v-39efc17c]{background:#b37feb}.el-icon-caret-top[data-v-39efc17c],.up[data-v-39efc17c]{color:#f5222d;font-size:12px;opacity:1!important}.down[data-v-39efc17c],.el-icon-caret-bottom[data-v-39efc17c]{color:#39c15b;font-size:12px}.curP[data-v-39efc17c]{cursor:pointer}.header-title[data-v-39efc17c]{font-size:16px;color:rgba(0,0,0,.85)}.header-time[data-v-39efc17c]{font-size:12px;color:#000;opacity:.45}.iconfont[data-v-39efc17c]{font-size:16px;color:#fff}.iconCrl[data-v-39efc17c]{width:32px;height:32px;border-radius:50%;text-align:center;line-height:32px;opacity:.7}.lan[data-v-39efc17c]{background:var(--prev-color-primary)}.iconshangpinliulanliang[data-v-39efc17c]{color:#fff}.infoBox[data-v-39efc17c]{width:20%}@media screen and (max-width:1200px){.infoBox[data-v-39efc17c]{width:33%}}@media screen and (max-width:900px){.infoBox[data-v-39efc17c]{width:50%}}.info .sp1[data-v-39efc17c]{color:#666;font-size:14px;display:block}.info .sp2[data-v-39efc17c]{font-weight:400;font-size:30px;color:rgba(0,0,0,.85);display:block}.info .sp3[data-v-39efc17c]{font-size:12px;font-weight:400;color:rgba(0,0,0,.45);display:block}.echarts[data-v-4e838d5c],.tables[data-v-4e838d5c]{width:100%}.tables[data-v-4e838d5c] .ivu-table-overflowY::-webkit-scrollbar{width:0}.tables[data-v-4e838d5c] .ivu-table-overflowY::-webkit-scrollbar-track{background-color:transparent}.tables[data-v-4e838d5c] .ivu-table-overflowY::-webkit-scrollbar-thumb{background:#e8eaec}.ivu-form-item[data-v-64fc0bbe]{padding-bottom:10px;margin-bottom:0}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
.df-cc[data-v-4efc399c]{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.df-cc[data-v-4efc399c],.steps-item[data-v-4efc399c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.steps-item[data-v-4efc399c]{width:-webkit-max-content;width:-moz-max-content;width:max-content}.steps-item .dot[data-v-4efc399c]{width:28px;height:28px;color:#c0c4cc;border:1px solid #c0c4cc;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:8px}.steps-item .title[data-v-4efc399c]{font-size:16px;font-weight:400;color:#909399;line-height:16px;white-space:nowrap}.steps-item .line[data-v-4efc399c]{height:1px;margin:0 20px;background:#ddd}.steps-item .wd160[data-v-4efc399c]{width:160px}.steps-item .wd120[data-v-4efc399c]{width:120px}.steps-item .wd100[data-v-4efc399c]{width:100px}.steps-item.active .title[data-v-4efc399c]{font-size:16px;font-weight:500;color:#303133;line-height:16px}.steps-item.active .dot[data-v-4efc399c]{width:28px;height:28px;background:var(--prev-color-primary);border:1px solid var(--prev-color-primary);color:#fff}.content_width[data-v-126f4336]{width:460px}.custom-label[data-v-126f4336]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:1.5}.grey[data-v-126f4336]{color:#999}.maxW[data-v-126f4336] .ivu-select-dropdown{max-width:600px}.tabBox_img[data-v-126f4336]{width:50px;height:50px;margin:0 auto}.tabBox_img img[data-v-126f4336]{width:100%;height:100%}.priceBox[data-v-126f4336]{width:100%}.form .picBox[data-v-126f4336],.form .pictrue[data-v-126f4336]{display:inline-block;cursor:pointer}.form .pictrue[data-v-126f4336]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;position:relative}.form .pictrue img[data-v-126f4336]{width:100%;height:100%}.form .pictrue .btndel[data-v-126f4336]{position:absolute;z-index:9;width:20px!important;height:20px!important;left:46px;top:-4px}.form .upLoad[data-v-126f4336]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}
|
||||
.df-cc[data-v-4efc399c]{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.df-cc[data-v-4efc399c],.steps-item[data-v-4efc399c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.steps-item[data-v-4efc399c]{width:-webkit-max-content;width:-moz-max-content;width:max-content}.steps-item .dot[data-v-4efc399c]{width:28px;height:28px;color:#c0c4cc;border:1px solid #c0c4cc;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:8px}.steps-item .title[data-v-4efc399c]{font-size:16px;font-weight:400;color:#909399;line-height:16px;white-space:nowrap}.steps-item .line[data-v-4efc399c]{height:1px;margin:0 20px;background:#ddd}.steps-item .wd160[data-v-4efc399c]{width:160px}.steps-item .wd120[data-v-4efc399c]{width:120px}.steps-item .wd100[data-v-4efc399c]{width:100px}.steps-item.active .title[data-v-4efc399c]{font-size:16px;font-weight:500;color:#303133;line-height:16px}.steps-item.active .dot[data-v-4efc399c]{width:28px;height:28px;background:var(--prev-color-primary);border:1px solid var(--prev-color-primary);color:#fff}.content_width[data-v-69882b9a]{width:460px}.custom-label[data-v-69882b9a]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:1.5}.grey[data-v-69882b9a]{color:#999}.maxW[data-v-69882b9a] .ivu-select-dropdown{max-width:600px}.tabBox_img[data-v-69882b9a]{width:50px;height:50px;margin:0 auto}.tabBox_img img[data-v-69882b9a]{width:100%;height:100%}.priceBox[data-v-69882b9a]{width:100%}.form .picBox[data-v-69882b9a],.form .pictrue[data-v-69882b9a]{display:inline-block;cursor:pointer}.form .pictrue[data-v-69882b9a]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;position:relative}.form .pictrue img[data-v-69882b9a]{width:100%;height:100%}.form .pictrue .btndel[data-v-69882b9a]{position:absolute;z-index:9;width:20px!important;height:20px!important;left:46px;top:-4px}.form .upLoad[data-v-69882b9a]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}
|
||||
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
.one[data-v-38d2d20d]{background:var(--prev-color-primary)}.two[data-v-38d2d20d]{background:#00c050}.three[data-v-38d2d20d]{background:#ffab2b}.four[data-v-38d2d20d]{background:#b37feb}.el-icon-caret-top[data-v-38d2d20d],.up[data-v-38d2d20d]{color:#f5222d;font-size:12px;opacity:1!important}.iconfont[data-v-38d2d20d]{font-size:16px;color:#fff}.down[data-v-38d2d20d],.el-icon-caret-bottom[data-v-38d2d20d]{color:#39c15b;font-size:12px}.curP[data-v-38d2d20d]{cursor:pointer}.header-title[data-v-38d2d20d]{font-size:16px;color:rgba(0,0,0,.85)}.header-time[data-v-38d2d20d]{font-size:12px;color:#000;opacity:.45}.iconCrl[data-v-38d2d20d]{width:32px;height:32px;border-radius:50%;text-align:center;line-height:32px;opacity:.7}.lan[data-v-38d2d20d]{background:var(--prev-color-primary)}.iconshangpinliulanliang[data-v-38d2d20d]{color:#fff}.infoBox[data-v-38d2d20d]{width:20%}.info .sp1[data-v-38d2d20d]{color:#666;font-size:14px;display:block}.info .sp2[data-v-38d2d20d]{font-weight:400;font-size:30px;color:rgba(0,0,0,.85);display:block}.info .sp3[data-v-38d2d20d]{font-size:12px;font-weight:400;color:rgba(0,0,0,.45);display:block}.fwn[data-v-38d2d20d]{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.one[data-v-45198ae2]{background:var(--prev-color-primary)}.two[data-v-45198ae2]{background:#00c050}.three[data-v-45198ae2]{background:#ffab2b}.four[data-v-45198ae2]{background:#b37feb}.el-icon-caret-top[data-v-45198ae2],.up[data-v-45198ae2]{color:#f5222d;font-size:12px;opacity:1!important}.down[data-v-45198ae2],.el-icon-caret-bottom[data-v-45198ae2]{color:#39c15b;font-size:12px}.curP[data-v-45198ae2]{cursor:pointer}.header-title[data-v-45198ae2]{font-size:16px;color:rgba(0,0,0,.85)}.header-time[data-v-45198ae2]{font-size:12px;color:#000;opacity:.45}.iconfont[data-v-45198ae2]{font-size:16px;color:#fff}.iconCrl[data-v-45198ae2]{width:32px;height:32px;border-radius:50%;text-align:center;line-height:32px;opacity:.7}.lan[data-v-45198ae2]{background:var(--prev-color-primary)}.iconshangpinliulanliang[data-v-45198ae2]{color:#fff}.infoBox[data-v-45198ae2]{width:20%}@media screen and (max-width:1200px){.infoBox[data-v-45198ae2]{width:33%}}@media screen and (max-width:900px){.infoBox[data-v-45198ae2]{width:50%}}.info .sp1[data-v-45198ae2]{color:#666;font-size:14px;display:block}.info .sp2[data-v-45198ae2]{font-weight:400;font-size:30px;color:rgba(0,0,0,.85);display:block}.info .sp3[data-v-45198ae2]{font-size:12px;font-weight:400;color:rgba(0,0,0,.45);display:block}.echarts[data-v-7645b4fc],.tables[data-v-7645b4fc]{width:100%}.tables[data-v-7645b4fc] .ivu-table-overflowY::-webkit-scrollbar{width:0}.tables[data-v-7645b4fc] .ivu-table-overflowY::-webkit-scrollbar-track{background-color:transparent}.tables[data-v-7645b4fc] .ivu-table-overflowY::-webkit-scrollbar-thumb{background:#e8eaec}.ivu-form-item[data-v-64fc0bbe]{padding-bottom:10px;margin-bottom:0}
|
||||
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
[data-v-3eaee164] .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{border-bottom:none}[data-v-3eaee164] .el-tabs__item{height:40px!important;line-height:40px!important}.head[data-v-3eaee164]{padding:0 30px 24px}.head .full[data-v-3eaee164]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.head .full .order_icon[data-v-3eaee164]{width:60px;height:60px}.head .full .iconfont[data-v-3eaee164]{color:var(--prev-color-primary)}.head .full .iconfont.sale-after[data-v-3eaee164]{color:#90add5}.head .full .text[data-v-3eaee164]{-ms-flex-item-align:center;align-self:center;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;padding-left:12px;font-size:13px;color:#606266}.head .full .text .title[data-v-3eaee164]{margin-bottom:10px;font-weight:500;font-size:16px;line-height:16px;color:rgba(0,0,0,.85)}.head .full .text .order-num[data-v-3eaee164]{padding-top:10px;white-space:nowrap}.head .list[data-v-3eaee164]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px;overflow:hidden;list-style:none;padding:0}.head .list .item[data-v-3eaee164]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:200px;font-size:14px;line-height:14px;color:rgba(0,0,0,.85)}.head .list .item .title[data-v-3eaee164]{margin-bottom:12px;font-size:13px;line-height:13px;color:#666}.head .list .item .value1[data-v-3eaee164]{color:#f56022}.head .list .item .value2[data-v-3eaee164]{color:#1bbe6b}.head .list .item .value3[data-v-3eaee164]{color:var(--prev-color-primary)}.head .list .item .value4[data-v-3eaee164]{color:#6a7b9d}.head .list .item .value5[data-v-3eaee164]{color:#f5222d}.section[data-v-3eaee164]{padding:25px 0;border-bottom:1px dashed #eee}.section .title[data-v-3eaee164]{padding-left:10px;border-left:3px solid var(--prev-color-primary);font-size:15px;line-height:15px;color:#303133}.section .list[data-v-3eaee164]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;padding:0}.section .item[data-v-3eaee164]{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:16px;font-size:13px;color:#666}.section .item[data-v-3eaee164]:nth-child(3n+1){padding-right:20px}.section .item[data-v-3eaee164]:nth-child(3n+2){padding-right:10px;padding-left:10px}.section .item[data-v-3eaee164]:nth-child(3n+3){padding-left:20px}.section .value[data-v-3eaee164]{-webkit-box-flex:1;-ms-flex:1;flex:1}.section .value image[data-v-3eaee164]{display:inline-block;width:40px;height:40px;margin:0 12px 12px 0;vertical-align:middle}.section .item.pic[data-v-3eaee164]{display:-webkit-box;display:-ms-flexbox;display:flex}.section .item.pic img[data-v-3eaee164]{width:80px;height:80px}.tab[data-v-3eaee164]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tab .el-image[data-v-3eaee164]{width:36px;height:36px;margin-right:10px}[data-v-3eaee164] .el-drawer__body{overflow:auto}.gary[data-v-3eaee164]{color:#aaa}[data-v-3eaee164] .el-drawer__body{padding:20px 0}[data-v-3eaee164] .el-tabs--border-card>.el-tabs__content{padding:0 35px}[data-v-3eaee164] .el-tabs--border-card>.el-tabs__header,[data-v-3eaee164] .el-tabs--border-card>.el-tabs__header .el-tabs__item:active{border:none;height:40px}[data-v-3eaee164] .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{border:none;border-top:2px solid var(--prev-color-primary);font-size:13px;font-weight:500;color:#303133;line-height:16px}[data-v-3eaee164] .el-tabs--border-card>.el-tabs__header .el-tabs__item{border:none;margin-top:0;-webkit-transition:none;transition:none;height:40px!important;line-height:40px!important;width:92px!important;font-size:13px;font-weight:400;color:#303133;line-height:16px}[data-v-3eaee164] .el-tabs--border-card{border:none;-webkit-box-shadow:none;box-shadow:none}.logistics[data-v-3eaee164]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 20px}.logistics .logistics_img[data-v-3eaee164]{width:45px;height:45px;margin-right:12px}.logistics .logistics_img img[data-v-3eaee164]{width:100%;height:100%}.logistics .logistics_cent span[data-v-3eaee164]{display:block;font-size:12px}.trees-coadd[data-v-3eaee164]{width:100%;height:400px;border-radius:4px;overflow:hidden}.trees-coadd .scollhide[data-v-3eaee164]{width:100%;height:100%;overflow:auto;margin-left:18px;padding:10px 0 10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.trees-coadd .scollhide .content[data-v-3eaee164]{font-size:12px}.trees-coadd .scollhide .time[data-v-3eaee164]{font-size:12px;color:#2d8cf0}
|
||||
@ -0,0 +1 @@
|
||||
.auth[data-v-a00213b0]{padding:9px 16px 9px 10px;display:-webkit-box;display:-ms-flexbox;display:flex}.auth .box[data-v-a00213b0]{width:50px}.auth .update[data-v-a00213b0]{white-space:nowrap;margin-bottom:12px}.auth .upload[data-v-a00213b0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:60px;height:60px;background:rgba(0,0,0,.02);border-radius:4px;border:1px solid #ddd}.auth .iconIos[data-v-a00213b0]{font-size:40px;margin-right:10px;color:#001529}.auth .text[data-v-a00213b0]{font-weight:400;color:#000;font-size:18px}.auth .text .code[data-v-a00213b0]{font-size:14px;color:rgba(0,0,0,.5)}.auth .text .pro_price[data-v-a00213b0]{height:18px;font-size:14px;font-family:PingFangSC-Semibold,PingFang SC;font-weight:600;color:#f5222d;line-height:18px}.auth .blue[data-v-a00213b0]{color:var(--prev-color-primary)!important}.auth .red[data-v-a00213b0]{color:#ed4014!important}.upload .iconfont[data-v-a00213b0]{line-height:60px}.uploadPictrue[data-v-a00213b0]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-left:2px;border-radius:3px;position:relative;cursor:pointer}.uploadPictrue .el-icon-error[data-v-a00213b0]{position:absolute;top:-3px;right:-3px;color:#999}.uploadPictrue img[data-v-a00213b0]{width:100%;height:100%;border-radius:3px}.phone_code[data-v-a00213b0]{border:1px solid #eee;padding:0 10px 0;cursor:pointer}.grey[data-v-a00213b0]{background-color:#999;border-color:#999;color:#fff}.update[data-v-a00213b0]{font-size:13px;color:rgba(0,0,0,.85);padding-right:12px}.prompt[data-v-a00213b0]{margin-left:150px;font-size:12px;font-weight:400;color:#999}.submit[data-v-a00213b0]{width:100%}.code .input[data-v-a00213b0]{width:83%}.code .input .ivu-input[data-v-a00213b0]{border-radius:4px 0 0 4px!important}.code .pictrue[data-v-a00213b0]{height:32px;width:17%}.customer[data-v-a00213b0]{border-right:0}.customer a[data-v-a00213b0]{font-size:12px}.ivu-input-group-append[data-v-a00213b0],.ivu-input-group-prepend[data-v-a00213b0]{background-color:#fff}.ivu-input-group .ivu-input[data-v-a00213b0]{border-right:0!important}.qrcode[data-v-a00213b0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:180px;height:180px;border:1px solid #e5e5e6}.qrcode_desc[data-v-a00213b0]{display:inline-block;text-align:center;margin:10px 0 10px;width:180px;font-size:12px;color:#666;line-height:16px}.login_tab[data-v-a00213b0]{font-size:16px;margin:0 0 20px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.login_tab_item[data-v-a00213b0]{width:50%;text-align:center;padding-bottom:15px;border-bottom:1px solid #eee;cursor:pointer}.active_tab[data-v-a00213b0]{border-bottom:2px solid var(--prev-color-primary);color:var(--prev-color-primary);font-weight:600}iframe[data-v-a00213b0]{height:550px;overflow:hidden}.head[data-v-a00213b0]{font-weight:400;font-size:14px;color:#303133;margin-bottom:20px}.el-icon-check[data-v-a00213b0]{color:var(--prev-color-primary);font-size:22px;font-weight:600}.el-icon-close[data-v-a00213b0]{color:#f5222d;font-size:22px;font-weight:600}.btn[data-v-a00213b0]{color:var(--prev-color-primary);margin-right:10px}.el-icon-warning-outline[data-v-a00213b0]{font-size:13px}
|
||||
@ -1 +0,0 @@
|
||||
.auth[data-v-3dcccb0c]{padding:9px 16px 9px 10px;display:-webkit-box;display:-ms-flexbox;display:flex}.auth .box[data-v-3dcccb0c]{width:50px}.auth .update[data-v-3dcccb0c]{white-space:nowrap;margin-bottom:12px}.auth .upload[data-v-3dcccb0c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:60px;height:60px;background:rgba(0,0,0,.02);border-radius:4px;border:1px solid #ddd}.auth .iconIos[data-v-3dcccb0c]{font-size:40px;margin-right:10px;color:#001529}.auth .text[data-v-3dcccb0c]{font-weight:400;color:#000;font-size:18px}.auth .text .code[data-v-3dcccb0c]{font-size:14px;color:rgba(0,0,0,.5)}.auth .text .pro_price[data-v-3dcccb0c]{height:18px;font-size:14px;font-family:PingFangSC-Semibold,PingFang SC;font-weight:600;color:#f5222d;line-height:18px}.auth .blue[data-v-3dcccb0c]{color:var(--prev-color-primary)!important}.auth .red[data-v-3dcccb0c]{color:#ed4014!important}.upload .iconfont[data-v-3dcccb0c]{line-height:60px}.uploadPictrue[data-v-3dcccb0c]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-left:2px;border-radius:3px;position:relative;cursor:pointer}.uploadPictrue .el-icon-error[data-v-3dcccb0c]{position:absolute;top:-3px;right:-3px;color:#999}.uploadPictrue img[data-v-3dcccb0c]{width:100%;height:100%;border-radius:3px}.phone_code[data-v-3dcccb0c]{border:1px solid #eee;padding:0 10px 0;cursor:pointer}.grey[data-v-3dcccb0c]{background-color:#999;border-color:#999;color:#fff}.update[data-v-3dcccb0c]{font-size:13px;color:rgba(0,0,0,.85);padding-right:12px}.prompt[data-v-3dcccb0c]{margin-left:150px;font-size:12px;font-weight:400;color:#999}.submit[data-v-3dcccb0c]{width:100%}.code .input[data-v-3dcccb0c]{width:83%}.code .input .ivu-input[data-v-3dcccb0c]{border-radius:4px 0 0 4px!important}.code .pictrue[data-v-3dcccb0c]{height:32px;width:17%}.customer[data-v-3dcccb0c]{border-right:0}.customer a[data-v-3dcccb0c]{font-size:12px}.ivu-input-group-append[data-v-3dcccb0c],.ivu-input-group-prepend[data-v-3dcccb0c]{background-color:#fff}.ivu-input-group .ivu-input[data-v-3dcccb0c]{border-right:0!important}.qrcode[data-v-3dcccb0c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:180px;height:180px;border:1px solid #e5e5e6}.qrcode_desc[data-v-3dcccb0c]{display:inline-block;text-align:center;margin:10px 0 10px;width:180px;font-size:12px;color:#666;line-height:16px}.login_tab[data-v-3dcccb0c]{font-size:16px;margin:0 0 20px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.login_tab_item[data-v-3dcccb0c]{width:50%;text-align:center;padding-bottom:15px;border-bottom:1px solid #eee;cursor:pointer}.active_tab[data-v-3dcccb0c]{border-bottom:2px solid var(--prev-color-primary);color:var(--prev-color-primary);font-weight:600}iframe[data-v-3dcccb0c]{height:550px;overflow:hidden}.head[data-v-3dcccb0c]{font-weight:400;font-size:14px;color:#303133;margin-bottom:20px}.el-icon-check[data-v-3dcccb0c]{color:var(--prev-color-primary);font-size:22px;font-weight:600}.el-icon-close[data-v-3dcccb0c]{color:#f5222d;font-size:22px;font-weight:600}.btn[data-v-3dcccb0c]{color:var(--prev-color-primary);margin-right:10px}.el-icon-warning-outline[data-v-3dcccb0c]{font-size:13px}
|
||||
@ -1 +1 @@
|
||||
.df-cc[data-v-4efc399c]{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.df-cc[data-v-4efc399c],.steps-item[data-v-4efc399c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.steps-item[data-v-4efc399c]{width:-webkit-max-content;width:-moz-max-content;width:max-content}.steps-item .dot[data-v-4efc399c]{width:28px;height:28px;color:#c0c4cc;border:1px solid #c0c4cc;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:8px}.steps-item .title[data-v-4efc399c]{font-size:16px;font-weight:400;color:#909399;line-height:16px;white-space:nowrap}.steps-item .line[data-v-4efc399c]{height:1px;margin:0 20px;background:#ddd}.steps-item .wd160[data-v-4efc399c]{width:160px}.steps-item .wd120[data-v-4efc399c]{width:120px}.steps-item .wd100[data-v-4efc399c]{width:100px}.steps-item.active .title[data-v-4efc399c]{font-size:16px;font-weight:500;color:#303133;line-height:16px}.steps-item.active .dot[data-v-4efc399c]{width:28px;height:28px;background:var(--prev-color-primary);border:1px solid var(--prev-color-primary);color:#fff}.content_width[data-v-568b7d2c]{width:460px}.grey[data-v-568b7d2c]{font-size:12px;color:#999}.maxW[data-v-568b7d2c] .ivu-select-dropdown{max-width:600px}.ivu-table-wrapper[data-v-568b7d2c]{border-left:1px solid #dcdee2;border-top:1px solid #dcdee2}.tabBox_img[data-v-568b7d2c]{width:50px;height:50px}.tabBox_img img[data-v-568b7d2c]{width:100%;height:100%}.priceBox[data-v-568b7d2c]{width:100%}.form .picBox[data-v-568b7d2c],.form .pictrue[data-v-568b7d2c]{display:inline-block;cursor:pointer}.form .pictrue[data-v-568b7d2c]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;position:relative}.form .pictrue img[data-v-568b7d2c]{width:100%;height:100%}.form .pictrue .btndel[data-v-568b7d2c]{position:absolute;z-index:9;width:20px!important;height:20px!important;left:46px;top:-4px}.form .upLoad[data-v-568b7d2c]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.form .col[data-v-568b7d2c]{color:#2d8cf0;cursor:pointer}.addfont[data-v-568b7d2c]{font-size:12px;color:var(--prev-color-primary);margin-left:14px;margin-left:10px;cursor:pointer}
|
||||
.df-cc[data-v-4efc399c]{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.df-cc[data-v-4efc399c],.steps-item[data-v-4efc399c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.steps-item[data-v-4efc399c]{width:-webkit-max-content;width:-moz-max-content;width:max-content}.steps-item .dot[data-v-4efc399c]{width:28px;height:28px;color:#c0c4cc;border:1px solid #c0c4cc;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:8px}.steps-item .title[data-v-4efc399c]{font-size:16px;font-weight:400;color:#909399;line-height:16px;white-space:nowrap}.steps-item .line[data-v-4efc399c]{height:1px;margin:0 20px;background:#ddd}.steps-item .wd160[data-v-4efc399c]{width:160px}.steps-item .wd120[data-v-4efc399c]{width:120px}.steps-item .wd100[data-v-4efc399c]{width:100px}.steps-item.active .title[data-v-4efc399c]{font-size:16px;font-weight:500;color:#303133;line-height:16px}.steps-item.active .dot[data-v-4efc399c]{width:28px;height:28px;background:var(--prev-color-primary);border:1px solid var(--prev-color-primary);color:#fff}.content_width[data-v-17f04e86]{width:460px}.grey[data-v-17f04e86]{font-size:12px;color:#999}.maxW[data-v-17f04e86] .ivu-select-dropdown{max-width:600px}.ivu-table-wrapper[data-v-17f04e86]{border-left:1px solid #dcdee2;border-top:1px solid #dcdee2}.tabBox_img[data-v-17f04e86]{width:50px;height:50px}.tabBox_img img[data-v-17f04e86]{width:100%;height:100%}.priceBox[data-v-17f04e86]{width:100%}.form .picBox[data-v-17f04e86],.form .pictrue[data-v-17f04e86]{display:inline-block;cursor:pointer}.form .pictrue[data-v-17f04e86]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;position:relative}.form .pictrue img[data-v-17f04e86]{width:100%;height:100%}.form .pictrue .btndel[data-v-17f04e86]{position:absolute;z-index:9;width:20px!important;height:20px!important;left:46px;top:-4px}.form .upLoad[data-v-17f04e86]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.form .col[data-v-17f04e86]{color:#2d8cf0;cursor:pointer}.addfont[data-v-17f04e86]{font-size:12px;color:var(--prev-color-primary);margin-left:14px;margin-left:10px;cursor:pointer}
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
[data-v-ce5ceb5a] .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{border-bottom:none}[data-v-ce5ceb5a] .el-tabs__item{height:40px!important;line-height:40px!important}.head[data-v-ce5ceb5a]{padding:0 30px 24px}.head .full[data-v-ce5ceb5a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.head .full .order_icon[data-v-ce5ceb5a]{width:60px;height:60px}.head .full .iconfont[data-v-ce5ceb5a]{color:var(--prev-color-primary)}.head .full .iconfont.sale-after[data-v-ce5ceb5a]{color:#90add5}.head .full .text[data-v-ce5ceb5a]{-ms-flex-item-align:center;align-self:center;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;padding-left:12px;font-size:13px;color:#606266}.head .full .text .title[data-v-ce5ceb5a]{margin-bottom:10px;font-weight:500;font-size:16px;line-height:16px;color:rgba(0,0,0,.85)}.head .full .text .order-num[data-v-ce5ceb5a]{padding-top:10px;white-space:nowrap}.head .list[data-v-ce5ceb5a]{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px;overflow:hidden;list-style:none;padding:0}.head .list .item[data-v-ce5ceb5a]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:200px;font-size:14px;line-height:14px;color:rgba(0,0,0,.85)}.head .list .item .title[data-v-ce5ceb5a]{margin-bottom:12px;font-size:13px;line-height:13px;color:#666}.head .list .item .value1[data-v-ce5ceb5a]{color:#f56022}.head .list .item .value2[data-v-ce5ceb5a]{color:#1bbe6b}.head .list .item .value3[data-v-ce5ceb5a]{color:var(--prev-color-primary)}.head .list .item .value4[data-v-ce5ceb5a]{color:#6a7b9d}.head .list .item .value5[data-v-ce5ceb5a]{color:#f5222d}.section[data-v-ce5ceb5a]{padding:25px 0;border-bottom:1px dashed #eee}.section .title[data-v-ce5ceb5a]{padding-left:10px;border-left:3px solid var(--prev-color-primary);font-size:15px;line-height:15px;color:#303133}.section .list[data-v-ce5ceb5a]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;padding:0}.section .item[data-v-ce5ceb5a]{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:16px;font-size:13px;color:#666}.section .item[data-v-ce5ceb5a]:nth-child(3n+1){padding-right:20px}.section .item[data-v-ce5ceb5a]:nth-child(3n+2){padding-right:10px;padding-left:10px}.section .item[data-v-ce5ceb5a]:nth-child(3n+3){padding-left:20px}.section .value[data-v-ce5ceb5a]{-webkit-box-flex:1;-ms-flex:1;flex:1}.section .value image[data-v-ce5ceb5a]{display:inline-block;width:40px;height:40px;margin:0 12px 12px 0;vertical-align:middle}.section .item.pic[data-v-ce5ceb5a]{display:-webkit-box;display:-ms-flexbox;display:flex}.section .item.pic img[data-v-ce5ceb5a]{width:80px;height:80px}.tab[data-v-ce5ceb5a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tab .el-image[data-v-ce5ceb5a]{width:36px;height:36px;margin-right:10px}[data-v-ce5ceb5a] .el-drawer__body{overflow:auto}.gary[data-v-ce5ceb5a]{color:#aaa}[data-v-ce5ceb5a] .el-drawer__body{padding:20px 0}[data-v-ce5ceb5a] .el-tabs--border-card>.el-tabs__content{padding:0 35px}[data-v-ce5ceb5a] .el-tabs--border-card>.el-tabs__header,[data-v-ce5ceb5a] .el-tabs--border-card>.el-tabs__header .el-tabs__item:active{border:none;height:40px}[data-v-ce5ceb5a] .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{border:none;border-top:2px solid var(--prev-color-primary);font-size:13px;font-weight:500;color:#303133;line-height:16px}[data-v-ce5ceb5a] .el-tabs--border-card>.el-tabs__header .el-tabs__item{border:none;margin-top:0;-webkit-transition:none;transition:none;height:40px!important;line-height:40px!important;width:92px!important;font-size:13px;font-weight:400;color:#303133;line-height:16px}[data-v-ce5ceb5a] .el-tabs--border-card{border:none;-webkit-box-shadow:none;box-shadow:none}.logistics[data-v-ce5ceb5a]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px 20px}.logistics .logistics_img[data-v-ce5ceb5a]{width:45px;height:45px;margin-right:12px}.logistics .logistics_img img[data-v-ce5ceb5a]{width:100%;height:100%}.logistics .logistics_cent span[data-v-ce5ceb5a]{display:block;font-size:12px}.trees-coadd[data-v-ce5ceb5a]{width:100%;height:400px;border-radius:4px;overflow:hidden}.trees-coadd .scollhide[data-v-ce5ceb5a]{width:100%;height:100%;overflow:auto;margin-left:18px;padding:10px 0 10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.trees-coadd .scollhide .content[data-v-ce5ceb5a]{font-size:12px}.trees-coadd .scollhide .time[data-v-ce5ceb5a]{font-size:12px;color:#2d8cf0}
|
||||
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
.df-cc[data-v-4efc399c]{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.df-cc[data-v-4efc399c],.steps-item[data-v-4efc399c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.steps-item[data-v-4efc399c]{width:-webkit-max-content;width:-moz-max-content;width:max-content}.steps-item .dot[data-v-4efc399c]{width:28px;height:28px;color:#c0c4cc;border:1px solid #c0c4cc;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:8px}.steps-item .title[data-v-4efc399c]{font-size:16px;font-weight:400;color:#909399;line-height:16px;white-space:nowrap}.steps-item .line[data-v-4efc399c]{height:1px;margin:0 20px;background:#ddd}.steps-item .wd160[data-v-4efc399c]{width:160px}.steps-item .wd120[data-v-4efc399c]{width:120px}.steps-item .wd100[data-v-4efc399c]{width:100px}.steps-item.active .title[data-v-4efc399c]{font-size:16px;font-weight:500;color:#303133;line-height:16px}.steps-item.active .dot[data-v-4efc399c]{width:28px;height:28px;background:var(--prev-color-primary);border:1px solid var(--prev-color-primary);color:#fff}.content_width[data-v-53fc9870]{width:460px}.grey[data-v-53fc9870]{color:#999;font-size:12px}.maxW[data-v-53fc9870] .ivu-select-dropdown{max-width:600px}.ivu-table-wrapper[data-v-53fc9870]{border-left:1px solid #dcdee2;border-top:1px solid #dcdee2}.tabBox_img[data-v-53fc9870]{width:50px;height:50px}.tabBox_img img[data-v-53fc9870]{width:100%;height:100%}.priceBox[data-v-53fc9870]{width:100%}.form .picBox[data-v-53fc9870],.form .pictrue[data-v-53fc9870]{display:inline-block;cursor:pointer}.form .pictrue[data-v-53fc9870]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;position:relative}.form .pictrue img[data-v-53fc9870]{width:100%;height:100%}.form .pictrue .btndel[data-v-53fc9870]{position:absolute;z-index:9;width:20px!important;height:20px!important;left:46px;top:-4px}.form .upLoad[data-v-53fc9870]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.form .col[data-v-53fc9870]{color:#2d8cf0;cursor:pointer}.addfont[data-v-53fc9870]{font-size:12px;color:var(--prev-color-primary);margin-left:14px;margin-left:10px;cursor:pointer}
|
||||
.df-cc[data-v-4efc399c]{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.df-cc[data-v-4efc399c],.steps-item[data-v-4efc399c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.steps-item[data-v-4efc399c]{width:-webkit-max-content;width:-moz-max-content;width:max-content}.steps-item .dot[data-v-4efc399c]{width:28px;height:28px;color:#c0c4cc;border:1px solid #c0c4cc;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:8px}.steps-item .title[data-v-4efc399c]{font-size:16px;font-weight:400;color:#909399;line-height:16px;white-space:nowrap}.steps-item .line[data-v-4efc399c]{height:1px;margin:0 20px;background:#ddd}.steps-item .wd160[data-v-4efc399c]{width:160px}.steps-item .wd120[data-v-4efc399c]{width:120px}.steps-item .wd100[data-v-4efc399c]{width:100px}.steps-item.active .title[data-v-4efc399c]{font-size:16px;font-weight:500;color:#303133;line-height:16px}.steps-item.active .dot[data-v-4efc399c]{width:28px;height:28px;background:var(--prev-color-primary);border:1px solid var(--prev-color-primary);color:#fff}.content_width[data-v-5a66b92c]{width:460px}.grey[data-v-5a66b92c]{color:#999;font-size:12px}.maxW[data-v-5a66b92c] .ivu-select-dropdown{max-width:600px}.ivu-table-wrapper[data-v-5a66b92c]{border-left:1px solid #dcdee2;border-top:1px solid #dcdee2}.tabBox_img[data-v-5a66b92c]{width:50px;height:50px}.tabBox_img img[data-v-5a66b92c]{width:100%;height:100%}.priceBox[data-v-5a66b92c]{width:100%}.form .picBox[data-v-5a66b92c],.form .pictrue[data-v-5a66b92c]{display:inline-block;cursor:pointer}.form .pictrue[data-v-5a66b92c]{width:60px;height:60px;border:1px dotted rgba(0,0,0,.1);margin-right:15px;position:relative}.form .pictrue img[data-v-5a66b92c]{width:100%;height:100%}.form .pictrue .btndel[data-v-5a66b92c]{position:absolute;z-index:9;width:20px!important;height:20px!important;left:46px;top:-4px}.form .upLoad[data-v-5a66b92c]{width:58px;height:58px;line-height:58px;border:1px dotted rgba(0,0,0,.1);border-radius:4px;background:rgba(0,0,0,.02);cursor:pointer}.form .col[data-v-5a66b92c]{color:#2d8cf0;cursor:pointer}.addfont[data-v-5a66b92c]{font-size:12px;color:var(--prev-color-primary);margin-left:14px;margin-left:10px;cursor:pointer}
|
||||
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
1
crmeb/public/admin/system_static/js/app.dc1bf06a.js
Normal file
1
crmeb/public/admin/system_static/js/app.dc1bf06a.js
Normal file
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
Loading…
x
Reference in New Issue
Block a user