Browse Source

fix:企业文化修改

super-yimizi 4 days ago
parent
commit
ed0aff0cc3

+ 180 - 0
CULTURE_README.md

@@ -0,0 +1,180 @@
+# 企业文化模块升级指南
+
+## 🎯 概述
+将企业文化模块从硬编码方式升级为数据库动态管理,支持后台FastAdmin界面管理,保持现有复杂样式不变。
+
+## ✅ 功能特性
+- ✅ **独立数据表管理**:新建专用的企业文化数据表
+- ✅ **复杂样式支持**:支持normal/reverse卡片布局,单列/双列内容布局
+- ✅ **后台管理界面**:完整的FastAdmin CRUD管理
+- ✅ **多语言支持**:支持中文/英文数据管理
+- ✅ **灵活内容配置**:JSON格式存储复杂内容结构
+- ✅ **保持原有样式**:完全兼容现有CSS样式
+
+## 🗂️ 数据表结构
+
+### 1. 企业文化卡片表 (`wwh_culture_card`)
+| 字段 | 类型 | 说明 |
+|------|------|------|
+| title | varchar(100) | 卡片标题 |
+| subtitle | varchar(100) | 英文副标题 |
+| image | varchar(255) | 卡片图片 |
+| card_type | enum | 卡片类型:normal/reverse |
+| list_type | enum | 列表类型:single/double |
+| content_items | text | 内容项目(JSON) |
+| weigh | int | 排序权重 |
+| status | enum | 状态:0=禁用,1=启用 |
+| lang | enum | 语言:1=中文,2=英文 |
+
+### 2. 企业文化横幅表 (`wwh_culture_banner`)
+| 字段 | 类型 | 说明 |
+|------|------|------|
+| title | varchar(100) | 横幅标题 |
+| subtitle | varchar(100) | 英文副标题 |
+| image | varchar(255) | 背景图片 |
+| content_type | enum | 内容类型:text/grid_single/grid_double |
+| content_data | text | 内容数据(JSON) |
+| weigh | int | 排序权重 |
+| status | enum | 状态:0=禁用,1=启用 |
+| lang | enum | 语言:1=中文,2=英文 |
+
+## 🚀 安装步骤
+
+### 1. 导入数据表
+```sql
+-- 导入数据表结构和示例数据
+mysql> source culture_tables.sql
+```
+
+### 2. 导入后台菜单
+```sql
+-- 导入后台管理菜单
+mysql> source culture_menu.sql
+```
+
+### 3. 清理缓存
+```bash
+# 清理模板缓存
+rm -rf runtime/temp/*
+# 清理系统缓存  
+rm -rf runtime/cache/*
+```
+
+## 🎛️ 后台管理
+
+### 访问路径
+- **企业文化卡片管理**:`后台 > WWH模块管理 > 企业文化卡片`
+- **企业文化横幅管理**:`后台 > WWH模块管理 > 企业文化横幅`
+
+### 管理功能
+- ✅ 卡片增删改查
+- ✅ 横幅增删改查  
+- ✅ 排序权重管理
+- ✅ 状态启用/禁用
+- ✅ 多语言数据管理
+- ✅ 图片上传管理
+
+## 📝 使用说明
+
+### 卡片内容格式
+内容项目按行分隔,例如:
+```
+善用资源
+服务建设
+企业育人
+让员工与企业共同成长
+```
+
+### 横幅内容格式
+根据内容类型:
+- **纯文本**:直接输入文本内容
+- **网格布局**:每行一个项目,例如:
+```
+敬畏
+感恩
+谦虚
+得体
+```
+
+### 卡片类型说明
+- **normal**:图片在上,内容在下
+- **reverse**:内容在上,图片在下
+
+### 列表类型说明
+- **single**:单列布局
+- **double**:双列布局(自动左右分列对齐)
+
+## 🎨 样式特性
+
+### 响应式布局
+- 卡片宽度:285px
+- 卡片高度:520px  
+- 自适应间距:gap: 60px 20px
+
+### 动画效果
+- 悬停上升效果:transform: translateY(-5px)
+- 图片缩放效果:transform: scale(1.05)
+- WOW动画支持
+
+### 特殊样式处理
+- 支持nth-child选择器的特殊高度设置
+- 自动处理card-normal和card-reverse的布局切换
+- 双列内容的左右对齐显示
+
+## 🔧 开发说明
+
+### 文件结构
+```
+application/
+├── admin/controller/wwh/
+│   ├── CultureCard.php      # 卡片管理控制器
+│   └── CultureBanner.php    # 横幅管理控制器
+├── admin/view/wwh/
+│   ├── culture_card/        # 卡片管理视图
+│   └── culture_banner/      # 横幅管理视图
+└── common/model/
+    ├── WwhCultureCard.php   # 卡片模型
+    └── WwhCultureBanner.php # 横幅模型
+
+addons/wwh/
+├── controller/Column.php    # 前台控制器(已修改)
+└── view/materials/
+    └── detail_culture.html  # 企业文化页面(已修改)
+```
+
+### 扩展开发
+如需添加新字段:
+1. 修改数据表结构
+2. 更新模型文件的append属性
+3. 修改控制器的表单处理
+4. 更新视图模板
+
+## ⚠️ 注意事项
+
+1. **备份数据**:升级前请备份数据库
+2. **样式兼容**:确保CSS文件完整加载
+3. **图片路径**:使用cdnurl修饰符处理图片路径
+4. **JSON格式**:内容数据使用JSON格式存储,注意编码
+5. **权重排序**:权重值越大排序越靠前
+
+## 🐛 故障排除
+
+### 常见问题
+1. **菜单不显示**:检查菜单SQL是否正确导入
+2. **图片不显示**:检查图片路径和CDN配置
+3. **样式错乱**:检查CSS文件是否完整加载
+4. **数据不显示**:检查数据表是否正确创建和填充
+
+### 调试方法
+```php
+// 在控制器中调试数据
+var_dump($cultureCards);
+var_dump($cultureBanners);
+```
+
+## 📞 技术支持
+如遇问题,请检查:
+1. 数据表是否正确创建
+2. 菜单是否正确导入  
+3. 文件权限是否正确
+4. 缓存是否已清理

+ 40 - 0
addons/wwh/controller/Column.php

@@ -48,6 +48,7 @@ class Column extends Base
         $this->loadHonorList();                // 荣誉资质
         $this->loadJoinUsData();               // 加入我们
         $this->loadContactData();              // 联系我们
+        $this->loadCultureData();              // 企业文化
 
         return $this->view->fetch('/' . $template);
     }
@@ -351,4 +352,43 @@ class Column extends Base
             'market' => $market ?: []
         ]);
     }
+
+    /**
+     * 加载企业文化数据
+     */
+    protected function loadCultureData()
+    {
+        // 企业文化卡片数据
+        $cultureCards = Db::name('wwh_culture_card')
+            ->where('status', '1')
+            ->where('lang', $this->lang)
+            ->order('weigh desc')
+            ->select();
+
+        // 处理内容项目JSON
+        foreach ($cultureCards as &$card) {
+            if ($card['content_items']) {
+                $card['content_items'] = json_decode($card['content_items'], true);
+            }
+        }
+
+        // 企业文化横幅数据
+        $cultureBanners = Db::name('wwh_culture_banner')
+            ->where('status', '1')
+            ->where('lang', $this->lang)
+            ->order('weigh desc')
+            ->select();
+
+        // 处理内容数据JSON
+        foreach ($cultureBanners as &$banner) {
+            if ($banner['content_data']) {
+                $banner['content_data'] = json_decode($banner['content_data'], true);
+            }
+        }
+
+        $this->assign([
+            'cultureCards' => $cultureCards ?: [],
+            'cultureBanners' => $cultureBanners ?: []
+        ]);
+    }
 }

+ 75 - 75
addons/wwh/view/materials/detail_culture.html

@@ -1,4 +1,4 @@
- <!doctype html>
+<!doctype html>
 <html>
 <head>
     <meta charset="utf-8">
@@ -353,81 +353,82 @@
                 <img src="__CDN__/assets/addons/material/images/culture/1.png" alt="工程图纸">
             </div>
             <div class="card-content">
-                <h3 class="card-title">文化理念</h3>
-                <p class="card-subtitle">CULTURE IDEA</p>
+                <h3 class="card-title">使命</h3>
+                <p class="card-subtitle">MISSION</p>
                 <ul class="card-list">
-                    <li>企业愿人</li>
-                    <li>企业育人</li>
-                    <li>企业为人</li>
-                    <li>让员工与企业共同成长</li>
+                    <li>材料创造</li>
+                    <li>美好世界</li>
                 </ul>
             </div>
         </div>
         
-        <!-- 四型企业 -->
+        <!-- 行为准则 -->
         <div class="culture-card card-reverse wow fadeInUp" data-wow-delay="0.5s">
             <div class="card-image">
                 <img src="__CDN__/assets/addons/material/images/culture/2.png" alt="树木风景">
             </div>
             <div class="card-content">
