This commit is contained in:
Vinjor 2025-08-13 09:18:56 +08:00
parent c6280780a2
commit cf46f9b5c1
15 changed files with 201 additions and 43 deletions

View File

@ -62,7 +62,7 @@ public class BaseSiteController extends BaseController {
**/
@GetMapping("/listAll")
public AjaxResult list() {
return success(baseSiteService.list());
return success(baseSiteService.getMySiteList());
}
/**

View File

@ -65,14 +65,10 @@ public class WebController extends BaseController {
@Autowired
private IBusiProdNewService prodNewService;
@Autowired
private IBaseNationalService nationalService;
@Autowired
private IBusiInquiryItemService inquiryItemService;
@Autowired
private IBusiChatMainService busiChatMainService;
@Autowired
private GoogleKeywordService googleKeywordService;
@Autowired
private IBusiPageService pageService;
@Autowired
private CommonUtils commonUtils;
@ -157,9 +153,12 @@ public class WebController extends BaseController {
@ApiOperation("公司介绍-富文本-首页展示区域")
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
@GetMapping("/indexCompanyInfo")
public R<String> indexCompanyInfo(@RequestParam(required = true) String tenantId) {
public R<Map<String,String>> indexCompanyInfo(@RequestParam(required = true) String tenantId) {
BaseSiteInfo baseSiteInfo = siteInfoService.getSiteInfo(tenantId);
return R.ok(baseSiteInfo.getCompanyInfo());
Map<String,String> map = new HashMap<>();
map.put("content",baseSiteInfo.getCompanyInfo());
map.put("contentApp",baseSiteInfo.getCompanyInfoApp());
return R.ok(map);
}
/**

View File

@ -97,6 +97,11 @@ public class BaseSiteInfo extends DlBaseEntity
@ApiModelProperty("公司介绍")
private String companyInfo;
/** 公司介绍-移动端 */
@Excel(name = "公司介绍-移动端")
@ApiModelProperty("公司介绍-移动端")
private String companyInfoApp;
/** 站点唯一编码租户id */
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
@ApiModelProperty("站点唯一编码")

View File

@ -19,4 +19,6 @@ import org.apache.ibatis.annotations.Mapper;
public interface BaseSiteMapper extends BaseMapper<BaseSite>
{
IPage<SiteVO> queryListPage(@Param("entity") BaseSite entity, Page<BaseSite> page);
List<BaseSite> selectByUserId(@Param("userId")Long userId);
}

View File

@ -14,8 +14,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
* @author vinjor-m
* @date 2025-08-11
*/
public interface IBaseManagerService extends IService<BaseManager>
{
public interface IBaseManagerService extends IService<BaseManager> {
IPage<ManagerVO> queryListPage(ManagerVO pageReqVO, Page<BaseManager> page);
/**
@ -26,4 +25,6 @@ public interface IBaseManagerService extends IService<BaseManager>
* @return java.util.List<com.ruoyi.common.core.domain.entity.SysUser>
**/
List<SysUser> getManagerUserByTenantId(String tenantId);
}

View File

@ -16,4 +16,12 @@ import com.ruoyi.base.vo.SiteVO;
public interface IBaseSiteService extends IService<BaseSite>
{
IPage<SiteVO> queryListPage(BaseSite pageReqVO, Page<BaseSite> page);
/**
* 查询本人可以管理的站点
* @author vinjor-M
* @date 16:17 2025/8/11
* @return java.util.List<com.ruoyi.base.domain.BaseSite>
**/
List<BaseSite> getMySiteList();
}

View File

@ -6,6 +6,7 @@ import com.ruoyi.base.vo.SiteVO;
import com.ruoyi.common.utils.DateUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -29,4 +30,21 @@ public class BaseSiteServiceImpl extends ServiceImpl<BaseSiteMapper,BaseSite> i
public IPage<SiteVO> queryListPage(BaseSite pageReqVO, Page<BaseSite> page) {
return baseSiteMapper.queryListPage(pageReqVO, page);
}
/**
* 查询本人可以管理的站点
*
* @return java.util.List<com.ruoyi.base.domain.BaseSite>
* @author vinjor-M
* @date 16:17 2025/8/11
**/
@Override
public List<BaseSite> getMySiteList() {
Long userId = SecurityUtils.getUserId();
if(1==userId){
//超级管理员查所有站点
return this.list();
}
return baseSiteMapper.selectByUserId(userId);
}
}

View File

@ -84,16 +84,28 @@ public class BusiCategory extends DlBaseEntity
@Excel(name = "内容html", readConverterExp = "适=用于单页面+询盘")
@ApiModelProperty("内容html")
private String content;
/** 内容html-移动端(适用于单页面+询盘) */
@Excel(name = "内容html-移动端", readConverterExp = "适=用于单页面+询盘")
@ApiModelProperty("内容html-移动端")
private String contentApp;
/** 产品上方内容html适用于产品 */
@Excel(name = "产品上方内容html", readConverterExp = "适=用于产品")
@ApiModelProperty("产品上方内容html")
private String prodUp;
/** 产品上方内容html-移动端(适用于产品) */
@Excel(name = "产品上方内容html-移动端", readConverterExp = "适=用于产品")
@ApiModelProperty("产品上方内容html-移动端")
private String prodUpApp;
/** 产品下方内容html适用于产品 */
@Excel(name = "产品下方内容html", readConverterExp = "适=用于产品")
@ApiModelProperty("产品下方内容html")
private String prodDown;
/** 产品下方内容html-移动端(适用于产品) */
@Excel(name = "产品下方内容html-移动端", readConverterExp = "适=用于产品")
@ApiModelProperty("产品下方内容html-移动端")
private String prodDownApp;
/** 站点唯一编码租户id */
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")

View File

@ -19,6 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="qrCode" column="qr_code" />
<result property="contactUs" column="contact_us" />
<result property="companyInfo" column="company_info" />
<result property="companyInfoApp" column="company_info_app" />
<result property="tenantId" column="tenant_id" />
<result property="creator" column="creator" />
<result property="createTime" column="create_time" />
@ -28,7 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectBaseSiteInfoVo">
select id, company_name, fax_number, brand_name, tel, email, teams, copyright, address, icon, logo, qr_code, contact_us,company_info, tenant_id, creator, create_time, updater, update_time, del_flag from dl_base_site_info
select id, company_name, fax_number, brand_name, tel, email, teams, copyright, address, icon, logo, qr_code, contact_us,company_info,company_info_app, tenant_id, creator, create_time, updater, update_time, del_flag from dl_base_site_info
</sql>
<select id="queryListPage" parameterType="BaseSiteInfo" resultMap="BaseSiteInfoResult">

View File

@ -39,4 +39,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
dbs.id
</select>
<select id="selectByUserId" resultType="com.ruoyi.base.domain.BaseSite">
SELECT
dbs.*
FROM
dl_base_site dbs
LEFT JOIN dl_base_manager dbm ON dbs.id = dbm.tenant_id
AND dbm.del_flag = '0'
WHERE
dbs.del_flag = '0'
AND dbm.user_id = #{userId}
</select>
</mapper>

View File

@ -17,8 +17,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="description" column="description" />
<result property="sort" column="sort" />
<result property="content" column="content" />
<result property="contentApp" column="content_app" />
<result property="prodUp" column="prod_up" />
<result property="prodUpApp" column="prod_up_app" />
<result property="prodDown" column="prod_down" />
<result property="prodDownApp" column="prod_down_app" />
<result property="tenantId" column="tenant_id" />
<result property="creator" column="creator" />
<result property="createTime" column="create_time" />
@ -28,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectBusiCategoryVo">
select id, catg_name, catg_level, catg_type, parent_id, prods_junior, prods_all, title, keyword, description, sort, content, prod_up, prod_down, tenant_id, creator, create_time, updater, update_time, del_flag from dl_busi_category
select id, catg_name, catg_level, catg_type, parent_id, prods_junior, prods_all, title, keyword, description, sort, content,content_app, prod_up,prod_up_app, prod_down,prod_down_app, tenant_id, creator, create_time, updater, update_time, del_flag from dl_busi_category
</sql>
<select id="selectAllChildren" resultType="java.lang.String">
SELECT

View File

@ -1,13 +1,15 @@
<template>
<div class="navbar">
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container"
@toggleClick="toggleSideBar"
/>
<breadcrumb v-if="!topNav" id="breadcrumb-container" class="breadcrumb-container"/>
<top-nav v-if="topNav" id="topmenu-container" class="topmenu-container"/>
<div class="right-menu" style="display: flex">
<template v-if="device!=='mobile'">
<div>当前管理站点{{tenantName}}</div>
<div @click="changeSite">当前管理站点{{ tenantName }}</div>
<search id="header-search" class="right-menu-item"/>
<!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">-->
@ -44,6 +46,7 @@
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
</template>
@ -98,6 +101,8 @@ export default {
}
}
},
created() {
},
methods: {
toggleSideBar() {
this.$store.dispatch('app/toggleSideBar')
@ -111,7 +116,11 @@ export default {
this.$store.dispatch('LogOut').then(() => {
location.href = '/index'
})
}).catch(() => {})
}).catch(() => {
})
},
changeSite(){
this.$emit("changeSite")
}
}
}

