修改河南项目的管理后台ui

This commit is contained in:
2026-09-23 09:53:26 +08:00
parent 73c21ca026
commit 23fe1f3995
81 changed files with 577 additions and 353 deletions
+56
View File
@@ -153,3 +153,59 @@
**刻意未做**:麻将胡了的 **11 张 `game_mahjong_*` 游戏表尚未落库**(DDL + 种子在 `mahjong-py/schema.sql`)。
这 7 个新菜单页面依赖它们,未建表前打开会报「表不存在」。属「游戏本体」前置依赖、且 generator 还没写完
(见 `mahjong-py/README.md`),**待用户确认后再执行**。
- **后台管理端(`ruoyi-ui`)整站换肤:Cottagecore 田园核风 + 逐页 UI 细节收敛**
**起因**:管理后台长期沿用它默认的企业蓝(Element 默认色板 + vue-element-admin / AdminLTE 遗留色),与河南项目的
田园调性不符;用户要求按 Cottagecore 规范整站重做,并**逐页检查小问题、把 UI 细节调到位**。
**做法:不引 Tailwind,走「Element 变量 + 皮肤覆盖层」**
(`ruoyi-ui` 是 Vue2 + Element UI 2.15 + vue-cli4/webpack4/postcss7,Tailwind 的 preflight 会打乱 Element 基础样式)。
新建 **`src/assets/styles/cottagecore.scss` 作为全站唯一色源**,其余文件一律引用变量、不写死十六进制;
再通过重编译 `element-ui` 的 theme-chalk 源码(`element-variables.scss`)换掉 Element 自己的底色。
| 文件 | 角色 |
|---|---|
| `assets/styles/cottagecore.scss` | **唯一色源**:品牌色 + 组件槽位色 + 图标色相 + 对比度实测注释 |
| `assets/styles/element-variables.scss` | 覆盖 `$--color-*` / 圆角 / 阴影 / `$--color-white` → 暖白 `#fffdfa`,再 `@import` theme-chalk 源码整包编译 |
| `assets/styles/skin.scss` | 皮肤覆盖层(按钮 / 表单 / 表格 / 分页 / 弹层 / Element 写死的冷色) |
| `assets/styles/index.scss` | 总入口,**最后一行 `@import './skin.scss'`**(整体回滚 = 注释这一行) |
| `assets/styles/sidebar.scss` / `variables.scss` | 侧栏(4 色图标轮换)/ 菜单深浅两套色 + `:export` 给 js |
**六轮递进,要点**:
1. **建色源 + 换 Element 底色**:primary 定陶土 `#9a5c35`(**不用草绿**,否则「新增 / 修改」同色系分不清;
想切回只改色源一处),success 草绿 `#457450`,warning 深雏菊金 `#8f6418`,danger 莓红 `#a4485a`,info 暖褐 `#6b6152`。
正文 `#5f4f3d`(**`#8b7355` 只有 4.17:1,禁止做正文**);草绿 `#5a8f5a` 白字仅 3.81:1 ⇒ **只做装饰与大色块**,
绿色文字一律 `#3f6b45`。
2. **摘掉隐藏的 ThemePicker**:`App.vue` 曾无条件挂 `<theme-picker>`(只用 CSS `display:none` 藏,组件照样 mount),
它在 `created()` 里会去 `unpkg.com` 拉整包 Element 默认主题并注入 `<style>` **把配色改回企业蓝**。已移除,别再挂回去。
3. **全局色板机械清扫**(45 个文件):把散在业务页里的旧 Element 色(`#409eff` / `#67c23a` / `#e6a23c` / `#f56c6c` / `#909399` …)
按语义映射到色源;同时改掉 `Logo.vue` / `Navbar.vue` 的白色毛玻璃 + 蓝阴影、全局滚动条的冷蓝。
4. **顶栏与标签页合并成一条**,去掉重复显示的面包屑。
5. **Element 内部写死的冷色**(hex 搜索抓不到、只能用更高权重规则盖):白遮罩、蓝色 info toast、
冷绿上传成功勾 `#13ce66`(**它的选择器是带父级的三段式 0,2,0,单类选择器会被压住**)、冷灰滚动条 / 标签 / 日期面板。
根因是 `$--color-white` → 把**暖白 `#fffdfa`** 提为「白」,一次性统一所有白色面。
6. **操作列按钮折行**(用户截图里那类问题)——根因不是列宽不够,而是 `element-ui.scss` 里一条全局规则
`.fixed-width .el-button--mini { width: 60px }` 把按钮钉死 60px,`图标 + 2~4 个中文` 直接被截断换行。
删掉该规则 + 给 19 个操作列补显式宽度(≥3 个按钮的收进「更多」下拉)+ 补下拉与前钮间距。
**验证(三层,脚本留在 `.workbuddy/`,可重跑)**:
- `node .workbuddy/audit-palette.cjs` —— 源码级色板审计(`.vue` + `.scss` + `.css`,**先剥注释再扫**):
当前 **0 / 184 文件离版**。色板白名单里另有一类**刻意保留的域内语义色**:
CS2 稀有度、麻将/饰品品质色谱(金/红/紫)、仪表盘折线色 —— **不是主题色,不许改**。
- `node .workbuddy/verify-dist.cjs` —— 构建产物断言,**34 项 ALL_OK**:① 本项目源码的冷色必须为 0;
② 新增规则必须存在;③ 中性色(`rgba(0,0,0,*)`)设「冻结基线」上限防复发。
**扫描范围是 app.css + 全部 `chunk-*.css`**(views/* 是懒加载,只看 app.css 会整片漏掉)。
- `node .workbuddy/verify-computed.cjs` —— **真机 Chrome 计算样式断言,20 项 ALL_OK**。
专治 element-ui 内部字面量色:这些色值**在样式表文本里去不掉**,`grep = 0` 不成立,必须看计算值。
- 构建:`DONE Build complete`,零 Sass 错误;仅剩既有的 `delLevel` 缺失导出 + 体积警告,与本改动无关。
**踩坑**:并行对**同一文件**发多个 Edit 会撞 `EBUSY`;更阴的是**偶发不报错、但两次写入只剩一次**(本次 `sidebar.scss` 丢过两个替换)
⇒ **机械替换一律串行,改完用 grep 逐条复验**,别信 Edit 的 success 回执。
**刻意未做**:① `variables.scss` 里 `sideTheme: theme-dark` 的深色侧栏回退色(冷蓝灰)保留 ——
设置抽屉里的「深色」按钮现在点下去视觉上是空操作(皮肤层已把侧栏壳设成透明 + 文字 `!important`),
**没有删按钮也没改回退色**,要不要彻底下掉这个开关待定;② `btn.scss` 的 `.blue-btn` 等 7 个类全项目 0 引用,
但其颜色已随 `variables.scss` 指向新色板,**不构成视觉问题,未清理**。
@@ -47,6 +47,31 @@ $cc-shadow-sm: 0 2px 8px rgba(139, 115, 85, 0.10);
$cc-shadow-md: 0 6px 18px rgba(139, 115, 85, 0.13);
$cc-shadow-lg: 0 12px 32px rgba(139, 115, 85, 0.17);
/* ---- 组件变量槽位(Element 需要的多级描边 / 浅底)----
这些是「中间色」,不承担品牌语义,但必须收在这里:
否则同一层底色会在不同文件里写成两个近似值
(如 #f6efe3 与 $cc-linen #f3ece0 肉眼几乎分不出,却算成了两套色)。 */
$cc-border-1: #d8c3b0; // 主描边:输入框、表格线
$cc-border-2: #e2d3c2; // 次描边:轻分隔、禁用描边
$cc-border-3: #eadfd0; // 细描边(比 $cc-linen-2 更接近白)
$cc-tint-1: #f0e8dc; // 最浅底:凹槽
$cc-tint-2: #f6efe3; // 浅底:标签 / 区块
$cc-tint-3: #fbf5ea; // 悬停底:整行 hover、标签 hover
$cc-terra-deep: #854c2a; // 陶土加深:主色悬停、激活标签渐变末端(白字 6.85:1)
/* ---- 图标色相:一级菜单图标块 / 统计卡图标共用同一套 4 色 ----
陶土、草绿直接复用主色;雏菊金 / 玫瑰粉是「图标专用」的浅档
($cc-daisy-deep 太暗、$cc-rose 太艳,塞进 30px 小方块会发黑/发跳),
只在图标上用,不再往别处扩散。
★ 这两档同时被 .vue 里的内联色引用(scoped style 拿不到 sass 变量),
改动时必须同步 .workbuddy/audit-palette.cjs 的白名单。 */
$cc-hue-daisy: #a8791f;
$cc-hue-rose: #b57474;
$cc-icon-hues: ($cc-terra, $cc-grass-deep, $cc-hue-daisy, $cc-hue-rose);
/* ---- 状态淡底 ---- */
$cc-blossom-tint: #f7e9e6; // 花粉淡底:中奖格浅红(别在 .vue 里再写一个近似粉)
/* ---- 字体 ----
Cottagecore 要求衬线,但后台是拿表格干活的:13px 宋体在密集表格里可读性明显下降。
因此只在「标题类」(≥ 16px 的页面标题 / 弹窗标题)用衬线,
+13 -5
View File
@@ -28,11 +28,19 @@
}
}
.fixed-width {
.el-button--mini {
padding: 7px 10px;
width: 60px;
}
/* ★ 这里原本是 RuoYi 的遗留规则,已删除:
.fixed-width .el-button--mini { padding: 7px 10px; width: 60px }
.fixed-width 是「操作列」专用类。强设 60px 后,border-box 的内容盒只剩 48px,
而本项目的操作按钮普遍是「图标 + 2~4 字」(如 el-icon-date +「发放饰品」≈ 70px)
⇒ 文字溢出按钮、盖到相邻按钮上,整列还会折行。
按钮宽度改回按内容撑开;文字按钮的左右留白由 skin.scss 的
`.el-table .el-button--text { padding: 4px 6px }` 接管。
★ 操作列若按钮 ≥3 个,请在模板上显式给 `width`,否则自动列宽会挤压换行。 */
/* 「更多」是 el-dropdown 包着 el-button,不是 .el-button 的兄弟节点,
拿不到 Element 的 `.el-button + .el-button { margin-left: 10px }`,会贴住前一个按钮 */
.el-table .cell .el-button + .el-dropdown {
margin-left: 10px;
}
.status-col {
@@ -28,16 +28,29 @@ $--color-text-secondary: $cc-ink-3;
$--color-text-placeholder: $cc-ink-4;
/* 描边:花粉细边,禁止纯黑硬线 */
$--border-color-base: #d8c3b0;
$--border-color-light: #e2d3c2;
$--border-color-lighter: #eadfd0;
$--border-color-extra-light: #f0e8dc;
$--border-color-base: $cc-border-1;
$--border-color-light: $cc-border-2;
$--border-color-lighter: $cc-border-3;
$--border-color-extra-light: $cc-tint-1;
/* 底色 */
/* ★ 白:Cottagecore 的「白」是暖白卡片色 #fffdfa,不是 #fff。
Element 把 $--color-white 当成**所有白色面的根**——输入框、下拉面板、
气泡、对话框、分页底、单选/复选底,以及各 light 变体的 mix 基色。
改这一处,比逐个选择器打补丁稳,也不会漏。 */
$--color-white: $cc-cream-hi;
$--background-color-base: $cc-linen;
$--disabled-fill-base: $cc-linen;
$--disabled-color-base: $cc-ink-4;
$--disabled-border-base: #e2d3c2;
$--disabled-border-base: $cc-border-2;
/* Element 写死的两处冷蓝(是 !default 变量,可以覆盖)——
① 默认/信息类 toast 的底:原 #edf2fc 淡蓝,RuoYi 里 this.$message('…')
不带 type 时就会走它,是页面上会闪的蓝块;
② 禁用勾选框填充:原 #edf2fc 同样偏蓝。 */
$--message-background-color: mix($cc-cream, $cc-ash, 92%);
$--checkbox-disabled-input-fill: $cc-linen-2;
/* 圆润:Cottagecore 的圆角一律大于 Element 默认的 4px */
$--border-radius-base: 12px;
@@ -50,11 +63,11 @@ $--box-shadow-dark: $cc-shadow-lg;
$--box-shadow-light: $cc-shadow-sm;
/* 表格:柔和暖线,禁用 #dfe6ec 冷灰 */
$--table-border: 1px solid #eadfd0;
$--table-border-color: #eadfd0;
$--table-border: 1px solid $cc-border-3;
$--table-border-color: $cc-border-3;
$--table-header-background-color: $cc-linen;
$--table-header-font-color: $cc-ink-3;
$--table-row-hover-background-color: #fbf5ea;
$--table-row-hover-background-color: $cc-tint-3;
$--table-current-row-background-color: $cc-linen;
$--table-font-color: $cc-ink-2;
+2 -2
View File
@@ -132,7 +132,7 @@ aside {
// 否则「页卡 > 区块卡 > 小卡」三层卡片套在一起,画面很碎(规范也禁止卡片嵌套)。
.app-container {
padding: 24px;
background: #fdfaf5;
background: $cc-cream-hi;
border: 0;
border-radius: 20px;
box-shadow: 0 2px 10px rgba(139, 115, 85, 0.07);
@@ -145,7 +145,7 @@ aside {
position: relative;
margin: 6px 10px 6px 0;
padding: 10px 24px 24px;
background: #fdfaf5;
background: $cc-cream-hi;
border: 0;
border-radius: 20px;
box-shadow: 0 2px 10px rgba(139, 115, 85, 0.07);
+4 -2
View File
@@ -7,8 +7,10 @@
}
@mixin scrollBar {
/* 原为 Element 冷蓝灰 #d3dce6 / #99a9bf。当前项目未 include 本 mixin
(侧栏走 .el-scrollbar__thumb),顺手改成暖色,避免日后启用时又漏一版冷色。 */
&::-webkit-scrollbar-track-piece {
background: #d3dce6;
background: #ece2d3;
}
&::-webkit-scrollbar {
@@ -16,7 +18,7 @@
}
&::-webkit-scrollbar-thumb {
background: #99a9bf;
background: #8b755a;
border-radius: 20px;
}
}
+43 -55
View File
@@ -1,8 +1,13 @@
/**
* 通用css样式布局处理
* Copyright (c) 2019 ruoyi
*
* ⚠️ 本文件由 main.js 在 index.scss(含皮肤层 skin.scss)**之后**引入,
* 权重相同时它会赢。改这里的任何视觉规则前,先确认不是在和皮肤层打架。
*/
@import './cottagecore.scss';
/** 基础通用 **/
.pt5 {
padding-top: 5px;
@@ -79,9 +84,12 @@
.el-table__header-wrapper, .el-table__fixed-header-wrapper {
th {
word-break: break-word;
background-color: #f8f8f9;
color: #515a6e;
height: 40px;
/* 原为冷灰 #f8f8f9 / 石板蓝 #515a6e —— 权重低于皮肤层的
.el-table th.el-table__cell,本来就没生效;这里直接对齐皮肤,
免得将来权重一变又漏出冷灰表头。 */
background-color: $cc-linen;
color: $cc-ink-3;
height: 42px;
font-size: 13px;
}
}
@@ -93,35 +101,32 @@
}
/** 表单布局 **/
/* 冷蓝 #6379bb + 冷灰 #ddd 的分区标题(角色分配 / 代码生成两页在用)→ 暖色板 */
.form-header {
font-size:15px;
color:#6379bb;
border-bottom:1px solid #ddd;
color:$cc-terra;
border-bottom:1px solid $cc-line-2;
margin:8px 10px 25px 10px;
padding-bottom:5px
}
/** 表格布局 **/
.pagination-container {
position: relative;
height: 25px;
margin-bottom: 10px;
margin-top: 15px;
padding: 10px 20px !important;
}
/* .pagination-container 的旧定义(position:relative / height:25px / margin 15px 10px /
padding:10px 20px !important)已删除:
它是 AdminLTE 时代的紧凑分页,和皮肤层打架,而且那条 !important 让皮肤层的
padding 永远失效;height:25px 又把 32px 高的页码按钮挤出去,看起来就是表格下方
多了一条空白白带。分页样式现在只在 assets/styles/skin.scss 里定义一处。 */
/* tree border */
.tree-border {
margin-top: 5px;
border: 1px solid #e5e6e7;
background: #FFFFFF none;
border-radius:4px;
border: 1px solid $cc-line;
background: $cc-cream-hi none;
border-radius: 12px;
}
.pagination-container .el-pagination {
right: 0;
position: absolute;
}
/* 原来的 .pagination-container .el-pagination { right:0; position:absolute } 已删除。
绝对定位让分页脱离文档流(外层白带高度算不准),右对齐改由皮肤层 text-align 负责。 */
@media ( max-width : 768px) {
.pagination-container .el-pagination > .el-pagination__jump {
@@ -132,11 +137,9 @@
}
}
.el-table .fixed-width .el-button--mini {
padding-left: 0;
padding-right: 0;
width: inherit;
}
/* 操作列的 .el-button--mini 在 old 版里被抹掉左右内边距(padding:0 + width:inherit),
文字按钮会挤成「修改删除」连在一起,和皮肤层 .el-table .el-button--text 的 4px 6px 打架。
删掉这条,按钮间距交回皮肤层。 */
/** 表格更多操作下拉样式 */
.el-table .el-dropdown-link,.el-table .el-dropdown-selfdefine {
@@ -166,8 +169,8 @@
}
.list-group-item {
border-bottom: 1px solid #e7eaec;
border-top: 1px solid #e7eaec;
border-bottom: 1px solid $cc-line-2;
border-top: 1px solid $cc-line-2;
margin-bottom: -1px;
padding: 11px 0px;
font-size: 13px;
@@ -192,30 +195,14 @@
margin-bottom: 10px;
}
/* button color */
.el-button--cyan.is-active,
.el-button--cyan:active {
background: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
.el-button--cyan:focus,
.el-button--cyan:hover {
background: #48D1CC;
border-color: #48D1CC;
color: #FFFFFF;
}
.el-button--cyan {
background-color: #20B2AA;
border-color: #20B2AA;
color: #FFFFFF;
}
/* 说明:这里原本是 AdminLTE / vue-element-admin 遗留的青色按钮与文字色
(#20B2AA / #48D1CC / #1ab394 / #1c84c6 / #23c6c8 / #f8ac59 / #ed5565 / #888888),
全是冷色,和 Cottagecore 色板冲突。已按语义映射到色板;
.el-button--cyan 全项目 0 处使用,直接删除。 */
/* text color */
.text-navy {
color: #1ab394;
color: $cc-grass-text;
}
.text-primary {
@@ -223,23 +210,23 @@
}
.text-success {
color: #1c84c6;
color: $cc-grass-text;
}
.text-info {
color: #23c6c8;
color: $cc-ash;
}
.text-warning {
color: #f8ac59;
color: $cc-daisy-deep;
}
.text-danger {
color: #ed5565;
color: $cc-rose;
}
.text-muted {
color: #888888;
color: $cc-ink-3;
}
/* image */
@@ -260,15 +247,16 @@
width: 200px;
height: 200px;
border-radius: 50%;
box-shadow: 0 0 4px #ccc;
box-shadow: $cc-shadow-md;
overflow: hidden;
}
/* 拖拽列样式 */
/* 拖拽列样式(RuoYi 表单构建器 / 表格拖拽排序共用)
原来是 vue-element-admin 的 #42b983(Vue 青绿),和暖色板冲突 → 用草绿深档 */
.sortable-ghost{
opacity: .8;
color: #fff!important;
background: #42b983!important;
background: $cc-grass-deep!important;
}
.top-right-btn {
+22 -26
View File
@@ -33,12 +33,8 @@ $card-shadow: $cc-shadow-sm;
/* 一级菜单图标色板:只留 4 个田园色循环(陶土 / 草绿 / 雏菊金 / 玫瑰粉)
原来是 8 色高饱和渐变,15 个菜单项齐上像调色盘;
现在与仪表盘统计卡共用同一套 4 色,整站配色口径统一。 */
$icon-hues:
#9a5c35, // 1 陶土
#457450, // 2 草绿
#a8791f, // 3 雏菊金
#b57474; // 4 玫瑰粉
现在与统计卡图标共用 cottagecore.scss 的 $cc-icon-hues,整站配色口径统一。 */
$icon-hues: $cc-icon-hues;
$icon-hue-count: length($icon-hues);
html,
@@ -51,10 +47,10 @@ body {
/* 亚麻底整体加深一档(原来是 #fdfaf5→#f3ece0,顶部近白,
和奶油卡片几乎同色,卡片边界会糊掉)。现在卡片是亮面、页面是麻面,层次清楚。 */
background:
radial-gradient(760px 520px at 4% 100%, rgba(90, 143, 90, .11), transparent 62%),
radial-gradient(760px 520px at 96% 0%, rgba(212, 160, 160, .13), transparent 62%),
radial-gradient(520px 420px at 78% 88%, rgba(245, 215, 95, .14), transparent 60%),
linear-gradient(155deg, #f7f1e6 0%, #f3ece0 48%, #ece2d3 100%);
radial-gradient(760px 520px at 4% 100%, rgba($cc-grass, .11), transparent 62%),
radial-gradient(760px 520px at 96% 0%, rgba($cc-blossom, .13), transparent 62%),
radial-gradient(520px 420px at 78% 88%, rgba($cc-daisy, .14), transparent 60%),
linear-gradient(155deg, $cc-tint-2 0%, $cc-linen 48%, $cc-linen-2 100%);
background-attachment: fixed;
.main-container {
@@ -112,7 +108,7 @@ body {
}
.el-scrollbar__thumb {
background: rgba(139, 115, 85, .26);
background: rgba($cc-earth, .26);
}
.is-horizontal {
@@ -187,7 +183,7 @@ body {
.el-menu:not(.el-menu--inline) > div > .el-submenu.is-active > .el-submenu__title {
color: $cc-grass-text !important;
border-color: $cc-blossom;
background: linear-gradient(135deg, $cc-cream-hi, rgba(245, 215, 95, .18)) !important;
background: linear-gradient(135deg, $cc-cream-hi, rgba($cc-daisy, .18)) !important;
box-shadow: $cc-shadow-md, inset 3px 0 0 $brand;
}
@@ -195,7 +191,7 @@ body {
.el-menu:not(.el-menu--inline) > div > a > .el-menu-item.is-active {
color: $brand !important;
border-color: $cc-blossom;
background: linear-gradient(135deg, $cc-cream-hi, rgba(212, 160, 160, .22)) !important;
background: linear-gradient(135deg, $cc-cream-hi, rgba($cc-blossom, .22)) !important;
box-shadow: $cc-shadow-md, inset 3px 0 0 $brand;
}
@@ -225,10 +221,10 @@ body {
border-radius: 11px;
/* 浅底 + 同色深图标。底色不能太淡,否则小图标「看不见」(用户反馈对比度不够),
所以 tint 用 .22 并加 1px 内描边。 */
color: #9a5c35 !important;
color: $cc-terra !important;
fill: currentColor;
background: rgba(154, 92, 53, .22);
box-shadow: inset 0 0 0 1px rgba(154, 92, 53, .32);
background: rgba($cc-terra, .22);
box-shadow: inset 0 0 0 1px rgba($cc-terra, .32);
}
/* 按菜单顺序在这 4 个色里轮换 */
@@ -267,7 +263,7 @@ body {
bottom: 7px;
width: 2px;
border-radius: 1px;
background: linear-gradient(180deg, rgba(154, 92, 53, .38), rgba(212, 160, 160, .22));
background: linear-gradient(180deg, rgba($cc-terra, .38), rgba($cc-blossom, .22));
}
.el-menu--inline .el-menu-item,
@@ -321,19 +317,19 @@ body {
.el-menu--inline .el-menu-item:hover,
.el-menu--inline .el-submenu > .el-submenu__title:hover {
color: $brand !important;
background: rgba(245, 215, 95, .20) !important;
background: rgba($cc-daisy, .20) !important;
transform: none !important;
&::before {
border-color: $brand;
background: rgba(154, 92, 53, .16);
background: rgba($cc-terra, .16);
}
}
.el-menu--inline .el-menu-item.is-active {
color: $brand !important;
font-weight: 650;
background: linear-gradient(90deg, rgba(212, 160, 160, .30), rgba(245, 215, 95, .16)) !important;
background: linear-gradient(90deg, rgba($cc-blossom, .30), rgba($cc-daisy, .16)) !important;
}
.el-menu--inline .el-menu-item.is-active::before {
@@ -342,7 +338,7 @@ body {
margin-top: -5px;
border-color: $brand;
background: $brand;
box-shadow: 0 0 0 4px rgba(154, 92, 53, .16);
box-shadow: 0 0 0 4px rgba($cc-terra, .16);
}
/* 三级:在二级基础上小步缩进,不把内容推到很右边 */
@@ -470,14 +466,14 @@ body {
background: transparent !important;
&:hover {
background: rgba(245, 215, 95, .24) !important;
background: rgba($cc-daisy, .24) !important;
color: $brand !important;
}
&.is-active {
color: $brand !important;
font-weight: 650;
background: linear-gradient(90deg, rgba(212, 160, 160, .32), rgba(245, 215, 95, .18)) !important;
background: linear-gradient(90deg, rgba($cc-blossom, .32), rgba($cc-daisy, .18)) !important;
}
.svg-icon {
@@ -499,7 +495,7 @@ body {
bottom: 7px;
width: 2px;
border-radius: 1px;
background: linear-gradient(180deg, rgba(154, 92, 53, .34), rgba(212, 160, 160, .2));
background: linear-gradient(180deg, rgba($cc-terra, .34), rgba($cc-blossom, .2));
}
.el-menu-item,
@@ -528,7 +524,7 @@ body {
&:hover {
color: $brand !important;
background: rgba(245, 215, 95, .24) !important;
background: rgba($cc-daisy, .24) !important;
&::before {
border-color: $brand;
@@ -538,7 +534,7 @@ body {
&.is-active {
color: $brand !important;
font-weight: 650;
background: rgba(212, 160, 160, .26) !important;
background: rgba($cc-blossom, .26) !important;
&::before {
border-color: $brand;
+122 -9
View File
@@ -14,7 +14,7 @@ $brand: $cc-terra;
$ink: $cc-ink;
$ink-2: $cc-ink-2;
$ink-3: $cc-ink-3;
$line: #eadfd0;
$line: $cc-border-3;
/* ------------------------------- 按钮 ------------------------------- */
.el-button {
@@ -59,8 +59,8 @@ $line: #eadfd0;
color: #fff;
&:hover, &:focus {
background: #854c2a;
border-color: #854c2a;
background: $cc-terra-deep;
border-color: $cc-terra-deep;
color: #fff;
}
@@ -233,7 +233,7 @@ $line: #eadfd0;
}
.el-table__row:hover > td.el-table__cell {
background: #fbf5ea;
background: $cc-tint-3;
}
.el-button--text {
@@ -249,12 +249,28 @@ $line: #eadfd0;
}
/* ------------------------------- 分页 -------------------------------
分页保持在页面最底部(与原型图一致),不做悬浮/吸底
------------------------------------------------------------------- */
.app-container .pagination-container {
margin-top: 6px;
padding: 8px 16px 6px;
分页保持在页面最底部(与原型图一致),不做悬浮/吸底。
★ 这里的选择器刻意把 .pagination-container 写两遍(权重 0,3,0):
components/Pagination/index.vue 是 scoped 组件,它的规则会被编译成
.pagination-container[data-v-xxxxxxx],权重 0,2,0,而且**排在皮肤层后面**
⇒ 只写一遍时权重打平、组件赢,原版那条 background:#fff 就会在奶油底上
露出一条白带,padding:32px 16px 还会把分页推离表格一大截。
组件里那条已经删掉了,这里再抬一档权重,防止以后有人加回去又悄悄复发。
分页右对齐靠 text-align(原来靠 ruoyi.scss 里 el-pagination 的
position:absolute + right:0,那会让分页脱离文档流、外层高度算不准)。 */
.app-container .pagination-container.pagination-container {
margin: 4px 0 0;
padding: 8px 0 2px;
background: transparent;
border-radius: 14px;
text-align: right;
}
/* 表格里的文字按钮(编辑 / 删除 / 详情…)不许把标签折成两行 */
.el-table .el-button--text {
white-space: nowrap;
}
.el-pagination {
@@ -426,6 +442,103 @@ $line: #eadfd0;
border-bottom-color: $cc-line-2;
}
/* ================= Element 内部写死的冷色 =================
下面这些色在 element-ui 的 scss 里是**字面量**(不是变量),
改 element-variables.scss 覆盖不到,只能在皮肤层压掉。
共同特征:都是冷蓝 / 冷灰 / 冷绿,放在奶油底上明显出戏。
======================================================== */
/* 图片上传(ImageUpload 组件,头像 / banner):
①「+」虚线框:原 background #fbfdff、dashed #c0ccda、图标 #8c939d,全是冷色;
② 上传成功的绿对勾角标:upload.scss 里写死 #13ce66 的冷绿。 */
.el-upload--picture-card {
background-color: $cc-cream-hi;
border: 1px dashed $cc-line;
border-radius: 14px; /* 原 6px,和弹层/卡片统一 */
i {
color: $cc-ink-4;
}
&:hover {
border-color: $cc-blossom-deep;
}
}
/* 上传成功的绿勾角标:upload.scss 里写死 #13ce66,且用的是**带父级**的三段选择器
(权重 0,2,0)——只写 `.el-upload-list__item-status-label` 单类会被它压住,必须对齐权重。
顺带把角标的黑影 rgba(0,0,0,.2) / #ccc 也换成暖棕柔影。 */
.el-upload-list--picture-card .el-upload-list__item-status-label,
.el-upload-list--picture .el-upload-list__item-status-label,
.el-upload-cover__label {
background: $cc-grass-deep;
box-shadow: 0 1px 1px rgba(139, 115, 85, .28);
}
/* 多选下拉里已选中的标签底:原 #f0f2f5 冷蓝灰 */
.el-select .el-tag,
.el-cascader__tags .el-tag {
background-color: $cc-linen-2;
border-color: $cc-border-2;
}
/* 日期 / 时间 / 颜色面板的冷灰分隔线与近黑文字(原 #e4e4e4 / #dcdcdc / #333) */
.el-picker-panel__footer,
.el-picker-panel__sidebar,
.el-time-panel__footer,
.el-date-picker__time-header,
.el-date-range-picker__content.is-left,
.el-date-range-picker__time-header {
border-color: $cc-line-2;
background-color: $cc-cream-hi;
}
.el-picker-panel__btn,
.el-color-dropdown__btn {
border-color: $cc-border-2;
color: $cc-ink-2;
border-radius: 10px;
}
/* 日期面板「快捷选项」选中态:原 #e6f1fe 淡蓝底 */
.el-picker-panel__shortcut.active {
background-color: rgba(245, 215, 95, .28);
color: $cc-terra;
}
.el-color-picker__trigger,
.el-color-hue-slider__thumb,
.el-color-alpha-slider__thumb {
border-color: $cc-border-2;
}
/* 左/右侧标签页(border-card 变体):原 #d1dbe5 */
.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active,
.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active {
border-top-color: $cc-border-2;
border-bottom-color: $cc-border-2;
}
/* 输入框内滚动条滑块:原 #b4bccc */
.el-input::-webkit-scrollbar-thumb {
background: $cc-border-1;
}
/* 加载遮罩:Element 默认 rgba(255,255,255,.9),
在奶油底页面上是「刺眼白闪」(旋转图标本身已是陶土色) */
.el-loading-mask {
background-color: rgba(250, 246, 240, .86);
}
/* 斑马纹行 / 描述列表标签底:原 #fafafa 冷灰 */
.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell {
background: $cc-cream;
}
.el-descriptions-item__label.is-bordered-label {
background: $cc-linen;
}
/* ------------------------------- 无障碍 -------------------------------
规范要求动效提供 reduced-motion 备选:关掉悬停位移/旋转,只留颜色变化
------------------------------------------------------------------- */
+4 -4
View File
@@ -376,7 +376,7 @@ export default {
.popup-main {
position: relative;
margin: 10px auto;
background: #fff;
background: #fffdfa; /* $cc-cream-hi */
border-radius: 5px;
font-size: 12px;
overflow: hidden;
@@ -385,7 +385,7 @@ export default {
overflow: hidden;
line-height: 34px;
padding-top: 6px;
background: #f2f2f2;
background: #ece2d3; /* $cc-linen-2 */
}
.popup-result {
box-sizing: border-box;
@@ -404,7 +404,7 @@ export default {
margin-left: -70px;
text-align: center;
line-height: 30px;
background: #fff;
background: #fffdfa; /* $cc-cream-hi */
}
.popup-result table {
text-align: center;
@@ -419,7 +419,7 @@ export default {
height: 30px;
white-space: nowrap;
overflow: hidden;
border: 1px solid #e8e8e8;
border: 1px solid rgba(139, 115, 85, 0.2); /* $cc-line-2 */
}
.popup-result-scroll {
font-size: 12px;
+1 -1
View File
@@ -198,7 +198,7 @@ export default {
margin-bottom: 5px;
}
.upload-file-list .el-upload-list__item {
border: 1px solid #e4e7ed;
border: 1px solid rgba(212, 160, 160, 0.55); /* $cc-line */
line-height: 2;
margin-bottom: 10px;
position: relative;
@@ -183,7 +183,7 @@ export default {
padding-left: 0;
padding-right: 0;
box-shadow: none !important;
border-bottom: 1px solid #d9d9d9;
border-bottom: 1px solid rgba(139, 115, 85, 0.2); /* $cc-line-2 */
vertical-align: middle;
}
}
+2 -2
View File
@@ -77,7 +77,7 @@ export default {
height: 100%;
padding: 0 5px;
&:hover {
background: #ececec;
background: #ece2d3; /* $cc-linen-2 */
border-radius: 5px;
}
.icon {
@@ -94,7 +94,7 @@ export default {
}
}
.icon-item.active {
background: #ececec;
background: #ece2d3; /* $cc-linen-2 */
border-radius: 5px;
}
}
@@ -67,9 +67,13 @@ export default {
<style lang="scss" scoped>
.el-image {
border-radius: 5px;
background-color: #ebeef5;
box-shadow: 0 0 5px 1px #ccc;
/* 原为冷灰底(ebeef5)+ 硬灰影(0 0 5px 1px ccc)+ 5px 方角。
列表页的头像/图片缩略图全走这个组件,冷灰底 + 硬影在奶油卡上很突兀,
而且它在表格里被 skin.scss 压到 32px ⇒ 出错占位图标(原本 30px)几乎铺满整格,
看起来像"图裂了"。改成暖色板 + 柔和暖影,占位图缩小到不刺眼。 */
border-radius: 10px;
background-color: #f3ece0; // $cc-linen
box-shadow: 0 1px 3px rgba(139, 115, 85, 0.18);
::v-deep .el-image__inner {
transition: all 0.3s;
cursor: pointer;
@@ -83,8 +87,8 @@ export default {
align-items: center;
width: 100%;
height: 100%;
color: #7a664e;
font-size: 30px;
color: #8b755a; // $cc-ink-4
font-size: 18px;
}
}
</style>
+6 -4
View File
@@ -104,10 +104,12 @@ export default {
</script>
<style scoped>
.pagination-container {
background: #fff;
padding: 32px 16px;
}
/* 只保留「隐藏」这一条。原版的 background:#fff + padding:32px 16px 已经删掉:
本组件是 scoped 的,选择器权重是 .pagination-container[data-v-x] (0,2,0),
而皮肤层(assets/styles/skin.scss)的 .app-container .pagination-container 也是 (0,2,0)
—— 权重打平、组件样式在产物里更靠后,于是原版这两条永远赢:
在奶油底 .app-container 上露出一条纯白带,还有 32px 的上下留白。
⇒ 分页的底色/间距/圆角一律由皮肤层负责,这里不要再写。 */
.pagination-container.hidden {
display: none;
}
+4 -3
View File
@@ -61,13 +61,14 @@ export default {
</script>
<style lang="scss" scoped>
/* 冷中性半透明(纯黑遮罩 / 纯黑影)→ 暖棕:Cottagecore 里不留灰黑 */
.rightPanel-background {
position: fixed;
top: 0;
left: 0;
opacity: 0;
transition: opacity .3s cubic-bezier(.7, .3, .1, 1);
background: rgba(0, 0, 0, .2);
background: rgba(79, 65, 48, .22); /* $cc-ink 22% */
z-index: -1;
}
@@ -78,10 +79,10 @@ export default {
position: fixed;
top: 0;
right: 0;
box-shadow: 0px 0px 15px 0px rgba(0, 0, 0, .05);
box-shadow: 0 0 15px 0 rgba(139, 115, 85, .13); /* $cc-earth 13% */
transition: all .25s cubic-bezier(.7, .3, .1, 1);
transform: translate(100%);
background: #fff;
background: #fffdfa; /* $cc-cream-hi */
z-index: 40000;
}
+1 -1
View File
@@ -49,7 +49,7 @@ export default {
.screenfull-svg {
display: inline-block;
cursor: pointer;
fill: #5a5e66;;
fill: #7a664e; /* $cc-ink-3;原为冷板岩(5a5e66),且多打了一个分号 */
width: 20px;
height: 20px;
vertical-align: 10px;
+1 -1
View File
@@ -137,7 +137,7 @@ export default {
.el-icon-caret-bottom {
font-size: 12px;
color: #9a886e;
color: #8b755a; /* $cc-ink-4;原为未加暗的旧值(9a886e) */
}
}
}
@@ -194,7 +194,7 @@ export default {
.setting-drawer-content {
.setting-drawer-title {
margin-bottom: 12px;
color: rgba(0, 0, 0, .85);
color: #4f4130; /* $cc-ink */
font-size: 14px;
line-height: 22px;
font-weight: bold;
@@ -242,13 +242,13 @@ export default {
.drawer-title {
margin-bottom: 12px;
color: rgba(0, 0, 0, .85);
color: #4f4130; /* $cc-ink */
font-size: 14px;
line-height: 22px;
}
.drawer-item {
color: rgba(0, 0, 0, .65);
color: #5f4f3d; /* $cc-ink-2 */
font-size: 14px;
padding: 12px 0;
}
@@ -304,8 +304,9 @@ export default {
}
&.active {
/* 渐变两端都保证白字 ≥4.5:1(#9a5c35 为 5.31:1,#7d4a2a 为 7.28:1) */
background: linear-gradient(135deg, #9a5c35, #7d4a2a);
/* 渐变两端都保证白字 ≥4.5:1(#9a5c35 为 5.31:1,#854c2a 为 6.85:1)
末端用 $cc-terra-deep,和 skin.scss 里主色悬停是同一个值 */
background: linear-gradient(135deg, #9a5c35, #854c2a);
color: #fff;
border-color: transparent;
box-shadow: 0 4px 12px rgba(139, 115, 85, 0.22);
@@ -371,8 +372,8 @@ export default {
vertical-align: 2px;
border-radius: 50%;
text-align: center;
color: #8b98ad;
background-color: rgba(139, 152, 173, .18);
color: #7a664e; /* $cc-ink-3;原为冷板岩(8b98ad) */
background-color: rgba(122, 102, 78, 0.18);
transition: all .3s cubic-bezier(.645, .045, .355, 1);
transform-origin: 100% 50%;
&:before {
+3 -3
View File
@@ -53,7 +53,7 @@ export default {
max-width: 100%;
margin: 100px auto;
.pan-back-btn {
background: #008489;
background: #9a5c35;
color: #fff;
border: none!important;
}
@@ -69,7 +69,7 @@ export default {
.text-jumbo {
font-size: 60px;
font-weight: 700;
color: #484848;
color: #4f4130;
}
.list-unstyled {
font-size: 14px;
@@ -77,7 +77,7 @@ export default {
padding-bottom: 5px;
}
a {
color: #008489;
color: #9a5c35;
text-decoration: none;
&:hover {
text-decoration: underline;
+2 -2
View File
@@ -170,7 +170,7 @@ export default {
font-size: 32px;
font-weight: bold;
line-height: 40px;
color: #1482f0;
color: #9a5c35;
opacity: 0;
margin-bottom: 20px;
animation-name: slideUp;
@@ -205,7 +205,7 @@ export default {
float: left;
width: 110px;
height: 36px;
background: #1482f0;
background: #9a5c35;
border-radius: 100px;
text-align: center;
color: #ffffff;
+1 -1
View File
@@ -31,7 +31,7 @@
<div style="margin-top: 16px; padding-left: 68px">
<div v-for="(item, index) in items" :key="index" style="display: flex; align-items: center; margin-bottom: 10px">
<span style="width: 100px; color: #606266; font-size: 13px">临时爆率 #{{ index + 1 }}</span>
<span style="width: 100px; color: #5f4f3d; font-size: 13px">临时爆率 #{{ index + 1 }}</span>
<el-input
v-model="item.lowPrice"
type="number"
+11 -11
View File
@@ -4,7 +4,7 @@
<el-input v-model="queryParams.name" placeholder="按赌注搜索" clearable style="width:200px;margin-right:10px" @clear="loadData" @keyup.enter.native="loadData">
<el-button slot="append" icon="el-icon-search" @click="loadData" />
</el-input>
<span style="margin-left:10px;margin-right:4px;color:#606266">身份:</span>
<span style="margin-left:10px;margin-right:4px;color:#5f4f3d">身份:</span>
<el-radio-group v-model="audienceFilter" size="small" @change="loadData">
<el-radio-button v-for="a in audiences" :key="a.key" :label="a.key">{{ a.name }}</el-radio-button>
</el-radio-group>
@@ -18,20 +18,20 @@
<el-table-column label="总回合" min-width="80" align="center">
<template slot-scope="scope">
<span v-if="totalRoundsOf(scope.row) != null">{{ totalRoundsOf(scope.row) }}</span>
<span v-else style="color:#c0c4cc">-</span>
<span v-else style="color:#8b755a">-</span>
</template>
</el-table-column>
<el-table-column label="目标RTP" min-width="80" align="center">
<template slot-scope="scope">
<!-- 显示 1 位小数:配比是"整数条回合 × 桶内实际均值"分出来的,精确值留在 title 里,鼠标悬停可看 -->
<span v-if="targetRtp(scope.row) != null" :title="targetRtp(scope.row) + '%'">{{ Number(targetRtp(scope.row)).toFixed(1) + '%' }}</span>
<span v-else style="color:#c0c4cc">-</span>
<span v-else style="color:#8b755a">-</span>
</template>
</el-table-column>
<el-table-column label="实时RTP" min-width="80" align="center">
<template slot-scope="scope">
<span v-if="actualRtp(scope.row) != null" :style="{color: actualRtp(scope.row) > (targetRtp(scope.row) != null ? targetRtp(scope.row) : 0) ? '#f56c6c' : '#67c23a'}">{{ actualRtp(scope.row) }}%</span>
<span v-else style="color:#c0c4cc">-</span>
<span v-if="actualRtp(scope.row) != null" :style="{color: actualRtp(scope.row) > (targetRtp(scope.row) != null ? targetRtp(scope.row) : 0) ? '#a4485a' : '#457450'}">{{ actualRtp(scope.row) }}%</span>
<span v-else style="color:#8b755a">-</span>
</template>
</el-table-column>
<el-table-column label="状态" min-width="60" align="center">
@@ -71,11 +71,11 @@
<el-form-item label="基本赌注"><el-input-number v-model="form.bet" disabled style="width:100%" /></el-form-item>
<el-form-item label="总回合数">
<el-input-number v-model="form.totalRounds" :min="0" :step="50" style="width:100%" />
<span style="color:#909399;font-size:12px">身份级参数,仅作用于身份【{{ audienceLabel(audienceFilter) }}】</span>
<span style="color:#7a664e;font-size:12px">身份级参数,仅作用于身份【{{ audienceLabel(audienceFilter) }}】</span>
</el-form-item>
<el-form-item label="目标RTP">
<el-input-number v-model="form.rtp" :min="0" :max="1" :precision="3" :step="0.05" style="width:100%" />
<span style="color:#909399;font-size:12px">身份级参数,仅作用于身份【{{ audienceLabel(audienceFilter) }}】</span>
<span style="color:#7a664e;font-size:12px">身份级参数,仅作用于身份【{{ audienceLabel(audienceFilter) }}】</span>
</el-form-item>
<el-form-item label="固定/收敛回合%">
<el-input-number v-model="form.fixedPct" :min="0" :max="100" :step="5" style="width:38%" @change="onFixedPctChange" />
@@ -83,7 +83,7 @@
<span style="margin:0 4%">/</span>
<el-input-number v-model="form.convergePct" :min="0" :max="100" :step="5" style="width:38%" @change="onConvergePctChange" />
<span style="margin-left:4px">%</span>
<div style="color:#909399;font-size:12px">固定% + 收敛% = 100;收敛回合用于一轮内把实时RTP动态拉回目标,随保存作用于当前身份</div>
<div style="color:#7a664e;font-size:12px">固定% + 收敛% = 100;收敛回合用于一轮内把实时RTP动态拉回目标,随保存作用于当前身份</div>
</el-form-item>
<el-form-item label="状态">
<el-radio-group v-model="form.status">
@@ -124,7 +124,7 @@
<span style="margin:0 4%">/</span>
<el-input-number v-model="recalcForm.convergePct" :min="0" :max="100" :step="5" style="width:40%" @change="onRecalcConvergePctChange" />
<span style="margin-left:4px">%</span>
<div style="color:#909399;font-size:12px">固定% + 收敛% = 100;收敛回合用于一轮内把实时RTP动态拉回目标</div>
<div style="color:#7a664e;font-size:12px">固定% + 收敛% = 100;收敛回合用于一轮内把实时RTP动态拉回目标</div>
</el-form-item>
</el-form>
<div slot="footer">
@@ -166,11 +166,11 @@
</el-table-column>
<el-table-column label="剩余" min-width="70" align="center">
<template slot-scope="scope">
<span :style="{color: (scope.row.remaining != null ? scope.row.remaining : scope.row.count) <= 0 ? '#f56c6c' : '#67c23a'}">{{ scope.row.remaining != null ? scope.row.remaining : scope.row.count }}</span>
<span :style="{color: (scope.row.remaining != null ? scope.row.remaining : scope.row.count) <= 0 ? '#a4485a' : '#457450'}">{{ scope.row.remaining != null ? scope.row.remaining : scope.row.count }}</span>
</template>
</el-table-column>
<el-table-column label="动态收敛回合" min-width="100" align="center">
<template slot-scope="scope"><span style="color:#e6a23c">{{ scope.row.convergeCount || 0 }}</span></template>
<template slot-scope="scope"><span style="color:#8f6418">{{ scope.row.convergeCount || 0 }}</span></template>
</el-table-column>
</el-table>
<div slot="footer">
@@ -3,7 +3,7 @@
<el-row :gutter="16" style="margin-bottom:16px">
<el-col :span="6"><el-card shadow="hover"><div class="stat"><small>累计投注</small><h3>{{ summary.totalCost || 0 }}</h3></div></el-card></el-col>
<el-col :span="6"><el-card shadow="hover"><div class="stat"><small>累计赢奖</small><h3>{{ summary.totalWin || 0 }}</h3></div></el-card></el-col>
<el-col :span="6"><el-card shadow="hover"><div class="stat"><small>整体RTP</small><h3 :style="{color: rtp > 100 ? 'red' : 'green'}">{{ rtp }}%</h3></div></el-card></el-col>
<el-col :span="6"><el-card shadow="hover"><div class="stat"><small>整体RTP</small><h3 :style="{color: rtp > 100 ? '#a4485a' : '#457450'}">{{ rtp }}%</h3></div></el-card></el-col>
<el-col :span="6"><el-card shadow="hover"><div class="stat"><small>总局数</small><h3>{{ summary.totalSpins || 0 }}</h3></div></el-card></el-col>
</el-row>
@@ -23,7 +23,7 @@
<el-table-column prop="playerCount" label="玩家数" min-width="90" align="center" />
<el-table-column label="RTP" min-width="100" align="center">
<template slot-scope="scope">
<span :style="{color: scope.row.totalCost > 0 && scope.row.totalWin / scope.row.totalCost > 1 ? 'red' : 'green'}">
<span :style="{color: scope.row.totalCost > 0 && scope.row.totalWin / scope.row.totalCost > 1 ? '#a4485a' : '#457450'}">
{{ scope.row.totalCost > 0 ? (Math.round(scope.row.totalWin / scope.row.totalCost * 10000) / 100).toFixed(2) + '%' : '-' }}
</span>
</template>
@@ -88,5 +88,5 @@ export default {
<style scoped>
.stat { text-align: center; }
.stat small { color: #909399; }
.stat small { color: #7a664e; }
</style>
@@ -80,7 +80,7 @@
</el-form-item>
<el-form-item label="兜底饰品">
<el-switch v-model="form.isFallback" :active-value="1" :inactive-value="0" active-text="是" inactive-text="否" />
<div style="color:#909399;font-size:12px;margin-top:4px">未命中区间时随机选择一个兜底饰品返奖</div>
<div style="color:#7a664e;font-size:12px;margin-top:4px">未命中区间时随机选择一个兜底饰品返奖</div>
</el-form-item>
<el-form-item label="返奖区间">
<div style="display:flex;align-items:center;gap:8px">
@@ -88,7 +88,7 @@
<span>~</span>
<el-input-number v-model="form.winHigh" :min="0" :precision="2" :step="0.01" controls-position="right" placeholder="最大值" style="flex:1" />
</div>
<div style="color:#909399;font-size:12px;margin-top:4px">玩家结算赢额落在该区间即获得此饰品(最高到 500x 封顶对应的赢额)</div>
<div style="color:#7a664e;font-size:12px;margin-top:4px">玩家结算赢额落在该区间即获得此饰品(最高到 500x 封顶对应的赢额)</div>
</el-form-item>
<el-form-item label="排序">
<el-input-number v-model="form.sort" :min="0" :step="1" style="width:100%" />
@@ -69,13 +69,13 @@
<el-col :span="6">
<div class="stat-card">
<div class="sc-icon sc-cyan"><i class="el-icon-wallet" /></div>
<div class="sc-body"><small>{{ audienceLabel(audience) }}·总池余额</small><h3 :style="{color: Number(pool.balance) < 0 ? '#f56c6c' : '#409eff'}">{{ fmt(pool.balance) }}</h3></div>
<div class="sc-body"><small>{{ audienceLabel(audience) }}·总池余额</small><h3 :style="{color: Number(pool.balance) < 0 ? '#a4485a' : '#9a5c35'}">{{ fmt(pool.balance) }}</h3></div>
</div>
</el-col>
<el-col :span="6">
<div class="stat-card">
<div class="sc-icon sc-green"><i class="el-icon-data-line" /></div>
<div class="sc-body"><small>{{ audienceLabel(audience) }}·实时RTP</small><h3 :style="{color: rtpPct(pool.rtp) > 100 ? '#f56c6c' : '#67c23a'}">{{ rtpPct(pool.rtp).toFixed(1) }}%</h3></div>
<div class="sc-body"><small>{{ audienceLabel(audience) }}·实时RTP</small><h3 :style="{color: rtpPct(pool.rtp) > 100 ? '#a4485a' : '#457450'}">{{ rtpPct(pool.rtp).toFixed(1) }}%</h3></div>
</div>
</el-col>
</el-row>
@@ -130,7 +130,7 @@
<el-table-column label="一轮花费(基数)" width="130" align="center">
<template slot-scope="scope">
<div>{{ fmt(scope.row.cycleCost) }}</div>
<div style="font-size:11px;color:#909399">{{ fmt(scope.row.costPerRound) }} × {{ scope.row.cycleRounds || '—' }}回合</div>
<div style="font-size:11px;color:#7a664e">{{ fmt(scope.row.costPerRound) }} × {{ scope.row.cycleRounds || '—' }}回合</div>
</template>
</el-table-column>
<el-table-column label="箱内下注" min-width="100" align="center">
@@ -146,18 +146,18 @@
</el-table-column>
<el-table-column label="水位余额" min-width="100" align="center">
<template slot-scope="scope">
<b :style="{color: Number(scope.row.balance) < 0 ? '#f56c6c' : '#409eff'}">{{ fmt(scope.row.balance) }}</b>
<b :style="{color: Number(scope.row.balance) < 0 ? '#a4485a' : '#9a5c35'}">{{ fmt(scope.row.balance) }}</b>
</template>
</el-table-column>
<el-table-column label="累计RTP" width="90" align="center">
<template slot-scope="scope">
<span :style="{color: rtpPct(scope.row.rtp) > 100 ? '#f56c6c' : '#67c23a'}">{{ scope.row.rtp == null ? '—' : rtpPct(scope.row.rtp).toFixed(1) + '%' }}</span>
<span :style="{color: rtpPct(scope.row.rtp) > 100 ? '#a4485a' : '#457450'}">{{ scope.row.rtp == null ? '—' : rtpPct(scope.row.rtp).toFixed(1) + '%' }}</span>
</template>
</el-table-column>
<el-table-column label="本轮RTP/进度" min-width="120" align="center">
<template slot-scope="scope">
<div :style="{color: rtpPct(scope.row.cycleRtp) > 100 ? '#f56c6c' : '#67c23a'}">{{ scope.row.cycleRtp == null ? '—' : rtpPct(scope.row.cycleRtp).toFixed(1) + '%' }}</div>
<div style="font-size:11px;color:#909399">{{ scope.row.cycleDrawn || 0 }} / {{ scope.row.totalRounds || '—' }} 回合</div>
<div :style="{color: rtpPct(scope.row.cycleRtp) > 100 ? '#a4485a' : '#457450'}">{{ scope.row.cycleRtp == null ? '—' : rtpPct(scope.row.cycleRtp).toFixed(1) + '%' }}</div>
<div style="font-size:11px;color:#7a664e">{{ scope.row.cycleDrawn || 0 }} / {{ scope.row.totalRounds || '—' }} 回合</div>
</template>
</el-table-column>
<el-table-column label="收敛占比" width="80" align="center">
@@ -198,13 +198,13 @@
</el-radio-group>
</el-form-item>
<el-form-item label="当前水位">
<b :style="{color: Number(form.balance) < 0 ? '#f56c6c' : '#409eff'}">{{ fmt(form.balance) }}</b>
<b :style="{color: Number(form.balance) < 0 ? '#a4485a' : '#9a5c35'}">{{ fmt(form.balance) }}</b>
</el-form-item>
<el-form-item label="调整金额">
<el-input-number v-model="form.amount" :min="0.01" :precision="2" :step="100" :controls="false" style="width:100%" placeholder="请输入金额" />
</el-form-item>
<el-form-item v-if="form.amount" label="调整后水位">
<b :style="{color: afterBalance < 0 ? '#f56c6c' : '#67c23a'}">{{ fmt(afterBalance) }}</b>
<b :style="{color: afterBalance < 0 ? '#a4485a' : '#457450'}">{{ fmt(afterBalance) }}</b>
</el-form-item>
<el-form-item label="调整原因" required>
<el-input v-model="form.remark" maxlength="100" placeholder="必填,如:活动补水" />
@@ -234,7 +234,7 @@
</el-table-column>
<el-table-column label="金额" min-width="110" align="center">
<template slot-scope="scope">
<span :style="{color: scope.row.type === 1 ? '#67c23a' : (scope.row.type === 2 ? '#f56c6c' : '#e6a23c')}">
<span :style="{color: scope.row.type === 1 ? '#457450' : (scope.row.type === 2 ? '#a4485a' : '#8f6418')}">
{{ scope.row.type === 1 ? '+' : (scope.row.type === 2 ? '-' : '') }}{{ fmt(scope.row.amount) }}
</span>
</template>
@@ -247,13 +247,13 @@
</el-table-column>
<el-table-column label="总池余额" min-width="110" align="center">
<template slot-scope="scope">
<b :style="{color: Number(scope.row.poolBalance) < 0 ? '#f56c6c' : '#409eff'}">{{ scope.row.poolBalance == null ? '—' : fmt(scope.row.poolBalance) }}</b>
<b :style="{color: Number(scope.row.poolBalance) < 0 ? '#a4485a' : '#9a5c35'}">{{ scope.row.poolBalance == null ? '—' : fmt(scope.row.poolBalance) }}</b>
</template>
</el-table-column>
<el-table-column prop="operator" label="操作人" min-width="90" align="center" />
<el-table-column label="备注" min-width="160" align="center" show-overflow-tooltip>
<template slot-scope="scope">
<span :style="{color: scope.row.remark ? '#303133' : '#c0c4cc'}">{{ scope.row.remark || '—' }}</span>
<span :style="{color: scope.row.remark ? '#4f4130' : '#8b755a'}">{{ scope.row.remark || '—' }}</span>
</template>
</el-table-column>
</el-table>
@@ -329,7 +329,7 @@ export default {
},
signColor(v) {
const n = Number(v)
return n < 0 ? '#f56c6c' : (n > 0 ? '#67c23a' : '#303133')
return n < 0 ? '#a4485a' : (n > 0 ? '#457450' : '#4f4130')
},
applyConfig(data) {
if (!data) return
@@ -423,30 +423,33 @@ export default {
<style scoped>
.page-head { margin-bottom: 14px; }
.page-head-row { display: flex; align-items: center; justify-content: space-between; }
.head-tip { color: #909399; font-size: 12px; margin: 6px 0 0; }
.head-tip { color: #7a664e; font-size: 12px; margin: 6px 0 0; }
.audience-row { display: flex; align-items: center; margin-top: 10px; }
.aud-label { color: #606266; font-size: 13px; margin-right: 6px; }
.aud-tip { color: #909399; font-size: 12px; margin-left: 10px; }
.guide-panel { display: flex; gap: 16px; background: #f7f9fc; border: 1px solid #e4e9f2; border-radius: 8px; padding: 14px 16px; margin-top: 10px; }
.aud-label { color: #5f4f3d; font-size: 13px; margin-right: 6px; }
.aud-tip { color: #7a664e; font-size: 12px; margin-left: 10px; }
.guide-panel { display: flex; gap: 16px; background: #f6efe3; border: 1px solid #eadfd0; border-radius: 8px; padding: 14px 16px; margin-top: 10px; }
.guide-col { flex: 1; min-width: 0; }
.guide-col h5 { margin: 0 0 8px; font-size: 13px; color: #303133; }
.guide-col h5 i { color: #409eff; margin-right: 4px; }
.guide-col h5 { margin: 0 0 8px; font-size: 13px; color: #4f4130; }
.guide-col h5 i { color: #9a5c35; margin-right: 4px; }
.guide-col ul { margin: 0; padding-left: 16px; }
.guide-col li { font-size: 12px; color: #606266; line-height: 1.9; }
.guide-col li { font-size: 12px; color: #5f4f3d; line-height: 1.9; }
.stat-row { margin-bottom: 16px; }
.stat-card { display: flex; align-items: center; gap: 12px; background: #fff; border: 1px solid #ebeef5; border-radius: 8px; padding: 14px 16px; box-shadow: 0 1px 4px rgba(0,0,0,.04); }
/* 统计卡图标:与侧栏一级菜单共用 cottagecore.scss 的 $cc-icon-hues 4 色
(陶土 / 草绿 / 雏菊金 / 玫瑰粉),底一律 $cc-tint-3。
原先第 3 个是冷青 #4a7f8c,在暖底上是唯一的冷点。 */
.stat-card { display: flex; align-items: center; gap: 12px; background: #fffdfa; border: 1px solid #eadfd0; border-radius: 8px; padding: 14px 16px; box-shadow: 0 1px 4px rgba(139,115,85,.10); }
.sc-icon { width: 42px; height: 42px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 20px; flex-shrink: 0; }
.sc-blue { background: #ecf5ff; color: #409eff; }
.sc-orange { background: #fdf6ec; color: #e6a23c; }
.sc-cyan { background: #e8f7f7; color: #13a8a8; }
.sc-green { background: #f0f9eb; color: #67c23a; }
.sc-body small { color: #909399; display: block; }
.sc-blue { background: #fbf5ea; color: #9a5c35; }
.sc-orange { background: #fbf5ea; color: #a8791f; }
.sc-cyan { background: #fbf5ea; color: #b57474; }
.sc-green { background: #fbf5ea; color: #457450; }
.sc-body small { color: #7a664e; display: block; }
.sc-body h3 { margin: 2px 0 0; font-size: 18px; }
.batch-card { margin-bottom: 16px; border-radius: 8px; }
.batch-card .sub-tip { color: #909399; font-size: 12px; margin-left: 10px; }
.fld-label { color: #606266; font-size: 13px; margin-right: 6px; }
.fld-label .req { color: #f56c6c; margin-left: 2px; }
.batch-card .sub-tip { color: #7a664e; font-size: 12px; margin-left: 10px; }
.fld-label { color: #5f4f3d; font-size: 13px; margin-right: 6px; }
.fld-label .req { color: #a4485a; margin-left: 2px; }
.batch-card >>> .el-form-item { margin-bottom: 0; }
.est-text { color: #e6a23c; font-size: 13px; }
.est-text { color: #8f6418; font-size: 13px; }
.section-head { display: flex; align-items: center; justify-content: space-between; margin: 16px 0 10px; }
</style>
@@ -205,7 +205,7 @@
<div style="margin-bottom: 6px;">
<strong>单局奖池投放比例 (bufferRatio = {{ config.bufferRatio }})</strong>:一局最多从奖池拿出 <span style="color: #8f6418;">{{ bufferRatioPct }} 的余额</span> 来发奖
</div>
<div style="padding-left: 16px; color: #606266; font-size: 12px; margin-bottom: 8px;">
<div style="padding-left: 16px; color: #5f4f3d; font-size: 12px; margin-bottom: 8px;">
• 例:奖池余额 10000 元 → 本项上限 10000 × {{ config.bufferRatio }} = <strong>{{ poolCapDemo }} 元</strong><br>
• 奖池 = 累计真实下注 − 累计真实返奖(机器人、白号不计)<br>
• 口径提醒:这里填的是"最多拿出多少",不是"保留多少"——{{ config.bufferRatio }} = 最多拿出 {{ bufferRatioPct }},剩下 {{ bufferKeepPct }} 留在池里
@@ -214,7 +214,7 @@
<div style="margin-bottom: 6px;">
<strong>目标RTP (rtp = {{ config.rtp }},累计口径)</strong>:按"总共该发多少 − 已经发了多少"算出<span style="color: #8f6418;">还能发多少</span>,这就是本局的返奖预算(是发奖上限,不是平台欠玩家钱)
</div>
<div style="padding-left: 16px; color: #606266; font-size: 12px; margin-bottom: 8px;">
<div style="padding-left: 16px; color: #5f4f3d; font-size: 12px; margin-bottom: 8px;">
• 本局可发额度 = 累计真实投注 × {{ rtpPct }} − 累计真实返奖;<br>
• 例:累计投注 10 万、累计返奖 7 万 → 该发 {{ rtpDemo.should }} 万、已发 7 万 → 本局额度 <strong>{{ rtpDemo.room }} 万</strong><br>
• 它只是"这局最多能发多少":实际发多少仍由转盘概率决定,没发完的额度继续攒到以后(所以池子厚了能一局爆大奖)。本局投注在封盘时已计入累计,历史刚好发到 {{ rtpPct }} 时,额度正好 = 本局投注 × {{ rtpPct }}<br>
@@ -222,8 +222,8 @@
• 实际返奖率请以首页「实时RTP」为准,不要拿本配置值当预期
</div>
<div style="padding: 8px; background: #F4F4F5; border-radius: 4px; margin-top: 8px;">
<strong style="color: #303133;">协同机制</strong>:发奖上限 = <span style="color: #9a5c35;">min(奖池余额×{{ config.bufferRatio }}, 本局可发额度)</span>,两条都要满足<br>
<div style="padding: 8px; background: #f3ece0; border-radius: 4px; margin-top: 8px;">
<strong style="color: #4f4130;">协同机制</strong>:发奖上限 = <span style="color: #9a5c35;">min(奖池余额×{{ config.bufferRatio }}, 本局可发额度)</span>,两条都要满足<br>
<span style="color: #7a664e; font-size: 12px;">
• 谁小听谁的:池子不够厚 → 按奖池的 {{ bufferRatioPct }} 卡;池子够厚 → 按返奖额度卡<br>
• 额度够时,单局返奖可以远超本局投注("池子厚就能爆大奖")<br>
@@ -255,7 +255,7 @@ export default {
poolStatsList: [],
multiplierTable: [
{ color: 'gold', A: 1, B: 1, C: 1, D: 1 },
{ color: 'red', A: 1, B: 1, C: 1, D: 1 },
{ color: '#a4485a', A: 1, B: 1, C: 1, D: 1 },
{ color: 'purple', A: 1, B: 1, C: 1, D: 1 }
],
// 奖池调节相关
@@ -353,7 +353,7 @@ export default {
},
syncMultiplierTable() {
const multipliers = this.config.multipliers || [];
const colors = ['gold', 'red', 'purple'];
const colors = ['gold', '#a4485a', 'purple'];
const symbols = ['A', 'B', 'C', 'D'];
this.multiplierTable = colors.map(color => {
const row = { color };
@@ -9,7 +9,7 @@
</el-table-column>
<el-table-column label="倍率预览">
<template slot-scope="scope">
<div v-for="color in ['gold', 'red', 'purple']" :key="color" style="display: inline-block; margin-right: 16px;">
<div v-for="color in ['gold', '#a4485a', 'purple']" :key="color" style="display: inline-block; margin-right: 16px;">
<el-tag :type="colorTagType(color)" size="mini">{{ colorLabel(color) }}</el-tag>
<span v-for="sym in ['A', 'B', 'C', 'D']" :key="sym" style="margin-left: 6px; font-size: 12px;">
{{ sym }}:<b>{{ getMultiplier(scope.row, color, sym) }}</b>
@@ -124,7 +124,7 @@ export default {
},
computed: {
matrixByColor() {
const colors = ['gold', 'red', 'purple'];
const colors = ['gold', '#a4485a', 'purple'];
return colors.map(color => ({
color,
items: this.currentMatrixList.filter(i => i.color === color)
@@ -156,7 +156,7 @@ export default {
openConfig(row) {
this.currentBetAmount = row.betAmount;
// 确保12条记录存在(即使数据库为空也生成骨架)
const colors = ['gold', 'red', 'purple'];
const colors = ['gold', '#a4485a', 'purple'];
const symbols = ['A', 'B', 'C', 'D'];
const list = [];
colors.forEach(color => {
@@ -23,7 +23,7 @@
<!-- 回合结果优化展示 -->
<div style="margin-bottom: 12px; line-height: 2;">
<div style="margin-bottom: 8px;">
<strong style="color: #303133;">回合结果:</strong>
<strong style="color: #4f4130;">回合结果:</strong>
<el-tag v-if="scope.row.result != null" type="primary" size="medium" style="font-size: 16px; font-weight: bold;">
{{ scope.row.result }}
</el-tag>
@@ -33,7 +33,7 @@
</div>
<!-- 外圈符号序列(高亮第result格) -->
<div style="margin-bottom: 6px;">
<strong style="color: #606266;">外圈符号:</strong>
<strong style="color: #5f4f3d;">外圈符号:</strong>
<span v-if="scope.row.symbols" style="font-family: 'Courier New', monospace; font-size: 14px;">
<span
v-for="(sym, idx) in scope.row.symbols.split('')"
@@ -45,7 +45,7 @@
fontWeight: idx == scope.row.result ? 'bold' : 'normal',
fontSize: idx == scope.row.result ? '16px' : '14px',
color: idx == scope.row.result ? '#8f6418' : '#7a664e',
backgroundColor: idx == scope.row.result ? '#FDF6EC' : 'transparent',
backgroundColor: idx == scope.row.result ? '#fbf5ea' : 'transparent',
padding: idx == scope.row.result ? '3px 0' : '0',
borderRadius: '3px',
border: idx == scope.row.result ? '2px solid #8f6418' : 'none',
@@ -56,7 +56,7 @@
</div>
<!-- 内圈颜色序列(高亮第result格) -->
<div>
<strong style="color: #606266;">内圈颜色:</strong>
<strong style="color: #5f4f3d;">内圈颜色:</strong>
<span v-if="scope.row.innerColors" style="font-family: 'Courier New', monospace; font-size: 14px;">
<span
v-for="(color, idx) in formatInnerColors(scope.row.innerColors).split('')"
@@ -67,7 +67,7 @@
textAlign: 'center',
fontWeight: idx == scope.row.result ? 'bold' : 'normal',
fontSize: idx == scope.row.result ? '16px' : '14px',
color: idx == scope.row.result ? getHighlightColor(color) : '#C0C4CC',
color: idx == scope.row.result ? getHighlightColor(color) : '#8b755a',
backgroundColor: idx == scope.row.result ? getHighlightBgColor(color) : 'transparent',
padding: idx == scope.row.result ? '3px 0' : '0',
borderRadius: '3px',
@@ -220,9 +220,10 @@ export default {
const map = { '金': '#8f6418', '红': '#a4485a', '紫': '#7a664e' };
return map[color] || '#9a5c35';
},
/** 高亮背景色(用于中奖格背景) */
/** 高亮背景色(用于中奖格背景)
取值是 cottagecore.scss 的 $cc-tint-3 / $cc-blossom-tint / $cc-linen */
getHighlightBgColor(color) {
const map = { '金': '#FDF6EC', '红': '#FEF0F0', '紫': '#F4F4F5' };
const map = { '金': '#fbf5ea', '红': '#f7e9e6', '紫': '#f3ece0' };
return map[color] || '#fbf5ea';
}
}
+6 -4
View File
@@ -169,12 +169,14 @@ export default {
.title {
margin: 0px auto 30px auto;
text-align: center;
color: #707070;
color: #4f4130;
}
.login-form {
border-radius: 6px;
background: #ffffff;
border-radius: 20px;
background: #fffdfa;
border: 1px solid rgba(212, 160, 160, .55);
box-shadow: 0 12px 32px rgba(139, 115, 85, .17);
width: 400px;
padding: 25px 25px 5px 25px;
.el-input {
@@ -192,7 +194,7 @@ export default {
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
color: #8b755a;
}
.login-code {
width: 33%;
+1 -1
View File
@@ -112,7 +112,7 @@
></el-switch>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column width="220" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
+1 -1
View File
@@ -137,7 +137,7 @@
</template>
</el-table-column>
<el-table-column label="来源IP" align="center" prop="operIp" width="130" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" width="80" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" width="90" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
+7 -5
View File
@@ -126,7 +126,7 @@ export default {
this.loading = true;
register(this.registerForm).then(res => {
const username = this.registerForm.username;
this.$alert("<font color='red'>恭喜你,您的账号 " + username + " 注册成功!</font>", '系统提示', {
this.$alert("<font color='#a4485a'>恭喜你,您的账号 " + username + " 注册成功!</font>", '系统提示', {
dangerouslyUseHTMLString: true,
type: 'success'
}).then(() => {
@@ -157,12 +157,14 @@ export default {
.title {
margin: 0px auto 30px auto;
text-align: center;
color: #707070;
color: #4f4130;
}
.register-form {
border-radius: 6px;
background: #ffffff;
border-radius: 20px;
background: #fffdfa;
border: 1px solid rgba(212, 160, 160, .55);
box-shadow: 0 12px 32px rgba(139, 115, 85, .17);
width: 400px;
padding: 25px 25px 5px 25px;
.el-input {
@@ -180,7 +182,7 @@ export default {
.register-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
color: #8b755a;
}
.register-code {
width: 33%;
+2 -2
View File
@@ -74,7 +74,7 @@
</template>
</el-table-column>
<el-table-column align="center" prop="createTime" label="下单时间"></el-table-column>
<el-table-column align="center" prop="address" label="操作">
<el-table-column width="250" align="center" prop="address" label="操作">
<template slot-scope="scope">
<!-- <el-button type="text" @click="tradeBuy(scope.row)">查询</el-button> -->
<el-button type="text" @click="tradeBuyCs2pifa(scope.row)">查询cs2pifa</el-button>
@@ -153,7 +153,7 @@ export default {
},
methods: {
getPriceColor(row) {
if (!row.cs340Price) return '#606266'; // 无三方价格时默认色
if (!row.cs340Price) return '#5f4f3d'; // 无三方价格时默认色
return row.ornamentsPrice > row.cs340Price ? '#a4485a' : '#457450'; // 溢价红色,未溢价绿色
},
handleSubmit(formName) {
@@ -71,7 +71,7 @@
style="display:flex; align-items:center;justify-content:center;line-height: 1;"
>
<span
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #F39c12; display:inline-block;"
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #8f6418; display:inline-block;"
></span>
人工发货
</div>
@@ -80,7 +80,7 @@
style="display:flex; align-items:center;justify-content:center;"
>
<span
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #00a65a; display:inline-block;"
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #457450; display:inline-block;"
></span>
自动发货
</div>
@@ -93,7 +93,7 @@
style="display:flex; align-items:center;justify-content:center;line-height: 1;"
>
<span
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: green; display:inline-block;"
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #457450; display:inline-block;"
></span>
待发货
</div>
@@ -102,7 +102,7 @@
style="display:flex; align-items:center;justify-content:center;"
>
<span
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #696969; display:inline-block;"
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #7a664e; display:inline-block;"
></span>
待收货
</div>
@@ -111,7 +111,7 @@
style="display:flex; align-items:center;justify-content:center;"
>
<span
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #696969; display:inline-block;"
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #7a664e; display:inline-block;"
></span>
订单完成
</div>
@@ -121,7 +121,7 @@
>
订单取消
<span
style="width: 8px; height:8px; margin-left:5px; border-radius: 50%; background-color: #DD4b39; display:inline-block;"
style="width: 8px; height:8px; margin-left:5px; border-radius: 50%; background-color: #a4485a; display:inline-block;"
></span>
</div>
</template>
@@ -119,7 +119,7 @@
</template>
</el-table-column>
<el-table-column align="center" prop="createTime" label="申请时间" width="160"></el-table-column>
<el-table-column align="center" class-name="operation-column" label="操作" width="120">
<el-table-column align="center" class-name="operation-column" label="操作" width="130">
<template slot-scope="scope">
<div v-if="scope.row.status === 0" style="display: flex; justify-content: center; align-items: center;">
<el-button type="text" style="color: #457450; margin: 0 5px;" @click="handleApprove(scope.row)">同意</el-button>
@@ -43,7 +43,7 @@
style="display:flex; align-items:center;justify-content:center;line-height: 1;"
>
<span
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #F39c12; display:inline-block;"
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #8f6418; display:inline-block;"
></span>
人工发货
</div>
@@ -52,7 +52,7 @@
style="display:flex; align-items:center;justify-content:center;"
>
<span
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #00a65a; display:inline-block;"
style="width: 8px; height:8px; margin-right:5px; border-radius: 50%; background-color: #457450; display:inline-block;"
></span>
自动发货
</div>
+7 -7
View File
@@ -54,8 +54,8 @@
v-model="scope.row.status"
:active-value="'0'"
:inactive-value="'1'"
inactive-color="#D9534F"
active-color="#5CB85C"
inactive-color="#a4485a"
active-color="#457450"
inactive-text="是"
active-text="否"
@change="updateUserStatus(scope.row)"
@@ -66,23 +66,23 @@
<el-table-column label="条件类型" align="center" prop="conditionType">
<template slot-scope="scope">
<div v-if="scope.row.conditionType == '0'" class="df">
<span class="ds" style="background: #00a65a;"></span>
<span class="ds" style="background: #457450;"></span>
日充值
</div>
<div v-if="scope.row.conditionType == '1'" class="df">
<span class="ds" style="background: #00a65a;"></span>
<span class="ds" style="background: #457450;"></span>
周充值
</div>
<div v-if="scope.row.conditionType == '2'" class="df">
<span class="ds" style="background: #f39c12;"></span>
<span class="ds" style="background: #8f6418;"></span>
月充值
</div>
<div v-if="scope.row.conditionType == '3'" class="df">
<span class="ds" style="background: #DD4B39;"></span>
<span class="ds" style="background: #a4485a;"></span>
总充值
</div>
<div v-if="scope.row.conditionType == '4'" class="df">
<span class="ds" style="background: #DD4B39;"></span>
<span class="ds" style="background: #a4485a;"></span>
单笔充值
</div>
</template>
@@ -50,19 +50,19 @@
<el-table-column align="center" prop="status" label="状态">
<template slot-scope="scope">
<div v-if="scope.row.status == '0'" class="df">
<span style=" background-color: #3c8dbc;" class="ds"></span>
<span style=" background-color: #9a5c35;" class="ds"></span>
背包
</div>
<div v-else-if="scope.row.status == '5'" class="df">
<span class="ds" style="background-color: #f39c12;"></span>
<span class="ds" style="background-color: #8f6418;"></span>
{{ (source === '1' || source == 1) ? '经典开箱分解' : '对战自动分解' }}
</div>
<div v-else-if="scope.row.status == '1'" class="df">
<span class="ds" style="background-color: #DD4B39;"></span>
<span class="ds" style="background-color: #a4485a;"></span>
在背包不显示
</div>
<div v-else class="df">
<span class="ds" style="background-color: gray;"></span>
<span class="ds" style="background-color: #7a664e;"></span>
{{ scope.row.status ? String(scope.row.status) : '(未知状态)' }}
</div>
</template>
+4 -4
View File
@@ -37,8 +37,8 @@
v-model="scope.row.isFightType"
:active-value="'0'"
:inactive-value="'1'"
inactive-color="#D9534F"
active-color="#5CB85C"
inactive-color="#a4485a"
active-color="#457450"
inactive-text="是"
active-text="否"
@change="updateUserStatus(scope.row)"
@@ -51,8 +51,8 @@
v-model="scope.row.isShow"
:active-value="'0'"
:inactive-value="'1'"
active-color="#5CB85C"
inactive-color="#D9534F"
active-color="#457450"
inactive-color="#a4485a"
active-text="显示"
inactive-text="隐藏"
@change="updateUserStatus(scope.row)"
+3 -3
View File
@@ -353,7 +353,7 @@
<el-table-column v-if="false" align="center" prop="compOdds" label="补偿数量"></el-table-column>
<el-table-column v-if="false" align="center" prop="realCompOdds" label="真实补偿数量" width="100"></el-table-column>
<el-table-column align="center" label="操作">
<el-table-column width="170" align="center" label="操作">
<template slot-scope="scope">
<el-button type="text" @click="handleChange(scope.row)">修改</el-button>
<el-button type="text" @click="handleView(scope.row)">查看</el-button>
@@ -1129,7 +1129,7 @@ export default {
align-items: center;
gap: 8px;
padding: 6px 10px;
border: 1px solid #e4e7ed;
border: 1px solid #eadfd0;
border-radius: 6px;
cursor: pointer;
transition: all 0.2s;
@@ -1146,7 +1146,7 @@ export default {
object-fit: contain;
border-radius: 4px;
flex-shrink: 0;
background: #f5f5f5;
background: #f3ece0;
}
.ornament-info {
flex: 1;
+7 -7
View File
@@ -265,7 +265,7 @@
<el-table-column align="center" label="箱内饰品总价值" prop="aggregateAmount" />
<el-table-column align="center" label="每轮利润" prop="profit" />
<el-table-column align="center" label="每轮利润率" prop="profitMargin" />
<el-table-column
<el-table-column width="130"
align="center"
class-name="small-padding fixed-width"
label="操作"
@@ -324,8 +324,8 @@
v-model="form.isFight"
:active-value="'0'"
:inactive-value="'1'"
active-color="#5CB85C"
inactive-color="#D9534F"
active-color="#457450"
inactive-color="#a4485a"
active-text="否"
inactive-text="是"
:disabled="$route.query.isFight != null"
@@ -351,8 +351,8 @@
v-model="form.status"
:active-value="'1'"
:inactive-value="'0'"
active-color="#D9534F"
inactive-color="#5CB85C"
active-color="#a4485a"
inactive-color="#457450"
active-text="正常"
inactive-text="停用"
></el-switch>
@@ -362,8 +362,8 @@
v-model="form.isHome"
:active-value="'1'"
:inactive-value="'0'"
active-color="#D9534F"
inactive-color="#5CB85C"
active-color="#a4485a"
inactive-color="#457450"
active-text="是"
inactive-text="否"
@change="hh()"
@@ -31,7 +31,7 @@
<div style="margin-top: 16px; padding-left: 68px">
<div v-for="(item, index) in items" :key="index" style="display: flex; align-items: center; margin-bottom: 10px">
<span style="width: 100px; color: #606266; font-size: 13px">临时爆率 #{{ index + 1 }}</span>
<span style="width: 100px; color: #5f4f3d; font-size: 13px">临时爆率 #{{ index + 1 }}</span>
<el-input
v-model="item.lowPrice"
type="number"
@@ -16,7 +16,7 @@
<el-table-column align="left" label="获胜" style="margin-left: 5px;">
<template slot-scope="scope">
<span v-if="scope.row.isWin">
<span class="ds" style="background-color: #00a65a;"></span>
<span class="ds" style="background-color: #457450;"></span>
是
<el-button
type="text"
@@ -25,7 +25,7 @@
>赢家所得饰品</el-button>
</span>
<span v-else>
<span class="ds" style="background-color: #dd4b39;"></span>否
<span class="ds" style="background-color: #a4485a;"></span>否
</span>
</template>
</el-table-column>
+2 -2
View File
@@ -48,11 +48,11 @@
>
<template slot-scope="scope">
<div v-if="scope.row.status == '0'" class="df">
<span style=" background-color: #00a65a;" class="ds"></span>
<span style=" background-color: #457450;" class="ds"></span>
等待中
</div>
<div v-if="scope.row.status == '2'" class="df">
<span class="ds" style="background-color: #dd4b39;"></span>
<span class="ds" style="background-color: #a4485a;"></span>
已结束
<el-button type="text" @click="handleView(scope.row)" style="margin-left: 45px;">查看结果</el-button>
</div>
@@ -427,7 +427,7 @@ export default {
.section-title {
font-size: 16px;
font-weight: bold;
color: #303133;
color: #4f4130;
padding: 8px 0;
}
</style>
@@ -73,7 +73,7 @@
<ol style="margin-top: 6px; padding-left: 16px;">
<li><strong>档位共享目标数</strong>:多个分组共用同一价格档位时,系统维持该档位的总目标房间数(target_count),而非各分组独立统计。</li>
<li><strong>随机选择分组</strong>:机器人从所有符合档位条件的分组中<strong>随机选择一个</strong>来创建房间。这意味着某些分组可能被选中多次,而另一些分组可能暂时未被选中。</li>
<li><strong>价位匹配规则</strong>:根据分组内所有宝箱的总价进行匹配,计算公式为:<code style="background:#f5f5f5;padding:2px 4px;">Σ(箱数 × 单价)</code>。</li>
<li><strong>价位匹配规则</strong>:根据分组内所有宝箱的总价进行匹配,计算公式为:<code style="background:#f3ece0;padding:2px 4px;">Σ(箱数 × 单价)</code>。</li>
</ol>
</div>
</el-alert>
@@ -126,7 +126,7 @@
<dict-tag :options="dict.type.fight_model" :value="scope.row.model"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column width="240" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
@@ -18,7 +18,7 @@
:value="item.id"
>
<span style="float: left">{{ item.price }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.id }}</span>
<span style="float: right; color: #7a664e; font-size: 13px">{{ item.id }}</span>
</el-option>
</el-select>
</el-form-item>
@@ -80,11 +80,11 @@
<template slot-scope="scope">
<div>
<div v-if="scope.row.status == 0" class="df">
<span class="ds" style="background-color: #00a65a;"></span>
<span class="ds" style="background-color: #457450;"></span>
未使用
</div>
<div v-if="scope.row.status == 1" class="df">
<span class="ds" style="background-color: #dd4b39;"></span> 已使用
<span class="ds" style="background-color: #a4485a;"></span> 已使用
</div>
</div>
</template>
@@ -122,7 +122,7 @@
:value="item.id"
>
<span style="float: left">{{ item.price }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.id }}</span>
<span style="float: right; color: #7a664e; font-size: 13px">{{ item.id }}</span>
</el-option>
</el-select>
</el-form-item>
@@ -400,9 +400,9 @@ export default {
}
.kami {
padding: 15px;
background-color: #c3d1e4;
color: #373232;
border: 1px solid #8492a6;
background-color: #d8c3b0;
color: #4f4130;
border: 1px solid #7a664e;
width: 95%;
margin: 0 auto;
}
@@ -112,7 +112,7 @@
<el-table-column align="center" label="本站价格" prop="usePrice" />
<el-table-column align="center" label="在售数量" prop="quantity" />
<el-table-column align="center" label="更新时间" prop="updateTime" />
<el-table-column align="center" class-name="small-padding fixed-width" label="操作">
<el-table-column width="310" align="center" class-name="small-padding fixed-width" label="操作">
<template slot-scope="scope">
<el-button
icon="el-icon-date"
@@ -170,7 +170,7 @@
@click="addOr(item)"
>
<div>{{item.nickName}}</div>
<div style="color: #8492a6;">{{item.phoneNumber}}</div>
<div style="color: #7a664e;">{{item.phoneNumber}}</div>
</div>
</div>
<div v-else>
@@ -73,7 +73,7 @@
<el-table-column align="center" label="在售数量" prop="quantity" />
<el-table-column align="center" label="创建时间" prop="createTime" />
<el-table-column align="center" label="更新时间" prop="updateTime" />
<el-table-column align="center" class-name="small-padding fixed-width" label="操作">
<el-table-column width="190" align="center" class-name="small-padding fixed-width" label="操作">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleGrant(scope.row)">发放饰品</el-button>
<el-button
@@ -11,8 +11,8 @@
v-model="scope.row.status"
:active-value="'0'"
:inactive-value="'1'"
active-color="#5CB85C"
inactive-color="#D9534F"
active-color="#457450"
inactive-color="#a4485a"
inactive-text="启用"
active-text="禁用"
@change="handleChangeType(scope.row)"
@@ -95,13 +95,13 @@
style="display:flex; align-items:center;justify-content:center;line-height: 1;"
>
<span
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #90ee90; display:inline-block;"
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #457450; display:inline-block;"
></span>
支付成功
</div>
<div v-else style="display:flex; align-items:center;justify-content:center;">
<span
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #DD4B39; display:inline-block;"
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #a4485a; display:inline-block;"
></span>
未付款
</div>
+1 -1
View File
@@ -110,7 +110,7 @@
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="100" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
+13 -6
View File
@@ -92,7 +92,7 @@
style="display:flex; align-items:center;justify-content:center;line-height: 1;"
>
<span
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: green; display:inline-block;"
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #457450; display:inline-block;"
></span>
进行中
</div>
@@ -101,7 +101,7 @@
style="display:flex; align-items:center;justify-content:center;"
>
<span
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #DD4B39; display:inline-block;"
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #a4485a; display:inline-block;"
></span>
已结束
</div>
@@ -110,7 +110,7 @@
<el-table-column align="center" prop="sortBy" label="置顶"></el-table-column>
<el-table-column align="center" prop="createBy" label="创建用户" width="103"></el-table-column>
<el-table-column align="center" prop="createTime" label="创建时间" width="188"></el-table-column>
<el-table-column align="center" prop="address" label="操作" width="180">
<el-table-column align="center" prop="address" label="操作" width="290">
<template slot-scope="scope">
<el-button
type="text"
@@ -120,9 +120,16 @@
>删除</el-button>
<el-button type="text" size="mini" icon="el-icon-edit" @click="handleChange(scope.row)">修改</el-button>
<el-button type="text" size="mini" icon="el-icon-view" @click="handleSelect(scope.row)">详情</el-button>
<el-button type="text" size="mini" icon="el-icon-view" @click="handleRouter(scope.row)">装备列表</el-button>
<el-button type="text" size="mini" icon="el-icon-view" @click="rollUser(scope.row)">房间用户</el-button>
<el-button type="text" size="mini" icon="el-icon-trophy" @click="handleWinning(scope.row)">中奖详情</el-button>
<!-- 6 个平铺按钮在 180px 的列里会折成 3~4 行;按本仓库既有做法
(ttuser / ttRoll/prize / system/role)把低频操作收进「更多」 -->
<el-dropdown size="mini">
<el-button type="text" size="mini" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="handleRouter(scope.row)">装备列表</el-dropdown-item>
<el-dropdown-item @click.native="rollUser(scope.row)">房间用户</el-dropdown-item>
<el-dropdown-item @click.native="handleWinning(scope.row)">中奖详情</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
@@ -65,14 +65,14 @@
<template slot-scope="scope">
<el-switch
:value="scope.row.status === '0'"
active-color="#13ce66"
inactive-color="#ff4949"
active-color="#457450"
inactive-color="#a4485a"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column align="center" prop="lastGenerateTime" label="上次生成时间" width="160"></el-table-column>
<el-table-column align="center" label="操作" width="140">
<el-table-column align="center" label="操作" width="160">
<template slot-scope="scope">
<el-button type="text" size="mini" icon="el-icon-edit" @click="handleChange(scope.row)">编辑</el-button>
<el-button type="text" size="mini" icon="el-icon-delete" @click="handleDelete(scope.row.id)">删除</el-button>
+1 -1
View File
@@ -48,7 +48,7 @@
<el-table-column align="center" prop="description" label="奖池描述"></el-table-column>
<el-table-column align="center" prop="createTime" label="创建时间"></el-table-column>
<el-table-column align="center" prop="updateTime" label="更新时间"></el-table-column>
<el-table-column align="center" prop="address" label="操作">
<el-table-column width="230" align="center" prop="address" label="操作">
<template slot-scope="scope">
<el-button
type="text"
+3 -3
View File
@@ -78,7 +78,7 @@
style="display:flex; align-items:center;justify-content:center;line-height: 1;"
>
<span
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: green; display:inline-block;"
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #457450; display:inline-block;"
></span>
开启
</div>
@@ -87,7 +87,7 @@
style="display:flex; align-items:center;justify-content:center;"
>
<span
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #DD4B39; display:inline-block;"
style="width: 8px; height:8px; margin-right:10px; border-radius: 50%; background-color: #a4485a; display:inline-block;"
></span>
关闭
</div>
@@ -96,7 +96,7 @@
<el-table-column align="center" prop="sortBy" label="置顶"></el-table-column>
<el-table-column align="center" prop="createBy" label="创建用户"></el-table-column>
<el-table-column align="center" prop="createTime" label="创建时间"></el-table-column>
<el-table-column align="center" prop="address" label="操作">
<el-table-column width="320" align="center" prop="address" label="操作">
<template slot-scope="scope">
<el-button
type="text"
@@ -15,8 +15,8 @@
v-model="scope.row.status"
:active-value="'0'"
:inactive-value="'1'"
inactive-color="#D9534F"
active-color="#5CB85C"
inactive-color="#a4485a"
active-color="#457450"
active-text="禁用"
inactive-text="启用"
@change="updateUserStatus(scope.row)"
@@ -29,8 +29,8 @@
v-model="scope.row.isDefault"
:active-value="'0'"
:inactive-value="'1'"
active-color="#D9534F"
inactive-color="#5CB85C"
active-color="#a4485a"
inactive-color="#457450"
active-text="是"
inactive-text="否"
@change="updateUserStatus(scope.row)"
@@ -39,8 +39,8 @@
v-model="scope.row.status"
:active-value="'0'"
:inactive-value="'1'"
active-color="#5CB85C"
inactive-color="#D9534F"
active-color="#457450"
inactive-color="#a4485a"
inactive-text="启用"
active-text="禁用"
@change="handleChangeType(scope.row)"
@@ -85,15 +85,15 @@
v-model="scope.row.status"
:active-value="'0'"
:inactive-value="'1'"
inactive-color="#D9534F"
active-color="#5CB85C"
inactive-color="#a4485a"
active-color="#457450"
active-text="禁用"
inactive-text="启用"
@change="updateUserStatus(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column width="240" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
@@ -144,7 +144,7 @@
<el-select v-model="form.typeId" placeholder="请选择">
<el-option v-for="item in typeData" :key="item.id" :label="item.name" :value="item.id">
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.alias }}</span>
<span style="float: right; color: #7a664e; font-size: 13px">{{ item.alias }}</span>
</el-option>
</el-select>
</el-form-item>
@@ -91,8 +91,8 @@
v-model="scope.row.status"
:active-value="'0'"
:inactive-value="'1'"
inactive-color="#D9534F"
active-color="#5CB85C"
inactive-color="#a4485a"
active-color="#457450"
active-text="禁用"
inactive-text="启用"
@change="updateUserStatus(scope.row)"
+8 -8
View File
@@ -102,7 +102,7 @@
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="网站饰品价格溢价率">
<el-input v-model="form.usePricePremiumRate "></el-input>
<span style="color: #737373;">
<span style="color: #7a664e;">
<i class="el-icon-info">1表示直接使用在售最低价显示</i>
</span>
</el-form-item>
@@ -130,7 +130,7 @@
<el-button v-if="payCompanyWeights.length > 1" type="danger" size="mini" circle icon="el-icon-minus" @click="removeCompany(index)" style="margin-left:8px;"></el-button>
</div>
<el-button type="primary" size="small" icon="el-icon-plus" @click="addCompany">添加支付公司</el-button>
<span style="color:#737373;margin-left:8px;">
<span style="color:#7a664e;margin-left:8px;">
<i class="el-icon-info">总权重固定为10,按比例分配请求。</i>
</span>
</div>
@@ -140,7 +140,7 @@
<el-option label="启用" value="1"></el-option>
<el-option label="停用" value="0"></el-option>
</el-select>
<div style="color:#737373;">
<div style="color:#7a664e;">
<i class="el-icon-info">启用:充值金额 1000-50000 强制走 SnapPay;停用或 SnapPay 下单失败时,按上方权重分配;每次修改后记得点击下方保存才生效</i>
</div>
</el-form-item>
@@ -152,25 +152,25 @@
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="汰换价格区间最大值溢价率">
<el-input v-model="form.compoundMaxPremiumRate"></el-input>
<div style="color: #737373;">
<div style="color: #7a664e;">
<i class="el-icon-info">单位:% 例:5% 即为用户所选饰品价格的5%</i>
</div>
</el-form-item>
<el-form-item label="汰换价格区间最小值溢价率">
<el-input v-model="form.compoundMinPremiumRate"></el-input>
<div style="color: #737373;">
<div style="color: #7a664e;">
<i class="el-icon-info">单位:% 例:5% 即为用户所选饰品价格的5%</i>
</div>
</el-form-item>
<el-form-item label="汰换最低价">
<el-input v-model="form.compoundMinPrice"></el-input>
<div style="color: #737373;">
<div style="color: #7a664e;">
<i class="el-icon-info">用户选择汰换物品最低价</i>
</div>
</el-form-item>
<el-form-item label="最大汰换数量">
<el-input v-model="form.maxCompoundNum"></el-input>
<div style="color: #737373;">
<div style="color: #7a664e;">
<i class="el-icon-info">用户选择汰换物品最大数量</i>
</div>
</el-form-item>
@@ -181,7 +181,7 @@
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="流水归档保留天数">
<el-input v-model="form.flowArchiveRetainDays"></el-input>
<div style="color: #737373;">
<div style="color: #7a664e;">
<i class="el-icon-info">单位:天,超过该天数的流水将归档至历史表</i>
</div>
</el-form-item>
@@ -7,7 +7,7 @@
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="网站饰品价格溢价率">
<el-input v-model="form.usePricePremiumRate "></el-input>
<span style="color: #737373;">
<span style="color: #7a664e;">
<i class="el-icon-info">1表示直接使用在售最低价显示</i>
</span>
</el-form-item>
@@ -22,7 +22,7 @@
:step="0.1"
:max="1000"
></el-input-number>
<div style="color: #737373;">
<div style="color: #7a664e;">
<i class="el-icon-info">新用户注册红包奖励金额</i>
</div>
</el-form-item>
@@ -119,7 +119,7 @@
>
上架
<span
style="width: 8px; height:8px; margin-left:5px; border-radius: 50%; background-color: green; display:inline-block;"
style="width: 8px; height:8px; margin-left:5px; border-radius: 50%; background-color: #457450; display:inline-block;"
></span>
</div>
<div
@@ -128,7 +128,7 @@
>
下架
<span
style="width: 8px; height:8px; margin-left:5px; border-radius: 50%; background-color: #696969; display:inline-block;"
style="width: 8px; height:8px; margin-left:5px; border-radius: 50%; background-color: #7a664e; display:inline-block;"
></span>
</div>
</template>
+3 -3
View File
@@ -223,15 +223,15 @@
v-model="scope.row.status"
:active-value="'1'"
:inactive-value="'0'"
active-color="#D9534F"
inactive-color="#5CB85C"
active-color="#a4485a"
inactive-color="#457450"
active-text="启用"
inactive-text="禁用"
@change="handleChangeType(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column width="190" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
@@ -31,7 +31,7 @@
<div style="line-height: 2;">
<div><strong>1. 投入金额:</strong>玩家这次抽奖实际花的钱,按他选择的概率扣除。</div>
<div><strong>2. 真实计算金额:</strong>后台真正用来计算"还差多少出货"的钱。</div>
<div style="padding-left: 18px; color: #606266;">
<div style="padding-left: 18px; color: #5f4f3d;">
玩家选的概率 ≤ 75% 时,真实计算金额 = 投入金额;<br>
玩家选的概率 > 75% 时,最高只按 75% 计算。<br>
<span style="color: #7a664e;">例如:饰品价格 1000,选 90% 概率,实际扣 900,但真实计算金额只算 750。</span>
@@ -59,7 +59,7 @@
</el-table-column>
<el-table-column align="center" label="饰品总价值" prop="aggregateAmount" />
<el-table-column align="center" label="开启次数" prop="openNum" />
<el-table-column align="center" class-name="small-padding fixed-width" label="操作" fixed="right">
<el-table-column width="260" align="center" class-name="small-padding fixed-width" label="操作" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleUpdate(scope.row)">编辑</el-button>
<el-button size="mini" type="text" @click="handleBatchFill(scope.row)">批量填货</el-button>
@@ -333,7 +333,7 @@
</el-popover>
</template>
</el-table-column>
<el-table-column align="center" label="操作" fixed="right" width="160">
<el-table-column align="center" label="操作" fixed="right" width="170">
<template slot-scope="scope">
<el-button type="text" @click="handlePrizeChange(scope.row)">修改</el-button>
<el-button type="text" @click="handlePrizeView(scope.row)">查看</el-button>
+12 -12
View File
@@ -49,11 +49,11 @@
<el-table-column align="center" prop="status" label="状态">
<template slot-scope="scope">
<div v-if="scope.row.status == '0'" class="df">
<span style=" background-color: #00a65a;" class="ds"></span>
<span style=" background-color: #457450;" class="ds"></span>
进行中
</div>
<div v-if="scope.row.status == '1'" class="df">
<span style=" background-color: #dd4b39;" class="ds"></span>
<span style=" background-color: #a4485a;" class="ds"></span>
已结束
</div>
</template>
@@ -76,8 +76,8 @@
v-model="scope.row.useStatus"
:active-value="'0'"
:inactive-value="'1'"
inactive-color="#D9534F"
active-color="#5CB85C"
inactive-color="#a4485a"
active-color="#457450"
inactive-text="启用"
active-text="禁用"
@change="updateUserStatus(scope.row)"
@@ -88,7 +88,7 @@
<el-table-column align="center" prop="openingTime" label="红包开始时间" width="170"></el-table-column>
<el-table-column align="center" prop="validity" label="红包有效期" width="170"></el-table-column>
<el-table-column align="center" prop label="操作">
<el-table-column width="170" align="center" prop label="操作">
<template slot-scope="scope">
<el-button type="text" @click="handleView(scope.row)">详情</el-button>
<el-button type="text" @click="handleChaneg(scope.row)">修改</el-button>
@@ -115,7 +115,7 @@
:value="item.userId"
>
<span style="float: left">{{ item.nickName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.userName }}</span>
<span style="float: right; color: #7a664e; font-size: 13px">{{ item.userName }}</span>
</el-option>
</el-select>
<div style="font-size: 12px;">
@@ -137,7 +137,7 @@
autocomplete="off"
placeholder="最低金额"
></el-input>
<div style="font-size: 12px; color:#d9534f">
<div style="font-size: 12px; color:#a4485a">
<i class="el-icon-info"></i>
总价值 {{this.form.amount1*this.form.num}} - {{this.form.amount2*this.form.num}}
</div>
@@ -214,7 +214,7 @@
:value="item.userId"
>
<span style="float: left">{{ item.nickName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.userName }}</span>
<span style="float: right; color: #7a664e; font-size: 13px">{{ item.userName }}</span>
</el-option>
</el-select>
<div style="font-size: 12px;">
@@ -235,7 +235,7 @@
autocomplete="off"
placeholder="最低金额"
></el-input>
<div style="font-size: 12px; color:#d9534f">
<div style="font-size: 12px; color:#a4485a">
<i class="el-icon-info"></i>
总价值 {{this.form.amount1*this.form.num}} - {{this.form.amount2*this.form.num}}
</div>
@@ -639,9 +639,9 @@ export default {
}
.kami {
padding: 15px;
background-color: #c3d1e4;
color: #373232;
border: 1px solid #8492a6;
background-color: #d8c3b0;
color: #4f4130;
border: 1px solid #7a664e;
width: 95%;
margin: 0 auto;
}
@@ -74,7 +74,7 @@
<el-table-column align="center" prop="winAmount" label="本期产出"></el-table-column>
<el-table-column align="center" prop="lossAmount" label="净亏">
<template slot-scope="scope">
<span style="color:#dd4b39;">{{ scope.row.lossAmount }}</span>
<span style="color:#a4485a;">{{ scope.row.lossAmount }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="rebateAmount" label="应返水"></el-table-column>
@@ -43,10 +43,10 @@
<el-table-column align="center" prop="type" label="变动类型">
<template slot-scope="scope">
<div v-if="scope.row.type==0" class="df">
<span class="ds" style="background-color:#00a65a;"></span>支出
<span class="ds" style="background-color:#457450;"></span>支出
</div>
<div v-if="scope.row.type==1" class="df">
<span class="ds" style="background-color:#f3c192;"></span>收入
<span class="ds" style="background-color:#9a5c35;"></span>收入
</div>
</template>
</el-table-column>
@@ -45,10 +45,10 @@
<el-table-column align="center" prop="type" label="变动类型">
<template slot-scope="scope">
<div v-if="scope.row.type==0" class="df">
<span class="ds" :style="{ backgroundColor: moneyType === 2 ? '#f3c192' : '#00a65a' }"></span>支出
<span class="ds" :style="{ backgroundColor: moneyType === 2 ? '#9a5c35' : '#457450' }"></span>支出
</div>
<div v-if="scope.row.type==1" class="df">
<span class="ds" :style="{ backgroundColor: moneyType === 2 ? '#dd4b39' : '#f3c192' }"></span>收入
<span class="ds" :style="{ backgroundColor: moneyType === 2 ? '#a4485a' : '#9a5c35' }"></span>收入
</div>
</template>
</el-table-column>
@@ -43,10 +43,10 @@
<el-table-column align="center" prop="type" label="变动类型">
<template slot-scope="scope">
<div v-if="scope.row.type==0" class="df">
<span class="ds" style="background-color:#f3c192;"></span>支出
<span class="ds" style="background-color:#9a5c35;"></span>支出
</div>
<div v-if="scope.row.type==1" class="df">
<span class="ds" style="background-color:#dd4b39;"></span>收入
<span class="ds" style="background-color:#a4485a;"></span>收入
</div>
</template>
</el-table-column>
+8 -8
View File
@@ -156,8 +156,8 @@
v-model="scope.row.status"
:active-value="'1'"
:inactive-value="'0'"
active-color="#D9534F"
inactive-color="#5CB85C"
active-color="#a4485a"
inactive-color="#457450"
active-text="正常"
inactive-text="停用"
@change="updateUserStatus(scope.row)"
@@ -170,8 +170,8 @@
v-model="scope.row.deliveryStatus"
:active-value="'1'"
:inactive-value="'0'"
active-color="#D9534F"
inactive-color="#5CB85C"
active-color="#a4485a"
inactive-color="#457450"
active-text="启用"
inactive-text="禁用"
@change="updateUserStatus(scope.row)"
@@ -184,8 +184,8 @@
v-model="scope.row.giftStatus"
:active-value="'1'"
:inactive-value="'0'"
active-color="#D9534F"
inactive-color="#5CB85C"
active-color="#a4485a"
inactive-color="#457450"
active-text="启用"
inactive-text="禁用"
@change="updateUserStatus(scope.row)"
@@ -200,7 +200,7 @@
<el-table-column label="总提取" align="center" prop="totalDelivery" />
<el-table-column label="最后登录IP" align="center" prop="loginIp" />
<!-- <el-table-column label="备注" align="center" prop="remark" /> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column width="180" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleCount(scope.row)">统计</el-button>
<el-button size="mini" type="text" @click="handlePsack(scope.row)">背包</el-button>
@@ -264,7 +264,7 @@
<el-form-item label="请选择数量:" style="margin-bottom: 2px;">
<el-input-number size="mini" v-model="newNumber" :min="1" :max="10" label="描述文字"></el-input-number>
</el-form-item>
<div style="font-size:14px;color:#797979;">
<div style="font-size:14px;color:#7a664e;">
<i class="el-icon-info"></i> 要生成的账号数量
</div>
</el-form>
@@ -56,7 +56,7 @@
:value="item.userId"
>
<span style="float: left">{{ item.nickName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.phoneNumber }}</span>
<span style="float: right; color: #7a664e; font-size: 13px">{{ item.phoneNumber }}</span>
</el-option>
</el-select>
</el-form-item>
@@ -78,10 +78,10 @@
<!--<el-table-column label="结算状态" align="center" prop="status">-->
<!-- <template slot-scope="scope">-->
<!-- <div v-if="scope.row.status == '1'" class="df">-->
<!-- <span class="ds" style="background: #00a65a;"></span> 已结算-->
<!-- <span class="ds" style="background: #457450;"></span> 已结算-->
<!-- </div>-->
<!-- <div v-if="scope.row.status == '0'" class="df">-->
<!-- <span class="ds" style="background: #DD4B39;"></span>-->
<!-- <span class="ds" style="background: #a4485a;"></span>-->
<!-- 未结算-->
<!-- </div>-->
<!-- </template>-->
+1 -1
View File
@@ -68,7 +68,7 @@
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column width="220" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
+1 -1
View File
@@ -75,7 +75,7 @@
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column width="220" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
+1 -1
View File
@@ -118,7 +118,7 @@
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column width="220" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope" v-if="scope.row.roleId !== 1">
<el-button
size="mini"
+1 -1
View File
@@ -106,7 +106,7 @@
:label="dict.dictName"
:value="dict.dictType">
<span style="float: left">{{ dict.dictName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ dict.dictType }}</span>
<span style="float: right; color: #7a664e; font-size: 13px">{{ dict.dictType }}</span>
</el-option>
</el-select>
</template>
+1 -1
View File
@@ -110,7 +110,7 @@
/>
<el-table-column label="创建时间" align="center" prop="createTime" width="160" />
<el-table-column label="更新时间" align="center" prop="updateTime" width="160" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column width="380" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
type="text"
+1 -1
View File
@@ -159,7 +159,7 @@
</el-table-column>
</el-table-column>
<el-table-column align="center" label="操作">
<el-table-column width="170" align="center" label="操作">
<template slot-scope="scope">
<el-button type="text" @click="handleChange(scope.row)">修改</el-button>
<el-button type="text" @click="handleView(scope.row)">查看</el-button>