-                <h3 class="card-title">四型企业</h3>
-                <p class="card-subtitle">FOUR-TYPE ENTERPRISE</p>
+                <h3 class="card-title">行为准则</h3>
+                <p class="card-subtitle">FIVE CADRES</p>
                 <ul class="card-list">
-                    <li>创新驱动型</li>
-                    <li>质量效益型</li>
-                    <li>制造服务型</li>
-                    <li>社会责任型</li>
+                    <li>敬畏</li>
+                    <li>感恩</li>
+                    <li>谦虚</li>
+                    <li>得体</li>
                 </ul>
             </div>
         </div>
-        <!-- 五有干部 -->
+          <!-- 企业愿景 -->
         <div class="culture-card card-reverse wow fadeInUp" data-wow-delay="0.5s">
             <div class="card-image">
-                <img src="__CDN__/assets/addons/material/images/culture/3.png" alt="公园景观">
+                <img src="__CDN__/assets/addons/material/images/culture/5.png" alt="握手">
             </div>
             <div class="card-content">
-                <h3 class="card-title">五有干部</h3>
-                <p class="card-subtitle">FIVE CADRES</p>
-                <ul class="card-list two-column">
-                    <li>有学习能力</li>
-                    <li>有市场意识</li>
-                    <li>有专业水平</li>
-                    <li>有敬业精神</li>
-                    <li>有思想境界</li>
+                <h3 class="card-title">企业愿景</h3>
+                <p class="card-subtitle">CORPORATE VISION</p>
+                <ul class="card-list">
+                    <li>全球优秀的混凝土专业服务商</li>
                 </ul>
             </div>
         </div>
-        
-        <!-- 六星企业 -->
-        <div class="culture-card card-normal wow fadeInUp" data-wow-delay="0.5s">
+        <!-- 管理原则 -->
+        <div class="culture-card card-reverse wow fadeInUp" data-wow-delay="0.5s">
             <div class="card-image">
-                <img src="__CDN__/assets/addons/material/images/culture/4.png" alt="现代建筑">
+                <img src="__CDN__/assets/addons/material/images/culture/3.png" alt="公园景观">
             </div>
             <div class="card-content">
-                <h3 class="card-title">六星企业</h3>
-                <p class="card-subtitle">SIX-STAR ENTERPRISE</p>
-                <ul class="card-list two-column">
-                    <li>业绩良好</li>
-                    <li>管理精细</li>
-                    <li>品牌知名</li>
-                    <li>先进高效</li>
+                <h3 class="card-title">管理原则</h3>
+                <p class="card-subtitle">GOVERNING PRINCIPLES</p>
+                <ul class="card-list">
+                    <li>三精管理</li>
+                    <li>对标优化</li>
                 </ul>
             </div>
         </div>
         
-        <!-- 企业愿景 -->
+        <!-- 六星企业 -->
         <div class="culture-card card-reverse wow fadeInUp" data-wow-delay="0.5s">
             <div class="card-image">
-                <img src="__CDN__/assets/addons/material/images/culture/5.png" alt="握手">
+                <img src="__CDN__/assets/addons/material/images/culture/4.png" alt="现代建筑">
             </div>
             <div class="card-content">
-                <h3 class="card-title">企业愿景</h3>
-                <p class="card-subtitle">CORPORATE VISION</p>
-                <ul class="card-list">
-                    <li>全球优秀的混凝土专业服务商</li>
+                <h3 class="card-title">‘二十字’工法</h3>
+                <p class="card-subtitle">TWENTY-CHARACTER METHOD</p>
+                <ul class="card-list two-column">
+                    <li>销售</li>
+                    <li>回款</li>
+                    <li>价格</li>
+                    <li>订单</li>
+                    <li>对账</li>
+                    <li>成本</li>
+                    <li>质量</li>
+                    <li>安全</li>
+                    <li>环保</li>
+                    <li>保障</li>
                 </ul>
             </div>
         </div>
+      
         
         <!-- 安全理念 -->
         <div class="culture-card card-normal wow fadeInUp" data-wow-delay="0.5s">
@@ -435,11 +436,10 @@
                 <img src="__CDN__/assets/addons/material/images/culture/6.png" alt="工人施工">
             </div>
             <div class="card-content">
-                <h3 class="card-title">安全理念</h3>
-                <p class="card-subtitle">SAFETY CONCEPT</p>
+                <h3 class="card-title">广告语</h3>
+                <p class="card-subtitle">SLOGAN</p>
                 <ul class="card-list">
-                    <li>敬畏生命</li>
-                    <li>健康为本</li>
+                    <li>我们生产凝聚力</li>
                 </ul>
             </div>
         </div>
@@ -448,44 +448,44 @@
     <div class="banner-row">
         <!-- 第一个横幅 -->
         <div class="banner-item wow fadeInUp" data-wow-delay="0.5s">
-            <img src="__CDN__/assets/addons/material/images/culture/515.png" alt="城市景观">
-            <div class="banner-content one-column">
-                <h3 class="banner-title">广告语</h3>
-                <p class="banner-subtitle">FIVE CADRES</p>
-                <p class="banner-text">我们生产凝聚力</p>
-            </div>
+            <img src="__CDN__/assets/addons/material/images/culture/footer-1.png" alt="城市景观">
+            <!--<div class="banner-content one-column">-->
+            <!--    <h3 class="banner-title">广告语</h3>-->
+            <!--    <p class="banner-subtitle">FIVE CADRES</p>-->
+            <!--    <p class="banner-text">我们生产凝聚力</p>-->
+            <!--</div>-->
         </div>
         
         <!-- 第二个横幅 -->
         <div class="banner-item wow fadeInUp" data-wow-delay="0.5s">
-            <img src="__CDN__/assets/addons/material/images/culture/15.png" alt="商务团队">
-            <div class="banner-content">
-                <h3 class="banner-title">行为准则</h3>
-                <p class="banner-subtitle">FIVE CADRES</p>
-                <div class="banner-grid two-column">
-                    <span>敬畏</span>
-                    <span>感恩</span>
-                    <span>谦虚</span>
-                    <span>得体</span>
-                </div>
-            </div>
+            <img src="__CDN__/assets/addons/material/images/culture/footer-2.png" alt="商务团队">
+            <!--<div class="banner-content">-->
+            <!--    <h3 class="banner-title">行为准则</h3>-->
+            <!--    <p class="banner-subtitle">FIVE CADRES</p>-->
+            <!--    <div class="banner-grid two-column">-->
+            <!--        <span>敬畏</span>-->
+            <!--        <span>感恩</span>-->
+            <!--        <span>谦虚</span>-->
+            <!--        <span>得体</span>-->
+            <!--    </div>-->
+            <!--</div>-->
         </div>
         
         <!-- 第三个横幅 -->
         <div class="banner-item wow fadeInUp" data-wow-delay="0.5s">
-            <img src="__CDN__/assets/addons/material/images/culture/51.png" alt="会议场景">
-            <div class="banner-content">
-                <h3 class="banner-title">三宽三力</h3>
-                <p class="banner-subtitle">FIVE CADRES</p>
-                <div class="banner-grid two-column">
-                    <span>待人宽厚</span>
-                    <span>处事宽容</span>
-                    <span>环境宽松</span>
-                    <span>向心力</span>
-                    <span>亲和力</span>
-                    <span>凝聚力</span>
-                </div>
-            </div>
+            <img src="__CDN__/assets/addons/material/images/culture/footer-3.png" alt="会议场景">
+            <!--<div class="banner-content">-->
+            <!--    <h3 class="banner-title">三宽三力</h3>-->
+            <!--    <p class="banner-subtitle">FIVE CADRES</p>-->
+            <!--    <div class="banner-grid two-column">-->
+            <!--        <span>待人宽厚</span>-->
+            <!--        <span>处事宽容</span>-->
+            <!--        <span>环境宽松</span>-->
+            <!--        <span>向心力</span>-->
+            <!--        <span>亲和力</span>-->
+            <!--        <span>凝聚力</span>-->
+            <!--    </div>-->
+            <!--</div>-->
         </div>
     </div>
 </div>

+ 376 - 0
addons/wwh/view/materials/detail_culture_backend_data.html

