Explorar o código

fix(admin): 归位数字化底座顶部配置入口

malk hai 1 semana
pai
achega
d1cf80e1cf

+ 55 - 0
LonYue-master/LonYue-business/src/main/java/com/lonyue/business/controller/DigitalBaseCategoryController.java

@@ -17,7 +17,9 @@ import com.lonyue.common.core.controller.BaseController;
 import com.lonyue.common.core.domain.AjaxResult;
 import com.lonyue.common.enums.BusinessType;
 import com.lonyue.business.domain.DigitalBaseCategory;
+import com.lonyue.business.domain.GlobalConfig;
 import com.lonyue.business.service.IDigitalBaseCategoryService;
+import com.lonyue.business.service.IGlobalConfigService;
 import com.lonyue.common.utils.poi.ExcelUtil;
 import com.lonyue.common.core.page.TableDataInfo;
 
@@ -34,6 +36,9 @@ public class DigitalBaseCategoryController extends BaseController
     @Autowired
     private IDigitalBaseCategoryService digitalBaseCategoryService;
 
+    @Autowired
+    private IGlobalConfigService globalConfigService;
+
     /**
      * 查询数字化底座分类列表
      */
@@ -91,6 +96,56 @@ public class DigitalBaseCategoryController extends BaseController
         return toAjax(digitalBaseCategoryService.updateDigitalBaseCategory(digitalBaseCategory));
     }
 
+    /**
+     * 获取数字化底座页面顶部配置
+     */
+    @PreAuthorize("@ss.hasPermi('business:digitalBaseCategory:list')")
+    @GetMapping("/headerConfig")
+    public AjaxResult getHeaderConfig()
+    {
+        List<GlobalConfig> list = globalConfigService.selectGlobalConfigList(new GlobalConfig());
+        if (list.isEmpty())
+        {
+            return error("全局配置不存在");
+        }
+
+        GlobalConfig source = list.get(0);
+        GlobalConfig result = new GlobalConfig();
+        result.setId(source.getId());
+        result.setDigitalBaseBannerUrl(source.getDigitalBaseBannerUrl());
+        result.setDigitalBaseEyebrow(source.getDigitalBaseEyebrow());
+        result.setDigitalBaseTitle(source.getDigitalBaseTitle());
+        result.setDigitalBaseSubtitle(source.getDigitalBaseSubtitle());
+        result.setDigitalBaseType1Name(source.getDigitalBaseType1Name());
+        result.setDigitalBaseType2Name(source.getDigitalBaseType2Name());
+        return success(result);
+    }
+
+    /**
+     * 保存数字化底座页面顶部配置
+     */
+    @PreAuthorize("@ss.hasPermi('business:digitalBaseCategory:edit')")
+    @Log(title = "数字化底座顶部配置", businessType = BusinessType.UPDATE)
+    @PutMapping("/headerConfig")
+    public AjaxResult updateHeaderConfig(@RequestBody GlobalConfig headerConfig)
+    {
+        List<GlobalConfig> list = globalConfigService.selectGlobalConfigList(new GlobalConfig());
+        if (list.isEmpty())
+        {
+            return error("全局配置不存在");
+        }
+
+        GlobalConfig update = new GlobalConfig();
+        update.setId(list.get(0).getId());
+        update.setDigitalBaseBannerUrl(headerConfig.getDigitalBaseBannerUrl());
+        update.setDigitalBaseEyebrow(headerConfig.getDigitalBaseEyebrow());
+        update.setDigitalBaseTitle(headerConfig.getDigitalBaseTitle());
+        update.setDigitalBaseSubtitle(headerConfig.getDigitalBaseSubtitle());
+        update.setDigitalBaseType1Name(headerConfig.getDigitalBaseType1Name());
+        update.setDigitalBaseType2Name(headerConfig.getDigitalBaseType2Name());
+        return toAjax(globalConfigService.updateGlobalConfig(update));
+    }
+
     /**
      * 删除数字化底座分类
      */

+ 18 - 1
LonYue-master/lonyue-ui/src/api/business/digitalBaseCategory.js

@@ -35,6 +35,23 @@ export function updateDigitalBaseCategory(data) {
   })
 }
 
