250716提交
|
|
@ -0,0 +1,7 @@
|
|||
/admin/dist
|
||||
/admin/package-lock.json
|
||||
/doc/~$名称释义.xlsx
|
||||
/doc/~$瘦之美大数据服务平台功能需求明细230619.xlsx
|
||||
/netcore/src/JT.Shop.Web.Entry/wwwroot/uploadfile
|
||||
/netcore/src/JT.Shop.Web.Entry/App_Data
|
||||
/.tgitconfig
|
||||
|
|
@ -0,0 +1,429 @@
|
|||
### 门店管理系统
|
||||
|
||||
- 使用EFCORE+Furion+NET7
|
||||
|
||||
- 依赖:redis
|
||||
|
||||
### 数据库
|
||||
|
||||
- mysql
|
||||
|
||||
- 数据库地址:123.249.79.37
|
||||
- 数据库端口号:3306
|
||||
|
||||
### 服务器
|
||||
|
||||
- IP:123.249.79.37
|
||||
-宝塔地址:<https://123.249.79.37:28351/8698ed07>
|
||||
|
||||
### 数据结构更新
|
||||
|
||||
1. 更改 CodeFirst 结构 [更改模型文档](https://learn.microsoft.com/zh-cn/ef/core/modeling/)
|
||||
2. 在程序包管理器控制台默认项目中选择“src\JT.Shop.Database.Migrations”
|
||||
```
|
||||
//添加迁移架构代码
|
||||
Add-Migration 新版本号 -Context DefaultDbContext
|
||||
|
||||
//以下应用适合生产环境的迁移方法
|
||||
|
||||
//方法一:生成一个从指定 from 迁移到指定 to 迁移的 SQL 脚本。警告:潜在的数据丢失方案。
|
||||
Script-Migration 上个版本号 新版本号
|
||||
|
||||
//方法二:幂等 SQL 脚本。此类脚本将在内部检查已经应用哪些迁移(通过迁移历史记录表),并且只应用缺少的迁移。
|
||||
Script-Migration -Idempotent
|
||||
```
|
||||
|
||||
### 目录结构
|
||||
|
||||
├── admin 总部管理后台
|
||||
│ ├── config 插件配置文件
|
||||
│ ├── dist 发布目录
|
||||
│ │ ├── css
|
||||
│ │ ├── img
|
||||
│ │ ├── js
|
||||
│ │ └── loading
|
||||
│ │ └── option2
|
||||
│ ├── docker docker配置参考文件
|
||||
│ │ └── nginx
|
||||
│ │ └── vhost
|
||||
│ ├── public 静态资源
|
||||
│ │ └── loading
|
||||
│ │ └── option2
|
||||
│ ├── src 源码
|
||||
│ │ ├── api api接口
|
||||
│ │ │ └── modular
|
||||
│ │ │ ├── main 业务接口
|
||||
│ │ │ └── system 系统接口
|
||||
│ │ ├── assets 静态资源
|
||||
│ │ │ ├── icons
|
||||
│ │ │ └── template
|
||||
│ │ ├── components 自定义组件
|
||||
│ │ │ ├── ArticleListContent
|
||||
│ │ │ ├── AvatarList
|
||||
│ │ │ ├── Charts
|
||||
│ │ │ ├── CountDown
|
||||
│ │ │ ├── DepartmentSelect
|
||||
│ │ │ ├── DescriptionList
|
||||
│ │ │ ├── Editor
|
||||
│ │ │ ├── Ellipsis
|
||||
│ │ │ ├── Exception
|
||||
│ │ │ ├── FooterToolbar
|
||||
│ │ │ ├── GlobalFooter
|
||||
│ │ │ ├── GlobalHeader
|
||||
│ │ │ ├── IconSelector
|
||||
│ │ │ ├── Menu
|
||||
│ │ │ ├── MultiTab
|
||||
│ │ │ ├── NProgress
|
||||
│ │ │ ├── NoticeIcon
|
||||
│ │ │ ├── NumberInfo
|
||||
│ │ │ ├── PageHeader
|
||||
│ │ │ ├── PageLoading
|
||||
│ │ │ ├── Result
|
||||
│ │ │ ├── Search
|
||||
│ │ │ ├── SettingDrawer
|
||||
│ │ │ ├── StandardFormRow
|
||||
│ │ │ ├── Table
|
||||
│ │ │ ├── TagSelect
|
||||
│ │ │ ├── TextArea
|
||||
│ │ │ ├── Tree
|
||||
│ │ │ ├── Trend
|
||||
│ │ │ ├── UserSelect
|
||||
│ │ │ ├── _util
|
||||
│ │ │ ├── tools
|
||||
│ │ │ ├── verifition
|
||||
│ │ │ │ ├── Verify
|
||||
│ │ │ │ └── utils
|
||||
│ │ │ └── xnComponents
|
||||
│ │ ├── config 默认样式和路由配置
|
||||
│ │ ├── core 插件
|
||||
│ │ │ ├── directives
|
||||
│ │ │ └── lazy_lib
|
||||
│ │ ├── layouts 布局配置
|
||||
│ │ ├── mock 模拟数据
|
||||
│ │ │ └── services
|
||||
│ │ ├── router 路由配置
|
||||
│ │ ├── store 状态管理
|
||||
│ │ │ └── modules
|
||||
│ │ ├── utils 工具类
|
||||
│ │ │ └── helper
|
||||
│ │ └── views 页面
|
||||
│ │ ├── components 组件
|
||||
│ │ ├── main 业务模块
|
||||
│ │ │ ├── business 门店和总部选择模块
|
||||
│ │ │ ├── device 设备管理
|
||||
│ │ │ │ ├── product 出货管理
|
||||
│ │ │ │ └── type 设备类型管理
|
||||
│ │ │ ├── measureresult 测量结果
|
||||
│ │ │ ├── order 订单管理
|
||||
│ │ │ ├── reguser 用户管理
|
||||
│ │ │ ├── sbody 部位管理
|
||||
│ │ │ │ └── type 部位类型管理
|
||||
│ │ │ ├── shop 门店管理
|
||||
│ │ │ │ ├── org 门店组织结构管理
|
||||
│ │ │ │ ├── pos 门店职位管理
|
||||
│ │ │ │ └── role 门店角色管理
|
||||
│ │ │ └── wx 公众号管理
|
||||
│ │ ├── mch 门店管理
|
||||
│ │ │ ├── account 门店账号管理
|
||||
│ │ │ │ └── pos 门店职位管理
|
||||
│ │ │ ├── body 门店部位管理
|
||||
│ │ │ ├── member 门店会员管理
|
||||
│ │ │ ├── product 门店产品管理
|
||||
│ │ │ │ ├── pay 购买记录
|
||||
│ │ │ │ └── result 使用记录
|
||||
│ │ │ └── serve 门店服务管理
|
||||
│ │ │ └── result 服务记录
|
||||
│ │ ├── system 系统模块
|
||||
│ │ │ ├── account 账户管理
|
||||
│ │ │ │ ├── center 个人中心
|
||||
│ │ │ │ │ └── page
|
||||
│ │ │ │ └── settings 个人配置
|
||||
│ │ │ │ └── securityItem
|
||||
│ │ │ ├── app 应用管理
|
||||
│ │ │ ├── config 配置管理
|
||||
│ │ │ ├── dashboard 仪表盘
|
||||
│ │ │ ├── dict 字典管理
|
||||
│ │ │ │ └── dictdata 字典数据
|
||||
│ │ │ ├── email 邮件管理
|
||||
│ │ │ ├── exception 异常页
|
||||
│ │ │ ├── file 文件管理
|
||||
│ │ │ ├── index 首页
|
||||
│ │ │ ├── log 日志管理
|
||||
│ │ │ │ ├── exlog 异常日志
|
||||
│ │ │ │ ├── oplog 操作日志
|
||||
│ │ │ │ ├── thirdlog 第三方日志
|
||||
│ │ │ │ └── vislog 访问日志
|
||||
│ │ │ ├── machine 机器管理
|
||||
│ │ │ ├── menu 菜单管理
|
||||
│ │ │ ├── notice 通知管理
|
||||
│ │ │ ├── noticeReceived 通知接收管理
|
||||
│ │ │ ├── org 组织管理
|
||||
│ │ │ ├── pos 职位管理
|
||||
│ │ │ ├── role 角色管理
|
||||
│ │ │ └── user 用户管理
|
||||
│ │ └── userLoginReg 用户注册登录
|
||||
│ └── tests 测试单元
|
||||
│ └── unit
|
||||
├── doc 文档
|
||||
├── mch 门店端管理平台
|
||||
│ ├── config 默认样式和路由配置
|
||||
│ ├── dist 发布目录
|
||||
│ │ ├── css
|
||||
│ │ ├── img
|
||||
│ │ ├── js
|
||||
│ │ └── loading
|
||||
│ │ └── option2
|
||||
│ ├── docker docker配置参考文件
|
||||
│ │ └── nginx
|
||||
│ │ └── vhost
|
||||
│ ├── public 静态资源
|
||||
│ │ └── loading
|
||||
│ │ └── option2
|
||||
│ ├── src 源码
|
||||
│ │ ├── api 接口
|
||||
│ │ │ └── modular
|
||||
│ │ │ ├── main 业务接口
|
||||
│ │ │ └── system 系统接口
|
||||
│ │ ├── assets 静态资源
|
||||
│ │ │ ├── icons
|
||||
│ │ │ └── template
|
||||
│ │ ├── components 自定义组件
|
||||
│ │ │ ├── ArticleListContent
|
||||
│ │ │ ├── AvatarList
|
||||
│ │ │ ├── Charts
|
||||
│ │ │ ├── CountDown
|
||||
│ │ │ ├── DepartmentSelect
|
||||
│ │ │ ├── DescriptionList
|
||||
│ │ │ ├── Editor
|
||||
│ │ │ ├── Ellipsis
|
||||
│ │ │ ├── Exception
|
||||
│ │ │ ├── FooterToolbar
|
||||
│ │ │ ├── GlobalFooter
|
||||
│ │ │ ├── GlobalHeader
|
||||
│ │ │ ├── IconSelector
|
||||
│ │ │ ├── Menu
|
||||
│ │ │ ├── MultiTab
|
||||
│ │ │ ├── NProgress
|
||||
│ │ │ ├── NoticeIcon
|
||||
│ │ │ ├── NumberInfo
|
||||
│ │ │ ├── PageHeader
|
||||
│ │ │ ├── PageLoading
|
||||
│ │ │ ├── Result
|
||||
│ │ │ ├── Search
|
||||
│ │ │ ├── SettingDrawer
|
||||
│ │ │ ├── StandardFormRow
|
||||
│ │ │ ├── Table
|
||||
│ │ │ ├── TagSelect
|
||||
│ │ │ ├── TextArea
|
||||
│ │ │ ├── Tree
|
||||
│ │ │ ├── Trend
|
||||
│ │ │ ├── UserSelect
|
||||
│ │ │ ├── _util
|
||||
│ │ │ ├── tools
|
||||
│ │ │ ├── verifition
|
||||
│ │ │ │ ├── Verify
|
||||
│ │ │ │ └── utils
|
||||
│ │ │ └── xnComponents
|
||||
│ │ ├── config 默认样式和路由配置
|
||||
│ │ ├── core 插件
|
||||
│ │ │ ├── directives
|
||||
│ │ │ └── lazy_lib
|
||||
│ │ ├── layouts 布局配置
|
||||
│ │ ├── mock 模拟数据
|
||||
│ │ │ └── services
|
||||
│ │ ├── router 路由配置
|
||||
│ │ ├── store 状态管理
|
||||
│ │ │ └── modules
|
||||
│ │ ├── utils 工具类
|
||||
│ │ │ └── helper
|
||||
│ │ └── views 页面
|
||||
│ │ ├── components 组件
|
||||
│ │ ├── main 业务模块
|
||||
│ │ │ ├── business 门店和总部选择模块
|
||||
│ │ │ ├── device 设备管理
|
||||
│ │ │ │ ├── product 出货管理
|
||||
│ │ │ │ └── type 设备类型管理
|
||||
│ │ │ ├── measureresult 测量结果管理
|
||||
│ │ │ ├── order 订单管理
|
||||
│ │ │ ├── reguser 用户管理
|
||||
│ │ │ ├── shop 门店管理
|
||||
│ │ │ │ ├── org 门店组织结构管理
|
||||
│ │ │ │ ├── pos 门店职位管理
|
||||
│ │ │ │ └── role 门店角色管理
|
||||
│ │ │ └── wx 公众号管理
|
||||
│ │ ├── mch 门店管理
|
||||
│ │ │ ├── account 门店账号管理
|
||||
│ │ │ │ └── pos 门店职位管理
|
||||
│ │ │ ├── body 门店部位管理
|
||||
│ │ │ ├── member 门店会员管理
|
||||
│ │ │ ├── product 门店产品管理
|
||||
│ │ │ │ ├── pay 购买记录
|
||||
│ │ │ │ └── result 使用记录
|
||||
│ │ │ ├── serve 门店服务管理
|
||||
│ │ │ │ └── result 服务记录
|
||||
│ │ │ └── set 门店设置
|
||||
│ │ ├── system 系统管理
|
||||
│ │ │ ├── account 用户管理
|
||||
│ │ │ │ ├── center 个人中心
|
||||
│ │ │ │ │ └── page
|
||||
│ │ │ │ └── settings 个人配置
|
||||
│ │ │ │ └── securityItem
|
||||
│ │ │ ├── app 应用管理
|
||||
│ │ │ ├── config 配置管理
|
||||
│ │ │ ├── dashboard 仪表盘
|
||||
│ │ │ ├── dict 字典管理
|
||||
│ │ │ │ └── dictdata 字典数据
|
||||
│ │ │ ├── email 邮件管理
|
||||
│ │ │ ├── exception 异常页
|
||||
│ │ │ ├── file 文件管理
|
||||
│ │ │ ├── index 首页
|
||||
│ │ │ ├── log 日志管理
|
||||
│ │ │ │ ├── exlog 异常日志
|
||||
│ │ │ │ ├── oplog 操作日志
|
||||
│ │ │ │ ├── thirdlog 第三方日志
|
||||
│ │ │ │ └── vislog 访问日志
|
||||
│ │ │ ├── machine 机器管理
|
||||
│ │ │ ├── menu 菜单管理
|
||||
│ │ │ ├── notice 通知管理
|
||||
│ │ │ ├── noticeReceived 通知接收管理
|
||||
│ │ │ ├── org 组织管理
|
||||
│ │ │ ├── pos 职位管理
|
||||
│ │ │ ├── role 角色管理
|
||||
│ │ │ └── user 用户管理
|
||||
│ │ └── userLoginReg 用户注册登录
|
||||
│ └── tests 测试单元
|
||||
│ └── unit
|
||||
└── netcore .NET7项目
|
||||
└── src 源代码
|
||||
├── JT.Shop.Application 业务模块
|
||||
│ ├── JobService 定时任务
|
||||
│ ├── Mapper DTO映射
|
||||
│ └── Service 服务接口
|
||||
│ ├── BaseCommon 基础服务
|
||||
│ │ ├── Http http请求封装接口
|
||||
│ │ ├── QrCode 二维码封装接口
|
||||
│ │ ├── SMS 短信封装接口
|
||||
│ │ └── Upload 文件上传接口
|
||||
│ ├── Business 总部业务服务
|
||||
│ │ ├── BodyType 身体部份管理
|
||||
│ │ ├── Clerk 店员管理
|
||||
│ │ ├── Device 设备管理
|
||||
│ │ │ └── Type 设备类型管理
|
||||
│ │ ├── Member 会员管理
|
||||
│ │ ├── Org 组织管理
|
||||
│ │ ├── OutProduct 出货管理
|
||||
│ │ ├── Pos 职位管理
|
||||
│ │ ├── Product 产品管理
|
||||
│ │ ├── Retailer 分销管理,未使用
|
||||
│ │ ├── Role 角色管理
|
||||
│ │ ├── Serve 服务管理
|
||||
│ │ ├── Shop 门店管理
|
||||
│ │ └── WX 公众号管理
|
||||
│ ├── Mch 门店业务服务
|
||||
│ │ ├── Account 门店账号管理
|
||||
│ │ ├── Body 门店部位管理
|
||||
│ │ ├── Clerk 门店店员管理
|
||||
│ │ ├── Conf 门店配置管理
|
||||
│ │ ├── Device 门店设备管理
|
||||
│ │ ├── Member 门店会员管理
|
||||
│ │ ├── Product 门店产品管理
|
||||
│ │ └── Serve 门店服务管理
|
||||
│ ├── ShopApi 门店H5接口
|
||||
│ │ ├── Device 门店设备管理
|
||||
│ │ ├── MP 门店公众号管理
|
||||
│ │ ├── Member 门店会员管理
|
||||
│ │ ├── Notice 门店通知管理
|
||||
│ │ ├── Report 门店报表管理
|
||||
│ │ ├── Shop 门店管理
|
||||
│ │ └── User 门店用户管理
|
||||
│ ├── System 系统接口服务
|
||||
│ │ ├── App 应用管理
|
||||
│ │ ├── Auth 登录相关管理
|
||||
│ │ ├── Base 通用方法
|
||||
│ │ ├── Cache 缓存管理
|
||||
│ │ ├── Captcha 验证码管理
|
||||
│ │ │ ├── ClickWord
|
||||
│ │ │ └── General
|
||||
│ │ ├── Config 配置管理
|
||||
│ │ ├── Dict 字典管理
|
||||
│ │ ├── Emp 员工管理
|
||||
│ │ ├── Enum 枚举管理
|
||||
│ │ ├── File 文件管理
|
||||
│ │ ├── Forms 表单管理
|
||||
│ │ ├── Hubs 聊天管理
|
||||
│ │ ├── Logger 日志管理
|
||||
│ │ ├── Menu 菜单管理
|
||||
│ │ ├── Message 消息管理
|
||||
│ │ ├── Monitor 监控管理
|
||||
│ │ ├── Notice 通知管理
|
||||
│ │ ├── OnlineUser 在线用户管理
|
||||
│ │ ├── Org 组织管理
|
||||
│ │ ├── Pos 职位管理
|
||||
│ │ ├── Role 角色管理
|
||||
│ │ ├── StepBody 步骤管理
|
||||
│ │ ├── System 系统管理
|
||||
│ │ ├── Timer 定时任务管理
|
||||
│ │ └── User 用户管理
|
||||
│ ├── Test 测试单元
|
||||
│ └── UserApi 门店用户H5接口
|
||||
│ ├── Level 标准等级管理
|
||||
│ ├── Result 测量结果管理
|
||||
│ └── User 账户管理
|
||||
├── JT.Shop.Core 框架核心,引用Nuget包
|
||||
│ ├── Filter 拦截器
|
||||
│ └── Util 辅助类
|
||||
├── JT.Shop.Database.Migrations 数据库迁移
|
||||
│ ├── Migrations 迁移文件
|
||||
│ └── sql sql脚本
|
||||
├── JT.Shop.Domain 领域模型
|
||||
│ ├── Entity 数据库实体
|
||||
│ │ ├── Business 业务层实体
|
||||
│ │ ├── Client 用户层实体
|
||||
│ │ ├── SeedData 种子数据
|
||||
│ │ ├── Shop 门店层实体
|
||||
│ │ └── System 系统层实体
|
||||
│ │ └── WorkflowEntity
|
||||
│ ├── ErrCode 错误码
|
||||
│ ├── Options 选项配置
|
||||
│ └── Properties 配置文件
|
||||
├── JT.Shop.Domain.Shared 常用枚举和常量定义
|
||||
│ ├── Const 常量定义
|
||||
│ ├── Enum 枚举定义
|
||||
│ └── Properties 配置文件
|
||||
├── JT.Shop.EntityFramework.Core EntityFrameworkCore管理
|
||||
│ ├── DbContexts 数据库配置
|
||||
│ ├── Extensions 数据库扩展
|
||||
│ └── Repository 仓储
|
||||
├── JT.Shop.EventBus 事件总线
|
||||
│ └── Service 订阅者
|
||||
│ ├── Logger 日志订阅
|
||||
│ └── Report 统计订阅
|
||||
├── JT.Shop.HealthCheck 健康检查,未使用
|
||||
│ └── Extensions
|
||||
├── JT.Shop.Web.Entry web层
|
||||
│ ├── App_Data 缓存文件
|
||||
│ │ └── SenparcTraceLog
|
||||
│ ├── Controllers 控制器
|
||||
│ ├── Handlers 中间件
|
||||
│ ├── Properties 发布配置
|
||||
│ │ └── PublishProfiles
|
||||
│ ├── Views 视图
|
||||
│ │ ├── Auth 公众号授权相关
|
||||
│ │ ├── Home 首页
|
||||
│ │ ├── Qr 二维码入口相关
|
||||
│ │ └── Shared 共享页面
|
||||
│ └── wwwroot 静态资源
|
||||
│ ├── css
|
||||
│ ├── image
|
||||
│ ├── js
|
||||
│ ├── tpl
|
||||
│ ├── uploadfile
|
||||
│ │ └── images
|
||||
│ │ ├── 20240309
|
||||
│ │ ├── 20240417
|
||||
│ │ └── share
|
||||
│ │ └── 202404
|
||||
│ └── vant
|
||||
└── JT.Shop.WeiXin 微信公众号
|
||||
└── Service 微信公众号服务
|
||||
└── MP 微信公众号服务
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
> 1%
|
||||
last 2 versions
|
||||
not ie <= 10
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
[*]
|
||||
charset=utf-8
|
||||
end_of_line=lf
|
||||
insert_final_newline=false
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[*.svg]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[*.js.map]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[*.less]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[*.vue]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
[{.analysis_options,*.yml,*.yaml}]
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
NODE_ENV=production
|
||||
VUE_APP_PREVIEW=false
|
||||
VUE_APP_API_BASE_URL=http://imd.pcxbc.com
|
||||
VUE_APP_SOCKET_BASE_URL=ws://imd.pcxbc.com
|
||||
VUE_APP_MCH_URL=http://mch.pcxbc.com
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
NODE_ENV=development
|
||||
VUE_APP_PREVIEW=true
|
||||
VUE_APP_API_BASE_URL=https://localhost:7218
|
||||
VUE_APP_SOCKET_BASE_URL=ws://localhost:7218
|
||||
VUE_APP_MCH_URL=http://localhost:82
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
NODE_ENV=production
|
||||
VUE_APP_PREVIEW=false
|
||||
VUE_APP_API_BASE_URL=http://imd.pcxbc.com
|
||||
VUE_APP_SOCKET_BASE_URL=ws://imd.pcxbc.com
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true
|
||||
},
|
||||
'extends': [
|
||||
'plugin:vue/strongly-recommended',
|
||||
'@vue/standard'
|
||||
],
|
||||
rules: {
|
||||
'no-console': 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
'generator-star-spacing': 'off',
|
||||
'no-mixed-operators': 0,
|
||||
'vue/max-attributes-per-line': [
|
||||
2,
|
||||
{
|
||||
'singleline': 5,
|
||||
'multiline': {
|
||||
'max': 1,
|
||||
'allowFirstLine': false
|
||||
}
|
||||
}
|
||||
],
|
||||
'vue/attribute-hyphenation': 0,
|
||||
'vue/html-self-closing': 0,
|
||||
'vue/component-name-in-template-casing': 0,
|
||||
'vue/html-closing-bracket-spacing': 0,
|
||||
'vue/singleline-html-element-content-newline': 0,
|
||||
'vue/no-unused-components': 0,
|
||||
'vue/multiline-html-element-content-newline': 0,
|
||||
'vue/no-use-v-if-with-v-for': 0,
|
||||
'vue/html-closing-bracket-newline': 0,
|
||||
'vue/no-parsing-error': 0,
|
||||
'no-tabs': 0,
|
||||
'quotes': [
|
||||
2,
|
||||
'single',
|
||||
{
|
||||
'avoidEscape': true,
|
||||
'allowTemplateLiterals': true
|
||||
}
|
||||
],
|
||||
'semi': [
|
||||
2,
|
||||
'never',
|
||||
{
|
||||
'beforeStatementContinuationChars': 'never'
|
||||
}
|
||||
],
|
||||
'no-delete-var': 2,
|
||||
'prefer-const': [
|
||||
2,
|
||||
{
|
||||
'ignoreReadBeforeAssign': false
|
||||
}
|
||||
],
|
||||
'template-curly-spacing': 'off',
|
||||
'indent': 'off',
|
||||
"space-before-function-paren": 0,
|
||||
'no-multi-spaces': 2, //不能用多余的空格
|
||||
},
|
||||
parserOptions: {
|
||||
parser: 'babel-eslint'
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: [
|
||||
'**/__tests__/*.{j,t}s?(x)',
|
||||
'**/tests/unit/**/*.spec.{j,t}s?(x)'
|
||||
],
|
||||
env: {
|
||||
jest: true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
node_modules/
|
||||
.idea/
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"printWidth": 120,
|
||||
"semi": false,
|
||||
"singleQuote": true
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
language: node_js
|
||||
node_js:
|
||||
- 10.15.0
|
||||
cache: yarn
|
||||
script:
|
||||
- yarn
|
||||
- yarn run lint --no-fix && yarn run build
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
FROM nginx
|
||||
|
||||
COPY ./dist /usr/share/nginx/html
|
||||
# 更新配置
|
||||
COPY ./docker/nginx/vhost/default.conf /etc/nginx/conf.d
|
||||
# 暴露端口
|
||||
EXPOSE 80
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2018 Anan Yang
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV)
|
||||
|
||||
const plugins = []
|
||||
if (IS_PROD) {
|
||||
plugins.push('transform-remove-console')
|
||||
}
|
||||
|
||||
// lazy load ant-design-vue
|
||||
// if your use import on Demand, Use this code
|
||||
plugins.push(['import', {
|
||||
'libraryName': 'ant-design-vue',
|
||||
'libraryDirectory': 'es',
|
||||
'style': true // `style: true` 会加载 less 文件
|
||||
}])
|
||||
|
||||
module.exports = {
|
||||
presets: [
|
||||
[
|
||||
'@babel/preset-env',
|
||||
{
|
||||
'useBuiltIns': 'entry',
|
||||
'corejs': 3
|
||||
}
|
||||
],
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
],
|
||||
plugins
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
#! /bin/bash
|
||||
## author:liuzl
|
||||
cp ./docker/nginx/vhost/hccz.conf /var/jenkins_home/nginx/conf
|
||||
#docker stop hccz
|
||||
#docker rm hccz
|
||||
docker build -t hccz:v1 .
|
||||
docker run -d -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -p 8085:80 --restart=unless-stopped --net=mynet --name=hccz hccz:v1
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
const ThemeColorReplacer = require('webpack-theme-color-replacer')
|
||||
const generate = require('@ant-design/colors/lib/generate').default
|
||||
|
||||
const getAntdSerials = (color) => {
|
||||
// 淡化(即less的tint)
|
||||
const lightens = new Array(9).fill().map((t, i) => {
|
||||
return ThemeColorReplacer.varyColor.lighten(color, i / 10)
|
||||
})
|
||||
const colorPalettes = generate(color)
|
||||
const rgb = ThemeColorReplacer.varyColor.toNum3(color.replace('#', '')).join(',')
|
||||
return lightens.concat(colorPalettes).concat(rgb)
|
||||
}
|
||||
|
||||
const themePluginOption = {
|
||||
fileName: 'css/theme-colors-[contenthash:8].css',
|
||||
matchColors: getAntdSerials('#FA541C'), // 主色系列
|
||||
// 改变样式选择器,解决样式覆盖问题
|
||||
changeSelector (selector) {
|
||||
switch (selector) {
|
||||
case '.ant-calendar-today .ant-calendar-date':
|
||||
return ':not(.ant-calendar-selected-date):not(.ant-calendar-selected-day)' + selector
|
||||
case '.ant-btn:focus,.ant-btn:hover':
|
||||
return '.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger)'
|
||||
case '.ant-btn.active,.ant-btn:active':
|
||||
return '.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger)'
|
||||
case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon':
|
||||
case '.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon':
|
||||
return ':not(.ant-steps-item-process)' + selector
|
||||
case '.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-submenu-selected,.ant-menu-horizontal>.ant-menu-submenu:hover':
|
||||
case '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal > .ant-menu-submenu-selected,.ant-menu-horizontal > .ant-menu-submenu:hover':
|
||||
return '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover'
|
||||
case '.ant-menu-horizontal > .ant-menu-item-selected > a':
|
||||
case '.ant-menu-horizontal>.ant-menu-item-selected>a':
|
||||
return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a'
|
||||
case '.ant-menu-horizontal > .ant-menu-item > a:hover':
|
||||
case '.ant-menu-horizontal>.ant-menu-item>a:hover':
|
||||
return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover'
|
||||
default :
|
||||
return selector
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const createThemeColorReplacerPlugin = () => new ThemeColorReplacer(themePluginOption)
|
||||
|
||||
module.exports = createThemeColorReplacerPlugin
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
version: '3.4'
|
||||
|
||||
services:
|
||||
nginx:
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: ./docker/nginx/Dockerfile
|
||||
image: admin_net_web:1.2
|
||||
ports:
|
||||
- 81:80
|
||||
restart: "always"
|
||||
volumes:
|
||||
- node_modules:/build/node_modules:rw
|
||||
# network_mode: host #宿主网络,与宿主机共享网络,安全性不佳,本地开发使用,淦,不支持windows,仅支持Linux
|
||||
volumes:
|
||||
node_modules:
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
1、安装URL重写模块,https://www.iis.net/downloads/microsoft/url-rewrite
|
||||
2、安装ARR模块,https://www.iis.net/downloads/microsoft/application-request-routing
|
||||
3、打开ARR,启动代理
|
||||
4、点击URL重写
|
||||
5、增加服务器变量:HTTP_X_ORIGINAL_HOST
|
||||
6、把web.config内容修改为自己的接口地址,然后放到主目录下
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
FROM nginx
|
||||
EXPOSE 80
|
||||
EXPOSE 443
|
||||
COPY ./dist /usr/share/nginx/html
|
||||
# 更新配置
|
||||
COPY ./docker/nginx/vhost/default.conf /etc/nginx/conf.d
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
user nginx;
|
||||
worker_processes 1;
|
||||
pid /var/run/nginx.pid;
|
||||
error_log /var/log/nginx/nginx.error.log warn;
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||
'$status $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||
access_log /dev/null;
|
||||
#access_log /var/log/nginx/nginx.access.log main;
|
||||
sendfile on;
|
||||
#tcp_nopush on;
|
||||
keepalive_timeout 65;
|
||||
#gzip on;
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
### 说明
|
||||
|
||||
把此目录下的文件放到dist下的主目录中
|
||||
|
||||
nginx.conf 适用于直接发布到主机nginx中
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# 此配置针对docker中的nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name hccz.pcxbc.com;
|
||||
root /usr/share/nginx/html;
|
||||
index index.php index.html index.htm;
|
||||
access_log /dev/null;
|
||||
error_log /var/log/nginx/default.error.log warn;
|
||||
|
||||
# redirect server error pages to the static page /50x.html
|
||||
#
|
||||
#error_page 500 502 503 504 /50x.html;
|
||||
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
|
||||
location /api {
|
||||
#如果服务器要获取客户端真实IP,可以用下三句设置主机头和客户端真实地址
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
# rewrite ^/api/(.*)$ /$1 break; #重写
|
||||
proxy_pass http://hcczapi; #ybdevicev2是docker中的服务名称,这里不能直接放域名,要么是docker名称,要么是ip+端口的形式
|
||||
}
|
||||
location /hubs/ {
|
||||
proxy_pass http://hcczapi;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
#proxy_read_timeout 600s;#设置websocket超时时间
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# 此配置针对本地nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name hccz.pcxbc.com;
|
||||
index index.php index.html index.htm;
|
||||
access_log /dev/null;
|
||||
error_log /www/wwwlogs/hccz.error.log warn;
|
||||
|
||||
# redirect server error pages to the static page /50x.html
|
||||
#
|
||||
#error_page 500 502 503 504 /50x.html;
|
||||
|
||||
location / {
|
||||
#如果服务器要获取客户端真实IP,可以用下三句设置主机头和客户端真实地址
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
# rewrite ^/api/(.*)$ /$1 break; #重写
|
||||
proxy_pass http://localhost:8085;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
server {
|
||||
listen 80;
|
||||
server_name huafei-dev.pcxbc.com;
|
||||
root /opt/jenkens/nginx/html/hc/hf/development/web;
|
||||
index index.php index.html index.htm;
|
||||
access_log /dev/null;
|
||||
error_log /www/wwwlogs/huafei-dev.error.log warn;
|
||||
|
||||
# redirect server error pages to the static page /50x.html
|
||||
#
|
||||
#error_page 500 502 503 504 /50x.html;
|
||||
|
||||
location / {
|
||||
root /opt/jenkens/nginx/html/hc/hf/development/web;
|
||||
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
|
||||
location /api/ {
|
||||
#如果服务器要获取客户端真实IP,可以用下三句设置主机头和客户端真实地址
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
# rewrite ^/api/(.*)$ /$1 break; #重写
|
||||
proxy_pass http://192.168.1.147:9001; #ybdevicev2是docker中的服务名称,这里不能直接放域名,要么是docker名称,要么是ip+端口的形式
|
||||
}
|
||||
location /bapi/ {
|
||||
#如果服务器要获取客户端真实IP,可以用下三句设置主机头和客户端真实地址
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
# rewrite ^/api/(.*)$ /$1 break; #重写
|
||||
proxy_pass http://192.168.1.147:9001; #ybdevicev2是docker中的服务名称,这里不能直接放域名,要么是docker名称,要么是ip+端口的形式
|
||||
}
|
||||
location /hubs/ {
|
||||
proxy_pass http://192.168.1.147:9001;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
#proxy_read_timeout 600s;#设置websocket超时时间
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<system.webServer>
|
||||
<rewrite>
|
||||
<rules>
|
||||
<rule name="api" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
|
||||
<match url="*api/*" />
|
||||
<action type="Rewrite" url="https://test.pcxbc.com/api/{R:2}" />
|
||||
<serverVariables>
|
||||
<set name="HTTP_X_ORIGINAL_HOST" value="{HTTP_HOST}" />
|
||||
</serverVariables>
|
||||
</rule>
|
||||
<rule name="hubs" patternSyntax="Wildcard" stopProcessing="true">
|
||||
<match url="*hubs/*" />
|
||||
<action type="Rewrite" url="https://test.pcxbc.com/hubs/{R:2}" />
|
||||
</rule>
|
||||
<rule name="index" enabled="true" stopProcessing="true">
|
||||
<match url="^((?!(api)).)*$" />
|
||||
<conditions>
|
||||
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
|
||||
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
|
||||
</conditions>
|
||||
<action type="Rewrite" url="/" />
|
||||
</rule>
|
||||
</rules>
|
||||
</rewrite>
|
||||
</system.webServer>
|
||||
</configuration>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
module.exports = {
|
||||
moduleFileExtensions: [
|
||||
'js',
|
||||
'jsx',
|
||||
'json',
|
||||
'vue'
|
||||
],
|
||||
transform: {
|
||||
'^.+\\.vue$': 'vue-jest',
|
||||
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
|
||||
'^.+\\.jsx?$': 'babel-jest'
|
||||
},
|
||||
moduleNameMapper: {
|
||||
'^@/(.*)$': '<rootDir>/src/$1'
|
||||
},
|
||||
snapshotSerializers: [
|
||||
'jest-serializer-vue'
|
||||
],
|
||||
testMatch: [
|
||||
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
|
||||
],
|
||||
testURL: 'http://localhost/'
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": ["src/*"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules", "dist"],
|
||||
"include": ["src/**/*"]
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"name": "vue-antd-pro",
|
||||
"version": "3.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"test:unit": "vue-cli-service test:unit",
|
||||
"build:preview": "vue-cli-service build --mode preview",
|
||||
"postinstall": "opencollective-postinstall"
|
||||
},
|
||||
"dependencies": {
|
||||
"-": "^0.0.1",
|
||||
"@antv/data-set": "^0.11.8",
|
||||
"@antv/g2": "^4.2.2",
|
||||
"@jiaminghi/data-view": "^2.10.0",
|
||||
"@microsoft/signalr": "^5.0.5",
|
||||
"ant-design-vue": "1.7.4",
|
||||
"axios": "^0.19.0",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"clipboard": "^2.0.6",
|
||||
"compression-webpack-plugin": "5.0.1",
|
||||
"core-js": "^3.1.2",
|
||||
"crypto-js": "^4.0.0",
|
||||
"default-passive-events": "^1.0.10",
|
||||
"enquire.js": "^2.1.6",
|
||||
"font-awesome": "^4.7.0",
|
||||
"jquery": "^3.5.1",
|
||||
"jsbarcode": "^3.11.3",
|
||||
"k-form-design": "^3.7.3",
|
||||
"leaflet": "^1.7.1",
|
||||
"leaflet.pm": "^2.2.0",
|
||||
"linq": "^3.2.3",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"lodash.get": "^4.4.2",
|
||||
"lodash.pick": "^4.4.0",
|
||||
"md5": "^2.2.1",
|
||||
"mockjs2": "1.0.8",
|
||||
"moment": "^2.24.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"print-js": "^1.0.63",
|
||||
"qrcodejs2": "^0.0.2",
|
||||
"raphael": "^2.3.0",
|
||||
"screenfull": "^5.1.0",
|
||||
"vue": "^2.6.10",
|
||||
"vue-clipboard2": "^0.2.1",
|
||||
"vue-codemirror-lite": "^1.0.4",
|
||||
"vue-cropper": "0.4.9",
|
||||
"vue-json-viewer": "2",
|
||||
"vue-ls": "^3.2.1",
|
||||
"vue-quill-editor": "^3.0.6",
|
||||
"vue-router": "^3.1.2",
|
||||
"vue-svg-component-runtime": "^1.0.1",
|
||||
"vue2-leaflet": "^2.7.0",
|
||||
"vuedraggable": "^2.23.2",
|
||||
"vuex": "^3.1.1",
|
||||
"wangeditor": "^3.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ant-design/colors": "^3.2.1",
|
||||
"@vue/cli-plugin-babel": "^4.0.4",
|
||||
"@vue/cli-plugin-eslint": "^4.0.4",
|
||||
"@vue/cli-plugin-router": "^4.0.4",
|
||||
"@vue/cli-plugin-unit-jest": "^4.0.4",
|
||||
"@vue/cli-plugin-vuex": "^4.0.4",
|
||||
"@vue/cli-service": "^4.0.4",
|
||||
"@vue/eslint-config-prettier": "^5.0.0",
|
||||
"@vue/eslint-config-standard": "^4.0.0",
|
||||
"@vue/test-utils": "^1.0.0-beta.29",
|
||||
"babel-eslint": "^10.0.1",
|
||||
"babel-plugin-import": "^1.13.0",
|
||||
"babel-plugin-transform-remove-console": "^6.9.4",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-plugin-html": "^5.0.0",
|
||||
"eslint-plugin-prettier": "^3.1.0",
|
||||
"eslint-plugin-vue": "^5.2.3",
|
||||
"less": "^3.0.4",
|
||||
"less-loader": "^5.0.0",
|
||||
"opencollective": "^1.0.3",
|
||||
"opencollective-postinstall": "^2.0.2",
|
||||
"prettier": "^1.18.2",
|
||||
"vue-svg-icon-loader": "^2.1.1",
|
||||
"vue-template-compiler": "^2.6.10",
|
||||
"webpack-theme-color-replacer": "1.3.18"
|
||||
},
|
||||
"collective": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/ant-design-pro-vue"
|
||||
},
|
||||
"main": ".eslintrc.js",
|
||||
"directories": {
|
||||
"test": "tests"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"description": ""
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
module.exports = {
|
||||
plugins: {
|
||||
autoprefixer: {}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
|
@ -0,0 +1,40 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh-cmn-Hans">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta http-equiv="Access-Control-Allow-Origin" content="*">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta name="referrer" content="no-referrer" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title>管理平台</title>
|
||||
<style>.first-loading-wrp{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:420px;height:100%}.first-loading-wrp>h1{font-size:128px}.first-loading-wrp .loading-wrp{padding:98px;display:flex;justify-content:center;align-items:center}.dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:32px;width:32px;height:32px;box-sizing:border-box}.dot i{width:14px;height:14px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.dot i:nth-child(1){top:0;left:0}.dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style>
|
||||
<!-- require cdn assets css -->
|
||||
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
|
||||
<link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
|
||||
<% } %>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app">
|
||||
<div class="first-loading-wrp">
|
||||
<!-- <h1>YB.PayDevice</h1> -->
|
||||
<div class="loading-wrp">
|
||||
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
||||
</div>
|
||||
<div style="display: flex; justify-content: center; align-items: center;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- require cdn assets js -->
|
||||
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
|
||||
<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
|
||||
<% } %>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1 @@
|
|||
#preloadingAnimation{position:fixed;left:0;top:0;height:100%;width:100%;background:#ffffff;user-select:none;z-index: 9999;overflow: hidden}.lds-roller{display:inline-block;position:relative;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;}.lds-roller div{animation:lds-roller 1.2s cubic-bezier(0.5,0,0.5,1) infinite;transform-origin:32px 32px;}.lds-roller div:after{content:" ";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#13c2c2;margin:-3px 0 0 -3px;}.lds-roller div:nth-child(1){animation-delay:-0.036s;}.lds-roller div:nth-child(1):after{top:50px;left:50px;}.lds-roller div:nth-child(2){animation-delay:-0.072s;}.lds-roller div:nth-child(2):after{top:54px;left:45px;}.lds-roller div:nth-child(3){animation-delay:-0.108s;}.lds-roller div:nth-child(3):after{top:57px;left:39px;}.lds-roller div:nth-child(4){animation-delay:-0.144s;}.lds-roller div:nth-child(4):after{top:58px;left:32px;}.lds-roller div:nth-child(5){animation-delay:-0.18s;}.lds-roller div:nth-child(5):after{top:57px;left:25px;}.lds-roller div:nth-child(6){animation-delay:-0.216s;}.lds-roller div:nth-child(6):after{top:54px;left:19px;}.lds-roller div:nth-child(7){animation-delay:-0.252s;}.lds-roller div:nth-child(7):after{top:50px;left:14px;}.lds-roller div:nth-child(8){animation-delay:-0.288s;}.lds-roller div:nth-child(8):after{top:45px;left:10px;}#preloadingAnimation .load-tips{color: #13c2c2;font-size:2rem;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:80px;text-align:center;width:400px;height:64px;} @keyframes lds-roller{0%{transform:rotate(0deg);} 100%{transform:rotate(360deg);}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
<div id="preloadingAnimation"><div class=lds-roller><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class=load-tips>Loading</div></div>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<div class="preloading-animate">
|
||||
<div class="preloading-wrapper">
|
||||
<svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="46.079" cy="69.992" r="6" fill="#9DF871"><animate attributeName="cx" values="57.72542485937369;29.774575140626318" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="73.77641290737884;64.69463130731182" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#9DF871;#E0FF77" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="29.775" cy="52.449" r="6" fill="#E0FF77"><animate attributeName="cx" values="29.774575140626318;29.774575140626315" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="64.69463130731182;35.30536869268818" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#E0FF77;#DE9DD6" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="41.421" cy="31.521" r="6" fill="#DE9DD6"><animate attributeName="cx" values="29.774575140626315;57.72542485937368" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="35.30536869268818;26.22358709262116" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#DE9DD6;#FF708E" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="64.923" cy="36.13" r="6" fill="#FF708E"><animate attributeName="cx" values="57.72542485937368;75" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="26.22358709262116;49.99999999999999" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#FF708E;#51CACC" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle></svg>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1 @@
|
|||
.preloading-animate{background:#ffffff;width:100%;height:100%;position:fixed;left:0;top:0;z-index:299;}.preloading-animate .preloading-wrapper{position:absolute;width:5rem;height:5rem;left:50%;top:50%;transform:translate(-50%,-50%);}.preloading-animate .preloading-wrapper .preloading-balls{font-size:5rem;}
|
||||
|
|
@ -0,0 +1 @@
|
|||
<svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="46.079" cy="69.992" r="6" fill="#9DF871"><animate attributeName="cx" values="57.72542485937369;29.774575140626318" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="73.77641290737884;64.69463130731182" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#9DF871;#E0FF77" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="29.775" cy="52.449" r="6" fill="#E0FF77"><animate attributeName="cx" values="29.774575140626318;29.774575140626315" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="64.69463130731182;35.30536869268818" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#E0FF77;#DE9DD6" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="41.421" cy="31.521" r="6" fill="#DE9DD6"><animate attributeName="cx" values="29.774575140626315;57.72542485937368" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="35.30536869268818;26.22358709262116" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#DE9DD6;#FF708E" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="64.923" cy="36.13" r="6" fill="#FF708E"><animate attributeName="cx" values="57.72542485937368;75" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="26.22358709262116;49.99999999999999" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#FF708E;#51CACC" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle></svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
|
|
@ -0,0 +1,47 @@
|
|||
<template>
|
||||
<a-config-provider :locale="locale">
|
||||
<div id="app" class="app app1">
|
||||
<router-view class="scrollbar"/>
|
||||
</div>
|
||||
</a-config-provider>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
|
||||
import { AppDeviceEnquire } from '@/utils/mixin'
|
||||
|
||||
export default {
|
||||
mixins: [AppDeviceEnquire],
|
||||
data () {
|
||||
return {
|
||||
locale: zhCN
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.app {
|
||||
overflow: auto;
|
||||
border : none;
|
||||
}
|
||||
.scrollbar {
|
||||
margin: 0 auto;
|
||||
}
|
||||
.app1::-webkit-scrollbar {
|
||||
/*滚动条整体样式*/
|
||||
width : 8px; /*高宽分别对应横竖滚动条的尺寸*/
|
||||
}
|
||||
.app1::-webkit-scrollbar-thumb {
|
||||
/*滚动条里面小方块*/
|
||||
border-radius: 6px;
|
||||
background : #aaa;
|
||||
}
|
||||
.app1::-webkit-scrollbar-track {
|
||||
/*滚动条里面轨道*/
|
||||
border-radius: 8px;
|
||||
background : #FFFFFF;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 获取列表
|
||||
export function List(parameter) {
|
||||
return axios({
|
||||
url: '/business/clerk/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改状态
|
||||
export function SetStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/clerk/setstatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 添加
|
||||
export function AddSubmit(parameter) {
|
||||
return axios({
|
||||
url: '/business/clerk/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 编辑
|
||||
export function EditSubmit(parameter) {
|
||||
return axios({
|
||||
url: '/business/clerk/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 获取使用列表
|
||||
export function ResultList(parameter) {
|
||||
return axios({
|
||||
url: '/business/clerk/resultlist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 职位列表
|
||||
export function PosList(parameter) {
|
||||
return axios({
|
||||
url: '/business/clerk/poslist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 职位列表
|
||||
export function PosAllList(parameter) {
|
||||
return axios({
|
||||
url: '/business/clerk/allposlist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 职位提交
|
||||
export function PosSubmit(parameter) {
|
||||
return axios({
|
||||
url: '/business/clerk/possubmit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
// 密码重置
|
||||
export function ShopUserPwdZZ(parameter) {
|
||||
return axios({
|
||||
url: 'mch/account/ShopUserPwd',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
// 身体部位管理
|
||||
import { axios } from '@/utils/request'
|
||||
// 获取身体部位列表
|
||||
export function List(parameter) {
|
||||
return axios({
|
||||
url: '/business/body/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改身体部位状态
|
||||
export function SetStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/body/setstatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改身体部位信息
|
||||
export function Submit(parameter) {
|
||||
return axios({
|
||||
url: '/business/body/submit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 获取身体部位类型列表
|
||||
export function TypeList(parameter) {
|
||||
return axios({
|
||||
url: '/business/body/type/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 身体部位类型信息修改
|
||||
export function SubmitType(parameter) {
|
||||
return axios({
|
||||
url: '/business/body/type/submit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 身体部位类型状态修改
|
||||
export function SetTypeStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/body/type/setstatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 获取身体部位类型列表
|
||||
export function TypeAll(parameter) {
|
||||
return axios({
|
||||
url: '/business/body/type/all',
|
||||
method: 'get',
|
||||
param: parameter
|
||||
})
|
||||
}
|
||||
// (总部配置的部位配置)获取身体部位列表
|
||||
export function BodyList(parameter) {
|
||||
return axios({
|
||||
url: '/business/body/businessbodylist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// (总部配置的部位配置)身体部位提交
|
||||
export function BodySubmit(parameter) {
|
||||
return axios({
|
||||
url: '/business/body/businessbodysubmit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
// 客户管理接口定义
|
||||
import { axios } from '@/utils/request'
|
||||
// 分销商列表
|
||||
export function BusinessList(parameter) {
|
||||
return axios({
|
||||
url: '/business/account/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 所有分销商列表
|
||||
export function BusinessAllList(parameter) {
|
||||
return axios({
|
||||
url: '/business/account/alllist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 分销商提交
|
||||
export function BusinessSubmit(parameter) {
|
||||
return axios({
|
||||
url: '/business/account/submit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 获取设备列表
|
||||
export function List(parameter) {
|
||||
return axios({
|
||||
url: '/business/device/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改设备状态
|
||||
export function SetStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/device/setstatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改设备信息
|
||||
export function Submit(parameter) {
|
||||
return axios({
|
||||
url: '/business/device/submit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 获取设备类型列表
|
||||
export function TypeList(parameter) {
|
||||
return axios({
|
||||
url: '/business/device/type/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备类型信息修改
|
||||
export function SubmitType(parameter) {
|
||||
return axios({
|
||||
url: '/business/device/type/submit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 获取设备出货列表
|
||||
export function ProductList(parameter) {
|
||||
return axios({
|
||||
url: '/business/outproduct/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备出货修改
|
||||
export function SubmitProduct(parameter) {
|
||||
return axios({
|
||||
url: '/business/outproduct/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备出货添加
|
||||
export function AddProduct(parameter) {
|
||||
return axios({
|
||||
url: '/business/outproduct/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备出货导出
|
||||
export function ExportProduct(parameter) {
|
||||
return axios({
|
||||
url: '/business/outproduct/export',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备出货分配
|
||||
export function AllocProduct(parameter) {
|
||||
return axios({
|
||||
url: '/business/outproduct/alloc',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备出货回收
|
||||
export function RecycleProduct(parameter) {
|
||||
return axios({
|
||||
url: '/business/outproduct/recycle',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备分配
|
||||
export function AllocDevice(parameter) {
|
||||
return axios({
|
||||
url: '/business/device/alloc',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备分配总部
|
||||
export function AllocBusinessDevice(parameter) {
|
||||
return axios({
|
||||
url: '/business/device/alloctobusiness',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备回收
|
||||
export function RecycleDevice(parameter) {
|
||||
return axios({
|
||||
url: '/business/device/recycle',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 设备分配记录
|
||||
export function DeviceAllocList(parameter) {
|
||||
return axios({
|
||||
url: '/business/device/alloclist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 获取列表
|
||||
export function List(parameter) {
|
||||
return axios({
|
||||
url: '/business/member/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 状态设置
|
||||
export function SetStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/member/setstatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 获取订单列表
|
||||
export function List(parameter) {
|
||||
return axios({
|
||||
url: '/business/order/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改订单状态
|
||||
export function SetStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/order/setstatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改订单信息
|
||||
export function Submit(parameter) {
|
||||
return axios({
|
||||
url: '/business/order/submit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 更新订单信息
|
||||
export function Update(parameter) {
|
||||
return axios({
|
||||
url: '/business/order/update',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 当前账户订单配置详情
|
||||
export function Detail(parameter) {
|
||||
return axios({
|
||||
url: '/business/order/detail',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
import { axios } from '@/utils/request'
|
||||
/**
|
||||
* 获取机构树
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/4/26 12:08
|
||||
*/
|
||||
export function getOrgTree(parameter) {
|
||||
return axios({
|
||||
url: '/business/org/tree',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取机构列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 12:59
|
||||
*/
|
||||
export function getOrgList(parameter) {
|
||||
return axios({
|
||||
url: '/business/org/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取机构列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 16:17
|
||||
*/
|
||||
export function getOrgPage(parameter) {
|
||||
return axios({
|
||||
url: '/business/org/page',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增机构
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 13:56
|
||||
*/
|
||||
export function sysOrgAdd(parameter) {
|
||||
return axios({
|
||||
url: '/business/org/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑机构
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 13:56
|
||||
*/
|
||||
export function sysOrgEdit(parameter) {
|
||||
return axios({
|
||||
url: '/business/org/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除机构
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 12:59
|
||||
*/
|
||||
export function sysOrgDelete(parameter) {
|
||||
return axios({
|
||||
url: '/business/org/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 查询系统职位
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:31
|
||||
*/
|
||||
export function sysPosPage(parameter) {
|
||||
return axios({
|
||||
url: '/business/pos/page',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统职位列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/21 23:50
|
||||
*/
|
||||
export function sysPosList(parameter) {
|
||||
return axios({
|
||||
url: '/business/pos/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加系统职位
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:31
|
||||
*/
|
||||
export function sysPosAdd(parameter) {
|
||||
return axios({
|
||||
url: '/business/pos/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑系统职位
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:31
|
||||
*/
|
||||
export function sysPosEdit(parameter) {
|
||||
return axios({
|
||||
url: '/business/pos/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统职位
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:31
|
||||
*/
|
||||
export function sysPosDelete(parameter) {
|
||||
return axios({
|
||||
url: '/business/pos/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 获取列表
|
||||
export function List(parameter) {
|
||||
return axios({
|
||||
url: '/business/product/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改状态
|
||||
export function SetStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/product/setstatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 提交
|
||||
export function Submit(parameter) {
|
||||
return axios({
|
||||
url: '/business/product/submit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 获取购买列表
|
||||
export function PayList(parameter) {
|
||||
return axios({
|
||||
url: '/business/product/paylist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 获取使用列表
|
||||
export function ResultList(parameter) {
|
||||
return axios({
|
||||
url: '/business/product/resultlist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
// 总部产品配置列表 获取列表
|
||||
export function ZBList(parameter) {
|
||||
return axios({
|
||||
url: '/business/product/BusinessShopProduct',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
// 总部产品配置列表 提交
|
||||
export function ZBSubmit(parameter) {
|
||||
return axios({
|
||||
url: '/business/product/BusinessShopProductSubmit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
// 总部产品配置列表 修改状态
|
||||
export function ZBSetStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/product/BusinessShopProductSetStatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 查询注册用户列表
|
||||
export function RegUserList (parameter) {
|
||||
return axios({
|
||||
url: '/reguser/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改昵称
|
||||
export function ModifyName (parameter) {
|
||||
return axios({
|
||||
url: '/reguser/editname',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 测量记录列表
|
||||
export function List (parameter) {
|
||||
return axios({
|
||||
url: '/result/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 获取角色列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/6 11:44
|
||||
*/
|
||||
export function getRolePage(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/page',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加角色
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/6 11:44
|
||||
*/
|
||||
export function sysRoleAdd(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑角色
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/6 11:44
|
||||
*/
|
||||
export function sysRoleEdit(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除角色
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/6 17:51
|
||||
*/
|
||||
export function sysRoleDelete(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色详情
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/7 11:28
|
||||
*/
|
||||
export function sysRoleDeteil(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/detail',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取授权角色列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/26 23:59
|
||||
*/
|
||||
export function sysRoleDropDown(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/dropDown',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 拥有菜单
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/02 19:02
|
||||
*/
|
||||
export function sysRoleOwnMenu(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/ownMenu',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 授权菜单
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/2 21:10
|
||||
*/
|
||||
export function sysRoleGrantMenu(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/grantMenu',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 拥有数据
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/02 21:40
|
||||
*/
|
||||
export function sysRoleOwnData(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/ownData',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 授权数据
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/2 21:50
|
||||
*/
|
||||
export function sysRoleGrantData(parameter) {
|
||||
return axios({
|
||||
url: '/business/userrole/grantData',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 获取列表
|
||||
export function List(parameter) {
|
||||
return axios({
|
||||
url: '/business/serve/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 修改状态
|
||||
export function SetStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/serve/setstatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 提交
|
||||
export function Submit(parameter) {
|
||||
return axios({
|
||||
url: '/business/serve/submit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 获取使用列表
|
||||
export function ResultList(parameter) {
|
||||
return axios({
|
||||
url: '/business/serve/resultlist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 总部配置-服务配置获取使用列表
|
||||
export function ZBList(parameter) {
|
||||
return axios({
|
||||
url: '/business/serve/BusinessServiceList',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 总部配置-服务配置 修改状态
|
||||
export function ZBSetStatus(parameter) {
|
||||
return axios({
|
||||
url: '/business/serve/BusinessZBFWSetStatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 总部配置-服务配置提交
|
||||
export function ZBSubmit(parameter) {
|
||||
return axios({
|
||||
url: '/business/serve/BusinessServiceSubmit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 获取门店列表
|
||||
export function getShopPage(parameter) {
|
||||
return axios({
|
||||
url: '/business/shop/page',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 添加门店
|
||||
export function AddShop(parameter) {
|
||||
return axios({
|
||||
url: '/business/shop/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 编辑门店
|
||||
export function EditShop(parameter) {
|
||||
return axios({
|
||||
url: '/business/shop/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 同步总部配置
|
||||
export function BusinessZBPZ(parameter) {
|
||||
return axios({
|
||||
url: '/business/shop/BusinessZBPZ',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 查询所有枚举类型
|
||||
*
|
||||
* @author liuzl
|
||||
*/
|
||||
export function GetClientData (parameter) {
|
||||
return axios({
|
||||
url: '/sysenumdata/getclientdata',
|
||||
method: 'get',
|
||||
param: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 查询配置信息
|
||||
*
|
||||
* @author liuzl
|
||||
*/
|
||||
export function GetConfigInfo (parameter) {
|
||||
return axios({
|
||||
url: '/system/getconfiginfo',
|
||||
method: 'post',
|
||||
param: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 图片上传
|
||||
export function uploadimg(parameter) {
|
||||
return axios({
|
||||
url: '/common/uploadimg',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// excel上次
|
||||
export function uploadexcel(parameter) {
|
||||
return axios({
|
||||
url: '/common/uploadexcel',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
import { axios } from '@/utils/request'
|
||||
// 获取小程序列表
|
||||
export function List(parameter) {
|
||||
return axios({
|
||||
url: '/business/wx/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 获取所有小程序列表
|
||||
export function AllList(parameter) {
|
||||
return axios({
|
||||
url: '/business/wx/alllist',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 小程序信息提交
|
||||
export function Submit(parameter) {
|
||||
return axios({
|
||||
url: '/business/wx/submit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
/**
|
||||
* 系统应用
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020年4月23日12:10:57
|
||||
*/
|
||||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 系统应用列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020年7月9日15:05:01
|
||||
*/
|
||||
export function getAppPage (parameter) {
|
||||
return axios({
|
||||
url: '/sysApp/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统应用列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020年7月9日15:05:01
|
||||
*/
|
||||
export function getAppList (parameter) {
|
||||
return axios({
|
||||
url: '/sysApp/list',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增系统应用
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020年7月9日15:05:01
|
||||
*/
|
||||
export function sysAppAdd (parameter) {
|
||||
return axios({
|
||||
url: '/sysApp/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑系统应用
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @param parameter
|
||||
* @returns {*}
|
||||
*/
|
||||
export function sysAppEdit (parameter) {
|
||||
return axios({
|
||||
url: '/sysApp/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统应用
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020年7月9日15:05:01
|
||||
*/
|
||||
export function sysAppDelete (parameter) {
|
||||
return axios({
|
||||
url: '/sysApp/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 设为默认应用
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020年7月9日15:05:01
|
||||
*/
|
||||
export function sysAppSetAsDefault (parameter) {
|
||||
return axios({
|
||||
url: '/sysApp/setAsDefault',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改应用状态
|
||||
*
|
||||
* @author zuohuaijun
|
||||
* @date 2021年1月1日
|
||||
*/
|
||||
export function sysAppChangeStatus (parameter) {
|
||||
return axios({
|
||||
url: '/sysApp/changeStatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 分页查询配置列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:57
|
||||
*/
|
||||
export function sysConfigPage (parameter) {
|
||||
return axios({
|
||||
url: '/sysConfig/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加系统参数配置
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:57
|
||||
*/
|
||||
export function sysConfigAdd (parameter) {
|
||||
return axios({
|
||||
url: '/sysConfig/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑系统参数配置
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:57
|
||||
*/
|
||||
export function sysConfigEdit (parameter) {
|
||||
return axios({
|
||||
url: '/sysConfig/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统参数配置
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:57
|
||||
*/
|
||||
export function sysConfigDelete (parameter) {
|
||||
return axios({
|
||||
url: '/sysConfig/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取字典类型下所有字典,举例,返回格式为:[{code:"M",value:"男"},{code:"F",value:"女"}]
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 02:06
|
||||
*/
|
||||
export function sysDictTypeDropDown (parameter) {
|
||||
return axios({
|
||||
url: '/sysDictType/dropDown',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统的所有任务列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/7/8 20:46
|
||||
*/
|
||||
export function sysTimersGetActionClasses (parameter) {
|
||||
return axios({
|
||||
url: '/sysTimers/getActionClasses',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
import {
|
||||
axios
|
||||
} from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 查询系统字典值
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/17 02:24
|
||||
*/
|
||||
export function sysDictDataPage(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictData/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加系统字典值
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/17 02:24
|
||||
*/
|
||||
export function sysDictDataAdd(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictData/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑系统字典值
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/17 02:25
|
||||
*/
|
||||
export function sysDictDataEdit(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictData/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统字典值
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/17 02:25
|
||||
*/
|
||||
export function sysDictDataDelete(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictData/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改系统字典状态
|
||||
*
|
||||
* @author xusn
|
||||
* @date 2021-04-30 11:00:16
|
||||
*/
|
||||
export function sysDictDataChangeStatus(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictData/changeStatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
import {
|
||||
axios
|
||||
} from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 分页查询系统字典类型
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/17 01:46
|
||||
*/
|
||||
export function sysDictTypePage(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictType/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加系统字典类型
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/17 01:46
|
||||
*/
|
||||
export function sysDictTypeAdd(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictType/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑系统字典类型
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/17 01:50
|
||||
*/
|
||||
export function sysDictTypeEdit(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictType/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统字典类型
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/17 01:50
|
||||
*/
|
||||
export function sysDictTypeDelete(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictType/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取字典类型下所有字典,举例,返回格式为:[{code:"M",value:"男"},{code:"F",value:"女"}]
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/10 00:10
|
||||
*/
|
||||
export function sysDictTypeDropDown(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictType/dropDown',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有字典,启动时加入缓存使用
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/10 00:10
|
||||
*/
|
||||
export function sysDictTypeTree(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictType/tree',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改系统字典状态
|
||||
*
|
||||
* @author xusn
|
||||
* @date 2021-04-30 11:00:16
|
||||
*/
|
||||
export function sysDictTypeChangeStatus(parameter) {
|
||||
return axios({
|
||||
url: '/sysDictType/changeStatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 发送邮件
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/7/3 23:22
|
||||
*/
|
||||
export function emailSendEmail (parameter) {
|
||||
return axios({
|
||||
url: '/email/sendEmail',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送html邮件
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/7/3 23:23
|
||||
*/
|
||||
export function emailSendEmailHtml (parameter) {
|
||||
return axios({
|
||||
url: '/email/sendEmailHtml',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 根据枚举名称获取枚举数据,返回格式为:[{code:"M",value:"男"},{code:"F",value:"女"}]
|
||||
*
|
||||
* @author taoran
|
||||
* @date 2021-04-16 21:13/sysEnumData/list/{enumName}
|
||||
*/
|
||||
export function sysEnumDataList (parameter) {
|
||||
return axios({
|
||||
url: '/sysEnumData/list',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据实体名和字段名获取枚举数据
|
||||
*
|
||||
* @author taoran
|
||||
* @date 2021-04-16 21:13
|
||||
*/
|
||||
export function sysEnumDataListByField (parameter) {
|
||||
return axios({
|
||||
url: '/sysEnumData/listByFiled',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 分页查询文件信息表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 00:20
|
||||
*/
|
||||
export function sysFileInfoPage (parameter) {
|
||||
return axios({
|
||||
url: '/sysFileInfo/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取全部文件信息表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 00:20
|
||||
*/
|
||||
export function sysFileInfoList (parameter) {
|
||||
return axios({
|
||||
url: '/sysFileInfo/list',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传文件
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 00:20
|
||||
*/
|
||||
export function sysFileInfoUpload (parameter) {
|
||||
return axios({
|
||||
url: '/sysFileInfo/upload',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载文件
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 00:20
|
||||
*/
|
||||
export function sysFileInfoDownload (parameter) {
|
||||
return axios({
|
||||
url: '/sysFileInfo/download',
|
||||
method: 'get',
|
||||
params: parameter,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看图片
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 00:20
|
||||
*/
|
||||
export function sysFileInfoPreview (parameter) {
|
||||
return axios({
|
||||
url: '/sysFileInfo/preview',
|
||||
method: 'get',
|
||||
params: parameter,
|
||||
responseType: 'arraybuffer'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看详情文件信息表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 00:20
|
||||
*/
|
||||
export function sysFileInfoDetail (parameter) {
|
||||
return axios({
|
||||
url: '/sysFileInfo/detail',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除文件信息表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 00:20
|
||||
*/
|
||||
export function sysFileInfoDelete (parameter) {
|
||||
return axios({
|
||||
url: '/sysFileInfo/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传头像
|
||||
*
|
||||
* @author zuohuaijun
|
||||
* @date 2021/4/23 00:20
|
||||
*/
|
||||
export function sysFileInfoUploadAvatar (parameter) {
|
||||
return axios({
|
||||
url: '/sysFileInfo/uploadAvatar',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-04-17 17:45:37
|
||||
* @LastEditTime: 2021-04-17 18:03:59
|
||||
* @LastEditors: your name
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: \frontend\src\api\modular\system\logManage.js
|
||||
*/
|
||||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 查询访问日志
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/19 11:57
|
||||
*/
|
||||
export function sysVisLogPage(parameter) {
|
||||
return axios({
|
||||
url: '/sysVisLog/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询操作日志
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/19 11:57
|
||||
*/
|
||||
export function sysOpLogPage(parameter) {
|
||||
return axios({
|
||||
url: '/sysOpLog/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询异常日志
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/19 11:57
|
||||
*/
|
||||
export function sysExLogPage(parameter) {
|
||||
return axios({
|
||||
url: '/sysExLog/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 查询第三方日志
|
||||
*
|
||||
* @author liuzl
|
||||
* @date 2020/5/19 11:57
|
||||
*/
|
||||
export function ThirdLogPage(parameter) {
|
||||
return axios({
|
||||
url: '/thirdlog/list',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 清空访问日志
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/23 23:09
|
||||
*/
|
||||
export function sysVisLogDelete(parameter) {
|
||||
return axios({
|
||||
url: '/sysVisLog/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空登录日志
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/23 23:09
|
||||
*/
|
||||
export function sysOpLogDelete(parameter) {
|
||||
return axios({
|
||||
url: '/sysOpLog/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空异常日志
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/23 23:09
|
||||
*/
|
||||
export function sysExLogDelete(parameter) {
|
||||
return axios({
|
||||
url: '/sysExLog/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 清空第三方日志
|
||||
*
|
||||
* @author liuzl
|
||||
* @date 2020/6/23 23:09
|
||||
*/
|
||||
export function ThirdLogDelete(parameter) {
|
||||
return axios({
|
||||
url: '/third/clear',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
/**
|
||||
* 系统应用
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/26 19:06
|
||||
*/
|
||||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 登录
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/26 19:06
|
||||
*/
|
||||
export function login (parameter) {
|
||||
return axios({
|
||||
url: '/login',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 登出
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/26 19:07
|
||||
*/
|
||||
export function logout (parameter) {
|
||||
return axios({
|
||||
url: '/logout',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录用户信息
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/26 19:08
|
||||
*/
|
||||
export function getLoginUser (parameter) {
|
||||
return axios({
|
||||
url: '/getLoginUser',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取租户开关
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/9/5 1:24
|
||||
*/
|
||||
export function getTenantOpen (parameter) {
|
||||
return axios({
|
||||
url: '/getTenantOpen',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取短信验证码
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/26 19:29
|
||||
*/
|
||||
export function getSmsCaptcha (parameter) {
|
||||
return axios({
|
||||
url: '/api/wxopen/sendcode',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 扫码登录
|
||||
*
|
||||
* @author liuzl
|
||||
* @date 2020/5/26 19:29
|
||||
*/
|
||||
export function WXLogin (parameter) {
|
||||
return axios({
|
||||
url: '/business/wxlogin',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 获取微信扫码登录地址
|
||||
*
|
||||
* @author liuzl
|
||||
* @date 2020/5/26 19:29
|
||||
*/
|
||||
export function WXLoginUrl (parameter) {
|
||||
return axios({
|
||||
url: '/business/getwxloginurl',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 获取验证码开关
|
||||
*
|
||||
* @author Jax
|
||||
* @date 2021/1/22 00:00
|
||||
*/
|
||||
export function getCaptchaOpen (parameter) {
|
||||
return axios({
|
||||
url: '/getCaptchaOpen',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取验证图片 以及token
|
||||
*
|
||||
* @author Jax
|
||||
* @date 2021/1/22 00:00
|
||||
*/
|
||||
export function reqGet(data) {
|
||||
return axios({
|
||||
url: '/captcha/get',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 滑动或者点选验证
|
||||
*
|
||||
* @author Jax
|
||||
* @date 2021/1/22 00:00
|
||||
*/
|
||||
export function reqCheck(data) {
|
||||
return axios({
|
||||
url: '/captcha/check',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
import {
|
||||
axios
|
||||
} from '@/utils/request'
|
||||
|
||||
/**
|
||||
*
|
||||
* 系统属性监控
|
||||
*
|
||||
*/
|
||||
export function sysMachineUse(parameter) {
|
||||
return axios({
|
||||
url: '/sysMachine/use',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function sysMachineBase(parameter) {
|
||||
return axios({
|
||||
url: '/sysMachine/base',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function sysMachineNetwork(parameter) {
|
||||
return axios({
|
||||
url: '/sysMachine/network',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 获取菜单列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @param parameter
|
||||
* @returns {*}
|
||||
*/
|
||||
export function getMenuList (parameter) {
|
||||
return axios({
|
||||
url: '/sysMenu/list',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统菜单树,用于新增,编辑时选择上级节点
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/4/23 12:22
|
||||
*/
|
||||
export function getMenuTree (parameter) {
|
||||
return axios({
|
||||
url: '/sysMenu/tree',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加菜单
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/4/24 23:23
|
||||
*/
|
||||
export function sysMenuAdd (parameter) {
|
||||
return axios({
|
||||
url: '/sysMenu/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加菜单
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/4/24 23:23
|
||||
*/
|
||||
export function sysMenuDelete (parameter) {
|
||||
return axios({
|
||||
url: '/sysMenu/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看菜单详情
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/4/25 01:11
|
||||
*/
|
||||
export function sysMenuDetail (parameter) {
|
||||
return axios({
|
||||
url: '/sysMenu/detail',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑系统菜单
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/4/25 01:11
|
||||
*/
|
||||
export function sysMenuEdit (parameter) {
|
||||
return axios({
|
||||
url: '/sysMenu/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统菜单树,用于给角色授权时选择
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/2 17:30
|
||||
*/
|
||||
export function SysMenuTreeForGrant (parameter) {
|
||||
return axios({
|
||||
url: '/sysMenu/treeForGrant',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据系统切换菜单
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/28 15:25
|
||||
*/
|
||||
export function sysMenuChange (parameter) {
|
||||
return axios({
|
||||
url: '/sysMenu/change',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 查询系统通知公告
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 01:56
|
||||
*/
|
||||
export function sysNoticePage (parameter) {
|
||||
return axios({
|
||||
url: '/sysNotice/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加系统通知公告
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 01:56
|
||||
*/
|
||||
export function sysNoticeAdd (parameter) {
|
||||
return axios({
|
||||
url: '/sysNotice/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑系统通知公告
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 01:56
|
||||
*/
|
||||
export function sysNoticeEdit (parameter) {
|
||||
return axios({
|
||||
url: '/sysNotice/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统通知公告
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 01:56
|
||||
*/
|
||||
export function sysNoticeDelete (parameter) {
|
||||
return axios({
|
||||
url: '/sysNotice/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 通知公告详情
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/30 01:56
|
||||
*/
|
||||
export function sysNoticeDetail (parameter) {
|
||||
return axios({
|
||||
url: '/sysNotice/detail',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/7/30 02:23
|
||||
*/
|
||||
export function sysNoticeChangeStatus (parameter) {
|
||||
return axios({
|
||||
url: '/sysNotice/changeStatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 查询我收到的系统通知公告
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/7/3 03:02
|
||||
*/
|
||||
export function sysNoticeReceived (parameter) {
|
||||
return axios({
|
||||
url: '/sysNotice/received',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
export function unReadNotice (parameter) {
|
||||
return axios({
|
||||
url: '/sysNotice/unread',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 获取机构树
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/4/26 12:08
|
||||
*/
|
||||
export function getOrgTree (parameter) {
|
||||
return axios({
|
||||
url: '/sysOrg/tree',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取机构列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 12:59
|
||||
*/
|
||||
export function getOrgList (parameter) {
|
||||
return axios({
|
||||
url: '/sysOrg/list',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取机构列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 16:17
|
||||
*/
|
||||
export function getOrgPage (parameter) {
|
||||
return axios({
|
||||
url: '/sysOrg/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增机构
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 13:56
|
||||
*/
|
||||
export function sysOrgAdd (parameter) {
|
||||
return axios({
|
||||
url: '/sysOrg/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑机构
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 13:56
|
||||
*/
|
||||
export function sysOrgEdit (parameter) {
|
||||
return axios({
|
||||
url: '/sysOrg/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除机构
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/11 12:59
|
||||
*/
|
||||
export function sysOrgDelete (parameter) {
|
||||
return axios({
|
||||
url: '/sysOrg/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 查询系统职位
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:31
|
||||
*/
|
||||
export function sysPosPage (parameter) {
|
||||
return axios({
|
||||
url: '/sysPos/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统职位列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/21 23:50
|
||||
*/
|
||||
export function sysPosList (parameter) {
|
||||
return axios({
|
||||
url: '/sysPos/list',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加系统职位
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:31
|
||||
*/
|
||||
export function sysPosAdd (parameter) {
|
||||
return axios({
|
||||
url: '/sysPos/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑系统职位
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:31
|
||||
*/
|
||||
export function sysPosEdit (parameter) {
|
||||
return axios({
|
||||
url: '/sysPos/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统职位
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/25 01:31
|
||||
*/
|
||||
export function sysPosDelete (parameter) {
|
||||
return axios({
|
||||
url: '/sysPos/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,141 @@
|
|||
import { axios } from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 获取角色列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/6 11:44
|
||||
*/
|
||||
export function getRolePage (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加角色
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/6 11:44
|
||||
*/
|
||||
export function sysRoleAdd (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑角色
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/6 11:44
|
||||
*/
|
||||
export function sysRoleEdit (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除角色
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/6 17:51
|
||||
*/
|
||||
export function sysRoleDelete (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除角色
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/7 11:28
|
||||
*/
|
||||
export function sysRoleDeteil (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/detail',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取授权角色列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/26 23:59
|
||||
*/
|
||||
export function sysRoleDropDown (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/dropDown',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 拥有菜单
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/02 19:02
|
||||
*/
|
||||
export function sysRoleOwnMenu (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/ownMenu',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 授权菜单
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/2 21:10
|
||||
*/
|
||||
export function sysRoleGrantMenu (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/grantMenu',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 拥有数据
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/02 21:40
|
||||
*/
|
||||
export function sysRoleOwnData (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/ownData',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 授权数据
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/2 21:50
|
||||
*/
|
||||
export function sysRoleGrantData (parameter) {
|
||||
return axios({
|
||||
url: '/sysRole/grantData',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
/**
|
||||
* 租户
|
||||
*/
|
||||
import {
|
||||
axios
|
||||
} from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 租户列表
|
||||
*
|
||||
*/
|
||||
export function sysTenantPage(parameter) {
|
||||
return axios({
|
||||
url: '/sysTenant/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增租户
|
||||
*
|
||||
*/
|
||||
export function sysTenantAdd(parameter) {
|
||||
return axios({
|
||||
url: '/sysTenant/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除租户
|
||||
*
|
||||
*/
|
||||
export function sysTenantDelete(parameter) {
|
||||
return axios({
|
||||
url: '/sysTenant/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑租户
|
||||
*
|
||||
*/
|
||||
export function sysTenantEdit(parameter) {
|
||||
return axios({
|
||||
url: '/sysTenant/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 拥有菜单
|
||||
*
|
||||
* @author zuohuaijun
|
||||
* @date 2021/04/22 10:30
|
||||
*/
|
||||
export function sysTenantOwnMenu (parameter) {
|
||||
return axios({
|
||||
url: '/sysTenant/ownMenu',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 授权菜单
|
||||
*
|
||||
* @author zuohuaijun
|
||||
* @date 2021/04/22 10:30
|
||||
*/
|
||||
export function sysTenantGrantMenu (parameter) {
|
||||
return axios({
|
||||
url: '/sysTenant/grantMenu',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置密码
|
||||
*
|
||||
* @author zuohuaijun
|
||||
* @date 2021/04/22 11:00
|
||||
*/
|
||||
export function sysTenantResetPwd (parameter) {
|
||||
return axios({
|
||||
url: '/sysTenant/resetPwd',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 订单初始化
|
||||
*
|
||||
*/
|
||||
export function OrderInit (parameter) {
|
||||
return axios({
|
||||
url: '/order/insertdefaultorder',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 标准初始化
|
||||
*
|
||||
*/
|
||||
export function StandInit (parameter) {
|
||||
return axios({
|
||||
url: '/order/insertdefaultstand',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,262 @@
|
|||
import {
|
||||
axios
|
||||
} from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 获取用户列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/4/26 12:08
|
||||
*/
|
||||
export function getUserPage(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/page',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 获取用户列表
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/4/26 12:08
|
||||
*/
|
||||
export function getUserList(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/list',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 增加用户
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/5 02:08
|
||||
*/
|
||||
export function sysUserAdd(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/add',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑用户
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/5 02:08
|
||||
*/
|
||||
export function sysUserEdit(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/edit',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户详情
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/5 19:55
|
||||
*/
|
||||
export function sysUserDetail(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/detail',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/7 19:31
|
||||
*/
|
||||
export function sysUserDelete(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/delete',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 拥有角色
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/3 11:58
|
||||
*/
|
||||
export function sysUserOwnRole(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/ownRole',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 授权角色
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/5/26 23:59
|
||||
*/
|
||||
export function sysUserGrantRole(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/grantRole',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 拥有数据
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/2 23:14
|
||||
*/
|
||||
export function sysUserOwnData(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/ownData',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 授权数据
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/2 23:15
|
||||
*/
|
||||
export function sysUserGrantData(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/grantData',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/23 21:36
|
||||
*/
|
||||
export function sysUserChangeStatus(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/changeStatus',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置密码
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/23 22:04
|
||||
*/
|
||||
export function sysUserResetPwd(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/resetPwd',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改密码
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/25 00:25
|
||||
*/
|
||||
export function sysUserUpdatePwd(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/updatePwd',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户选择器
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/6/25 00:25
|
||||
*/
|
||||
export function sysUserSelector(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/selector',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改头像
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/9/20 2:21
|
||||
*/
|
||||
export function sysUserUpdateAvatar(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/updateAvatar',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新基本信息
|
||||
*
|
||||
* @author yubaoshan
|
||||
* @date 2020/9/20 03:12
|
||||
*/
|
||||
export function sysUserUpdateInfo(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/updateInfo',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出用户信息
|
||||
*
|
||||
* @author zuohuaijun
|
||||
* @date 2021/4/20 01:00
|
||||
*/
|
||||
export function sysUserExport(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/export',
|
||||
method: 'get',
|
||||
data: parameter,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入用户信息
|
||||
*
|
||||
* @author zuohuaijun
|
||||
* @date 2021/4/20 01:00
|
||||
*/
|
||||
export function sysUserImport(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/import',
|
||||
method: 'post',
|
||||
data: parameter
|
||||
})
|
||||
}
|
||||
// 所有用户列表
|
||||
export function AllsysUserList(parameter) {
|
||||
return axios({
|
||||
url: '/sysUser/alluserList',
|
||||
method: 'get',
|
||||
params: parameter
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1551058675966" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7872" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M85.333333 512h85.333334a340.736 340.736 0 0 1 99.712-241.621333 337.493333 337.493333 0 0 1 108.458666-72.96 346.453333 346.453333 0 0 1 261.546667-1.749334A106.154667 106.154667 0 0 0 746.666667 298.666667C805.802667 298.666667 853.333333 251.136 853.333333 192S805.802667 85.333333 746.666667 85.333333c-29.397333 0-55.978667 11.776-75.221334 30.933334-103.722667-41.514667-222.848-40.874667-325.76 2.517333a423.594667 423.594667 0 0 0-135.68 91.264 423.253333 423.253333 0 0 0-91.306666 135.637333A426.88 426.88 0 0 0 85.333333 512z m741.248 133.205333c-17.109333 40.618667-41.685333 77.141333-72.96 108.416s-67.797333 55.850667-108.458666 72.96a346.453333 346.453333 0 0 1-261.546667 1.749334A106.154667 106.154667 0 0 0 277.333333 725.333333C218.197333 725.333333 170.666667 772.864 170.666667 832S218.197333 938.666667 277.333333 938.666667c29.397333 0 55.978667-11.776 75.221334-30.933334A425.173333 425.173333 0 0 0 512 938.666667a425.941333 425.941333 0 0 0 393.258667-260.352A426.325333 426.325333 0 0 0 938.666667 512h-85.333334a341.034667 341.034667 0 0 1-26.752 133.205333z" p-id="7873"></path><path d="M512 318.378667c-106.752 0-193.621333 86.869333-193.621333 193.621333S405.248 705.621333 512 705.621333s193.621333-86.869333 193.621333-193.621333S618.752 318.378667 512 318.378667z m0 301.909333c-59.690667 0-108.288-48.597333-108.288-108.288S452.309333 403.712 512 403.712s108.288 48.597333 108.288 108.288-48.597333 108.288-108.288 108.288z" p-id="7874"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
|
@ -0,0 +1,161 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="300px" height="300px" viewBox="0 0 300 300" enable-background="new 0 0 300 300" xml:space="preserve"> <image id="image0" width="300" height="300" x="0" y="0"
|
||||
href="data:image/png;base64,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
|
||||
NjoyNCswMDowMA9stOEAAAAASUVORK5CYII=" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
|
@ -0,0 +1 @@
|
|||
code
|
||||
|
|
After Width: | Height: | Size: 17 KiB |
|
|
@ -0,0 +1,89 @@
|
|||
<template>
|
||||
<div class="antd-pro-components-article-list-content-index-listContent">
|
||||
<div class="description">
|
||||
<slot>
|
||||
{{ description }}
|
||||
</slot>
|
||||
</div>
|
||||
<div class="extra">
|
||||
<a-avatar :src="avatar" size="small" />
|
||||
<a :href="href">{{ owner }}</a> 发布在 <a :href="href">{{ href }}</a>
|
||||
<em>{{ updateAt | moment }}</em>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ArticleListContent',
|
||||
props: {
|
||||
prefixCls: {
|
||||
type: String,
|
||||
default: 'antd-pro-components-article-list-content-index-listContent'
|
||||
},
|
||||
description: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
owner: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
avatar: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
href: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
updateAt: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '../index.less';
|
||||
|
||||
.antd-pro-components-article-list-content-index-listContent {
|
||||
.description {
|
||||
max-width: 720px;
|
||||
line-height: 22px;
|
||||
}
|
||||
.extra {
|
||||
margin-top: 16px;
|
||||
color: @text-color-secondary;
|
||||
line-height: 22px;
|
||||
|
||||
& /deep/ .ant-avatar {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin-right: 8px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
& > em {
|
||||
margin-left: 16px;
|
||||
color: @disabled-color;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: @screen-xs) {
|
||||
.antd-pro-components-article-list-content-index-listContent {
|
||||
.extra {
|
||||
& > em {
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
import ArticleListContent from './ArticleListContent'
|
||||
|
||||
export default ArticleListContent
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
<template>
|
||||
<tooltip v-if="tips !== ''">
|
||||
<template slot="title">{{ tips }}</template>
|
||||
<avatar :size="avatarSize" :src="src" />
|
||||
</tooltip>
|
||||
<avatar v-else :size="avatarSize" :src="src" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Avatar from 'ant-design-vue/es/avatar'
|
||||
import Tooltip from 'ant-design-vue/es/tooltip'
|
||||
|
||||
export default {
|
||||
name: 'AvatarItem',
|
||||
components: {
|
||||
Avatar,
|
||||
Tooltip
|
||||
},
|
||||
props: {
|
||||
tips: {
|
||||
type: String,
|
||||
default: '',
|
||||
required: false
|
||||
},
|
||||
src: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
size: this.$parent.size
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
avatarSize () {
|
||||
return this.size !== 'mini' && this.size || 20
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$parent.size' (val) {
|
||||
this.size = val
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
<!--
|
||||
<template>
|
||||
<div :class="[prefixCls]">
|
||||
<ul>
|
||||
<slot></slot>
|
||||
<template v-for="item in filterEmpty($slots.default).slice(0, 3)"></template>
|
||||
|
||||
<template v-if="maxLength > 0 && filterEmpty($slots.default).length > maxLength">
|
||||
<avatar-item :size="size">
|
||||
<avatar :size="size !== 'mini' && size || 20" :style="excessItemsStyle">{{ `+${maxLength}` }}</avatar>
|
||||
</avatar-item>
|
||||
</template>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
-->
|
||||
|
||||
<script>
|
||||
import Avatar from 'ant-design-vue/es/avatar'
|
||||
import AvatarItem from './Item'
|
||||
import { filterEmpty } from '@/components/_util/util'
|
||||
|
||||
export default {
|
||||
AvatarItem,
|
||||
name: 'AvatarList',
|
||||
components: {
|
||||
Avatar,
|
||||
AvatarItem
|
||||
},
|
||||
props: {
|
||||
prefixCls: {
|
||||
type: String,
|
||||
default: 'ant-pro-avatar-list'
|
||||
},
|
||||
/**
|
||||
* 头像大小 类型: large、small 、mini, default
|
||||
* 默认值: default
|
||||
*/
|
||||
size: {
|
||||
type: [String, Number],
|
||||
default: 'default'
|
||||
},
|
||||
/**
|
||||
* 要显示的最大项目
|
||||
*/
|
||||
maxLength: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
/**
|
||||
* 多余的项目风格
|
||||
*/
|
||||
excessItemsStyle: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {
|
||||
color: '#f56a00',
|
||||
backgroundColor: '#fde3cf'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {}
|
||||
},
|
||||
methods: {
|
||||
getItems (items) {
|
||||
const classString = {
|
||||
[`${this.prefixCls}-item`]: true,
|
||||
[`${this.size}`]: true
|
||||
}
|
||||
|
||||
if (this.maxLength > 0) {
|
||||
items = items.slice(0, this.maxLength)
|
||||
items.push((<Avatar size={ this.size } style={ this.excessItemsStyle }>{`+${this.maxLength}`}</Avatar>))
|
||||
}
|
||||
const itemList = items.map((item) => (
|
||||
<li class={ classString }>{ item }</li>
|
||||
))
|
||||
return itemList
|
||||
}
|
||||
},
|
||||
render () {
|
||||
const { prefixCls, size } = this.$props
|
||||
const classString = {
|
||||
[`${prefixCls}`]: true,
|
||||
[`${size}`]: true
|
||||
}
|
||||
const items = filterEmpty(this.$slots.default)
|
||||
const itemsDom = items && items.length ? <ul class={`${prefixCls}-items`}>{ this.getItems(items) }</ul> : null
|
||||
|
||||
return (
|
||||
<div class={ classString }>
|
||||
{ itemsDom }
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
import AvatarList from './List'
|
||||
import './index.less'
|
||||
|
||||
export default AvatarList
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
@import "../index";
|
||||
|
||||
@avatar-list-prefix-cls: ~"@{ant-pro-prefix}-avatar-list";
|
||||
@avatar-list-item-prefix-cls: ~"@{ant-pro-prefix}-avatar-list-item";
|
||||
|
||||
.@{avatar-list-prefix-cls} {
|
||||
display: inline-block;
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
margin: 0 0 0 8px;
|
||||
font-size: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.@{avatar-list-item-prefix-cls} {
|
||||
display: inline-block;
|
||||
font-size: @font-size-base;
|
||||
margin-left: -8px;
|
||||
width: @avatar-size-base;
|
||||
height: @avatar-size-base;
|
||||
|
||||
:global {
|
||||
.ant-avatar {
|
||||
border: 1px solid #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
&.large {
|
||||
width: @avatar-size-lg;
|
||||
height: @avatar-size-lg;
|
||||
}
|
||||
|
||||
&.small {
|
||||
width: @avatar-size-sm;
|
||||
height: @avatar-size-sm;
|
||||
}
|
||||
|
||||
&.mini {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
|
||||
:global {
|
||||
.ant-avatar {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
|
||||
.ant-avatar-string {
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
# AvatarList 用户头像列表
|
||||
|
||||
|
||||
一组用户头像,常用在项目/团队成员列表。可通过设置 `size` 属性来指定头像大小。
|
||||
|
||||
|
||||
|
||||
引用方式:
|
||||
|
||||
```javascript
|
||||
import AvatarList from '@/components/AvatarList'
|
||||
const AvatarListItem = AvatarList.AvatarItem
|
||||
|
||||
export default {
|
||||
components: {
|
||||
AvatarList,
|
||||
AvatarListItem
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 代码演示 [demo](https://pro.loacg.com/test/home)
|
||||
|
||||
```html
|
||||
<avatar-list size="mini">
|
||||
<avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
|
||||
<avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
|
||||
<avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
|
||||
</avatar-list>
|
||||
```
|
||||
或
|
||||
```html
|
||||
<avatar-list :max-length="3">
|
||||
<avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
|
||||
<avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
|
||||
<avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
|
||||
<avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
|
||||
<avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
|
||||
<avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
|
||||
<avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
|
||||
</avatar-list>
|
||||
```
|
||||
|
||||
|
||||
|
||||
## API
|
||||
|
||||
### AvatarList
|
||||
|
||||
| 参数 | 说明 | 类型 | 默认值 |
|
||||
| ---------------- | -------- | ---------------------------------- | --------- |
|
||||
| size | 头像大小 | `large`、`small` 、`mini`, `default` | `default` |
|
||||
| maxLength | 要显示的最大项目 | number | - |
|
||||
| excessItemsStyle | 多余的项目风格 | CSSProperties | - |
|
||||
|
||||
### AvatarList.Item
|
||||
|
||||
| 参数 | 说明 | 类型 | 默认值 |
|
||||
| ---- | ------ | --------- | --- |
|
||||
| tips | 头像展示文案 | string | - |
|
||||
| src | 头像图片连接 | string | - |
|
||||
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
<template>
|
||||
<div :style="{ padding: '0 0 32px 32px' }">
|
||||
<h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
|
||||
<v-chart
|
||||
height="254"
|
||||
:data="data"
|
||||
:forceFit="true"
|
||||
:padding="['auto', 'auto', '40', '50']">
|
||||
<v-tooltip/>
|
||||
<v-axis :show="true"/>
|
||||
<v-bar position="x*y"/>
|
||||
</v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Bar',
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
data: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
},
|
||||
scale: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return [{
|
||||
dataKey: 'x',
|
||||
min: 2
|
||||
}, {
|
||||
dataKey: 'y',
|
||||
title: '时间',
|
||||
min: 1,
|
||||
max: 22
|
||||
}]
|
||||
}
|
||||
},
|
||||
tooltip: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return [
|
||||
'x*y',
|
||||
(x, y) => ({
|
||||
name: x,
|
||||
value: y
|
||||
})
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
<template>
|
||||
<a-card :loading="loading" :body-style="{ padding: '20px 24px 8px' }" :bordered="false">
|
||||
<div class="chart-card-header">
|
||||
<div class="meta">
|
||||
<span class="chart-card-title">
|
||||
<slot name="title">
|
||||
{{ title }}
|
||||
</slot>
|
||||
</span>
|
||||
<span class="chart-card-action">
|
||||
<slot name="action"></slot>
|
||||
</span>
|
||||
</div>
|
||||
<div class="total">
|
||||
<slot name="total">
|
||||
<span>{{ typeof total === 'function' && total() || total }}</span>
|
||||
</slot>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart-card-content" v-if="content">
|
||||
<div class="content-fix">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart-card-footer">
|
||||
<div class="field">
|
||||
<slot name="footer"></slot>
|
||||
</div>
|
||||
</div>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ChartCard',
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
total: {
|
||||
type: [Function, Number, String],
|
||||
required: false,
|
||||
default: null
|
||||
},
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
content: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.chart-card-header {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
|
||||
.meta {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
color: rgba(0, 0, 0, .45);
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
.chart-card-action {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.chart-card-footer {
|
||||
border-top: 1px solid #e8e8e8;
|
||||
padding-top: 9px;
|
||||
margin-top: 8px;
|
||||
|
||||
> * {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.field {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.chart-card-content {
|
||||
margin-bottom: 12px;
|
||||
position: relative;
|
||||
height: 46px;
|
||||
width: 100%;
|
||||
|
||||
.content-fix {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.total {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
word-break: break-all;
|
||||
white-space: nowrap;
|
||||
color: #000;
|
||||
margin-top: 4px;
|
||||
margin-bottom: 0;
|
||||
font-size: 30px;
|
||||
line-height: 38px;
|
||||
height: 38px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<template>
|
||||
<div>
|
||||
<v-chart
|
||||
:forceFit="true"
|
||||
:height="height"
|
||||
:width="width"
|
||||
:data="data"
|
||||
:scale="scale"
|
||||
:padding="0">
|
||||
<v-tooltip />
|
||||
<v-interval
|
||||
:shape="['liquid-fill-gauge']"
|
||||
position="transfer*value"
|
||||
color=""
|
||||
:v-style="{
|
||||
lineWidth: 10,
|
||||
opacity: 0.75
|
||||
}"
|
||||
:tooltip="[
|
||||
'transfer*value',
|
||||
(transfer, value) => {
|
||||
return {
|
||||
name: transfer,
|
||||
value,
|
||||
};
|
||||
},
|
||||
]"
|
||||
></v-interval>
|
||||
<v-guide
|
||||
v-for="(row, index) in data"
|
||||
:key="index"
|
||||
type="text"
|
||||
:top="true"
|
||||
:position="{
|
||||
gender: row.transfer,
|
||||
value: 45
|
||||
}"
|
||||
:content="row.value + '%'"
|
||||
:v-style="{
|
||||
fontSize: 100,
|
||||
textAlign: 'center',
|
||||
opacity: 0.75,
|
||||
}"
|
||||
/>
|
||||
</v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Liquid',
|
||||
props: {
|
||||
height: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
width: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
<template>
|
||||
<div class="chart-mini-progress">
|
||||
<div class="target" :style="{ left: target + '%'}">
|
||||
<span :style="{ backgroundColor: color }" />
|
||||
<span :style="{ backgroundColor: color }"/>
|
||||
</div>
|
||||
<div class="progress-wrapper">
|
||||
<div class="progress" :style="{ backgroundColor: color, width: percentage + '%', height: height }"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'MiniProgress',
|
||||
props: {
|
||||
target: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: '10px'
|
||||
},
|
||||
color: {
|
||||
type: String,
|
||||
default: '#13C2C2'
|
||||
},
|
||||
percentage: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.chart-mini-progress {
|
||||
padding: 5px 0;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
|
||||
.target {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
|
||||
span {
|
||||
border-radius: 100px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 4px;
|
||||
width: 2px;
|
||||
|
||||
&:last-child {
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.progress-wrapper {
|
||||
background-color: #f5f5f5;
|
||||
position: relative;
|
||||
|
||||
.progress {
|
||||
transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
|
||||
border-radius: 1px 0 0 1px;
|
||||
background-color: #1890ff;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<template>
|
||||
<div :class="prefixCls">
|
||||
<div class="chart-wrapper" :style="{ height: 46 }">
|
||||
<v-chart :force-fit="true" :height="100" :data="dataSource" :scale="scale" :padding="[36, 0, 18, 0]">
|
||||
<v-tooltip />
|
||||
<v-smooth-line position="x*y" :size="2" />
|
||||
<v-smooth-area position="x*y" />
|
||||
</v-chart>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'MiniSmoothArea',
|
||||
props: {
|
||||
prefixCls: {
|
||||
type: String,
|
||||
default: 'ant-pro-smooth-area'
|
||||
},
|
||||
scale: {
|
||||
type: [Object, Array],
|
||||
required: true
|
||||
},
|
||||
dataSource: {
|
||||
type: Array,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
height: 100
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import "smooth.area.less";
|
||||
</style>
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
<template>
|
||||
<v-chart :forceFit="true" height="400" :data="data" :padding="[20, 20, 95, 20]" :scale="scale">
|
||||
<v-tooltip></v-tooltip>
|
||||
<v-axis :dataKey="axis1Opts.dataKey" :line="axis1Opts.line" :tickLine="axis1Opts.tickLine" :grid="axis1Opts.grid" />
|
||||
<v-axis :dataKey="axis2Opts.dataKey" :line="axis2Opts.line" :tickLine="axis2Opts.tickLine" :grid="axis2Opts.grid" />
|
||||
<v-legend dataKey="user" marker="circle" :offset="30" />
|
||||
<v-coord type="polar" radius="0.8" />
|
||||
<v-line position="item*score" color="user" :size="2" />
|
||||
<v-point position="item*score" color="user" :size="4" shape="circle" />
|
||||
</v-chart>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const axis1Opts = {
|
||||
dataKey: 'item',
|
||||
line: null,
|
||||
tickLine: null,
|
||||
grid: {
|
||||
lineStyle: {
|
||||
lineDash: null
|
||||
},
|
||||
hideFirstLine: false
|
||||
}
|
||||
}
|
||||
const axis2Opts = {
|
||||
dataKey: 'score',
|
||||
line: null,
|
||||
tickLine: null,
|
||||
grid: {
|
||||
type: 'polygon',
|
||||
lineStyle: {
|
||||
lineDash: null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const scale = [
|
||||
{
|
||||
dataKey: 'score',
|
||||
min: 0,
|
||||
max: 80
|
||||
}, {
|
||||
dataKey: 'user',
|
||||
alias: '类型'
|
||||
}
|
||||
]
|
||||
|
||||
export default {
|
||||
name: 'Radar',
|
||||
props: {
|
||||
data: {
|
||||
type: Array,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
axis1Opts,
|
||||
axis2Opts,
|
||||
scale
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
<template>
|
||||
<div class="rank">
|
||||
<h4 class="title">{{ title }}</h4>
|
||||
<ul class="list">
|
||||
<li :key="index" v-for="(item, index) in list">
|
||||
<span :class="index < 3 ? 'active' : null">{{ index + 1 }}</span>
|
||||
<span>{{ item.name }}</span>
|
||||
<span>{{ item.total }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'RankList',
|
||||
// ['title', 'list']
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
list: {
|
||||
type: Array,
|
||||
default: null
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
.rank {
|
||||
padding: 0 32px 32px 72px;
|
||||
|
||||
.list {
|
||||
margin: 25px 0 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
margin-top: 16px;
|
||||
|
||||
span {
|
||||
color: rgba(0, 0, 0, .65);
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
|
||||
&:first-child {
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 20px;
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
margin-right: 24px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
width: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
&.active {
|
||||
background-color: #314659;
|
||||
color: #fff;
|
||||
}
|
||||
&:last-child {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mobile .rank {
|
||||
padding: 0 32px 32px 32px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
<template>
|
||||
<div :style="{ padding: '0 0 32px 32px' }">
|
||||
<h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
|
||||
<v-chart
|
||||
height="254"
|
||||
:data="data"
|
||||
:scale="scale"
|
||||
:forceFit="true"
|
||||
:padding="['auto', 'auto', '40', '50']">
|
||||
<v-tooltip />
|
||||
<v-axis />
|
||||
<v-bar position="x*y"/>
|
||||
</v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const tooltip = [
|
||||
'x*y',
|
||||
(x, y) => ({
|
||||
name: x,
|
||||
value: y
|
||||
})
|
||||
]
|
||||
const scale = [{
|
||||
dataKey: 'x',
|
||||
title: '日期(天)',
|
||||
alias: '日期(天)',
|
||||
min: 2
|
||||
}, {
|
||||
dataKey: 'y',
|
||||
title: '流量(Gb)',
|
||||
alias: '流量(Gb)',
|
||||
min: 1
|
||||
}]
|
||||
|
||||
export default {
|
||||
name: 'Bar',
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
data: [],
|
||||
scale,
|
||||
tooltip
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.getMonthBar()
|
||||
},
|
||||
methods: {
|
||||
getMonthBar () {
|
||||
this.$http.get('/analysis/month-bar')
|
||||
.then(res => {
|
||||
this.data = res.result
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
<template>
|
||||
<div class="chart-trend">
|
||||
{{ term }}
|
||||
<span>{{ rate }}%</span>
|
||||
<span :class="['trend-icon', trend]"><a-icon :type="'caret-' + trend"/></span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Trend',
|
||||
props: {
|
||||
term: {
|
||||
type: String,
|
||||
default: '',
|
||||
required: true
|
||||
},
|
||||
percentage: {
|
||||
type: Number,
|
||||
default: null
|
||||
},
|
||||
type: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
target: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
value: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
fixed: {
|
||||
type: Number,
|
||||
default: 2
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
trend: this.type && 'up' || 'down',
|
||||
rate: this.percentage
|
||||
}
|
||||
},
|
||||
created () {
|
||||
const type = this.type === null ? this.value >= this.target : this.type
|
||||
this.trend = type ? 'up' : 'down'
|
||||
this.rate = (this.percentage === null ? Math.abs(this.value - this.target) * 100 / this.target : this.percentage).toFixed(this.fixed)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.chart-trend {
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
|
||||
.trend-icon {
|
||||
font-size: 12px;
|
||||
|
||||
&.up, &.down {
|
||||
margin-left: 4px;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
|
||||
i {
|
||||
font-size: 12px;
|
||||
transform: scale(.83);
|
||||
}
|
||||
}
|
||||
|
||||
&.up {
|
||||
color: #f5222d;
|
||||
}
|
||||
&.down {
|
||||
color: #52c41a;
|
||||
top: -1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
.antv-chart-mini {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
|
||||
.chart-wrapper {
|
||||
position: absolute;
|
||||
bottom: -28px;
|
||||
width: 100%;
|
||||
|
||||
/* margin: 0 -5px;
|
||||
overflow: hidden;*/
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
@import "../index";
|
||||
|
||||
@smoothArea-prefix-cls: ~"@{ant-pro-prefix}-smooth-area";
|
||||
|
||||
.@{smoothArea-prefix-cls} {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
|
||||
.chart-wrapper {
|
||||
position: absolute;
|
||||
bottom: -28px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
<template>
|
||||
<span>
|
||||
{{ lastTime | format }}
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
function fixedZero (val) {
|
||||
return val * 1 < 10 ? `0${val}` : val
|
||||
}
|
||||
|
||||
export default {
|
||||
name: 'CountDown',
|
||||
props: {
|
||||
format: {
|
||||
type: Function,
|
||||
default: undefined
|
||||
},
|
||||
target: {
|
||||
type: [Date, Number],
|
||||
required: true
|
||||
},
|
||||
onEnd: {
|
||||
type: Function,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
dateTime: '0',
|
||||
originTargetTime: 0,
|
||||
lastTime: 0,
|
||||
timer: 0,
|
||||
interval: 1000
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
format (time) {
|
||||
const hours = 60 * 60 * 1000
|
||||
const minutes = 60 * 1000
|
||||
|
||||
const h = Math.floor(time / hours)
|
||||
const m = Math.floor((time - h * hours) / minutes)
|
||||
const s = Math.floor((time - h * hours - m * minutes) / 1000)
|
||||
return `${fixedZero(h)}:${fixedZero(m)}:${fixedZero(s)}`
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.initTime()
|
||||
this.tick()
|
||||
},
|
||||
methods: {
|
||||
initTime () {
|
||||
let lastTime = 0
|
||||
let targetTime = 0
|
||||
this.originTargetTime = this.target
|
||||
try {
|
||||
if (Object.prototype.toString.call(this.target) === '[object Date]') {
|
||||
targetTime = this.target
|
||||
} else {
|
||||
targetTime = new Date(this.target).getTime()
|
||||
}
|
||||
} catch (e) {
|
||||
throw new Error('invalid target prop')
|
||||
}
|
||||
|
||||
lastTime = targetTime - new Date().getTime()
|
||||
|
||||
this.lastTime = lastTime < 0 ? 0 : lastTime
|
||||
},
|
||||
tick () {
|
||||
const { onEnd } = this
|
||||
|
||||
this.timer = setTimeout(() => {
|
||||
if (this.lastTime < this.interval) {
|
||||
clearTimeout(this.timer)
|
||||
this.lastTime = 0
|
||||
if (typeof onEnd === 'function') {
|
||||
onEnd()
|
||||
}
|
||||
} else {
|
||||
this.lastTime -= this.interval
|
||||
this.tick()
|
||||
}
|
||||
}, this.interval)
|
||||
}
|
||||
},
|
||||
beforeUpdate () {
|
||||
if (this.originTargetTime !== this.target) {
|
||||
this.initTime()
|
||||
}
|
||||
},
|
||||
beforeDestroy () {
|
||||
clearTimeout(this.timer)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
import CountDown from './CountDown'
|
||||
|
||||
export default CountDown
|
||||