@@ -0,0 +1,376 @@
+ <!doctype html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
+    <meta name="renderer" content="webkit">
+    <meta name="keywords" content="{:__lm($navCur,'keywords')}"/>
+    <meta name="description" content="{:__lm($navCur,'description')}"/>
+    <title>{:__lm($navCur,'seotitle')} - {$site.site_name}</title>
+    <link rel="shortcut icon" href="{$site.logo|cdnurl}">
+    <link rel="stylesheet" type="text/css" href="__CDN__/assets/addons/material/css/reset.css">
+    <link rel="stylesheet" type="text/css" href="__CDN__/assets/addons/material/css/style.css">
+    <link rel="stylesheet" type="text/css" href="__CDN__/assets/addons/material/css/swiper.min.css">
+    <link rel="stylesheet" type="text/css" href="__CDN__/assets/addons/material/css/animate.min.css">
+    <link rel="stylesheet" type="text/css" href="__CDN__/assets/addons/material/css/media.css">
+    <script type="text/javascript" src="__CDN__/assets/addons/material/js/jquery.min.js"></script>
+    <script type="text/javascript" src="__CDN__/assets/addons/material/js/swiper.min.js"></script>
+    <script type="text/javascript" src="__CDN__/assets/addons/material/js/swiper.animate1.0.3.min.js"></script>
+    <script type="text/javascript" src="__CDN__/assets/addons/material/js/wow.js"></script>
+    <script type="text/javascript" src="__CDN__/assets/addons/material/js/jquery.counterup.min.js"></script>
+    <script type="text/javascript" src="__CDN__/assets/addons/material/js/jquery.waypoints.min.js"></script>
+    <script type="text/javascript" src="__CDN__/assets/addons/material/js/javascript.js"></script>
+    <style>
+        .culture-row {
+            display: flex;
+            flex-wrap: wrap;
+             /* 移除justify-content: space-between,改用margin来控制间距 */
+            gap: 60px 20px; /* 使用gap属性设置卡片之间的水平和垂直间距 */
+            margin-bottom: 60px;
+        }
+        
+        .culture-card {
+            width: 285px;
+            height: 520px;
+            background-color: #fff;
+            border-radius: 4px;
+            overflow: hidden;
+            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
+            transition: transform 0.3s ease, box-shadow 0.3s ease;
+            display: flex;
+            flex-direction: column;
+        }
+        
+        .culture-card:hover {
+            transform: translateY(-5px);
+            box-shadow: 0 10px 20px rgba(0,0,0,0.15);
+        }
+        
+        /* 普通卡片:图片在上,内容在下 */
+        .card-normal .card-image {            
+            order: 1;
+            height: 285px;
+        }        
+        .card-normal .card-content {
+            order: 2;
+        }        
+        .card-reverse .card-content {
+            order: 1;
+        }
+        
+        .card-image {
+            height: 336px;
+            overflow: hidden;
+        }
+         
+        /* 第三个卡片图片高度 */
+        .culture-card:nth-child(2) .card-image {
+            order: 2;
+            height: 322px;
+        }
+        
+        /* 第三个卡片图片高度 */
+        .culture-card:nth-child(3) .card-image {
+            height: 264px;
+        }
+        .culture-card:nth-child(4) .card-image {
+            order: 2;
+            height: 266px;
+        }
+        .culture-card:nth-child(5) .card-image {
+            order: 2;
+            height: 285px;
+        }
+        .culture-card:nth-child(7) .card-image {
+            order: 2;
+            height: 285px;
+        }
+        
+        .card-image img {
+            width: 100%;
+            height: 100%;
+            object-fit: cover;
+            transition: transform 0.5s ease;
+        }
+        
+        .culture-card:hover .card-image img {
+            transform: scale(1.05);
+        }
+        
+        .card-content {
+            text-align: center;
+            flex-grow: 1;
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+        }
+        
+        .card-title {
+            font-size: 20px;
+            font-weight: 500;
+            color: #DF0100;
+        }
+        
+        .card-subtitle {
+            font-size: 12px;
+            font-weight: 400;
+            color: #737980;
+            margin-bottom: 17px;
+            text-transform: uppercase;
+        }
+        
+        /* 单列列表 */
+        .card-list li {
+            font-size: 14px;
+            color: #2E3033;
+            font-weight: 400;
+            margin-bottom: 16px;
+        }
+        
+        /* 双列列表 */
+        .card-list.two-column {
+            display: flex;
+            flex-wrap: wrap;
+            max-width: 220px; /* 控制整体宽度 */
+            margin: 0 auto; /* 水平居中 */
+        }
+        
+        .card-list.two-column li {
+            width: 50%; /* 宽度占50% */
+            box-sizing: border-box;
+            margin-bottom: 16px;
+        }
+        
+        /* 左列文字靠右对齐 */
+        .card-list.two-column li:nth-child(odd) {
+            text-align: right;
+            padding-right: 15px; /* 控制与中间的距离 */
+        }
+        
+        /* 右列文字靠左对齐 */
+        .card-list.two-column li:nth-child(even) {
+            text-align: left;
+            padding-left: 15px; /* 控制与中间的距离 */
+        }
+        
+        /* 奇数项处理 - 与左侧项目对齐 */
+        .card-list.two-column li:last-child:nth-child(2n+1) {
+            width: 50%; /* 保持宽度为50% */
+            text-align: right; /* 与左侧项目一致,靠右对齐 */
+            padding-right: 15px; /* 与左侧项目一致的内边距 */
+        }
+        
+        /* 底部横幅模块样式 */
+        .culture-banner {
+            padding: 60px 0;
+            background-color: #f5f5f5;
+        }
+        
+        .banner-row {
+            display: flex;
+            justify-content: space-between;
+            flex-wrap: wrap;
+            gap: 20px;
+        }
+        
+        .banner-item {
+            width: 386px; /* 固定宽度为386px */
+            height: 216px; /* 固定高度为216px */
+            position: relative;
+            border-radius: 4px;
+            overflow: hidden;
+            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
+        }
+        
+        .banner-item img {
+            width: 100%;
+            height: 100%;
+            object-fit: cover;
+            transition: transform 0.5s ease;
+        }
+        
+        .banner-item:hover img {
+            transform: scale(1.05);
+        }
+        
+        .banner-content {
+            position: absolute;
+            top: 0;
+            left: 0;
+            width: 100%;
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-items: center;
+            background: rgba(0,0,0,0.5);
+            color: #fff;
+            padding: 20px;
+            box-sizing: border-box;
+            text-align: center;
+        }
+        
+        .banner-title {
+            font-size: 20px;
+            font-weight: bold;
+        }
+        
+        .banner-subtitle {
+            font-size: 12px;
+            font-weight: 400;
+            margin-bottom: 20px;
+            opacity: 0.8;
+        }
+        
+        .banner-text {
+            font-size: 18px;
+            font-weight: 500;
+        }
+        
+        /* 横幅内容布局样式 */
+        
+        /* 基础网格布局 */
+        .banner-grid {
+            display: grid;
+            width: 80%;
+            max-width: 220px;
+            margin: 0 auto;
+        }
+        
+        /* 双列布局 */
+        .banner-grid.two-column {
+            grid-template-columns: repeat(2, 1fr);
+            gap: 15px 30px;
+        }
+        
+        .banner-grid.two-column span:nth-child(odd) {
+            text-align: right;
+            padding-right: 15px;
+        }
+        
+        .banner-grid.two-column span:nth-child(even) {
+            text-align: left;
+            padding-left: 15px;
+        }
+        
+        /* 单列布局 */
+        .banner-grid.one-column {
+            grid-template-columns: 1fr;
+            gap: 10px;
+            text-align: center;
+        }
+        
+        .banner-grid.one-column span {
+            text-align: center;
+        }
+        
+        /* 对角线布局(特殊的双列布局) */
+        .banner-grid.diagonal {
+            grid-template-columns: repeat(2, 1fr);
+            gap: 15px;
+        }
+        
+        .banner-grid.diagonal span:nth-child(odd) {
+            text-align: right;
+            padding-right: 15px;
+        }
+        
+        .banner-grid.diagonal span:nth-child(even) {
+            text-align: left;
+            padding-left: 15px;
+        }
+        
+        /* 当最后一个项目是奇数时的处理 */
+        .banner-grid.two-column span:last-child:nth-child(odd),
+        .banner-grid.diagonal span:last-child:nth-child(odd) {
+            grid-column: 1; /* 确保在左列 */
+            text-align: right;
+            padding-right: 15px;
+        }
+        
+        /* 横幅内容的文字样式 */
+        .banner-grid span {
+            font-size: 16px;
+            font-weight: 500;
+            color: #fff;
+            white-space: nowrap;
+        }
+    </style>
+</head>
+<body>
+<!--头部-->
+{include file="header" /}
+<!-- 栏目Banner -->
+<div class="col-banner">
+    <div class="section-banner">
+        <img src="{$navCur.banner|cdnurl}" alt="">
+    </div>
+    <div class="section-header wow fadeInUp" data-wow-delay="0.3s">
+        <p>{$navCur.title_en}</p>
+        <h2>{$navCur.title}</h2>
+    </div>
+</div>
+
+<!-- 内容 -->
+<div class="container">
+    <!-- 企业文化模块 -->
+    <div class="culture-row">
+        {volist name="cultureCards" id="card"}
+        <div class="culture-card card-{$card.card_type} wow fadeInUp" data-wow-delay="0.5s">
+            {if $card.card_type == 'normal'}
+            <div class="card-image">
+                <img src="{$card.image|cdnurl}" alt="{$card.title}">
+            </div>
+            <div class="card-content">
+                <h3 class="card-title">{$card.title}</h3>
+                <p class="card-subtitle">{$card.subtitle}</p>
+                <ul class="card-list {if $card.list_type == 'double'}two-column{/if}">
+                    {volist name="card.content_items" id="item"}
+                    <li>{$item}</li>
+                    {/volist}
+                </ul>
+            </div>
+            {else /}
+            <div class="card-content">
+                <h3 class="card-title">{$card.title}</h3>
+                <p class="card-subtitle">{$card.subtitle}</p>
+                <ul class="card-list {if $card.list_type == 'double'}two-column{/if}">
+                    {volist name="card.content_items" id="item"}
+                    <li>{$item}</li>
+                    {/volist}
+                </ul>
+            </div>
+            <div class="card-image">
+                <img src="{$card.image|cdnurl}" alt="{$card.title}">
+            </div>
+            {/if}
+        </div>
+        {/volist}
+    </div>
+    <!-- 底部模块 -->
+    <div class="banner-row">
+        {volist name="cultureBanners" id="banner"}
+        <div class="banner-item wow fadeInUp" data-wow-delay="0.5s">
+            <img src="{$banner.image|cdnurl}" alt="{$banner.title}">
+            <div class="banner-content {if $banner.content_type == 'text'}one-column{/if}">
+                <h3 class="banner-title">{$banner.title}</h3>
+                <p class="banner-subtitle">{$banner.subtitle}</p>
+                {if $banner.content_type == 'text'}
+                    <p class="banner-text">{$banner.content_data.text}</p>
+                {else /}
+                    <div class="banner-grid {if $banner.content_type == 'grid_single'}one-column{else /}two-column{/if}">
+                        {volist name="banner.content_data.items" id="item"}
+                        <span>{$item}</span>
+                        {/volist}
+                    </div>
+                {/if}
+            </div>
+        </div>
+        {/volist}
+    </div>
+</div>
+<!--底部-->
+{include file="footer" /}
+</body>
+</html>