+// 查询数字化底座页面顶部配置
+export function getDigitalBaseHeaderConfig() {
+  return request({
+    url: '/business/digitalBaseCategory/headerConfig',
+    method: 'get'
+  })
+}
+
+// 修改数字化底座页面顶部配置
+export function updateDigitalBaseHeaderConfig(data) {
+  return request({
+    url: '/business/digitalBaseCategory/headerConfig',
+    method: 'put',
+    data: data
+  })
+}
+
 // 删除数字化底座模块
 export function delDigitalBaseCategory(id) {
   return request({
@@ -49,4 +66,4 @@ export function selectList(data) {
     method: 'post',
     data: data
   })
-}
+}

+ 88 - 1
LonYue-master/lonyue-ui/src/views/business/digitalBaseCategory/index.vue

@@ -49,6 +49,17 @@
           v-hasPermi="['business:digitalBaseCategory:remove']"
         >删除</el-button>
       </el-col>
+
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-setting"
+          size="mini"
+          @click="openHeaderConfig"
+          v-hasPermi="['business:digitalBaseCategory:edit']"
+        >顶部展示配置</el-button>
+      </el-col>
     </el-row>
 
     <el-table v-loading="loading" :data="digitalBaseCategoryList" @selection-change="handleSelectionChange">
@@ -106,6 +117,42 @@
       @pagination="getList"
     />
 
+    <el-drawer
+      :visible.sync="headerConfigOpen"
+      title="数字化底座顶部展示配置"
+      size="560px"
+      direction="rtl"
+      append-to-body
+      :wrapperClosable="false"
+    >
+      <div class="drawer-body" v-loading="headerConfigLoading">
+        <el-form ref="headerConfigForm" :model="headerConfigForm" label-width="120px">
+          <el-form-item label="顶部 Banner" prop="digitalBaseBannerUrl">
+            <image-upload v-model="headerConfigForm.digitalBaseBannerUrl" :limit="1" />
+          </el-form-item>
+          <el-form-item label="Banner 辅助标题" prop="digitalBaseEyebrow">
+            <el-input v-model="headerConfigForm.digitalBaseEyebrow" maxlength="100" show-word-limit placeholder="例如:基于钉钉" />
+          </el-form-item>
+          <el-form-item label="Banner 主标题" prop="digitalBaseTitle">
+            <el-input v-model="headerConfigForm.digitalBaseTitle" type="textarea" :rows="3" maxlength="300" show-word-limit placeholder="请输入 Banner 主标题" />
+          </el-form-item>
+          <el-form-item label="Banner 副标题" prop="digitalBaseSubtitle">
+            <el-input v-model="headerConfigForm.digitalBaseSubtitle" maxlength="200" show-word-limit placeholder="例如:驱动组织效能与业务创新" />
+          </el-form-item>
+          <el-form-item label="专业版名称" prop="digitalBaseType1Name">
+            <el-input v-model="headerConfigForm.digitalBaseType1Name" maxlength="100" show-word-limit placeholder="例如:钉钉专业版" />
+          </el-form-item>
+          <el-form-item label="专属版名称" prop="digitalBaseType2Name">
+            <el-input v-model="headerConfigForm.digitalBaseType2Name" maxlength="100" show-word-limit placeholder="例如:钉钉专属版" />
+          </el-form-item>
+        </el-form>
+        <div class="drawer-footer">
+          <el-button type="primary" :loading="headerConfigLoading" @click="submitHeaderConfig">保 存</el-button>
+          <el-button @click="headerConfigOpen = false">取 消</el-button>
+        </div>
+      </div>
+    </el-drawer>
+
     <!-- 添加或修改数字化底座模块对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
@@ -228,7 +275,7 @@
 </template>
 
 <script>
-import { listDigitalBaseCategory, getDigitalBaseCategory, delDigitalBaseCategory, addDigitalBaseCategory, updateDigitalBaseCategory } from "@/api/business/digitalBaseCategory"
+import { listDigitalBaseCategory, getDigitalBaseCategory, delDigitalBaseCategory, addDigitalBaseCategory, updateDigitalBaseCategory, getDigitalBaseHeaderConfig, updateDigitalBaseHeaderConfig } from "@/api/business/digitalBaseCategory"
 import { listDigitalBaseOfficial, getDigitalBaseOfficial, delDigitalBaseOfficial, addDigitalBaseOfficial, updateDigitalBaseOfficial } from "@/api/business/digitalBaseOfficial"
 
 export default {
@@ -274,6 +321,18 @@ export default {
           { required: true, message: "请选择模块类型", trigger: "change" }
         ]
       },