View File

@ -4,7 +4,7 @@
<sidebar v-if="!sidebar.hide" class="sidebar-container"/>
<div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container">
<div :class="{'fixed-header':fixedHeader}">
<navbar/>
<navbar :key="chooseSiteCode" @changeSite="showChangeSite"/>
<tags-view v-if="needTagsView"/>
</div>
<app-main/>
@ -12,6 +12,26 @@
<settings/>
</right-panel>
</div>
<el-dialog
title="请选择管理的站点"
:visible.sync="centerDialogVisible"
width="30%"
center
>
<el-select v-model="chooseSiteCode" placeholder="请选择" style="width: 100%">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<span slot="footer" class="dialog-footer">
<el-button @click="centerDialogVisible = false"> </el-button>
<el-button type="primary" @click="chooseSiteCodeFun"> </el-button>
</span>
</el-dialog>
</div>
</template>
@ -21,6 +41,8 @@ import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex'
import variables from '@/assets/styles/variables.scss'
import { listAllSite } from '@/api/base/site'
import { getToken,getTenantId,setTenantId, setTenantName } from '@/utils/auth'
export default {
name: 'Layout',
@ -32,6 +54,14 @@ export default {
Sidebar,
TagsView
},
data(){
return{
centerDialogVisible: false,
//
chooseSiteCode: 'main',
options: [],
}
},
mixins: [ResizeMixin],
computed: {
...mapState({
@ -54,10 +84,40 @@ export default {
return variables;
}
},
created() {
this.chooseSiteCode = getTenantId()
this.getSiteList()
},
methods: {
handleClickOutside() {
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
},
showChangeSite(){
this.centerDialogVisible = true
},
getSiteList(){
listAllSite().then(response => {
if (response.data && response.data.length > 0) {
response.data.map((item) => {
this.options.push({
value: item.id,
label: item.siteName
})
})
}
})
},
chooseSiteCodeFun() {
if (this.chooseSiteCode) {
this.centerDialogVisible = false
let chooseSiteObj = this.options.filter(item => item.value == this.chooseSiteCode)[0]
setTenantId(this.chooseSiteCode)
setTenantName(chooseSiteObj.label)
window.location.reload()
} else {
this.$modal.msgWarning('请选择管理的站点')
}
},
}
}
</script>

View File

@ -89,15 +89,20 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="站点联系方式" prop="contactUs">
<editor v-model="form.contactUs" :min-height="200"/>
<el-form-item label="公司介绍" prop="companyInfo">
<editor v-model="form.companyInfo" :min-height="400"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="公司介绍" prop="companyInfo">
<editor v-model="form.companyInfo" :min-height="400"/>
<el-col :span="12">
<el-form-item label="公司介绍-移动端" prop="contactUs">
<editor v-model="form.companyInfoApp" :min-height="200"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="站点联系方式" prop="contactUs">
<editor v-model="form.contactUs" :min-height="200"/>
</el-form-item>
</el-col>
</el-row>
@ -130,6 +135,7 @@ export default {
qrCode: null,
contactUs: null,
companyInfo: null,
companyInfoApp: null,
tenantId: null,
creator: null,
createTime: null,

View File

@ -61,19 +61,36 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品下方内容" prop="prodDown">
<el-form-item label="产品上方内容-移动端" prop="prodDown">
<editor v-model="form.prodUpApp" :min-height="160"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.catgType == 'cp'" :gutter="20">
<el-col :span="12">
<el-form-item label="产品下方内容" prop="prodUp">
<editor v-model="form.prodDown" :min-height="160"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品下方内容-移动端" prop="prodDown">
<editor v-model="form.prodDownApp" :min-height="160"/>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.catgType == 'dym' || form.catgType == 'xp'">
<el-col>
<el-col :span="12">
<el-form-item label="内容" prop="content">
<editor v-model="form.content" :min-height="192"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="内容-移动端" prop="content">
<editor v-model="form.contentApp" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
@ -107,8 +124,11 @@ export default {
keyword:"",
description:"",
prodUp:"",
prodUpApp:"",
prodDown:"",
content:""
prodDownApp:"",
content:"",
contentApp:"",
},
id:null,
//
@ -176,8 +196,11 @@ export default {
keyword:"",
description:"",
prodUp:"",
prodUpApp:"",
prodDown:"",
content:""
prodDownApp:"",
content:"",
contentApp:"",
}
}