+ 11 - 10
addons/wwh/view/materials/detail_news.html

@@ -29,6 +29,7 @@
         .news-detail-container {
             max-width: 1200px;
             margin: 0 auto;
+            margin-top: 100px;
             padding: 30px 15px;
         }
 
@@ -194,15 +195,15 @@
             margin-left: 5px;
         }
         /* 禁用状态的上一篇/下一篇按钮 */
-.prev-news.disabled, .next-news.disabled {
-    color: #ccc;
-    cursor: not-allowed;
-}
+        .prev-news.disabled, .next-news.disabled {
+            color: #ccc;
+            cursor: not-allowed;
+        }
 
-.prev-news.disabled:hover, .next-news.disabled:hover {
-    opacity: 1; /* 禁用状态下不改变透明度 */
-    color: #ccc;
-}
+        .prev-news.disabled:hover, .next-news.disabled:hover {
+            opacity: 1; /* 禁用状态下不改变透明度 */
+            color: #ccc;
+        }
 
     </style>
 </head>
@@ -210,11 +211,11 @@
 <body>
     <!-- 头部 -->
     {include file="header" /}
-    <div class="col-banner">
+    <!-- <div class="col-banner">
         <div class="section-banner">
             <img src="{$archives.rec_image|cdnurl}" alt="">
         </div>
-    </div>
+    </div> -->
     <div class="container">
         <div class="news-detail-container">
             <!-- 面包屑导航 -->

+ 1 - 1
addons/wwh/view/materials/detail_strength.html

@@ -42,7 +42,7 @@
 <!-- 内容 -->
 <div class="container">
     <div class="container-outer">
-          <img src="__CDN__/assets/addons/material/images/strength/strength.png" alt="">
+          <img src="{$site.strength|cdnurl}" alt="">
     </div>
 </div>
 <!--底部-->

+ 3 - 1
application/admin/controller/wwh/Config.php

@@ -29,7 +29,8 @@ class Config extends Base
         'wechat' => '',
         'tencent_map_key' =>'',  
         'douyin' => '',
-        'content' => ''
+        'content' => '',
+        'strength' => ''
     ];
 
     // 语言标识
@@ -115,6 +116,7 @@ class Config extends Base
             'douyin' => input('douyin'),
             'tencent_map_key' => input('tencent_map_key'),
             'content' => input('content'),
+            'strength' => input('strength'),
             'lang' => $lang
         ];
 

+ 221 - 0
application/admin/controller/wwh/CultureBanner.php

