Compare commits

..

9 Commits

Author SHA1 Message Date
才三天
d03c91e148
Update README.md 2026-04-25 16:48:53 +08:00
才三天
7a3c651a42
Update README.md 2026-04-25 16:47:21 +08:00
才三天
ba213df41b
Update README.md 2026-04-25 16:46:19 +08:00
evoxwht
03bd58ce2e update v6.0.0 2026-04-25 16:41:56 +08:00
evoxwht
a773b25e26 update v6.0.0 2026-04-11 11:28:07 +08:00
evoxwht
8d7dc6e436 update v6.0.0 2026-03-24 09:21:52 +08:00
evoxwht
6542db3d23 update v6.0.0 2026-03-24 08:46:27 +08:00
evoxwht
ad767e6635 update v6.0.0 2026-03-23 15:07:06 +08:00
evoxwht
3d8d4c20d0 update v6.0.0 2026-03-23 15:02:42 +08:00
1053 changed files with 7567 additions and 6388 deletions

177
.dockerignore Normal file
View 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
View File

@ -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

View File

@ -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
### 📖 系统功能
![输入图片说明](help/resource/pic/核心功能.jpg)
<img width="1920" height="2500" alt="核心功能" src="https://github.com/user-attachments/assets/944897ae-67f0-438d-9ca5-455d5956eddb" />
---
### 📖 UI界面展示
![输入图片说明](help/resource/pic/PHP_06.jpg)
<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
### 📖 后台界面展示
![输入图片说明](help/resource/pic/PHP_05.jpg)
<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
### 📱 系统演示
![输入图片说明](help/resource/pic/contact2.jpg)
<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开源技术交流群扫码进群可领取开源版接口文档、产品功能清单、思维脑图
![输入图片说明](help/resource/pic/开源群php.jpg)
#### 技术社区找方法、提bug、看官方消息、拿活跃大奖都在 <a href="https://www.crmeb.com/ask/?from=giteephp" target="_blank">CRMEB 技术社区</a> 应有尽有
---
### 📕 CRMEB PRO版
[![输入图片说明](help/resource/pic/PRO版2.jpg)](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>
[![输入图片说明](help/resource/pic/duoshanghu2.jpg)](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
View File

View 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。
## 安装

View File

@ -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;

View File

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

View File

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

View File

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

View File

@ -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'] = '系统减少积分';

View File

@ -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');
}
}

View File

@ -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')) {

View File

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

View File

@ -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'] ?? [];

View File

@ -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) {

View File

@ -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']);
}

View File

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

View File

@ -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

File diff suppressed because one or more lines are too long

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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}

View File

@ -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}

View File

@ -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}

View File

@ -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

View File

@ -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}

View File

@ -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

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