+      // 页面顶部展示配置
+      headerConfigOpen: false,
+      headerConfigLoading: false,
+      headerConfigForm: {
+        id: null,
+        digitalBaseBannerUrl: null,
+        digitalBaseEyebrow: null,
+        digitalBaseTitle: null,
+        digitalBaseSubtitle: null,
+        digitalBaseType1Name: null,
+        digitalBaseType2Name: null
+      },
       // 内容抽屉
       officialDrawerOpen: false,
       officialDrawerTitle: "",
@@ -411,6 +470,29 @@ export default {
         this.form.categoryContent = null
       }
     },
+    // 打开页面顶部展示配置
+    openHeaderConfig() {
+      this.headerConfigOpen = true
+      this.headerConfigLoading = true
+      getDigitalBaseHeaderConfig().then(response => {
+        this.headerConfigForm = { ...response.data }
+      }).finally(() => {
+        this.headerConfigLoading = false
+      })
+    },
+    // 保存页面顶部展示配置
+    submitHeaderConfig() {
+      this.$refs["headerConfigForm"].validate(valid => {
+        if (!valid) return
+        this.headerConfigLoading = true
+        updateDigitalBaseHeaderConfig(this.headerConfigForm).then(() => {
+          this.$modal.msgSuccess("保存成功")
+          this.headerConfigOpen = false
+        }).finally(() => {
+          this.headerConfigLoading = false
+        })
+      })
+    },
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids
@@ -506,4 +588,9 @@ export default {
 .drawer-body {
   padding: 10px 20px;
 }
+
+.drawer-footer {
+  padding-top: 10px;
+  text-align: right;
+}
 </style>

+ 1 - 26
LonYue-master/lonyue-ui/src/views/business/globalConfig/index.vue

@@ -28,25 +28,6 @@
         <el-form-item label="办公到访说明" prop="visitNotice">
           <el-input v-model="form.visitNotice" type="textarea" :rows="2" placeholder="例如:三地办公地点均可公开展示;如需到访,请提前预约。" />
         </el-form-item>
-        <el-divider content-position="left">数字化底座顶部展示</el-divider>
-        <el-form-item label="顶部 Banner" prop="digitalBaseBannerUrl">
-          <image-upload v-model="form.digitalBaseBannerUrl" :limit="1" />
-        </el-form-item>
-        <el-form-item label="Banner 辅助标题" prop="digitalBaseEyebrow">
-          <el-input v-model="form.digitalBaseEyebrow" maxlength="100" show-word-limit placeholder="例如:基于钉钉" />
-        </el-form-item>
-        <el-form-item label="Banner 主标题" prop="digitalBaseTitle">
-          <el-input v-model="form.digitalBaseTitle" maxlength="300" show-word-limit placeholder="请输入 Banner 主标题" />
-        </el-form-item>
-        <el-form-item label="Banner 副标题" prop="digitalBaseSubtitle">
-          <el-input v-model="form.digitalBaseSubtitle" maxlength="200" show-word-limit placeholder="例如:驱动组织效能与业务创新" />
-        </el-form-item>
-        <el-form-item label="专业版名称" prop="digitalBaseType1Name">
-          <el-input v-model="form.digitalBaseType1Name" maxlength="100" show-word-limit placeholder="例如:钉钉专业版" />
-        </el-form-item>
-        <el-form-item label="专属版名称" prop="digitalBaseType2Name">
-          <el-input v-model="form.digitalBaseType2Name" maxlength="100" show-word-limit placeholder="例如:钉钉专属版" />
-        </el-form-item>
         <el-divider content-position="left">联系与二维码</el-divider>
         <el-form-item label="钉钉二维码" prop="dingQrCode">
           <image-upload v-model="form.dingQrCode" :limit="1" />
@@ -127,13 +108,7 @@ export default {
           serviceAreas: null,
           businessHours: null,
           schemaOpeningHours: null,
-          visitNotice: null,
-          digitalBaseBannerUrl: null,
-          digitalBaseEyebrow: "基于钉钉",
-          digitalBaseTitle: "为您的企业打造统一协同、安全可靠、随需扩展的数字基座",
-          digitalBaseSubtitle: "驱动组织效能与业务创新",
-          digitalBaseType1Name: "钉钉专业版",
-          digitalBaseType2Name: "钉钉专属版"
+          visitNotice: null
       }
       this.resetForm("form")
     },