@@ -0,0 +1,221 @@
+<?php
+
+namespace app\admin\controller\wwh;
+
+use app\common\controller\Backend;
+use think\Db;
+use think\exception\PDOException;
+use think\exception\ValidateException;
+
+/**
+ * 企业文化横幅管理
+ */
+class CultureBanner extends Backend
+{
+    /**
+     * CultureBanner模型对象
+     * @var \app\admin\model\wwh\CultureBanner
+     */
+    protected $model = null;
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\common\model\WwhCultureBanner;
+
+        $this->view->assign("contentTypeList", [
+            'text' => '纯文本',
+            'grid_single' => '单列网格',
+            'grid_double' => '双列网格'
+        ]);
+        $this->view->assign("statusList", [
+            '0' => '禁用',
+            '1' => '启用'
+        ]);
+        $this->view->assign("langList", [
+            '1' => '简体中文',
+            '2' => 'English'
+        ]);
+    }
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = false;
+        //设置过滤方法
+        $this->request->filter(['strip_tags', 'trim']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
+
+            $list = $this->model
+                ->where($where)
+                ->order($sort, $order)
+                ->paginate($limit);
+
+            foreach ($list as $row) {
+                $row->visible(['id','title','subtitle','image','content_type','weigh','status','lang','createtime']);
+            }
+
+            $result = array("total" => $list->total(), "rows" => $list->items());
+
+            return json($result);
+        }
+        return $this->view->fetch();
+    }
+
+    /**
+     * 添加
+     */
+    public function add()
+    {
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                $params = $this->preExcludeFields($params);
+
+                if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
+                    $params[$this->dataLimitField] = $this->auth->id;
+                }
+                $result = false;
+                Db::startTrans();
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
+                        $this->model->validateFailException(true)->validate($validate);
+                    }
+
+                    // 处理内容数据JSON格式
+                    if (isset($params['content_data'])) {
+                        $contentData = $this->parseContentData($params);
+                        $params['content_data'] = json_encode($contentData, JSON_UNESCAPED_UNICODE);
+                    }
+
+                    $params['createtime'] = time();
+                    $params['updatetime'] = time();
+                    
+                    $result = $this->model->allowField(true)->save($params);
+                    Db::commit();
+                } catch (ValidateException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (PDOException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (Exception $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                }
+                if ($result !== false) {
+                    $this->success();
+                } else {
+                    $this->error(__('No rows were inserted'));
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+        return $this->view->fetch();
+    }
+
+    /**
+     * 编辑
+     */
+    public function edit($ids = null)
+    {
+        $row = $this->model->get($ids);
+        if (!$row) {
+            $this->error(__('No Results were found'));
+        }
+        $adminIds = $this->getDataLimitAdminIds();
+        if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) {
+            $this->error(__('You have no permission'));
+        }
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                $params = $this->preExcludeFields($params);
+
+                $result = false;
+                Db::startTrans();
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
+                        $row->validateFailException(true)->validate($validate);
+                    }
+
+                    // 处理内容数据JSON格式
+                    if (isset($params['content_data'])) {
+                        $contentData = $this->parseContentData($params);
+                        $params['content_data'] = json_encode($contentData, JSON_UNESCAPED_UNICODE);
+                    }
+
+                    $params['updatetime'] = time();
+                    
+                    $result = $row->allowField(true)->save($params);
+                    Db::commit();
+                } catch (ValidateException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (PDOException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (Exception $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                }
+                if ($result !== false) {
+                    $this->success();
+                } else {
+                    $this->error(__('No rows were updated'));
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+
+        // 处理内容数据显示
+        if ($row['content_data']) {
+            $contentData = json_decode($row['content_data'], true);
+            if (is_array($contentData)) {
+                if (isset($contentData['text'])) {
+                    $row['content_text'] = $contentData['text'];
+                }
+                if (isset($contentData['items']) && is_array($contentData['items'])) {
+                    $row['content_items'] = implode("\n", $contentData['items']);
+                }
+            }
+        }
+
+        $this->view->assign("row", $row);
+        return $this->view->fetch();
+    }
+
+    /**
+     * 解析内容数据
+     */
+    private function parseContentData($params)
+    {
+        $contentData = [];
+        
+        if ($params['content_type'] == 'text') {
+            $contentData['text'] = $params['content_text'] ?? '';
+        } else {
+            // grid_single 或 grid_double
+            if (isset($params['content_items'])) {
+                $items = array_filter(explode("\n", $params['content_items']));
+                $contentData['items'] = $items;
+            }
+        }
+        
+        return $contentData;
+    }
+}

+ 210 - 0
application/admin/controller/wwh/CultureCard.php

@@ -0,0 +1,210 @@
+<?php
+
+namespace app\admin\controller\wwh;
+
+use app\common\controller\Backend;
+use think\Db;
+use think\exception\PDOException;
+use think\exception\ValidateException;
+
+/**
+ * 企业文化卡片管理
+ */
+class CultureCard extends Backend
+{
+    /**
+     * CultureCard模型对象
+     * @var \app\admin\model\wwh\CultureCard
+     */
+    protected $model = null;
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\common\model\WwhCultureCard;
+
+        $this->view->assign("cardTypeList", [
+            'normal' => '图片在上',
+            'reverse' => '内容在上'
+        ]);
+        $this->view->assign("listTypeList", [
+            'single' => '单列布局',
+            'double' => '双列布局'
+        ]);
+        $this->view->assign("statusList", [
+            '0' => '禁用',
+            '1' => '启用'
+        ]);
+        $this->view->assign("langList", [
+            '1' => '简体中文',
+            '2' => 'English'
+        ]);
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自定义
+     * 如果需要自定义,请复制对应的方法至此文件中
+     */
+
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = false;
+        //设置过滤方法
+        $this->request->filter(['strip_tags', 'trim']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
+
+            $list = $this->model
+                ->where($where)
+                ->order($sort, $order)
+                ->paginate($limit);
+
+            foreach ($list as $row) {
+                $row->visible(['id','title','subtitle','image','card_type','list_type','weigh','status','lang','createtime']);
+                $row->visible(['id','title','subtitle','image','card_type','list_type','weigh','status','lang','createtime']);
+                $row->getRelation('admin')->visible(['username']);
+            }
+
+            $result = array("total" => $list->total(), "rows" => $list->items());
+
+            return json($result);
+        }
+        return $this->view->fetch();
+    }
+
+    /**
+     * 添加
+     */
+    public function add()
+    {
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                $params = $this->preExcludeFields($params);
+
+                if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
+                    $params[$this->dataLimitField] = $this->auth->id;
+                }
+                $result = false;
+                Db::startTrans();
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
+                        $this->model->validateFailException(true)->validate($validate);
+                    }
+
+                    // 处理内容项目JSON格式
+                    if (isset($params['content_items'])) {
+                        if (is_string($params['content_items'])) {
+                            // 如果是字符串,按换行符分割
+                            $items = array_filter(explode("\n", $params['content_items']));
+                            $params['content_items'] = json_encode($items, JSON_UNESCAPED_UNICODE);
+                        }
+                    }
+
+                    $params['createtime'] = time();
+                    $params['updatetime'] = time();
+                    
+                    $result = $this->model->allowField(true)->save($params);
+                    Db::commit();
+                } catch (ValidateException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (PDOException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (Exception $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                }
+                if ($result !== false) {
+                    $this->success();
+                } else {
+                    $this->error(__('No rows were inserted'));
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+        return $this->view->fetch();
+    }
+
+    /**
+     * 编辑
+     */
+    public function edit($ids = null)
+    {
+        $row = $this->model->get($ids);
+        if (!$row) {
+            $this->error(__('No Results were found'));
+        }
+        $adminIds = $this->getDataLimitAdminIds();
+        if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) {
+            $this->error(__('You have no permission'));
+        }
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                $params = $this->preExcludeFields($params);
+
+                $result = false;
+                Db::startTrans();
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
+                        $row->validateFailException(true)->validate($validate);
+                    }
+
+                    // 处理内容项目JSON格式
+                    if (isset($params['content_items'])) {
+                        if (is_string($params['content_items'])) {
+                            // 如果是字符串,按换行符分割
+                            $items = array_filter(explode("\n", $params['content_items']));
+                            $params['content_items'] = json_encode($items, JSON_UNESCAPED_UNICODE);
+                        }
+                    }
+
+                    $params['updatetime'] = time();
+                    
+                    $result = $row->allowField(true)->save($params);
+                    Db::commit();
+                } catch (ValidateException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (PDOException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (Exception $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                }
+                if ($result !== false) {
+                    $this->success();
+                } else {
+                    $this->error(__('No rows were updated'));
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+
+        // 处理内容项目显示
+        if ($row['content_items']) {
+            $items = json_decode($row['content_items'], true);
+            if (is_array($items)) {
+                $row['content_items'] = implode("\n", $items);
+            }
+        }
+
+        $this->view->assign("row", $row);
+        return $this->view->fetch();
+    }
+}

+ 2 - 634
application/admin/view/wwh/about/index.html

@@ -184,323 +184,7 @@
                     </div>
                 </div>
 
-                <!-- <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" style="padding-left: 0px;padding-right: 0px;">
-                    <div class="box {if $switch_lang == '1'}box-success{/if}">
-                        <div class="panel-body">
-                            <div class="alert alert-success-light">
-                                <b>企业文化</b><br>
-                            </div>
-                                <table class="table table-striped">
-                                    <thead>
-                                    <tr>
-                                        <th class="wdbt">标题</th>
-                                        <th class="wd70">值</th>
-                                        <th width="15%" class="mob-none">变量名</th>
-                                    </tr>
-                                    </thead>
-                                    <tbody>
-                                    <tr>
-                                        <td>企业文化标题1</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title1"
-                                                           value="{$dataCN.culture_title1|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title1}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语1</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan1"
-                                                           value="{$dataCN.culture_slogan1|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan1}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片1</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image1CN" class="form-control" size="35"
-                                                               name="culture_image1" placeholder="推荐尺寸:441x580"
-                                                               type="text" value="{$dataCN.culture_image1|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image1CN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image1CN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image1CN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image1CN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image1CN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image1CN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image1}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标题2</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title2"
-                                                           value="{$dataCN.culture_title2|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title2}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语2</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan2"
-                                                           value="{$dataCN.culture_slogan2|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan2}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片2</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image2CN" class="form-control" size="35"
-                                                               name="culture_image2" placeholder="推荐尺寸:440x280"
-                                                               type="text" value="{$dataCN.culture_image2|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image2CN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image2CN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image2CN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image2CN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image2CN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image2CN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image2}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标题3</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title3"
-                                                           value="{$dataCN.culture_title3|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title3}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语3</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan3"
-                                                           value="{$dataCN.culture_slogan3|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan3}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片3</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image3CN" class="form-control" size="35"
-                                                               name="culture_image3" placeholder="推荐尺寸:440x280"
-                                                               type="text" value="{$dataCN.culture_image3|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image3CN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image3CN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image3CN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image3CN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image3CN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image3CN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image3}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标题4</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title4"
-                                                           value="{$dataCN.culture_title4|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title4}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语4</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan4"
-                                                           value="{$dataCN.culture_slogan4|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan4}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片4</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image4CN" class="form-control" size="35"
-                                                               name="culture_image4" placeholder="推荐尺寸:440x280"
-                                                               type="text" value="{$dataCN.culture_image4|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image4CN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image4CN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image4CN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image4CN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image4CN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image4CN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image4}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标题5</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title5"
-                                                           value="{$dataCN.culture_title5|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title5}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语5</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan5"
-                                                           value="{$dataCN.culture_slogan5|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan5}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片5</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image5CN" class="form-control" size="35"
-                                                               name="culture_image5" placeholder="推荐尺寸:440x280"
-                                                               type="text" value="{$dataCN.culture_image5|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image5CN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image5CN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image5CN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image5CN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image5CN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image5CN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image5}{/literal}</td>
-                                    </tr>
-                                    </tbody>
-                                    <tfoot>
-                                    <tr>
-                                        <td></td>
-                                        <td>
-                                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}
-                                            </button>
-                                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}
-                                            </button>
-                                        </td>
-                                        <td></td>
-                                    </tr>
-                                    </tfoot>
-                                </table>
-                        </div>
-                    </div>
-                </div> -->
+               
                 </form>
             </div>
 
@@ -628,323 +312,7 @@
                     </div>
                 </div>
 
-                <!-- <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" style="padding-left: 0px;padding-right: 0px;">
-                    <div class="box box-warning">
-                        <div class="panel-body">
-                            <div class="alert alert-danger-light">
-                                <b>企业文化</b><br>
-                            </div>
-                                <table class="table table-striped">
-                                    <thead>
-                                    <tr>
-                                        <th class="wdbt">标题</th>
-                                        <th class="wd70">值</th>
-                                        <th width="15%" class="mob-none">变量名</th>
-                                    </tr>
-                                    </thead>
-                                    <tbody>
-                                    <tr>
-                                        <td>企业文化标题1</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title1"
-                                                           value="{$dataEN.culture_title1|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title1}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语1</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan1"
-                                                           value="{$dataEN.culture_slogan1|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan1}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片1</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image1EN" class="form-control" size="35"
-                                                               name="culture_image1" placeholder="推荐尺寸:441x580"
-                                                               type="text" value="{$dataEN.culture_image1|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image1EN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image1EN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image1EN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image1EN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image1EN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image1EN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image1}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标题2</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title2"
-                                                           value="{$dataEN.culture_title2|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title2}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语2</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan2"
-                                                           value="{$dataEN.culture_slogan2|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan2}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片2</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image2EN" class="form-control" size="35"
-                                                               name="culture_image2" placeholder="推荐尺寸:440x280"
-                                                               type="text" value="{$dataEN.culture_image2|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image2EN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image2EN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image2EN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image2EN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image2EN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image2EN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image2}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标题3</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title3"
-                                                           value="{$dataEN.culture_title3|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title3}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语3</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan3"
-                                                           value="{$dataEN.culture_slogan3|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan3}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片3</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image3EN" class="form-control" size="35"
-                                                               name="culture_image3" placeholder="推荐尺寸:440x280"
-                                                               type="text" value="{$dataEN.culture_image3|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image3EN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image3EN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image3EN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image3EN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image3EN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image3EN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image3}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标题4</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title4"
-                                                           value="{$dataEN.culture_title4|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title4}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语4</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan4"
-                                                           value="{$dataEN.culture_slogan4|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan4}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片4</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image4EN" class="form-control" size="35"
-                                                               name="culture_image4" placeholder="推荐尺寸:440x280"
-                                                               type="text" value="{$dataEN.culture_image4|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image4EN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image4EN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image4EN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image4EN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image4EN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image4EN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image4}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标题5</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_title5"
-                                                           value="{$dataEN.culture_title5|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_title5}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化标语5</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <input type="text" name="culture_slogan5"
-                                                           value="{$dataEN.culture_slogan5|htmlentities}"
-                                                           class="form-control"/>
-                                                </div>
-                                                <div class="col-sm-4"></div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_slogan5}{/literal}</td>
-                                    </tr>
-                                    <tr>
-                                        <td>企业文化图片5</td>
-                                        <td>
-                                            <div class="row">
-                                                <div class="col-sm-8 col-xs-12">
-                                                    <div class="form-inline">
-                                                        <input id="c-culture_image5EN" class="form-control" size="35"
-                                                               name="culture_image5" placeholder="推荐尺寸:440x280"
-                                                               type="text" value="{$dataEN.culture_image5|htmlentities}"
-                                                               data-tip="">
-                                                        <span><button type="button" id="plupload-culture_image5EN"
-                                                                      class="btn btn-danger plupload"
-                                                                      data-input-id="c-culture_image5EN"
-                                                                      data-mimetype="image/*" data-multiple="false"
-                                                                      data-preview-id="p-culture_image5EN"><i
-                                                                class="fa fa-upload"></i> 上传</button></span>
-                                                        <span><button type="button" id="fachoose-culture_image5EN"
-                                                                      class="btn btn-primary fachoose"
-                                                                      data-input-id="c-culture_image5EN"
-                                                                      data-mimetype="image/*" data-multiple="false"><i
-                                                                class="fa fa-list"></i> 选择</button></span>
-                                                        <ul class="row list-inline plupload-preview"
-                                                            id="p-culture_image5EN"></ul>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </td>
-                                        <td class="mob-none">{literal}{$about.culture_image5}{/literal}</td>
-                                    </tr>
-                                    </tbody>
-                                    <tfoot>
-                                    <tr>
-                                        <td></td>
-                                        <td>
-                                            <button type="submit" class="btn btn-success btn-embossed">{:__('OK')}
-                                            </button>
-                                            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}
-                                            </button>
-                                        </td>
-                                        <td></td>
-                                    </tr>
-                                    </tfoot>
-                                </table>
-                        </div>
-                    </div>
-                </div> -->
+             
                 </form>
             </div>
             {/if}

+ 27 - 0
application/admin/view/wwh/config/index.html

@@ -372,6 +372,33 @@
                                         </td>
                                         <td class="mob-none">{literal}{$site.wechat}{/literal}</td>
                                     </tr>
+                                    <tr>
+                                        <td>企业实力图片</td>
+                                        <td>
+                                            <div class="row">
+                                                <div class="col-sm-8 col-xs-12">
+                                                    <div class="form-inline">
+                                                        <input id="c-strength" class="form-control" size="35"
+                                                               name="strength"
+                                                               placeholder="" type="text"
+                                                               value="{$dataCN.strength|htmlentities}" data-tip="">
+                                                        <span><button type="button" id="plupload-strength"
+                                                                      class="btn btn-danger plupload"
+                                                                      data-input-id="c-strength" data-mimetype="image/*"
+                                                                      data-multiple="false"
+                                                                      data-preview-id="p-strength"><i
+                                                                class="fa fa-upload"></i> 上传</button></span>
+                                                        <span><button type="button" id="fachoose-strength"
+                                                                      class="btn btn-primary fachoose"
+                                                                      data-input-id="c-strength" data-mimetype="image/*"
+                                                                      data-multiple="false"><i class="fa fa-list"></i> 选择</button></span>
+                                                        <ul class="row list-inline plupload-preview" id="p-strength"></ul>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </td>
+                                        <td class="mob-none">{literal}{$site.wechat}{/literal}</td>
+                                    </tr>
                                     <!-- <tr>
                                         <td>抖音</td>
                                         <td>

+ 109 - 0
application/admin/view/wwh/culture_banner/add.html

@@ -0,0 +1,109 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-title" class="form-control" name="row[title]" type="text" placeholder="请输入横幅标题">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Subtitle')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-subtitle" class="form-control" name="row[subtitle]" type="text" placeholder="请输入英文副标题">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" class="form-control" size="50" name="row[image]" type="text" placeholder="请选择背景图片">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-content_type" class="form-control selectpicker" name="row[content_type]">
+                {foreach name="contentTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="text"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group" id="content-text-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content text')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-content_text" class="form-control" name="row[content_text]" type="text" placeholder="请输入文本内容">
+        </div>
+    </div>
+    <div class="form-group" id="content-items-group" style="display:none;">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content items')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-content_items" class="form-control" rows="5" name="row[content_items]" cols="50" placeholder="每行一个内容项目,如:&#10;敬畏&#10;感恩"></textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-status" class="form-control selectpicker" name="row[status]">
+                {foreach name="statusList" item="vo"}
+                    <option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Lang')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-lang" class="form-control selectpicker" name="row[lang]">
+                {foreach name="langList" item="vo"}
+                    <option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>
+
+<script>
+$(function(){
+    // 根据内容类型切换显示的字段
+    $('#c-content_type').on('change', function(){
+        var type = $(this).val();
+        if(type === 'text') {
+            $('#content-text-group').show();
+            $('#content-items-group').hide();
+        } else {
+            $('#content-text-group').hide();
+            $('#content-items-group').show();
+        }
+    });
+    
+    // 初始化时触发一次
+    $('#c-content_type').trigger('change');
+});
+</script>

+ 109 - 0
application/admin/view/wwh/culture_banner/edit.html

@@ -0,0 +1,109 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-title" class="form-control" name="row[title]" type="text" value="{$row.title|htmlentities}" placeholder="请输入横幅标题">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Subtitle')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-subtitle" class="form-control" name="row[subtitle]" type="text" value="{$row.subtitle|htmlentities}" placeholder="请输入英文副标题">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities}" placeholder="请选择背景图片">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-content_type" class="form-control selectpicker" name="row[content_type]">
+                {foreach name="contentTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.content_type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group" id="content-text-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content text')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-content_text" class="form-control" name="row[content_text]" type="text" value="{$row.content_text|htmlentities}" placeholder="请输入文本内容">
+        </div>
+    </div>
+    <div class="form-group" id="content-items-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content items')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-content_items" class="form-control" rows="5" name="row[content_items]" cols="50" placeholder="每行一个内容项目,如:&#10;敬畏&#10;感恩">{$row.content_items|raw}</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="{$row.weigh}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-status" class="form-control selectpicker" name="row[status]">
+                {foreach name="statusList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.status"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Lang')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-lang" class="form-control selectpicker" name="row[lang]">
+                {foreach name="langList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.lang"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>
+
+<script>
+$(function(){
+    // 根据内容类型切换显示的字段
+    $('#c-content_type').on('change', function(){
+        var type = $(this).val();
+        if(type === 'text') {
+            $('#content-text-group').show();
+            $('#content-items-group').hide();
+        } else {
+            $('#content-text-group').hide();
+            $('#content-items-group').show();
+        }
+    });
+    
+    // 初始化时触发一次
+    $('#c-content_type').trigger('change');
+});
+</script>

+ 56 - 0
application/admin/view/wwh/culture_banner/index.html

@@ -0,0 +1,56 @@
+<div class="panel panel-default panel-intro">
+    <div class="panel-heading">
+        <div class="btn-toolbar-title">{:__('企业文化横幅管理')}</div>
+        <div class="btn-toolbar">
+            <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
+            <a href="javascript:;" class="btn btn-success btn-add" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
+            <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
+            <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
+        </div>
+    </div>
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <form class="form-inline" role="form" id="toolbar-form">
+                            <div class="form-group">
+                                <label class="control-label">{:__('Title')}:</label>
+                                <input type="text" class="form-control" name="title" placeholder="{:__('Title')}" value="">
+                            </div>
+                            <div class="form-group">
+                                <label class="control-label">{:__('Content type')}:</label>
+                                <select class="form-control" name="content_type">
+                                    <option value="">{:__('All')}</option>
+                                    {foreach name="contentTypeList" item="vo"}
+                                    <option value="{$key}">{$vo}</option>
+                                    {/foreach}
+                                </select>
+                            </div>
+                            <div class="form-group">
+                                <label class="control-label">{:__('Status')}:</label>
+                                <select class="form-control" name="status">
+                                    <option value="">{:__('All')}</option>
+                                    {foreach name="statusList" item="vo"}
+                                    <option value="{$key}">{$vo}</option>
+                                    {/foreach}
+                                </select>
+                            </div>
+                            <div class="form-group">
+                                <button type="submit" class="btn btn-info btn-sm">{:__('Submit')}</button>
+                                <button type="reset" class="btn btn-info btn-sm">{:__('Reset')}</button>
+                            </div>
+                        </form>
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('wwh/culture_banner/edit')}"
+                           data-operate-del="{:$auth->check('wwh/culture_banner/del')}"
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 96 - 0
application/admin/view/wwh/culture_card/add.html

@@ -0,0 +1,96 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-title" class="form-control" name="row[title]" type="text" placeholder="请输入卡片标题">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Subtitle')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-subtitle" class="form-control" name="row[subtitle]" type="text" placeholder="请输入英文副标题">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" class="form-control" size="50" name="row[image]" type="text" placeholder="请选择卡片图片">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Card type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-card_type" class="form-control selectpicker" name="row[card_type]">
+                {foreach name="cardTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="normal"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('List type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-list_type" class="form-control selectpicker" name="row[list_type]">
+                {foreach name="listTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="single"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content items')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-content_items" class="form-control" rows="5" name="row[content_items]" cols="50" placeholder="每行一个内容项目,如:&#10;善用资源&#10;服务建设"></textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-status" class="form-control selectpicker" name="row[status]">
+                {foreach name="statusList" item="vo"}
+                    <option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Lang')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-lang" class="form-control selectpicker" name="row[lang]">
+                {foreach name="langList" item="vo"}
+                    <option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 96 - 0
application/admin/view/wwh/culture_card/edit.html

@@ -0,0 +1,96 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-title" class="form-control" name="row[title]" type="text" value="{$row.title|htmlentities}" placeholder="请输入卡片标题">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Subtitle')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-subtitle" class="form-control" name="row[subtitle]" type="text" value="{$row.subtitle|htmlentities}" placeholder="请输入英文副标题">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities}" placeholder="请选择卡片图片">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Card type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-card_type" class="form-control selectpicker" name="row[card_type]">
+                {foreach name="cardTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.card_type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('List type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-list_type" class="form-control selectpicker" name="row[list_type]">
+                {foreach name="listTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.list_type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content items')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-content_items" class="form-control" rows="5" name="row[content_items]" cols="50" placeholder="每行一个内容项目,如:&#10;善用资源&#10;服务建设">{$row.content_items|raw}</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Weigh')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-weigh" class="form-control" name="row[weigh]" type="number" value="{$row.weigh}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-status" class="form-control selectpicker" name="row[status]">
+                {foreach name="statusList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.status"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Lang')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <select  id="c-lang" class="form-control selectpicker" name="row[lang]">
+                {foreach name="langList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.lang"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 56 - 0
application/admin/view/wwh/culture_card/index.html

@@ -0,0 +1,56 @@
+<div class="panel panel-default panel-intro">
+    <div class="panel-heading">
+        <div class="btn-toolbar-title">{:__('企业文化卡片管理')}</div>
+        <div class="btn-toolbar">
+            <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
+            <a href="javascript:;" class="btn btn-success btn-add" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
+            <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
+            <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
+        </div>
+    </div>
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <form class="form-inline" role="form" id="toolbar-form">
+                            <div class="form-group">
+                                <label class="control-label">{:__('Title')}:</label>
+                                <input type="text" class="form-control" name="title" placeholder="{:__('Title')}" value="">
+                            </div>
+                            <div class="form-group">
+                                <label class="control-label">{:__('Card type')}:</label>
+                                <select class="form-control" name="card_type">
+                                    <option value="">{:__('All')}</option>
+                                    {foreach name="cardTypeList" item="vo"}
+                                    <option value="{$key}">{$vo}</option>
+                                    {/foreach}
+                                </select>
+                            </div>
+                            <div class="form-group">
+                                <label class="control-label">{:__('Status')}:</label>
+                                <select class="form-control" name="status">
+                                    <option value="">{:__('All')}</option>
+                                    {foreach name="statusList" item="vo"}
+                                    <option value="{$key}">{$vo}</option>
+                                    {/foreach}
+                                </select>
+                            </div>
+                            <div class="form-group">
+                                <button type="submit" class="btn btn-info btn-sm">{:__('Submit')}</button>
+                                <button type="reset" class="btn btn-info btn-sm">{:__('Reset')}</button>
+                            </div>
+                        </form>
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('wwh/culture_card/edit')}"
+                           data-operate-del="{:$auth->check('wwh/culture_card/del')}"
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 83 - 0
application/common/model/WwhCultureBanner.php

@@ -0,0 +1,83 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+class WwhCultureBanner extends Model
+{
+    // 表名
+    protected $name = 'wwh_culture_banner';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    
+    // 追加属性
+    protected $append = [
+        'content_type_text',
+        'status_text',
+        'lang_text'
+    ];
+    
+    protected static function init()
+    {
+        self::afterInsert(function ($row) {
+            $pk = $row->getPk();
+            $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]);
+        });
+    }
+    
+    public function getContentTypeList()
+    {
+        return [
+            'text' => __('纯文本'),
+            'grid_single' => __('单列网格'),
+            'grid_double' => __('双列网格')
+        ];
+    }
+
+    public function getStatusList()
+    {
+        return ['0' => __('禁用'), '1' => __('启用')];
+    }
+
+    public function getLangList()
+    {
+        return ['1' => __('简体中文'), '2' => __('English')];
+    }
+
+    public function getContentTypeTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['content_type']) ? $data['content_type'] : '');
+        $list = $this->getContentTypeList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    public function getStatusTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
+        $list = $this->getStatusList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    public function getLangTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['lang']) ? $data['lang'] : '');
+        $list = $this->getLangList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+    
+    protected function setContentDataAttr($value)
+    {
+        return is_array($value) ? json_encode($value, JSON_UNESCAPED_UNICODE) : $value;
+    }
+
+    protected function getContentDataAttr($value)
+    {
+        return $value ? json_decode($value, true) : [];
+    }
+}

+ 92 - 0
application/common/model/WwhCultureCard.php

@@ -0,0 +1,92 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+class WwhCultureCard extends Model
+{
+    // 表名
+    protected $name = 'wwh_culture_card';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    
+    // 追加属性
+    protected $append = [
+        'card_type_text',
+        'list_type_text',
+        'status_text',
+        'lang_text'
+    ];
+    
+    protected static function init()
+    {
+        self::afterInsert(function ($row) {
+            $pk = $row->getPk();
+            $row->getQuery()->where($pk, $row[$pk])->update(['weigh' => $row[$pk]]);
+        });
+    }
+    
+    public function getCardTypeList()
+    {
+        return ['normal' => __('图片在上'), 'reverse' => __('内容在上')];
+    }
+
+    public function getListTypeList()
+    {
+        return ['single' => __('单列布局'), 'double' => __('双列布局')];
+    }
+
+    public function getStatusList()
+    {
+        return ['0' => __('禁用'), '1' => __('启用')];
+    }
+
+    public function getLangList()
+    {
+        return ['1' => __('简体中文'), '2' => __('English')];
+    }
+
+    public function getCardTypeTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['card_type']) ? $data['card_type'] : '');
+        $list = $this->getCardTypeList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    public function getListTypeTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['list_type']) ? $data['list_type'] : '');
+        $list = $this->getListTypeList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    public function getStatusTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
+        $list = $this->getStatusList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    public function getLangTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['lang']) ? $data['lang'] : '');
+        $list = $this->getLangList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+    
+    protected function setContentItemsAttr($value)
+    {
+        return is_array($value) ? json_encode($value, JSON_UNESCAPED_UNICODE) : $value;
+    }
+
+    protected function getContentItemsAttr($value)
+    {
+        return $value ? json_decode($value, true) : [];
+    }
+}

+ 31 - 0
culture_menu.sql

@@ -0,0 +1,31 @@
+-- 添加企业文化管理菜单
+-- 先查找 WWH模块管理 的父级菜单ID
+-- 这些SQL需要根据实际的菜单ID进行调整
+
+-- 插入企业文化卡片管理菜单
+INSERT INTO `fa_auth_rule` (`id`, `type`, `pid`, `name`, `title`, `icon`, `condition`, `remark`, `ismenu`, `createtime`, `updatetime`, `weigh`, `status`) VALUES
+(NULL, 'file', (SELECT id FROM fa_auth_rule WHERE name = 'wwh' LIMIT 1), 'wwh/culture_card', '企业文化卡片', 'fa fa-id-card', '', '企业文化卡片管理', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal');
+
+-- 插入企业文化卡片子菜单
+SET @culture_card_id = LAST_INSERT_ID();
+
+INSERT INTO `fa_auth_rule` (`id`, `type`, `pid`, `name`, `title`, `icon`, `condition`, `remark`, `ismenu`, `createtime`, `updatetime`, `weigh`, `status`) VALUES
+(NULL, 'file', @culture_card_id, 'wwh/culture_card/index', '查看', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal'),
+(NULL, 'file', @culture_card_id, 'wwh/culture_card/add', '添加', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal'),
+(NULL, 'file', @culture_card_id, 'wwh/culture_card/edit', '编辑', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal'),
+(NULL, 'file', @culture_card_id, 'wwh/culture_card/del', '删除', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal'),
+(NULL, 'file', @culture_card_id, 'wwh/culture_card/multi', '批量更新', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal');
+
+-- 插入企业文化横幅管理菜单
+INSERT INTO `fa_auth_rule` (`id`, `type`, `pid`, `name`, `title`, `icon`, `condition`, `remark`, `ismenu`, `createtime`, `updatetime`, `weigh`, `status`) VALUES
+(NULL, 'file', (SELECT id FROM fa_auth_rule WHERE name = 'wwh' LIMIT 1), 'wwh/culture_banner', '企业文化横幅', 'fa fa-image', '', '企业文化横幅管理', 1, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal');
+
+-- 插入企业文化横幅子菜单
+SET @culture_banner_id = LAST_INSERT_ID();
+
+INSERT INTO `fa_auth_rule` (`id`, `type`, `pid`, `name`, `title`, `icon`, `condition`, `remark`, `ismenu`, `createtime`, `updatetime`, `weigh`, `status`) VALUES
+(NULL, 'file', @culture_banner_id, 'wwh/culture_banner/index', '查看', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal'),
+(NULL, 'file', @culture_banner_id, 'wwh/culture_banner/add', '添加', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal'),
+(NULL, 'file', @culture_banner_id, 'wwh/culture_banner/edit', '编辑', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal'),
+(NULL, 'file', @culture_banner_id, 'wwh/culture_banner/del', '删除', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal'),
+(NULL, 'file', @culture_banner_id, 'wwh/culture_banner/multi', '批量更新', 'fa fa-circle-o', '', '', 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), 0, 'normal');

+ 49 - 0
culture_tables.sql

@@ -0,0 +1,49 @@
+-- 企业文化卡片表
+CREATE TABLE IF NOT EXISTS `__PREFIX__wwh_culture_card` (
+  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
+  `title` varchar(100) NOT NULL COMMENT '卡片标题',
+  `subtitle` varchar(100) DEFAULT NULL COMMENT '英文副标题',
+  `image` varchar(255) DEFAULT NULL COMMENT '卡片图片',
+  `card_type` enum('normal','reverse') NOT NULL DEFAULT 'normal' COMMENT '卡片类型:normal=图片在上,reverse=内容在上',
+  `list_type` enum('single','double') NOT NULL DEFAULT 'single' COMMENT '列表类型:single=单列,double=双列',
+  `content_items` text COMMENT '内容项目(JSON格式存储)',
+  `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '排序权重',
+  `status` enum('0','1') NOT NULL DEFAULT '1' COMMENT '状态:0=禁用,1=启用',
+  `createtime` bigint(16) DEFAULT NULL COMMENT '创建时间',
+  `updatetime` bigint(16) DEFAULT NULL COMMENT '更新时间',
+  `lang` enum('1','2') DEFAULT '1' COMMENT '语言:1=简体中文,2=English',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='企业文化卡片表';
+
+-- 企业文化横幅表
+CREATE TABLE IF NOT EXISTS `__PREFIX__wwh_culture_banner` (
+  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
+  `title` varchar(100) NOT NULL COMMENT '横幅标题',
+  `subtitle` varchar(100) DEFAULT NULL COMMENT '英文副标题',
+  `image` varchar(255) DEFAULT NULL COMMENT '背景图片',
+  `content_type` enum('text','grid_single','grid_double') NOT NULL DEFAULT 'text' COMMENT '内容类型:text=纯文本,grid_single=单列网格,grid_double=双列网格',
+  `content_data` text COMMENT '内容数据(JSON格式存储)',
+  `weigh` int(10) NOT NULL DEFAULT '0' COMMENT '排序权重',
+  `status` enum('0','1') NOT NULL DEFAULT '1' COMMENT '状态:0=禁用,1=启用',
+  `createtime` bigint(16) DEFAULT NULL COMMENT '创建时间',
+  `updatetime` bigint(16) DEFAULT NULL COMMENT '更新时间',
+  `lang` enum('1','2') DEFAULT '1' COMMENT '语言:1=简体中文,2=English',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='企业文化横幅表';
+
+-- 插入示例数据 - 卡片
+INSERT INTO `__PREFIX__wwh_culture_card` (`title`, `subtitle`, `image`, `card_type`, `list_type`, `content_items`, `weigh`, `status`, `createtime`, `updatetime`, `lang`) VALUES
+('核心理念', 'CORE IDEOLOGY', '/assets/addons/material/images/culture/88.png', 'normal', 'single', '["善用资源","服务建设"]', 90, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1'),
+('核心价值观', 'CORE VALUE', '/assets/addons/material/images/culture/image.png', 'reverse', 'double', '["创新","和谐","绩效","责任"]', 80, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1'),
+('文化理念', 'CULTURE IDEA', '/assets/addons/material/images/culture/1.png', 'normal', 'single', '["企业愿人","企业育人","企业为人","让员工与企业共同成长"]', 70, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1'),
+('四型企业', 'FOUR-TYPE ENTERPRISE', '/assets/addons/material/images/culture/2.png', 'reverse', 'single', '["创新驱动型","质量效益型","制造服务型","社会责任型"]', 60, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1'),
+('五有干部', 'FIVE CADRES', '/assets/addons/material/images/culture/3.png', 'reverse', 'double', '["有学习能力","有市场意识","有专业水平","有敬业精神","有思想境界"]', 50, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1'),
+('六星企业', 'SIX-STAR ENTERPRISE', '/assets/addons/material/images/culture/4.png', 'normal', 'double', '["业绩良好","管理精细","品牌知名","先进高效"]', 40, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1'),
+('企业愿景', 'CORPORATE VISION', '/assets/addons/material/images/culture/5.png', 'reverse', 'single', '["全球优秀的混凝土专业服务商"]', 30, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1'),
+('安全理念', 'SAFETY CONCEPT', '/assets/addons/material/images/culture/6.png', 'normal', 'single', '["敬畏生命","健康为本"]', 20, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1');
+
+-- 插入示例数据 - 横幅
+INSERT INTO `__PREFIX__wwh_culture_banner` (`title`, `subtitle`, `image`, `content_type`, `content_data`, `weigh`, `status`, `createtime`, `updatetime`, `lang`) VALUES
+('广告语', 'FIVE CADRES', '/assets/addons/material/images/culture/515.png', 'text', '{"text":"我们生产凝聚力"}', 30, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1'),
+('行为准则', 'FIVE CADRES', '/assets/addons/material/images/culture/15.png', 'grid_double', '{"items":["敬畏","感恩","谦虚","得体"]}', 20, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1'),
+('三宽三力', 'FIVE CADRES', '/assets/addons/material/images/culture/51.png', 'grid_double', '{"items":["待人宽厚","处事宽容","环境宽松","向心力","亲和力","凝聚力"]}', 10, '1', UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '1');

BIN
public/assets/addons/material/images/culture/footer_1.png


BIN
public/assets/addons/material/images/culture/footer_2.png


BIN
public/assets/addons/material/images/culture/footer_3.png